From e36f5faf38f085f15fc2d1ae4773559fe032c623 Mon Sep 17 00:00:00 2001 From: Florian-R Date: Mon, 14 Nov 2016 15:18:29 +0100 Subject: [PATCH 1/4] Update Coffeescript --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cd9be7a5..01c229b8 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "backbone.nativeview": "~0.3.3", "chai": "3.5.x", "coffee-coverage": "1.0.1", - "coffee-script": "1.10.x", + "coffee-script": "1.11.x", "coffeeify": "~2.0.1", "grunt": "~0.4.5", "grunt-browserify": "~4.0.1", From 372667fe7477442966106af8378d69ff5a152cbd Mon Sep 17 00:00:00 2001 From: Florian-R Date: Tue, 15 Nov 2016 15:00:03 +0100 Subject: [PATCH 2/4] Remove coffee-script/register in mochaTest:native This was not needed, the coverage already provide this hooks. --- Gruntfile.coffee | 1 - 1 file changed, 1 deletion(-) diff --git a/Gruntfile.coffee b/Gruntfile.coffee index 50832dae..b9a8a46e 100644 --- a/Gruntfile.coffee +++ b/Gruntfile.coffee @@ -61,7 +61,6 @@ module.exports = (grunt) -> options: reporter: 'spec' require: [ - 'coffee-script/register' 'coffee-coverage/register-istanbul' 'jsdom-assign' -> require.cache[require.resolve 'jquery'] = {} From 0be2888245b817d5bf99015d1d0a8eaed29861da Mon Sep 17 00:00:00 2001 From: Florian-R Date: Wed, 16 Nov 2016 18:10:11 +0100 Subject: [PATCH 3/4] Switch to rollup --- Gruntfile.coffee | 57 +++++++--------------- package.json | 5 +- src/chaplin.coffee | 58 +++++++++++++++-------- src/chaplin/application.coffee | 20 ++++---- src/chaplin/composer.coffee | 14 +++--- src/chaplin/controllers/controller.coffee | 14 +++--- src/chaplin/dispatcher.coffee | 14 +++--- src/chaplin/lib/composition.coffee | 9 ++-- src/chaplin/lib/event_broker.coffee | 6 +-- src/chaplin/lib/history.coffee | 10 ++-- src/chaplin/lib/route.coffee | 14 +++--- src/chaplin/lib/router.coffee | 18 ++++--- src/chaplin/lib/support.coffee | 7 ++- src/chaplin/lib/sync_machine.coffee | 4 +- src/chaplin/lib/utils.coffee | 8 ++-- src/chaplin/mediator.coffee | 8 ++-- src/chaplin/models/collection.coffee | 14 +++--- src/chaplin/models/model.coffee | 9 ++-- src/chaplin/views/collection_view.coffee | 10 ++-- src/chaplin/views/layout.coffee | 16 +++---- src/chaplin/views/view.coffee | 14 +++--- 21 files changed, 147 insertions(+), 182 deletions(-) diff --git a/Gruntfile.coffee b/Gruntfile.coffee index b9a8a46e..1ca70967 100644 --- a/Gruntfile.coffee +++ b/Gruntfile.coffee @@ -15,30 +15,6 @@ banner = """ """ -umdHead = ''' -(function(root, factory) { - if (typeof define === 'function' && define.amd) { - define(['backbone', 'underscore'], factory); - } else if (typeof module === 'object' && module && module.exports) { - module.exports = factory(require('backbone'), require('underscore')); - } else if (typeof require === 'function') { - factory(window.Backbone, window._ || window.Backbone.utils); - } else { - throw new Error('Chaplin requires Common.js or AMD modules'); - } -}(this, function(Backbone, _) { - function require(name) { - return {backbone: Backbone, underscore: _}[name]; - } - - require = -''' - -umdTail = ''' - return require(1); -})) -''' - module.exports = (grunt) -> # Configuration @@ -82,24 +58,23 @@ module.exports = (grunt) -> type: 'html' dir: 'coverage' - browserify: + rollup: + options: + plugins: [ + require('rollup-plugin-coffee-script')() + require('rollup-plugin-node-resolve')(extensions: ['.coffee']) + ] + external: ['underscore', 'backbone'] + globals: + backbone: 'Backbone' + underscore: '_' + format: 'umd' + moduleName: 'Chaplin' + banner: banner + dist: files: - 'build/chaplin.js': ['./src/chaplin.coffee'] - options: { - banner - external: ['backbone', 'underscore'] - transform: ['coffeeify'] - browserifyOptions: - debug: true - extensions: ['.coffee'] - postBundleCB: (err, src, next) -> - if err - next err - else - src = umdHead + src + umdTail - next null, new Buffer src - } + 'build/chaplin.js': 'src/chaplin.coffee' # Minify # ====== @@ -307,7 +282,7 @@ module.exports = (grunt) -> # Building # ======== - grunt.registerTask 'build', ['browserify', 'uglify', 'compress'] + grunt.registerTask 'build', ['rollup', 'uglify', 'compress'] # Default # ======= diff --git a/package.json b/package.json index 01c229b8..288fa039 100644 --- a/package.json +++ b/package.json @@ -12,9 +12,7 @@ "chai": "3.5.x", "coffee-coverage": "1.0.1", "coffee-script": "1.11.x", - "coffeeify": "~2.0.1", "grunt": "~0.4.5", - "grunt-browserify": "~4.0.1", "grunt-cli": "~0.1.13", "grunt-coffeelint": "~0.0.15", "grunt-contrib-compress": "0.14.x", @@ -22,12 +20,15 @@ "grunt-contrib-watch": "~0.6.1", "grunt-istanbul": "0.7.0", "grunt-mocha-test": "~0.12.7", + "grunt-rollup": "1.0.1", "grunt-transbrute": "0.2.x", "jquery": "2.2.x", "jsdom": "~8.0.2", "jsdom-assign": "shvaikalesh/jsdom-assign", "mocha": "~2.4.5", "prompt": "~0.2.14", + "rollup-plugin-coffee-script": "1.1.0", + "rollup-plugin-node-resolve": "2.0.0", "sinon": "~1.17.3", "sinon-chai": "2.8.x" }, diff --git a/src/chaplin.coffee b/src/chaplin.coffee index 363dbdcf..19527fc2 100644 --- a/src/chaplin.coffee +++ b/src/chaplin.coffee @@ -1,23 +1,41 @@ -'use strict' +import Application from './chaplin/application' +import Composer from './chaplin/composer' +import Controller from './chaplin/controllers/controller' +import Dispatcher from './chaplin/dispatcher' +import Composition from './chaplin/lib/composition' +import EventBroker from './chaplin/lib/event_broker' +import History from './chaplin/lib/history' +import Route from './chaplin/lib/route' +import Router from './chaplin/lib/router' +import support from './chaplin/lib/support' +import SyncMachine from './chaplin/lib/sync_machine' +import utils from './chaplin/lib/utils' +import mediator from './chaplin/mediator' +import Collection from './chaplin/models/collection' +import Model from './chaplin/models/model' +import CollectionView from './chaplin/views/collection_view' +import Layout from './chaplin/views/layout' +import View from './chaplin/views/view' # Main entry point into Chaplin module. # Load all components and expose them. -module.exports = - Application: require './chaplin/application' - Composer: require './chaplin/composer' - Controller: require './chaplin/controllers/controller' - Dispatcher: require './chaplin/dispatcher' - Composition: require './chaplin/lib/composition' - EventBroker: require './chaplin/lib/event_broker' - History: require './chaplin/lib/history' - Route: require './chaplin/lib/route' - Router: require './chaplin/lib/router' - support: require './chaplin/lib/support' - SyncMachine: require './chaplin/lib/sync_machine' - utils: require './chaplin/lib/utils' - mediator: require './chaplin/mediator' - Collection: require './chaplin/models/collection' - Model: require './chaplin/models/model' - CollectionView: require './chaplin/views/collection_view' - Layout: require './chaplin/views/layout' - View: require './chaplin/views/view' +export default { + Application + Composer + Controller + Dispatcher + Composition + EventBroker + History + Route + Router + support + SyncMachine + utils + mediator + Collection + Model + CollectionView + Layout + View +} diff --git a/src/chaplin/application.coffee b/src/chaplin/application.coffee index a639adb8..06f849f3 100644 --- a/src/chaplin/application.coffee +++ b/src/chaplin/application.coffee @@ -1,23 +1,21 @@ -'use strict' - # Third-party libraries. -_ = require 'underscore' -Backbone = require 'backbone' +import _ from 'underscore' +import Backbone from 'backbone' # CoffeeScript classes which are instantiated with `new` -Composer = require './composer' -Dispatcher = require './dispatcher' -Router = require './lib/router' -Layout = require './views/layout' +import Composer from './composer' +import Dispatcher from './dispatcher' +import Router from './lib/router' +import Layout from './views/layout' # A mix-in that should be mixed to class. -EventBroker = require './lib/event_broker' +import EventBroker from './lib/event_broker' # Independent global event bus that is used by itself, so lowercased. -mediator = require './mediator' +import mediator from './mediator' # The bootstrapper is the entry point for Chaplin apps. -module.exports = class Application +export default class Application # Borrow the `extend` method from a dear friend. @extend = Backbone.Model.extend diff --git a/src/chaplin/composer.coffee b/src/chaplin/composer.coffee index 5a92d069..4b582f75 100644 --- a/src/chaplin/composer.coffee +++ b/src/chaplin/composer.coffee @@ -1,11 +1,9 @@ -'use strict' +import _ from 'underscore' +import Backbone from 'backbone' -_ = require 'underscore' -Backbone = require 'backbone' - -Composition = require './lib/composition' -EventBroker = require './lib/event_broker' -mediator = require './mediator' +import Composition from './lib/composition' +import EventBroker from './lib/event_broker' +import mediator from './mediator' # Composer # -------- @@ -18,7 +16,7 @@ mediator = require './mediator' # is routed to where a view that was composed is not re-composed, the # composed view is disposed. -module.exports = class Composer +export default class Composer # Borrow the static extend method from Backbone @extend = Backbone.Model.extend diff --git a/src/chaplin/controllers/controller.coffee b/src/chaplin/controllers/controller.coffee index 4fcbf543..25756850 100644 --- a/src/chaplin/controllers/controller.coffee +++ b/src/chaplin/controllers/controller.coffee @@ -1,13 +1,11 @@ -'use strict' +import _ from 'underscore' +import Backbone from 'backbone' -_ = require 'underscore' -Backbone = require 'backbone' +import mediator from '../mediator' +import EventBroker from '../lib/event_broker' +import utils from '../lib/utils' -mediator = require '../mediator' -EventBroker = require '../lib/event_broker' -utils = require '../lib/utils' - -module.exports = class Controller +export default class Controller # Borrow the static extend method from Backbone. @extend = Backbone.Model.extend diff --git a/src/chaplin/dispatcher.coffee b/src/chaplin/dispatcher.coffee index 90b776e4..a755527b 100644 --- a/src/chaplin/dispatcher.coffee +++ b/src/chaplin/dispatcher.coffee @@ -1,13 +1,11 @@ -'use strict' +import _ from 'underscore' +import Backbone from 'backbone' -_ = require 'underscore' -Backbone = require 'backbone' +import EventBroker from './lib/event_broker' +import utils from './lib/utils' +import mediator from './mediator' -EventBroker = require './lib/event_broker' -utils = require './lib/utils' -mediator = require './mediator' - -module.exports = class Dispatcher +export default class Dispatcher # Borrow the static extend method from Backbone. @extend = Backbone.Model.extend diff --git a/src/chaplin/lib/composition.coffee b/src/chaplin/lib/composition.coffee index 13777df3..de0f7947 100644 --- a/src/chaplin/lib/composition.coffee +++ b/src/chaplin/lib/composition.coffee @@ -1,8 +1,7 @@ -'use strict' +import _ from 'underscore' +import Backbone from 'backbone' -_ = require 'underscore' -Backbone = require 'backbone' -EventBroker = require './event_broker' +import EventBroker from './event_broker' # Composition # ----------- @@ -11,7 +10,7 @@ EventBroker = require './event_broker' # controller that is used internally to inflate simple # calls to !composer:compose and may be extended and used to have complete # control over the composition process. -module.exports = class Composition +export default class Composition # Borrow the static extend method from Backbone. @extend = Backbone.Model.extend diff --git a/src/chaplin/lib/event_broker.coffee b/src/chaplin/lib/event_broker.coffee index 14cf2c16..fd468ef5 100644 --- a/src/chaplin/lib/event_broker.coffee +++ b/src/chaplin/lib/event_broker.coffee @@ -1,6 +1,4 @@ -'use strict' - -mediator = require '../mediator' +import mediator from '../mediator' # Add functionality to subscribe and publish to global # Publish/Subscribe events so they can be removed afterwards @@ -71,4 +69,4 @@ EventBroker = Object.freeze EventBroker # Return our creation. -module.exports = EventBroker +export default EventBroker diff --git a/src/chaplin/lib/history.coffee b/src/chaplin/lib/history.coffee index 3af188c0..25d77c8a 100644 --- a/src/chaplin/lib/history.coffee +++ b/src/chaplin/lib/history.coffee @@ -1,7 +1,5 @@ -'use strict' - -_ = require 'underscore' -Backbone = require 'backbone' +import _ from 'underscore' +import Backbone from 'backbone' # Cached regex for stripping a leading hash/slash and trailing space. routeStripper = /^[#\/]|\s+$/g @@ -120,4 +118,6 @@ class History extends Backbone.History if options.trigger @loadUrl fragment -module.exports = if Backbone.$ then History else Backbone.History +History = if Backbone.$ then History else Backbone.History + +export default History diff --git a/src/chaplin/lib/route.coffee b/src/chaplin/lib/route.coffee index b870a371..1a729c04 100644 --- a/src/chaplin/lib/route.coffee +++ b/src/chaplin/lib/route.coffee @@ -1,13 +1,11 @@ -'use strict' +import _ from 'underscore' +import Backbone from 'backbone' -_ = require 'underscore' -Backbone = require 'backbone' +import EventBroker from './event_broker' +import utils from './utils' +import Controller from '../controllers/controller' -EventBroker = require './event_broker' -utils = require './utils' -Controller = require '../controllers/controller' - -module.exports = class Route +export default class Route # Borrow the static extend method from Backbone. @extend = Backbone.Model.extend diff --git a/src/chaplin/lib/router.coffee b/src/chaplin/lib/router.coffee index c9024f6d..25f14e59 100644 --- a/src/chaplin/lib/router.coffee +++ b/src/chaplin/lib/router.coffee @@ -1,18 +1,16 @@ -'use strict' +import _ from 'underscore' +import Backbone from 'backbone' -_ = require 'underscore' -Backbone = require 'backbone' - -EventBroker = require './event_broker' -History = require './history' -Route = require './route' -utils = require './utils' -mediator = require '../mediator' +import EventBroker from './event_broker' +import History from './history' +import Route from './route' +import utils from './utils' +import mediator from '../mediator' # The router which is a replacement for Backbone.Router. # Like the standard router, it creates a Backbone.History # instance and registers routes on it. -module.exports = class Router # This class does not extend Backbone.Router. +export default class Router # This class does not extend Backbone.Router. # Borrow the static extend method from Backbone. @extend = Backbone.Model.extend diff --git a/src/chaplin/lib/support.coffee b/src/chaplin/lib/support.coffee index 82b22725..703242e3 100644 --- a/src/chaplin/lib/support.coffee +++ b/src/chaplin/lib/support.coffee @@ -1,7 +1,6 @@ -'use strict' - # Backwards-compatibility module # ------------------------------ -module.exports = - propertyDescriptors: yes \ No newline at end of file +export default { + propertyDescriptors: yes +} diff --git a/src/chaplin/lib/sync_machine.coffee b/src/chaplin/lib/sync_machine.coffee index a7615d2a..34d29ddb 100644 --- a/src/chaplin/lib/sync_machine.coffee +++ b/src/chaplin/lib/sync_machine.coffee @@ -1,5 +1,3 @@ -'use strict' - # Simple finite state machine for synchronization of models/collections # Three states: unsynced, syncing and synced # Several transitions between them @@ -85,4 +83,4 @@ for event in [UNSYNCED, SYNCING, SYNCED, STATE_CHANGE] Object.freeze SyncMachine # Return our creation. -module.exports = SyncMachine +export default SyncMachine diff --git a/src/chaplin/lib/utils.coffee b/src/chaplin/lib/utils.coffee index 5cf7897c..8365dbd3 100644 --- a/src/chaplin/lib/utils.coffee +++ b/src/chaplin/lib/utils.coffee @@ -1,4 +1,4 @@ -'use strict' +import mediator from '../mediator' # Utilities # --------- @@ -69,12 +69,12 @@ utils = # Returns the url for a named route and any params. reverse: (criteria, params, query) -> - require('../mediator').execute 'router:reverse', + mediator.execute 'router:reverse', criteria, params, query # Redirects to URL, route name or controller and action pair. redirectTo: (pathDesc, params, options) -> - require('../mediator').execute 'router:route', + mediator.execute 'router:route', pathDesc, params, options # Determines module system and returns module loader function. @@ -159,4 +159,4 @@ utils.queryParams = utils.querystring Object.seal utils # Return our creation. -module.exports = utils +export default utils diff --git a/src/chaplin/mediator.coffee b/src/chaplin/mediator.coffee index 35f304ca..2f2c1ffa 100644 --- a/src/chaplin/mediator.coffee +++ b/src/chaplin/mediator.coffee @@ -1,7 +1,5 @@ -'use strict' - -Backbone = require 'backbone' -utils = require './lib/utils' +import Backbone from 'backbone' +import utils from './lib/utils' # Mediator # -------- @@ -85,4 +83,4 @@ utils.readonly mediator, 'setHandler', 'execute', 'removeHandlers', 'seal' # Return our creation. -module.exports = mediator +export default mediator diff --git a/src/chaplin/models/collection.coffee b/src/chaplin/models/collection.coffee index b7792f2d..bbacc695 100644 --- a/src/chaplin/models/collection.coffee +++ b/src/chaplin/models/collection.coffee @@ -1,15 +1,13 @@ -'use strict' +import _ from 'underscore' +import Backbone from 'backbone' -_ = require 'underscore' -Backbone = require 'backbone' - -Model = require './model' -EventBroker = require '../lib/event_broker' -utils = require '../lib/utils' +import Model from './model' +import EventBroker from '../lib/event_broker' +import utils from '../lib/utils' # Abstract class which extends the standard Backbone collection # in order to add some functionality. -module.exports = class Collection extends Backbone.Collection +export default class Collection extends Backbone.Collection # Mixin an EventBroker. _.extend @prototype, EventBroker diff --git a/src/chaplin/models/model.coffee b/src/chaplin/models/model.coffee index e8d62a5f..321c76e6 100644 --- a/src/chaplin/models/model.coffee +++ b/src/chaplin/models/model.coffee @@ -1,8 +1,7 @@ -'use strict' +import _ from 'underscore' +import Backbone from 'backbone' -_ = require 'underscore' -Backbone = require 'backbone' -EventBroker = require '../lib/event_broker' +import EventBroker from '../lib/event_broker' # Private helper function for serializing attributes recursively, # creating objects which delegate to the original attributes @@ -54,7 +53,7 @@ serializeModelAttributes = (model, currentModel, modelStack) -> # Abstraction that adds some useful functionality to backbone model. -module.exports = class Model extends Backbone.Model +export default class Model extends Backbone.Model # Mixin an EventBroker. _.extend @prototype, EventBroker diff --git a/src/chaplin/views/collection_view.coffee b/src/chaplin/views/collection_view.coffee index 1b8c1b52..5ab4959c 100644 --- a/src/chaplin/views/collection_view.coffee +++ b/src/chaplin/views/collection_view.coffee @@ -1,9 +1,7 @@ -'use strict' +import Backbone from 'backbone' -Backbone = require 'backbone' - -View = require './view' -utils = require '../lib/utils' +import View from './view' +import utils from '../lib/utils' # Shortcut to access the DOM manipulation library. {$} = Backbone @@ -106,7 +104,7 @@ insertView = do -> # Derive this class and declare at least `itemView` or override # `initItemView`. `initItemView` gets an item model and should instantiate # and return a corresponding item view. -module.exports = class CollectionView extends View +export default class CollectionView extends View # Configuration options # ===================== diff --git a/src/chaplin/views/layout.coffee b/src/chaplin/views/layout.coffee index 68cd4050..6e299d0a 100644 --- a/src/chaplin/views/layout.coffee +++ b/src/chaplin/views/layout.coffee @@ -1,17 +1,15 @@ -'use strict' +import _ from 'underscore' +import Backbone from 'backbone' -_ = require 'underscore' -Backbone = require 'backbone' - -View = require './view' -EventBroker = require '../lib/event_broker' -utils = require '../lib/utils' -mediator = require '../mediator' +import View from './view' +import EventBroker from '../lib/event_broker' +import utils from '../lib/utils' +import mediator from '../mediator' # Shortcut to access the DOM manipulation library. {$} = Backbone -module.exports = class Layout extends View +export default class Layout extends View # Bind to document body by default. el: 'body' diff --git a/src/chaplin/views/view.coffee b/src/chaplin/views/view.coffee index 3c456205..1e3737f3 100644 --- a/src/chaplin/views/view.coffee +++ b/src/chaplin/views/view.coffee @@ -1,11 +1,9 @@ -'use strict' +import _ from 'underscore' +import Backbone from 'backbone' -_ = require 'underscore' -Backbone = require 'backbone' - -EventBroker = require '../lib/event_broker' -utils = require '../lib/utils' -mediator = require '../mediator' +import EventBroker from '../lib/event_broker' +import utils from '../lib/utils' +import mediator from '../mediator' # Shortcut to access the DOM manipulation library. {$} = Backbone @@ -39,7 +37,7 @@ attach = do -> else actual[view.containerMethod] view.el -module.exports = class View extends Backbone.NativeView or Backbone.View +export default class View extends Backbone.NativeView or Backbone.View # Mixin an EventBroker. _.extend @prototype, EventBroker From 4337d82384154508630d0487587f02cdd57584db Mon Sep 17 00:00:00 2001 From: Florian-R Date: Tue, 22 Nov 2016 11:58:25 +0100 Subject: [PATCH 4/4] test --- .gitignore | 5 ++++- Gruntfile.coffee | 34 ++++++++++++++++++++++++++------ package.json | 11 ++++++++++- test/application_spec.coffee | 11 +++++------ test/collection_spec.coffee | 14 ++++++------- test/collection_view_spec.coffee | 18 ++++++++--------- test/composer_spec.coffee | 10 +++++----- test/composition_spec.coffee | 7 ++++--- test/controller_spec.coffee | 14 ++++++------- test/dispatcher_spec.coffee | 17 ++++++++-------- test/event_broker_spec.coffee | 11 ++++++----- test/layout_spec.coffee | 14 ++++++------- test/mediator_spec.coffee | 11 ++++++----- test/model_spec.coffee | 14 ++++++------- test/router_spec.coffee | 14 ++++++------- test/sync_machine_spec.coffee | 14 ++++++------- test/utils_spec.coffee | 10 +++++----- test/view_spec.coffee | 22 ++++++++++----------- 18 files changed, 144 insertions(+), 107 deletions(-) diff --git a/.gitignore b/.gitignore index fe75653f..4c02e66a 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,9 @@ # Generated folders from build process /build +# Compiled js for tests +/tmp + # Local package dependencies /node_modules @@ -11,4 +14,4 @@ coverage* # Logs -npm-debug.log \ No newline at end of file +npm-debug.log diff --git a/Gruntfile.coffee b/Gruntfile.coffee index 1ca70967..75fbdf3f 100644 --- a/Gruntfile.coffee +++ b/Gruntfile.coffee @@ -32,25 +32,39 @@ module.exports = (grunt) -> options: configFile: 'coffeelint.json' + clean: ['./tmp'] + + coffee: + test: + expand: true, + cwd: './test/', + src: ['*.coffee'], + dest: './tmp/test/', + ext: '.js' + mochaTest: native: options: reporter: 'spec' require: [ - 'coffee-coverage/register-istanbul' + -> + global._$coffeeIstanbul = {} + 'babel-register' 'jsdom-assign' -> require.cache[require.resolve 'jquery'] = {} 'backbone.nativeview' ] - src: 'test/*.coffee' + src: 'tmp/test/*.js' jquery: options: reporter: 'spec' require: [ - 'coffee-script/register' + -> + global._$coffeeIstanbul = {} + 'babel-register' 'jsdom-assign' ] - src: 'test/*.coffee' + src: 'tmp/test/*.js' makeReport: src: 'coverage/coverage-coffee.json', @@ -272,9 +286,17 @@ module.exports = (grunt) -> # Tests # ===== + + grunt.registerTask 'instrument', -> + {CoverageInstrumentor} = require('coffee-coverage') + coverageInstrumentor = new CoverageInstrumentor({ + instrumentor: 'istanbul' + }) + coverageInstrumentor.instrument('./src', './tmp/src', bare: true) + grunt.registerTask 'lint', 'coffeelint' - grunt.registerTask 'test', 'mochaTest:native' - grunt.registerTask 'test:jquery', 'mochaTest:jquery' + grunt.registerTask 'test', ['clean', 'instrument', 'coffee:test', 'mochaTest:native'] + grunt.registerTask 'test:jquery', ['clean', 'instrument', 'coffee:test', 'mochaTest:jquery'] # Coverage # ======== diff --git a/package.json b/package.json index 288fa039..911ac271 100644 --- a/package.json +++ b/package.json @@ -4,10 +4,12 @@ "description": "An Application Architecture Using Backbone.js", "repository": "git://github.com/chaplinjs/chaplin.git", "dependencies": { + "babel-register": "6.18.0", "backbone": "~1.3.3", "underscore": "~1.8.3" }, "devDependencies": { + "babel-plugin-transform-es2015-modules-commonjs": "6.18.0", "backbone.nativeview": "~0.3.3", "chai": "3.5.x", "coffee-coverage": "1.0.1", @@ -15,6 +17,8 @@ "grunt": "~0.4.5", "grunt-cli": "~0.1.13", "grunt-coffeelint": "~0.0.15", + "grunt-contrib-clean": "1.0.0", + "grunt-contrib-coffee": "florian-r/grunt-contrib-coffee", "grunt-contrib-compress": "0.14.x", "grunt-contrib-uglify": "~0.11.1", "grunt-contrib-watch": "~0.6.1", @@ -38,5 +42,10 @@ "coverage": "grunt coverage", "build": "grunt build" }, - "license": "SEE LICENSE IN MIT-LICENSE.txt" + "license": "SEE LICENSE IN MIT-LICENSE.txt", + "babel": { + "plugins": [ + "transform-es2015-modules-commonjs" + ] + } } diff --git a/test/application_spec.coffee b/test/application_spec.coffee index 6acdb9c0..4ff9ee94 100644 --- a/test/application_spec.coffee +++ b/test/application_spec.coffee @@ -1,10 +1,9 @@ -'use strict' +import Backbone from 'backbone' +import {expect} from 'chai' +import Chaplin from '../src/chaplin' -Backbone = require 'backbone' - -{expect} = require 'chai' -{Application, Composer, Dispatcher} = require '../src/chaplin' -{EventBroker, Router, mediator, Layout} = require '../src/chaplin' +{Application, Composer, Dispatcher} = Chaplin +{EventBroker, Router, mediator, Layout} = Chaplin describe 'Application', -> app = null diff --git a/test/collection_spec.coffee b/test/collection_spec.coffee index c486e978..a6c64e30 100644 --- a/test/collection_spec.coffee +++ b/test/collection_spec.coffee @@ -1,14 +1,14 @@ -'use strict' +import Backbone from 'backbone' +import sinon from 'sinon' +import chai from 'chai' +import sinonChai from 'sinon-chai' +import Chaplin from '../src/chaplin' -Backbone = require 'backbone' - -sinon = require 'sinon' -chai = require 'chai' -chai.use require 'sinon-chai' +chai.use sinonChai chai.should() {expect} = chai -{EventBroker, mediator, Collection, Model} = require '../src/chaplin' +{EventBroker, mediator, Collection, Model} = Chaplin describe 'Collection', -> collection = null diff --git a/test/collection_view_spec.coffee b/test/collection_view_spec.coffee index 06d89bdb..ce633b71 100644 --- a/test/collection_view_spec.coffee +++ b/test/collection_view_spec.coffee @@ -1,15 +1,15 @@ -'use strict' +import $ from 'jquery' +import sinon from 'sinon' +import chai from 'chai' +import sinonChai from 'sinon-chai' +import Chaplin from '../src/chaplin' -$ = require 'jquery' - -sinon = require 'sinon' -chai = require 'chai' -chai.use require 'sinon-chai' +chai.use sinonChai chai.should() -{expect} = require 'chai' -{SyncMachine, utils, Collection, Model} = require '../src/chaplin' -{CollectionView, View} = require '../src/chaplin' +{expect} = chai +{SyncMachine, utils, Collection, Model} = Chaplin +{CollectionView, View} = Chaplin describe 'CollectionView', -> # Initialize shared variables diff --git a/test/composer_spec.coffee b/test/composer_spec.coffee index 9066be88..00e9b619 100644 --- a/test/composer_spec.coffee +++ b/test/composer_spec.coffee @@ -1,13 +1,13 @@ -'use strict' +import sinon from 'sinon' +import chai from 'chai' +import Chaplin from '../src/chaplin' -sinon = require 'sinon' -chai = require 'chai' chai.use require 'sinon-chai' chai.should() {expect} = chai -{Composer, Controller, Dispatcher, Composition} = require '../src/chaplin' -{EventBroker, Router, mediator, Model, View} = require '../src/chaplin' +{Composer, Controller, Dispatcher, Composition} = Chaplin +{EventBroker, Router, mediator, Model, View} = Chaplin describe 'Composer', -> composer = null diff --git a/test/composition_spec.coffee b/test/composition_spec.coffee index 42441ca5..2b2c912e 100644 --- a/test/composition_spec.coffee +++ b/test/composition_spec.coffee @@ -1,7 +1,8 @@ -'use strict' +import chai from 'chai' +import Chaplin from '../src/chaplin' -{expect} = require 'chai' -{Composition, EventBroker, mediator} = require '../src/chaplin' +{expect} = chai +{Composition, EventBroker, mediator} = Chaplin describe 'Composition', -> composition = null diff --git a/test/controller_spec.coffee b/test/controller_spec.coffee index 5204fa45..42fe292d 100644 --- a/test/controller_spec.coffee +++ b/test/controller_spec.coffee @@ -1,14 +1,14 @@ -'use strict' +import Backbone from 'backbone' +import sinon from 'sinon' +import chai from 'chai' +import sinonChai from 'sinon-chai' +import Chaplin from '../src/chaplin' -Backbone = require 'backbone' - -sinon = require 'sinon' -chai = require 'chai' -chai.use require 'sinon-chai' +chai.use sinonChai chai.should() {expect} = chai -{Controller, EventBroker, mediator, Model, View} = require '../src/chaplin' +{Controller, EventBroker, mediator, Model, View} = Chaplin describe 'Controller', -> controller = null diff --git a/test/dispatcher_spec.coffee b/test/dispatcher_spec.coffee index 52fba77b..63f22b05 100644 --- a/test/dispatcher_spec.coffee +++ b/test/dispatcher_spec.coffee @@ -1,14 +1,15 @@ -'use strict' +import _ from 'underscore' +import sinon from 'sinon' +import chai from 'chai' +import sinonChai from 'sinon-chai' +import Chaplin from '../src/chaplin' -{uniqueId} = require 'underscore' - -sinon = require 'sinon' -chai = require 'chai' -chai.use require 'sinon-chai' +chai.use sinonChai chai.should() -{expect} = require 'chai' -{Composer, Controller, Dispatcher, utils, mediator} = require '../src/chaplin' +{uniqueId} = _ +{expect} = chai +{Composer, Controller, Dispatcher, utils, mediator} = Chaplin describe 'Dispatcher', -> # Initialize shared variables diff --git a/test/event_broker_spec.coffee b/test/event_broker_spec.coffee index 16326dbb..52bb44b5 100644 --- a/test/event_broker_spec.coffee +++ b/test/event_broker_spec.coffee @@ -1,12 +1,13 @@ -'use strict' +import sinon from 'sinon' +import chai from 'chai' +import sinonChai from 'sinon-chai' +import Chaplin from '../src/chaplin' -sinon = require 'sinon' -chai = require 'chai' -chai.use require 'sinon-chai' +chai.use sinonChai chai.should() {expect} = chai -{EventBroker, mediator} = require '../src/chaplin' +{EventBroker, mediator} = Chaplin describe 'EventBroker', -> # Create a simple object which mixes in the EventBroker diff --git a/test/layout_spec.coffee b/test/layout_spec.coffee index 44b753d4..0eb9866c 100644 --- a/test/layout_spec.coffee +++ b/test/layout_spec.coffee @@ -1,14 +1,14 @@ -'use strict' +import $ from 'jquery' +import sinon from 'sinon' +import chai from 'chai' +import sinonChai from 'sinon-chai' +import Chaplin from '../src/chaplin' -$ = require 'jquery' - -sinon = require 'sinon' -chai = require 'chai' -chai.use require 'sinon-chai' +chai.use sinonChai chai.should() {expect} = chai -{Controller, mediator, Layout, View} = require '../src/chaplin' +{Controller, mediator, Layout, View} = Chaplin describe 'Layout', -> # Initialize shared variables diff --git a/test/mediator_spec.coffee b/test/mediator_spec.coffee index f11dbcf3..bff8c868 100644 --- a/test/mediator_spec.coffee +++ b/test/mediator_spec.coffee @@ -1,12 +1,13 @@ -'use strict' +import sinon from 'sinon' +import chai from 'chai' +import sinonChai from 'sinon-chai' +import Chaplin from '../src/chaplin' -sinon = require 'sinon' -chai = require 'chai' -chai.use require 'sinon-chai' +chai.use sinonChai chai.should() {expect} = chai -{mediator, Model} = require '../src/chaplin' +{mediator, Model} = Chaplin describe 'mediator', -> it 'should be a simple object', -> diff --git a/test/model_spec.coffee b/test/model_spec.coffee index 33c61fdf..9db99ae5 100644 --- a/test/model_spec.coffee +++ b/test/model_spec.coffee @@ -1,14 +1,14 @@ -'use strict' +import Backbone from 'backbone' +import sinon from 'sinon' +import chai from 'chai' +import sinonChai from 'sinon-chai' +import Chaplin from '../src/chaplin' -Backbone = require 'backbone' - -sinon = require 'sinon' -chai = require 'chai' -chai.use require 'sinon-chai' +chai.use sinonChai chai.should() {expect} = chai -{EventBroker, mediator, Model} = require '../src/chaplin' +{EventBroker, mediator, Model} = Chaplin describe 'Model', -> model = null diff --git a/test/router_spec.coffee b/test/router_spec.coffee index c387d460..ffc8b85d 100644 --- a/test/router_spec.coffee +++ b/test/router_spec.coffee @@ -1,14 +1,14 @@ -'use strict' +import Backbone from 'backbone' +import sinon from 'sinon' +import chai from 'chai' +import sinonChai from 'sinon-chai' +import Chaplin from '../src/chaplin' -Backbone = require 'backbone' - -sinon = require 'sinon' -chai = require 'chai' -chai.use require 'sinon-chai' +chai.use sinonChai chai.should() {expect} = require 'chai' -{Route, Router, utils, mediator} = require '../src/chaplin' +{Route, Router, utils, mediator} = Chaplin describe 'Router and Route', -> # Initialize shared variables diff --git a/test/sync_machine_spec.coffee b/test/sync_machine_spec.coffee index 89ed579b..db0fb2eb 100644 --- a/test/sync_machine_spec.coffee +++ b/test/sync_machine_spec.coffee @@ -1,14 +1,14 @@ -'use strict' +import Backbone from 'backbone' +import sinon from 'sinon' +import chai from 'chai' +import sinonChai from 'sinon-chai' +import Chaplin from '../src/chaplin' -Backbone = require 'backbone' - -sinon = require 'sinon' -chai = require 'chai' -chai.use require 'sinon-chai' +chai.use sinonChai chai.should() {expect} = chai -{SyncMachine} = require '../src/chaplin' +{SyncMachine} = Chaplin describe 'SyncMachine', -> machine = null diff --git a/test/utils_spec.coffee b/test/utils_spec.coffee index c4e958f1..f32c231c 100644 --- a/test/utils_spec.coffee +++ b/test/utils_spec.coffee @@ -1,9 +1,9 @@ -'use strict' +import Backbone from 'backbone' +import chai from 'chai' +import Chaplin from '../src/chaplin' -Backbone = require 'backbone' - -{expect} = require 'chai' -{utils, mediator} = require '../src/chaplin' +{expect} = chai +{utils, mediator} = Chaplin describe 'utils', -> class A diff --git a/test/view_spec.coffee b/test/view_spec.coffee index 88bae462..aa7ab29b 100644 --- a/test/view_spec.coffee +++ b/test/view_spec.coffee @@ -1,16 +1,16 @@ -'use strict' - -$ = require 'jquery' -Backbone = require 'backbone' - -sinon = require 'sinon' -chai = require 'chai' -chai.use require 'sinon-chai' +import $ from 'jquery' +import Backbone from 'backbone' +import sinon from 'sinon' +import chai from 'chai' +import sinonChai from 'sinon-chai' +import Chaplin from '../src/chaplin' + +chai.use sinonChai chai.should() -{expect} = require 'chai' -{EventBroker, SyncMachine, mediator} = require '../src/chaplin' -{Collection, Model, View} = require '../src/chaplin' +{expect} = chai +{EventBroker, SyncMachine, mediator} = Chaplin +{Collection, Model, View} = Chaplin describe 'View', -> renderCalled = false