From 35394bb231298b8378ddae4c07a10f45391db986 Mon Sep 17 00:00:00 2001 From: Matthew Morgan Date: Mon, 10 Apr 2017 06:58:28 -0400 Subject: [PATCH] Update tooling to Babel 6, Node 7.8 --- .travis.yml | 2 +- README.md | 13 ++- exercises/accumulate/gulpfile.js | 79 ++++++++-------- exercises/accumulate/package.json | 9 +- exercises/acronym/gulpfile.js | 79 ++++++++-------- exercises/acronym/package.json | 9 +- exercises/all-your-base/gulpfile.js | 79 ++++++++-------- exercises/all-your-base/package.json | 9 +- exercises/allergies/allergies.spec.js | 2 +- exercises/allergies/gulpfile.js | 79 ++++++++-------- exercises/allergies/package.json | 9 +- exercises/anagram/gulpfile.js | 79 ++++++++-------- exercises/anagram/package.json | 9 +- exercises/atbash-cipher/gulpfile.js | 79 ++++++++-------- exercises/atbash-cipher/package.json | 9 +- exercises/beer-song/gulpfile.js | 79 ++++++++-------- exercises/beer-song/package.json | 9 +- exercises/binary-search-tree/gulpfile.js | 79 ++++++++-------- exercises/binary-search-tree/package.json | 9 +- exercises/binary-search/gulpfile.js | 79 ++++++++-------- exercises/binary-search/package.json | 9 +- exercises/binary/gulpfile.js | 79 ++++++++-------- exercises/binary/package.json | 9 +- exercises/bob/gulpfile.js | 79 ++++++++-------- exercises/bob/package.json | 9 +- exercises/bracket-push/gulpfile.js | 79 ++++++++-------- exercises/bracket-push/package.json | 9 +- exercises/circular-buffer/gulpfile.js | 79 ++++++++-------- exercises/circular-buffer/package.json | 9 +- exercises/clock/gulpfile.js | 79 ++++++++-------- exercises/clock/package.json | 9 +- exercises/crypto-square/gulpfile.js | 79 ++++++++-------- exercises/crypto-square/package.json | 9 +- exercises/custom-set/gulpfile.js | 79 ++++++++-------- exercises/custom-set/package.json | 9 +- exercises/diamond/gulpfile.js | 79 ++++++++-------- exercises/diamond/package.json | 9 +- exercises/difference-of-squares/gulpfile.js | 79 ++++++++-------- exercises/difference-of-squares/package.json | 9 +- exercises/etl/gulpfile.js | 79 ++++++++-------- exercises/etl/package.json | 9 +- exercises/food-chain/gulpfile.js | 79 ++++++++-------- exercises/food-chain/package.json | 9 +- exercises/gigasecond/gulpfile.js | 79 ++++++++-------- exercises/gigasecond/package.json | 9 +- exercises/grade-school/gulpfile.js | 79 ++++++++-------- exercises/grade-school/package.json | 9 +- exercises/grains/gulpfile.js | 79 ++++++++-------- exercises/grains/package.json | 9 +- exercises/gulpfile.js | 89 +++++++++++++++++++ exercises/hamming/gulpfile.js | 79 ++++++++-------- exercises/hamming/package.json | 9 +- exercises/hello-world/gulpfile.js | 79 ++++++++-------- exercises/hello-world/package.json | 9 +- exercises/hexadecimal/gulpfile.js | 79 ++++++++-------- exercises/hexadecimal/package.json | 9 +- exercises/isogram/gulpfile.js | 79 ++++++++-------- exercises/isogram/package.json | 9 +- exercises/kindergarten-garden/gulpfile.js | 79 ++++++++-------- exercises/kindergarten-garden/package.json | 9 +- exercises/largest-series-product/gulpfile.js | 79 ++++++++-------- exercises/largest-series-product/package.json | 9 +- exercises/leap/gulpfile.js | 79 ++++++++-------- exercises/leap/package.json | 9 +- exercises/linked-list/gulpfile.js | 79 ++++++++-------- exercises/linked-list/package.json | 9 +- exercises/luhn/gulpfile.js | 79 ++++++++-------- exercises/luhn/package.json | 9 +- exercises/matrix/gulpfile.js | 79 ++++++++-------- exercises/matrix/package.json | 9 +- exercises/meetup/gulpfile.js | 79 ++++++++-------- exercises/meetup/package.json | 9 +- exercises/nth-prime/gulpfile.js | 79 ++++++++-------- exercises/nth-prime/package.json | 9 +- exercises/ocr-numbers/gulpfile.js | 79 ++++++++-------- exercises/ocr-numbers/package.json | 9 +- exercises/octal/gulpfile.js | 79 ++++++++-------- exercises/octal/package.json | 9 +- exercises/package.json | 28 ++++++ exercises/palindrome-products/gulpfile.js | 79 ++++++++-------- exercises/palindrome-products/package.json | 9 +- exercises/pangram/gulpfile.js | 79 ++++++++-------- exercises/pangram/package.json | 9 +- exercises/pascals-triangle/gulpfile.js | 79 ++++++++-------- exercises/pascals-triangle/package.json | 9 +- exercises/perfect-numbers/gulpfile.js | 79 ++++++++-------- exercises/perfect-numbers/package.json | 9 +- exercises/phone-number/gulpfile.js | 79 ++++++++-------- exercises/phone-number/package.json | 9 +- exercises/pig-latin/gulpfile.js | 79 ++++++++-------- exercises/pig-latin/package.json | 9 +- exercises/prime-factors/gulpfile.js | 79 ++++++++-------- exercises/prime-factors/package.json | 9 +- exercises/pythagorean-triplet/gulpfile.js | 79 ++++++++-------- exercises/pythagorean-triplet/package.json | 9 +- exercises/queen-attack/gulpfile.js | 79 ++++++++-------- exercises/queen-attack/package.json | 9 +- exercises/raindrops/gulpfile.js | 79 ++++++++-------- exercises/raindrops/package.json | 9 +- exercises/rna-transcription/gulpfile.js | 79 ++++++++-------- exercises/rna-transcription/package.json | 9 +- exercises/robot-name/gulpfile.js | 79 ++++++++-------- exercises/robot-name/package.json | 9 +- exercises/robot-simulator/gulpfile.js | 79 ++++++++-------- exercises/robot-simulator/package.json | 9 +- exercises/roman-numerals/gulpfile.js | 79 ++++++++-------- exercises/roman-numerals/package.json | 9 +- exercises/saddle-points/gulpfile.js | 79 ++++++++-------- exercises/saddle-points/package.json | 9 +- exercises/say/gulpfile.js | 79 ++++++++-------- exercises/say/package.json | 9 +- exercises/scrabble-score/gulpfile.js | 79 ++++++++-------- exercises/scrabble-score/package.json | 9 +- exercises/secret-handshake/gulpfile.js | 79 ++++++++-------- exercises/secret-handshake/package.json | 9 +- exercises/series/gulpfile.js | 79 ++++++++-------- exercises/series/package.json | 9 +- exercises/sieve/gulpfile.js | 79 ++++++++-------- exercises/sieve/package.json | 9 +- exercises/simple-cipher/gulpfile.js | 79 ++++++++-------- exercises/simple-cipher/package.json | 9 +- exercises/space-age/gulpfile.js | 79 ++++++++-------- exercises/space-age/package.json | 9 +- exercises/strain/gulpfile.js | 79 ++++++++-------- exercises/strain/package.json | 9 +- exercises/sum-of-multiples/gulpfile.js | 79 ++++++++-------- exercises/sum-of-multiples/package.json | 9 +- exercises/triangle/gulpfile.js | 79 ++++++++-------- exercises/triangle/package.json | 9 +- exercises/triangle/triangle.spec.js | 2 +- exercises/trinary/gulpfile.js | 79 ++++++++-------- exercises/trinary/package.json | 9 +- exercises/two-bucket/gulpfile.js | 79 ++++++++-------- exercises/two-bucket/package.json | 9 +- exercises/word-count/gulpfile.js | 79 ++++++++-------- exercises/word-count/package.json | 9 +- exercises/wordy/gulpfile.js | 79 ++++++++-------- exercises/wordy/package.json | 9 +- gulpfile.js | 79 ++++++++-------- package.json | 9 +- 140 files changed, 3345 insertions(+), 2687 deletions(-) create mode 100644 exercises/gulpfile.js create mode 100644 exercises/package.json diff --git a/.travis.yml b/.travis.yml index 9b11089326..31f8c878e7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ --- language: node_js node_js: -- '5.7' +- '7.8' sudo: false script: - bin/fetch-configlet diff --git a/README.md b/README.md index f78e5125f5..9fb6314eb5 100644 --- a/README.md +++ b/README.md @@ -2,16 +2,21 @@ Exercism exercises in ECMAScript 6 -## Running Unit Test Suite +## Running the Unit Test Suite -[Node.js](https://nodejs.org) must be installed. Tests are run with -a [Gulp](http://gulpjs.com) task so `gulp-cli` tool must be installed -via `npm` +[Node.js](https://nodejs.org) must be installed. We recommend using the latest stable version. Tests are run with +a [Gulp](http://gulpjs.com) task so the `gulp-cli` tool must be installed via `npm` % npm install -g gulp-cli Then, `make` commands will install other dependencies as needed. +### Linting Your Code +This project uses [eslint](https://github.com/eslint/eslint) to help you write quality JavaScript code by checking for common formatting errors, enforcing style rules, and suggesting changes that conform to best practices. + + % npm run lint-test + + ### All Assignments % make diff --git a/exercises/accumulate/gulpfile.js b/exercises/accumulate/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/accumulate/gulpfile.js +++ b/exercises/accumulate/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/accumulate/package.json b/exercises/accumulate/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/accumulate/package.json +++ b/exercises/accumulate/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/acronym/gulpfile.js b/exercises/acronym/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/acronym/gulpfile.js +++ b/exercises/acronym/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/acronym/package.json b/exercises/acronym/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/acronym/package.json +++ b/exercises/acronym/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/all-your-base/gulpfile.js b/exercises/all-your-base/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/all-your-base/gulpfile.js +++ b/exercises/all-your-base/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/all-your-base/package.json b/exercises/all-your-base/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/all-your-base/package.json +++ b/exercises/all-your-base/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/allergies/allergies.spec.js b/exercises/allergies/allergies.spec.js index 83717bb765..56beb8e3c3 100644 --- a/exercises/allergies/allergies.spec.js +++ b/exercises/allergies/allergies.spec.js @@ -1,4 +1,4 @@ -const Allergies = require('./allergies'); +import Allergies from './allergies'; describe('Allergies', () => { diff --git a/exercises/allergies/gulpfile.js b/exercises/allergies/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/allergies/gulpfile.js +++ b/exercises/allergies/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/allergies/package.json b/exercises/allergies/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/allergies/package.json +++ b/exercises/allergies/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/anagram/gulpfile.js b/exercises/anagram/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/anagram/gulpfile.js +++ b/exercises/anagram/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/anagram/package.json b/exercises/anagram/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/anagram/package.json +++ b/exercises/anagram/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/atbash-cipher/gulpfile.js b/exercises/atbash-cipher/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/atbash-cipher/gulpfile.js +++ b/exercises/atbash-cipher/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/atbash-cipher/package.json b/exercises/atbash-cipher/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/atbash-cipher/package.json +++ b/exercises/atbash-cipher/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/beer-song/gulpfile.js b/exercises/beer-song/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/beer-song/gulpfile.js +++ b/exercises/beer-song/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/beer-song/package.json b/exercises/beer-song/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/beer-song/package.json +++ b/exercises/beer-song/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/binary-search-tree/gulpfile.js b/exercises/binary-search-tree/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/binary-search-tree/gulpfile.js +++ b/exercises/binary-search-tree/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/binary-search-tree/package.json b/exercises/binary-search-tree/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/binary-search-tree/package.json +++ b/exercises/binary-search-tree/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/binary-search/gulpfile.js b/exercises/binary-search/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/binary-search/gulpfile.js +++ b/exercises/binary-search/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/binary-search/package.json b/exercises/binary-search/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/binary-search/package.json +++ b/exercises/binary-search/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/binary/gulpfile.js b/exercises/binary/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/binary/gulpfile.js +++ b/exercises/binary/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/binary/package.json b/exercises/binary/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/binary/package.json +++ b/exercises/binary/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/bob/gulpfile.js b/exercises/bob/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/bob/gulpfile.js +++ b/exercises/bob/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/bob/package.json b/exercises/bob/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/bob/package.json +++ b/exercises/bob/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/bracket-push/gulpfile.js b/exercises/bracket-push/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/bracket-push/gulpfile.js +++ b/exercises/bracket-push/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/bracket-push/package.json b/exercises/bracket-push/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/bracket-push/package.json +++ b/exercises/bracket-push/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/circular-buffer/gulpfile.js b/exercises/circular-buffer/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/circular-buffer/gulpfile.js +++ b/exercises/circular-buffer/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/circular-buffer/package.json b/exercises/circular-buffer/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/circular-buffer/package.json +++ b/exercises/circular-buffer/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/clock/gulpfile.js b/exercises/clock/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/clock/gulpfile.js +++ b/exercises/clock/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/clock/package.json b/exercises/clock/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/clock/package.json +++ b/exercises/clock/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/crypto-square/gulpfile.js b/exercises/crypto-square/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/crypto-square/gulpfile.js +++ b/exercises/crypto-square/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/crypto-square/package.json b/exercises/crypto-square/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/crypto-square/package.json +++ b/exercises/crypto-square/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/custom-set/gulpfile.js b/exercises/custom-set/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/custom-set/gulpfile.js +++ b/exercises/custom-set/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/custom-set/package.json b/exercises/custom-set/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/custom-set/package.json +++ b/exercises/custom-set/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/diamond/gulpfile.js b/exercises/diamond/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/diamond/gulpfile.js +++ b/exercises/diamond/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/diamond/package.json b/exercises/diamond/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/diamond/package.json +++ b/exercises/diamond/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/difference-of-squares/gulpfile.js b/exercises/difference-of-squares/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/difference-of-squares/gulpfile.js +++ b/exercises/difference-of-squares/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/difference-of-squares/package.json b/exercises/difference-of-squares/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/difference-of-squares/package.json +++ b/exercises/difference-of-squares/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/etl/gulpfile.js b/exercises/etl/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/etl/gulpfile.js +++ b/exercises/etl/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/etl/package.json b/exercises/etl/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/etl/package.json +++ b/exercises/etl/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/food-chain/gulpfile.js b/exercises/food-chain/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/food-chain/gulpfile.js +++ b/exercises/food-chain/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/food-chain/package.json b/exercises/food-chain/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/food-chain/package.json +++ b/exercises/food-chain/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/gigasecond/gulpfile.js b/exercises/gigasecond/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/gigasecond/gulpfile.js +++ b/exercises/gigasecond/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/gigasecond/package.json b/exercises/gigasecond/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/gigasecond/package.json +++ b/exercises/gigasecond/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/grade-school/gulpfile.js b/exercises/grade-school/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/grade-school/gulpfile.js +++ b/exercises/grade-school/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/grade-school/package.json b/exercises/grade-school/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/grade-school/package.json +++ b/exercises/grade-school/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/grains/gulpfile.js b/exercises/grains/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/grains/gulpfile.js +++ b/exercises/grains/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/grains/package.json b/exercises/grains/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/grains/package.json +++ b/exercises/grains/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/gulpfile.js b/exercises/gulpfile.js new file mode 100644 index 0000000000..7170573c70 --- /dev/null +++ b/exercises/gulpfile.js @@ -0,0 +1,89 @@ +function getInputDirectory(argv) { + if (argv.input) { + return argv.input; + } + return '.'; +} + +function getOutputDirectory(argv) { + if (argv.output) { + return argv.output; + } + return 'babel-output'; +} + +const gulp = require('gulp'), + eslint = require('gulp-eslint'), + jasmine = require('gulp-jasmine'), + babel = require('gulp-babel'), + polyfill = require('babel/polyfill'), + del = require('del'), + argv = require('yargs').argv, + inputDir = getInputDirectory(argv), + outputDir = getOutputDirectory(argv); + +// Gulp tasks definition + +gulp.task('default', [ 'test' ]); + +gulp.task('test', [ 'babel' ], function () { + return gulp.src([ outputDir + '/*.spec.js' ]) + .pipe(jasmine()); +}); + +gulp.task('babel', function () { + return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) + .pipe(babel()) + .pipe(gulp.dest(outputDir)); +}); + +gulp.task('lint', function () { + return gulp.src([ inputDir + '/*.js' ]) + .pipe(eslint({ + envs: [ + 'es6' //turns on all es6 features except modules + ], + rules: { + // full documentation here : http://eslint.org/docs/rules + + // Possible errors + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + }, + ecmaFeatures: { + 'modules': true //this gives us modules :) + } + })) + .pipe(eslint.format()) + .pipe(eslint.failAfterError()); +}); + +gulp.task('clean', function (cb) { + del([ outputDir ], cb); +}); diff --git a/exercises/hamming/gulpfile.js b/exercises/hamming/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/hamming/gulpfile.js +++ b/exercises/hamming/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/hamming/package.json b/exercises/hamming/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/hamming/package.json +++ b/exercises/hamming/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/hello-world/gulpfile.js b/exercises/hello-world/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/hello-world/gulpfile.js +++ b/exercises/hello-world/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/hello-world/package.json b/exercises/hello-world/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/hello-world/package.json +++ b/exercises/hello-world/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/hexadecimal/gulpfile.js b/exercises/hexadecimal/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/hexadecimal/gulpfile.js +++ b/exercises/hexadecimal/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/hexadecimal/package.json b/exercises/hexadecimal/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/hexadecimal/package.json +++ b/exercises/hexadecimal/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/isogram/gulpfile.js b/exercises/isogram/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/isogram/gulpfile.js +++ b/exercises/isogram/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/isogram/package.json b/exercises/isogram/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/isogram/package.json +++ b/exercises/isogram/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/kindergarten-garden/gulpfile.js b/exercises/kindergarten-garden/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/kindergarten-garden/gulpfile.js +++ b/exercises/kindergarten-garden/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/kindergarten-garden/package.json b/exercises/kindergarten-garden/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/kindergarten-garden/package.json +++ b/exercises/kindergarten-garden/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/largest-series-product/gulpfile.js b/exercises/largest-series-product/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/largest-series-product/gulpfile.js +++ b/exercises/largest-series-product/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/largest-series-product/package.json b/exercises/largest-series-product/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/largest-series-product/package.json +++ b/exercises/largest-series-product/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/leap/gulpfile.js b/exercises/leap/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/leap/gulpfile.js +++ b/exercises/leap/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/leap/package.json b/exercises/leap/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/leap/package.json +++ b/exercises/leap/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/linked-list/gulpfile.js b/exercises/linked-list/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/linked-list/gulpfile.js +++ b/exercises/linked-list/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/linked-list/package.json b/exercises/linked-list/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/linked-list/package.json +++ b/exercises/linked-list/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/luhn/gulpfile.js b/exercises/luhn/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/luhn/gulpfile.js +++ b/exercises/luhn/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/luhn/package.json b/exercises/luhn/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/luhn/package.json +++ b/exercises/luhn/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/matrix/gulpfile.js b/exercises/matrix/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/matrix/gulpfile.js +++ b/exercises/matrix/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/matrix/package.json b/exercises/matrix/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/matrix/package.json +++ b/exercises/matrix/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/meetup/gulpfile.js b/exercises/meetup/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/meetup/gulpfile.js +++ b/exercises/meetup/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/meetup/package.json b/exercises/meetup/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/meetup/package.json +++ b/exercises/meetup/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/nth-prime/gulpfile.js b/exercises/nth-prime/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/nth-prime/gulpfile.js +++ b/exercises/nth-prime/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/nth-prime/package.json b/exercises/nth-prime/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/nth-prime/package.json +++ b/exercises/nth-prime/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/ocr-numbers/gulpfile.js b/exercises/ocr-numbers/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/ocr-numbers/gulpfile.js +++ b/exercises/ocr-numbers/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/ocr-numbers/package.json b/exercises/ocr-numbers/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/ocr-numbers/package.json +++ b/exercises/ocr-numbers/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/octal/gulpfile.js b/exercises/octal/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/octal/gulpfile.js +++ b/exercises/octal/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/octal/package.json b/exercises/octal/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/octal/package.json +++ b/exercises/octal/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/package.json b/exercises/package.json new file mode 100644 index 0000000000..0df5b65ba2 --- /dev/null +++ b/exercises/package.json @@ -0,0 +1,28 @@ +{ + "name": "xecmascript", + "version": "0.0.0", + "description": "Exercism exercises in ECMAScript 6.", + "author": "Katrina Owen", + "private": true, + "repository": { + "type": "git", + "url": "https://github.com/exercism/xecmascript" + }, + "devDependencies": { + "babel": "~5.8.29", + "del": "~2.0.2", + "gulp": "~3.9.0", + "gulp-babel": "~5.3.0", + "gulp-eslint": "^1.1.0", + "gulp-jasmine": "~2.4.2", + "yargs": "~3.27.0" + }, + "scripts": { + "test": "gulp test", + "lint-test": "gulp lint test" + }, + "licenses": [ + "MIT" + ], + "dependencies": {} +} diff --git a/exercises/palindrome-products/gulpfile.js b/exercises/palindrome-products/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/palindrome-products/gulpfile.js +++ b/exercises/palindrome-products/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/palindrome-products/package.json b/exercises/palindrome-products/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/palindrome-products/package.json +++ b/exercises/palindrome-products/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/pangram/gulpfile.js b/exercises/pangram/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/pangram/gulpfile.js +++ b/exercises/pangram/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/pangram/package.json b/exercises/pangram/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/pangram/package.json +++ b/exercises/pangram/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/pascals-triangle/gulpfile.js b/exercises/pascals-triangle/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/pascals-triangle/gulpfile.js +++ b/exercises/pascals-triangle/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/pascals-triangle/package.json b/exercises/pascals-triangle/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/pascals-triangle/package.json +++ b/exercises/pascals-triangle/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/perfect-numbers/gulpfile.js b/exercises/perfect-numbers/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/perfect-numbers/gulpfile.js +++ b/exercises/perfect-numbers/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/perfect-numbers/package.json b/exercises/perfect-numbers/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/perfect-numbers/package.json +++ b/exercises/perfect-numbers/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/phone-number/gulpfile.js b/exercises/phone-number/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/phone-number/gulpfile.js +++ b/exercises/phone-number/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/phone-number/package.json b/exercises/phone-number/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/phone-number/package.json +++ b/exercises/phone-number/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/pig-latin/gulpfile.js b/exercises/pig-latin/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/pig-latin/gulpfile.js +++ b/exercises/pig-latin/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/pig-latin/package.json b/exercises/pig-latin/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/pig-latin/package.json +++ b/exercises/pig-latin/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/prime-factors/gulpfile.js b/exercises/prime-factors/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/prime-factors/gulpfile.js +++ b/exercises/prime-factors/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/prime-factors/package.json b/exercises/prime-factors/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/prime-factors/package.json +++ b/exercises/prime-factors/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/pythagorean-triplet/gulpfile.js b/exercises/pythagorean-triplet/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/pythagorean-triplet/gulpfile.js +++ b/exercises/pythagorean-triplet/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/pythagorean-triplet/package.json b/exercises/pythagorean-triplet/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/pythagorean-triplet/package.json +++ b/exercises/pythagorean-triplet/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/queen-attack/gulpfile.js b/exercises/queen-attack/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/queen-attack/gulpfile.js +++ b/exercises/queen-attack/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/queen-attack/package.json b/exercises/queen-attack/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/queen-attack/package.json +++ b/exercises/queen-attack/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/raindrops/gulpfile.js b/exercises/raindrops/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/raindrops/gulpfile.js +++ b/exercises/raindrops/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/raindrops/package.json b/exercises/raindrops/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/raindrops/package.json +++ b/exercises/raindrops/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/rna-transcription/gulpfile.js b/exercises/rna-transcription/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/rna-transcription/gulpfile.js +++ b/exercises/rna-transcription/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/rna-transcription/package.json b/exercises/rna-transcription/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/rna-transcription/package.json +++ b/exercises/rna-transcription/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/robot-name/gulpfile.js b/exercises/robot-name/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/robot-name/gulpfile.js +++ b/exercises/robot-name/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/robot-name/package.json b/exercises/robot-name/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/robot-name/package.json +++ b/exercises/robot-name/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/robot-simulator/gulpfile.js b/exercises/robot-simulator/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/robot-simulator/gulpfile.js +++ b/exercises/robot-simulator/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/robot-simulator/package.json b/exercises/robot-simulator/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/robot-simulator/package.json +++ b/exercises/robot-simulator/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/roman-numerals/gulpfile.js b/exercises/roman-numerals/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/roman-numerals/gulpfile.js +++ b/exercises/roman-numerals/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/roman-numerals/package.json b/exercises/roman-numerals/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/roman-numerals/package.json +++ b/exercises/roman-numerals/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/saddle-points/gulpfile.js b/exercises/saddle-points/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/saddle-points/gulpfile.js +++ b/exercises/saddle-points/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/saddle-points/package.json b/exercises/saddle-points/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/saddle-points/package.json +++ b/exercises/saddle-points/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/say/gulpfile.js b/exercises/say/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/say/gulpfile.js +++ b/exercises/say/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/say/package.json b/exercises/say/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/say/package.json +++ b/exercises/say/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/scrabble-score/gulpfile.js b/exercises/scrabble-score/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/scrabble-score/gulpfile.js +++ b/exercises/scrabble-score/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/scrabble-score/package.json b/exercises/scrabble-score/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/scrabble-score/package.json +++ b/exercises/scrabble-score/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/secret-handshake/gulpfile.js b/exercises/secret-handshake/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/secret-handshake/gulpfile.js +++ b/exercises/secret-handshake/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/secret-handshake/package.json b/exercises/secret-handshake/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/secret-handshake/package.json +++ b/exercises/secret-handshake/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/series/gulpfile.js b/exercises/series/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/series/gulpfile.js +++ b/exercises/series/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/series/package.json b/exercises/series/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/series/package.json +++ b/exercises/series/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/sieve/gulpfile.js b/exercises/sieve/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/sieve/gulpfile.js +++ b/exercises/sieve/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/sieve/package.json b/exercises/sieve/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/sieve/package.json +++ b/exercises/sieve/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/simple-cipher/gulpfile.js b/exercises/simple-cipher/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/simple-cipher/gulpfile.js +++ b/exercises/simple-cipher/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/simple-cipher/package.json b/exercises/simple-cipher/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/simple-cipher/package.json +++ b/exercises/simple-cipher/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/space-age/gulpfile.js b/exercises/space-age/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/space-age/gulpfile.js +++ b/exercises/space-age/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/space-age/package.json b/exercises/space-age/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/space-age/package.json +++ b/exercises/space-age/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/strain/gulpfile.js b/exercises/strain/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/strain/gulpfile.js +++ b/exercises/strain/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/strain/package.json b/exercises/strain/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/strain/package.json +++ b/exercises/strain/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/sum-of-multiples/gulpfile.js b/exercises/sum-of-multiples/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/sum-of-multiples/gulpfile.js +++ b/exercises/sum-of-multiples/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/sum-of-multiples/package.json b/exercises/sum-of-multiples/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/sum-of-multiples/package.json +++ b/exercises/sum-of-multiples/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/triangle/gulpfile.js b/exercises/triangle/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/triangle/gulpfile.js +++ b/exercises/triangle/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/triangle/package.json b/exercises/triangle/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/triangle/package.json +++ b/exercises/triangle/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/triangle/triangle.spec.js b/exercises/triangle/triangle.spec.js index 31fc857b92..feded4b4a3 100644 --- a/exercises/triangle/triangle.spec.js +++ b/exercises/triangle/triangle.spec.js @@ -1,4 +1,4 @@ -const Triangle = require('./triangle'); +import Triangle from './triangle'; describe('Triangle', () => { diff --git a/exercises/trinary/gulpfile.js b/exercises/trinary/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/trinary/gulpfile.js +++ b/exercises/trinary/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/trinary/package.json b/exercises/trinary/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/trinary/package.json +++ b/exercises/trinary/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/two-bucket/gulpfile.js b/exercises/two-bucket/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/two-bucket/gulpfile.js +++ b/exercises/two-bucket/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/two-bucket/package.json b/exercises/two-bucket/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/two-bucket/package.json +++ b/exercises/two-bucket/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/word-count/gulpfile.js b/exercises/word-count/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/word-count/gulpfile.js +++ b/exercises/word-count/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/word-count/package.json b/exercises/word-count/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/word-count/package.json +++ b/exercises/word-count/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/exercises/wordy/gulpfile.js b/exercises/wordy/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/exercises/wordy/gulpfile.js +++ b/exercises/wordy/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/exercises/wordy/package.json b/exercises/wordy/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/exercises/wordy/package.json +++ b/exercises/wordy/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0" diff --git a/gulpfile.js b/gulpfile.js index 7170573c70..3414ebb226 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -16,65 +16,68 @@ const gulp = require('gulp'), eslint = require('gulp-eslint'), jasmine = require('gulp-jasmine'), babel = require('gulp-babel'), - polyfill = require('babel/polyfill'), + polyfill = require('babel-polyfill'), del = require('del'), - argv = require('yargs').argv, + argv = require('yargs').argv, inputDir = getInputDirectory(argv), outputDir = getOutputDirectory(argv); // Gulp tasks definition -gulp.task('default', [ 'test' ]); +gulp.task('default', ['test']); -gulp.task('test', [ 'babel' ], function () { - return gulp.src([ outputDir + '/*.spec.js' ]) +gulp.task('test', ['babel'], function () { + return gulp.src([outputDir + '/*.spec.js']) .pipe(jasmine()); }); gulp.task('babel', function () { - return gulp.src([ inputDir + '/*.js', inputDir + '/lib/*.js' ]) - .pipe(babel()) + return gulp.src([inputDir + '/*.js', inputDir + '/lib/*.js']) + .pipe(babel({ + plugins: ["babel-plugin-transform-object-rest-spread"].map(require.resolve), + presets: ['babel-preset-env'].map(require.resolve) + })) .pipe(gulp.dest(outputDir)); }); gulp.task('lint', function () { - return gulp.src([ inputDir + '/*.js' ]) + return gulp.src([inputDir + '/*.js']) .pipe(eslint({ - envs: [ + envs: [ 'es6' //turns on all es6 features except modules ], - rules: { + rules: { // full documentation here : http://eslint.org/docs/rules // Possible errors - 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element - 'no-cond-assign': [2, 'always'], // no assignments in conditional statements - 'no-console': 2, // no console.log() statements in production code - 'no-constant-condition': 2, // no constants in conditional statements - 'no-control-regex': 2, // no control characters in regex's - 'no-debugger': 2, // no debugger in productin code - 'no-dupe-args': 2, // no duplicated arguments in functions - 'no-dupe-keys': 2, // no duplicated keys when creating object literals - 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements + 'comma-dangle': [2, 'never'], // don't let a comma at the end of object properties or array element + 'no-cond-assign': [2, 'always'], // no assignments in conditional statements + 'no-console': 2, // no console.log() statements in production code + 'no-constant-condition': 2, // no constants in conditional statements + 'no-control-regex': 2, // no control characters in regex's + 'no-debugger': 2, // no debugger in productin code + 'no-dupe-args': 2, // no duplicated arguments in functions + 'no-dupe-keys': 2, // no duplicated keys when creating object literals + 'no-duplicate-case': 2, // no duplicated `case` in `switch` statements 'no-empty-character-class': 2, // disallow the use of empty character classes in regular expressions - 'no-empty': 2, // no empty blocks - 'no-ex-assign': 2, // do not assign any value to an Exception raised - 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean - 'no-extra-parens': 2, // do not use extra parenthesis - 'no-extra-semi': 2, // do not use extra semicolons - 'no-func-assign': 2, // do not overwrite variables declared as functions - 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope - 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor - 'no-irregular-whitespace': 2, // detects special characters used as spaces - 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression - 'no-obj-calls': 2, // prevent calling global objects as if they were functions - 'no-regex-spaces': 2, // do not use multiple spaces in regex's - 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) - 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one - 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) - 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead - 'valid-jsdoc': 2, // ensure JSDoc comments are valid - 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string + 'no-empty': 2, // no empty blocks + 'no-ex-assign': 2, // do not assign any value to an Exception raised + 'no-extra-boolean-cast': 2, // do not use !!falseExpression to cast to boolean + 'no-extra-parens': 2, // do not use extra parenthesis + 'no-extra-semi': 2, // do not use extra semicolons + 'no-func-assign': 2, // do not overwrite variables declared as functions + 'no-inner-declarations': [2, 'both'], // only declare var's and funct's on function scope + 'no-invalid-regexp': 2, // validates string arguments passed to RegExp constructor + 'no-irregular-whitespace': 2, // detects special characters used as spaces + 'no-negated-in-lhs': 2, // do not use negation in the left operand in an `in` expression + 'no-obj-calls': 2, // prevent calling global objects as if they were functions + 'no-regex-spaces': 2, // do not use multiple spaces in regex's + 'no-sparse-arrays': 2, // do not use sparse arrays (empty elements) + 'no-unexpected-multiline': 2, // Avoid code that looks like two expressions but is actually one + 'no-unreachable': 2, // detects unreachable statements (after return, throw,...) + 'use-isnan': 2, // do not compare with `NaN` value, use isNan() instead + 'valid-jsdoc': 2, // ensure JSDoc comments are valid + 'valid-typeof': 2 // ensure that the results of typeof are compared against a valid string }, ecmaFeatures: { 'modules': true //this gives us modules :) @@ -85,5 +88,5 @@ gulp.task('lint', function () { }); gulp.task('clean', function (cb) { - del([ outputDir ], cb); + del([outputDir], cb); }); diff --git a/package.json b/package.json index 0df5b65ba2..f0c9f42206 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,15 @@ "url": "https://github.com/exercism/xecmascript" }, "devDependencies": { - "babel": "~5.8.29", + "babel-cli": "^6.24.1", + "babel-core": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.23.0", + "babel-polyfill": "^6.23.0", + "babel-preset-env": "^1.3.3", + "babel-preset-es2015": "^6.24.1", "del": "~2.0.2", "gulp": "~3.9.0", - "gulp-babel": "~5.3.0", + "gulp-babel": "^6.1.2", "gulp-eslint": "^1.1.0", "gulp-jasmine": "~2.4.2", "yargs": "~3.27.0"