sprockets-commoner 0.1.4 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +9 -0
 - data/README.md +13 -14
 - data/js/babel-plugin-sprockets-commoner-internal/index.js +16 -37
 - data/lib/sprockets/commoner/json_processor.rb +9 -0
 - data/lib/sprockets/commoner/processor.rb +8 -24
 - data/lib/sprockets/commoner/version.rb +1 -1
 - data/lib/sprockets/commoner.rb +2 -0
 - data/sprockets-commoner.gemspec +1 -1
 - metadata +7 -5
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 8a5ceb584e1eacf7990a65e0dfb94534f9d2fdd2
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 4ba4cc82f4df684af207003516778fa80ee9fd81
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 424bfe23119eef889e07d452835e7bae3ca03f96017e4be8614792aaedf6b2172a93abdb577263953641fba60a95d0641fdddae9a1eef67bf29ee77a1871723d
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: f094b1ba53d8da39d3fd06272960a5af01d8e366dc67abb6e740b8466b6990b184537b7a27d72b79e9ac096357a6687ad3d7ec99f901d6d42f88c4b381f58866
         
     | 
    
        data/CHANGELOG.md
    ADDED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Sprockets::Commoner
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            `Sprockets::Commoner` is a gem that enables JavaScript package and Babel transformation in Sprockets.
         
     | 
| 
      
 3 
     | 
    
         
            +
            `Sprockets::Commoner` is a gem that enables JavaScript package and Babel transformation in Sprockets. It is meant as a replacement for [Browserify](http://browserify.org/) or [Webpack](https://webpack.github.io/) in Rails.
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            ## Features
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
         @@ -28,7 +28,7 @@ To get started, let's begin with the simplest possible set up: just enabling res 
     | 
|
| 
       28 
28 
     | 
    
         
             
            1. Add `sprockets-commoner` to Gemfile, run `bundle install`, and restart your Rails server.
         
     | 
| 
       29 
29 
     | 
    
         
             
            1. Add package.json with `babel-core` version 6 and any packages you want. For the example, we'll use the excellent [lodash](https://lodash.com) library. `npm install -S babel-core@6 lodash`
         
     | 
| 
       30 
30 
     | 
    
         
             
            1. `require` your client-side JavaScript packages from `application.js`!
         
     | 
| 
       31 
     | 
    
         
            -
            ```
         
     | 
| 
      
 31 
     | 
    
         
            +
            ```javascript
         
     | 
| 
       32 
32 
     | 
    
         
             
            var _ = require('lodash');
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
            console.log(_.map([1, 2, 3], function(n) { return n * 3; }));
         
     | 
| 
         @@ -40,7 +40,7 @@ console.log(_.map([1, 2, 3], function(n) { return n * 3; })); 
     | 
|
| 
       40 
40 
     | 
    
         
             
            1. Add a `.babelrc` with you required configuration. We just need to do `echo '{presets: ["es2015"]}' > .babelrc`.
         
     | 
| 
       41 
41 
     | 
    
         
             
            1. Use any feature you want! For example, let's use `import` and arrow functions in our `application.js`:
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
            ```
         
     | 
| 
      
 43 
     | 
    
         
            +
            ```javascript
         
     | 
| 
       44 
44 
     | 
    
         
             
            import {map} from 'lodash';
         
     | 
| 
       45 
45 
     | 
    
         | 
| 
       46 
46 
     | 
    
         
             
            console.log(map([1, 2, 3], (n) => n * 3));
         
     | 
| 
         @@ -52,7 +52,7 @@ console.log(map([1, 2, 3], (n) => n * 3)); 
     | 
|
| 
       52 
52 
     | 
    
         | 
| 
       53 
53 
     | 
    
         
             
            By default, commoner will process any file under the application root directory. If you want more fine-tuned control over which files to process, you can specify which paths to include or exclude. To do so, you will need to re-register the Sprockets processor. For example:
         
     | 
| 
       54 
54 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
            ```
         
     | 
| 
      
 55 
     | 
    
         
            +
            ```ruby
         
     | 
| 
       56 
56 
     | 
    
         
             
            # In config/initializers/sprockets_commoner.rb
         
     | 
| 
       57 
57 
     | 
    
         
             
            Rails.application.config.assets.configure do |env|
         
     | 
| 
       58 
58 
     | 
    
         
             
              env.unregister_postprocessor('application/javascript', Sprockets::Commoner::Processor)
         
     | 
| 
         @@ -83,12 +83,12 @@ Commoner is designed from the start to facilitate a transition from CoffeeScript 
     | 
|
| 
       83 
83 
     | 
    
         
             
            Any JavaScript file can `require` a CoffeeScript file, which will cause that CoffeeScript file to be scanned for a global variable reference and the `require` call to be replaced with a reference.
         
     | 
| 
       84 
84 
     | 
    
         
             
            If we have the following two files:
         
     | 
| 
       85 
85 
     | 
    
         | 
| 
       86 
     | 
    
         
            -
            ```
         
     | 
| 
      
 86 
     | 
    
         
            +
            ```coffeescript
         
     | 
| 
       87 
87 
     | 
    
         
             
            # file.coffee
         
     | 
| 
       88 
88 
     | 
    
         
             
            class window.ImportantClass
         
     | 
| 
       89 
89 
     | 
    
         
             
            ```
         
     | 
| 
       90 
90 
     | 
    
         | 
| 
       91 
     | 
    
         
            -
            ```
         
     | 
| 
      
 91 
     | 
    
         
            +
            ```javascript
         
     | 
| 
       92 
92 
     | 
    
         
             
            // main.js
         
     | 
| 
       93 
93 
     | 
    
         
             
            var klass = require('./file');
         
     | 
| 
       94 
94 
     | 
    
         | 
| 
         @@ -101,15 +101,15 @@ Then the second file will just be compiled down to `new window.ImportantClass()` 
     | 
|
| 
       101 
101 
     | 
    
         | 
| 
       102 
102 
     | 
    
         
             
            We have added a custom directive that makes it very easy to expose an ES2015 module to the global namespace so it can be used by CoffeeScript files or any other code. For example:
         
     | 
| 
       103 
103 
     | 
    
         | 
| 
       104 
     | 
    
         
            -
            ```
         
     | 
| 
       105 
     | 
    
         
            -
            'expose window.MyClass 
     | 
| 
      
 104 
     | 
    
         
            +
            ```javascript
         
     | 
| 
      
 105 
     | 
    
         
            +
            'expose window.MyClass';
         
     | 
| 
       106 
106 
     | 
    
         | 
| 
       107 
107 
     | 
    
         
             
            export default class MyClass {}
         
     | 
| 
       108 
108 
     | 
    
         
             
            ```
         
     | 
| 
       109 
109 
     | 
    
         | 
| 
       110 
110 
     | 
    
         
             
            `expose` will use the default export if available, otherwise the whole module namespace will be assigned to the global variable. For example:
         
     | 
| 
       111 
111 
     | 
    
         | 
| 
       112 
     | 
    
         
            -
            ```
         
     | 
| 
      
 112 
     | 
    
         
            +
            ```javascript
         
     | 
| 
       113 
113 
     | 
    
         
             
            // constants.js
         
     | 
| 
       114 
114 
     | 
    
         
             
            'expose window.Constants';
         
     | 
| 
       115 
115 
     | 
    
         | 
| 
         @@ -138,7 +138,7 @@ After the regular Babel plugins are done doing their thing, `babel-plugin-common 
     | 
|
| 
       138 
138 
     | 
    
         
             
            * It finds any `require` calls and rewires them to variable references (as detailed in [`require` support](#require-support))
         
     | 
| 
       139 
139 
     | 
    
         
             
            * It wraps the module in a function and supplies it with `module` and `exports`. The end value of `module.exports` gets assigned to the module identifier, which is referenced by other files (as specified in '`require` support') Example:
         
     | 
| 
       140 
140 
     | 
    
         | 
| 
       141 
     | 
    
         
            -
            ```
         
     | 
| 
      
 141 
     | 
    
         
            +
            ```javascript
         
     | 
| 
       142 
142 
     | 
    
         
             
            var __commoner_module__node_modules$package$index_js = __commoner_initialize_module__(function (module, exports) {
         
     | 
| 
       143 
143 
     | 
    
         
             
              exports.default = 123;
         
     | 
| 
       144 
144 
     | 
    
         
             
            });
         
     | 
| 
         @@ -151,14 +151,14 @@ After all the files have been transformed, there is a bundle step which combines 
     | 
|
| 
       151 
151 
     | 
    
         | 
| 
       152 
152 
     | 
    
         
             
            For example, if we have the following two files:
         
     | 
| 
       153 
153 
     | 
    
         | 
| 
       154 
     | 
    
         
            -
            ```
         
     | 
| 
      
 154 
     | 
    
         
            +
            ```javascript
         
     | 
| 
       155 
155 
     | 
    
         
             
            // module.js
         
     | 
| 
       156 
156 
     | 
    
         
             
            export default function a() {
         
     | 
| 
       157 
157 
     | 
    
         
             
              return 1;
         
     | 
| 
       158 
158 
     | 
    
         
             
            };
         
     | 
| 
       159 
159 
     | 
    
         
             
            ```
         
     | 
| 
       160 
160 
     | 
    
         | 
| 
       161 
     | 
    
         
            -
            ```
         
     | 
| 
      
 161 
     | 
    
         
            +
            ```javascript
         
     | 
| 
       162 
162 
     | 
    
         
             
            // application.js
         
     | 
| 
       163 
163 
     | 
    
         
             
            import a from './module';
         
     | 
| 
       164 
164 
     | 
    
         | 
| 
         @@ -167,7 +167,7 @@ a(); 
     | 
|
| 
       167 
167 
     | 
    
         | 
| 
       168 
168 
     | 
    
         
             
            We will end up with the following (browser-runnable) file:
         
     | 
| 
       169 
169 
     | 
    
         | 
| 
       170 
     | 
    
         
            -
            ```
         
     | 
| 
      
 170 
     | 
    
         
            +
            ```javascript
         
     | 
| 
       171 
171 
     | 
    
         
             
            !function() {
         
     | 
| 
       172 
172 
     | 
    
         
             
            var __commoner_initialize_module__ = function(f) {
         
     | 
| 
       173 
173 
     | 
    
         
             
              var module = {exports: {}};
         
     | 
| 
         @@ -202,4 +202,3 @@ var __commoner_module__app$assets$javascripts$application_js = __commoner_initia 
     | 
|
| 
       202 
202 
     | 
    
         
             
            ```
         
     | 
| 
       203 
203 
     | 
    
         | 
| 
       204 
204 
     | 
    
         
             
            This file is meant to be compressed, and does incredibly well when processed by UglifyJS.
         
     | 
| 
       205 
     | 
    
         
            -
             
     | 
| 
         @@ -25,9 +25,7 @@ if (typeof Object.assign != 'function') { 
     | 
|
| 
       25 
25 
     | 
    
         | 
| 
       26 
26 
     | 
    
         
             
            var fs = require('fs');
         
     | 
| 
       27 
27 
     | 
    
         
             
            var dirname = require('path').dirname;
         
     | 
| 
       28 
     | 
    
         
            -
            var join = require('path').join;
         
     | 
| 
       29 
28 
     | 
    
         
             
            var resolve = require('browser-resolve').sync;
         
     | 
| 
       30 
     | 
    
         
            -
            var emptyModule = join(__dirname, 'node_modules', 'browser-resolve', 'empty.js');
         
     | 
| 
       31 
29 
     | 
    
         | 
| 
       32 
30 
     | 
    
         
             
            module.exports = function (context) {
         
     | 
| 
       33 
31 
     | 
    
         
             
              var t = context.types;
         
     | 
| 
         @@ -65,7 +63,7 @@ module.exports = function (context) { 
     | 
|
| 
       65 
63 
     | 
    
         
             
                }
         
     | 
| 
       66 
64 
     | 
    
         | 
| 
       67 
65 
     | 
    
         
             
                if (identifiers.length === 0) {
         
     | 
| 
       68 
     | 
    
         
            -
                   
     | 
| 
      
 66 
     | 
    
         
            +
                  throw new Error('No identifiers found in ' + path);
         
     | 
| 
       69 
67 
     | 
    
         
             
                } else if (identifiers.length > 1) {
         
     | 
| 
       70 
68 
     | 
    
         
             
                  throw new Error('Multiple identifiers found in ' + path);
         
     | 
| 
       71 
69 
     | 
    
         
             
                }
         
     | 
| 
         @@ -116,16 +114,12 @@ module.exports = function (context) { 
     | 
|
| 
       116 
114 
     | 
    
         
             
                return '__commoner_module__' + escapedPath;
         
     | 
| 
       117 
115 
     | 
    
         
             
              }
         
     | 
| 
       118 
116 
     | 
    
         | 
| 
       119 
     | 
    
         
            -
              function resolveTarget(file, path 
     | 
| 
      
 117 
     | 
    
         
            +
              function resolveTarget(file, path) {
         
     | 
| 
       120 
118 
     | 
    
         
             
                var name = void 0;
         
     | 
| 
       121 
119 
     | 
    
         
             
                if (opts.globals != null && (name = opts.globals[path]) != null) {
         
     | 
| 
       122 
120 
     | 
    
         
             
                  return name;
         
     | 
| 
       123 
121 
     | 
    
         
             
                } else {
         
     | 
| 
       124 
122 
     | 
    
         
             
                  var resolvedPath = resolve(path, opts);
         
     | 
| 
       125 
     | 
    
         
            -
                  if (resolvedPath === emptyModule) {
         
     | 
| 
       126 
     | 
    
         
            -
                    return false;
         
     | 
| 
       127 
     | 
    
         
            -
                  }
         
     | 
| 
       128 
     | 
    
         
            -
             
     | 
| 
       129 
123 
     | 
    
         
             
                  file.metadata.required.push(resolvedPath);
         
     | 
| 
       130 
124 
     | 
    
         | 
| 
       131 
125 
     | 
    
         
             
                  // Check if the path is under sourceRoot
         
     | 
| 
         @@ -135,13 +129,10 @@ module.exports = function (context) { 
     | 
|
| 
       135 
129 
     | 
    
         
             
                  }
         
     | 
| 
       136 
130 
     | 
    
         | 
| 
       137 
131 
     | 
    
         
             
                  if (/\.coffee$/.test(resolvedPath)) {
         
     | 
| 
       138 
     | 
    
         
            -
                    // If it's a coffee script file, look for global variable assignments 
     | 
| 
      
 132 
     | 
    
         
            +
                    // If it's a coffee script file, look for global variable assignments
         
     | 
| 
       139 
133 
     | 
    
         
             
                    return findDeclarationInCoffeeFile(resolvedPath);
         
     | 
| 
       140 
134 
     | 
    
         
             
                  } else {
         
     | 
| 
       141 
     | 
    
         
            -
                     
     | 
| 
       142 
     | 
    
         
            -
                      file.metadata.targetsToProcess.push(resolvedPath);
         
     | 
| 
       143 
     | 
    
         
            -
                    }
         
     | 
| 
       144 
     | 
    
         
            -
                    // Otherwise we just look for the module by referencing its Special Identifier™.
         
     | 
| 
      
 135 
     | 
    
         
            +
                    // Otherwise we just look for the module by referencing its Special Identifier™
         
     | 
| 
       145 
136 
     | 
    
         
             
                    return pathToIdentifier(resolvedPath);
         
     | 
| 
       146 
137 
     | 
    
         
             
                  }
         
     | 
| 
       147 
138 
     | 
    
         
             
                }
         
     | 
| 
         @@ -163,14 +154,10 @@ module.exports = function (context) { 
     | 
|
| 
       163 
154 
     | 
    
         
             
                    return;
         
     | 
| 
       164 
155 
     | 
    
         
             
                  }
         
     | 
| 
       165 
156 
     | 
    
         | 
| 
       166 
     | 
    
         
            -
                  var name = resolveTarget(state.file, target 
     | 
| 
       167 
     | 
    
         
            -
                   
     | 
| 
       168 
     | 
    
         
            -
             
     | 
| 
       169 
     | 
    
         
            -
                   
     | 
| 
       170 
     | 
    
         
            -
                    path.scope.rename(name);
         
     | 
| 
       171 
     | 
    
         
            -
                    path.scope.rename(path.node.id.name, name);
         
     | 
| 
       172 
     | 
    
         
            -
                    path.remove();
         
     | 
| 
       173 
     | 
    
         
            -
                  }
         
     | 
| 
      
 157 
     | 
    
         
            +
                  var name = resolveTarget(state.file, target);
         
     | 
| 
      
 158 
     | 
    
         
            +
                  path.scope.rename(name);
         
     | 
| 
      
 159 
     | 
    
         
            +
                  path.scope.rename(path.node.id.name, name);
         
     | 
| 
      
 160 
     | 
    
         
            +
                  path.remove();
         
     | 
| 
       174 
161 
     | 
    
         
             
                },
         
     | 
| 
       175 
162 
     | 
    
         
             
                CallExpression: function CallExpression(path, state) {
         
     | 
| 
       176 
163 
     | 
    
         
             
                  if (!isRequire(path)) {
         
     | 
| 
         @@ -182,21 +169,16 @@ module.exports = function (context) { 
     | 
|
| 
       182 
169 
     | 
    
         
             
                    return;
         
     | 
| 
       183 
170 
     | 
    
         
             
                  }
         
     | 
| 
       184 
171 
     | 
    
         | 
| 
      
 172 
     | 
    
         
            +
                  var replacement = resolveTarget(state.file, target);
         
     | 
| 
       185 
173 
     | 
    
         
             
                  switch (path.parent.type) {
         
     | 
| 
       186 
     | 
    
         
            -
             
     | 
| 
       187 
     | 
    
         
            -
             
     | 
| 
       188 
     | 
    
         
            -
             
     | 
| 
       189 
     | 
    
         
            -
             
     | 
| 
       190 
     | 
    
         
            -
                     
     | 
| 
       191 
     | 
    
         
            -
             
     | 
| 
       192 
     | 
    
         
            -
                    // Otherwise we just look for the module by referencing its Special Identifier™.
         
     | 
| 
       193 
     | 
    
         
            -
                    var replacement = resolveTarget(state.file, target, true);
         
     | 
| 
       194 
     | 
    
         
            -
                    if (replacement === false) {
         
     | 
| 
       195 
     | 
    
         
            -
                      path.replaceWith(t.objectExpression([]));
         
     | 
| 
       196 
     | 
    
         
            -
                    } else {
         
     | 
| 
      
 174 
     | 
    
         
            +
                    case "ExpressionStatement":
         
     | 
| 
      
 175 
     | 
    
         
            +
                      // We just need to know there's a dependency, we can remove it then
         
     | 
| 
      
 176 
     | 
    
         
            +
                      path.remove();
         
     | 
| 
      
 177 
     | 
    
         
            +
                      break;
         
     | 
| 
      
 178 
     | 
    
         
            +
                    default:
         
     | 
| 
      
 179 
     | 
    
         
            +
                      // Otherwise we just look for the module by referencing its Special Identifier™
         
     | 
| 
       197 
180 
     | 
    
         
             
                      path.replaceWith(t.identifier(replacement));
         
     | 
| 
       198 
     | 
    
         
            -
             
     | 
| 
       199 
     | 
    
         
            -
                    break;
         
     | 
| 
      
 181 
     | 
    
         
            +
                      break;
         
     | 
| 
       200 
182 
     | 
    
         
             
                  }
         
     | 
| 
       201 
183 
     | 
    
         
             
                }
         
     | 
| 
       202 
184 
     | 
    
         
             
              };
         
     | 
| 
         @@ -206,9 +188,6 @@ module.exports = function (context) { 
     | 
|
| 
       206 
188 
     | 
    
         
             
                  if (file.metadata.required == null) {
         
     | 
| 
       207 
189 
     | 
    
         
             
                    file.metadata.required = [];
         
     | 
| 
       208 
190 
     | 
    
         
             
                  }
         
     | 
| 
       209 
     | 
    
         
            -
                  if (file.metadata.targetsToProcess == null) {
         
     | 
| 
       210 
     | 
    
         
            -
                    file.metadata.targetsToProcess = [];
         
     | 
| 
       211 
     | 
    
         
            -
                  }
         
     | 
| 
       212 
191 
     | 
    
         
             
                },
         
     | 
| 
       213 
192 
     | 
    
         | 
| 
       214 
193 
     | 
    
         
             
                visitor: {
         
     | 
| 
         @@ -4,19 +4,14 @@ require 'open3' 
     | 
|
| 
       4 
4 
     | 
    
         
             
            module Sprockets
         
     | 
| 
       5 
5 
     | 
    
         
             
              module Commoner
         
     | 
| 
       6 
6 
     | 
    
         
             
                class Processor < Schmooze::Base
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                  ExcludedFileError = Class.new(::StandardError)
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                  VERSION = '1'.freeze
         
     | 
| 
       11 
7 
     | 
    
         
             
                  BABELRC_FILE = '.babelrc'.freeze
         
     | 
| 
       12 
8 
     | 
    
         
             
                  PACKAGE_JSON = 'package.json'.freeze
         
     | 
| 
       13 
9 
     | 
    
         
             
                  JS_PACKAGE_PATH = File.expand_path('../../../js', __dir__)
         
     | 
| 
       14 
     | 
    
         
            -
                  ALLOWED_EXTENSIONS = /\.js(?:\.erb)?\z/
         
     | 
| 
       15 
     | 
    
         
            -
                  COFFEE_EXTENSION = /\.coffee(:?\.erb)?\z/
         
     | 
| 
      
 10 
     | 
    
         
            +
                  ALLOWED_EXTENSIONS = /\.js(?:on)?(?:\.erb)?\z/
         
     | 
| 
       16 
11 
     | 
    
         | 
| 
       17 
12 
     | 
    
         
             
                  dependencies babel: 'babel-core', commoner: 'babel-plugin-sprockets-commoner-internal'
         
     | 
| 
       18 
13 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
                  method :version, 'function() { return babel.version; }'
         
     | 
| 
      
 14 
     | 
    
         
            +
                  method :version, 'function() { return [process.version, babel.version]; }'
         
     | 
| 
       20 
15 
     | 
    
         
             
                  method :transform, %q{function(code, opts, commonerOpts) {
         
     | 
| 
       21 
16 
     | 
    
         
             
              try {
         
     | 
| 
       22 
17 
     | 
    
         
             
                var file = new babel.File(opts);
         
     | 
| 
         @@ -49,25 +44,20 @@ module Sprockets 
     | 
|
| 
       49 
44 
     | 
    
         
             
                  end
         
     | 
| 
       50 
45 
     | 
    
         | 
| 
       51 
46 
     | 
    
         
             
                  attr_reader :include, :exclude, :babel_exclude
         
     | 
| 
       52 
     | 
    
         
            -
                  def initialize(root, include: [root], exclude: [ 
     | 
| 
      
 47 
     | 
    
         
            +
                  def initialize(root, include: [root], exclude: [], babel_exclude: [/node_modules/])
         
     | 
| 
       53 
48 
     | 
    
         
             
                    @include = include.map {|path| expand_to_root(path, root) }
         
     | 
| 
       54 
49 
     | 
    
         
             
                    @exclude = exclude.map {|path| expand_to_root(path, root) }
         
     | 
| 
       55 
50 
     | 
    
         
             
                    @babel_exclude = babel_exclude.map {|path| expand_to_root(path, root) }
         
     | 
| 
       56 
51 
     | 
    
         
             
                    super(root, 'NODE_PATH' => JS_PACKAGE_PATH)
         
     | 
| 
       57 
52 
     | 
    
         
             
                  end
         
     | 
| 
       58 
53 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
                  def  
     | 
| 
      
 54 
     | 
    
         
            +
                  def call(input)
         
     | 
| 
       60 
55 
     | 
    
         
             
                    @cache_key ||= [
         
     | 
| 
       61 
56 
     | 
    
         
             
                      self.class.name,
         
     | 
| 
       62 
     | 
    
         
            -
                      VERSION,
         
     | 
| 
       63 
57 
     | 
    
         
             
                      version,
         
     | 
| 
       64 
     | 
    
         
            -
                       
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
                      @babel_exclude.map(&:to_s),
         
     | 
| 
       67 
     | 
    
         
            -
                    ]
         
     | 
| 
       68 
     | 
    
         
            -
                  end
         
     | 
| 
      
 58 
     | 
    
         
            +
                      VERSION,
         
     | 
| 
      
 59 
     | 
    
         
            +
                    ].freeze
         
     | 
| 
       69 
60 
     | 
    
         | 
| 
       70 
     | 
    
         
            -
                  def call(input)
         
     | 
| 
       71 
61 
     | 
    
         
             
                    filename = input[:filename]
         
     | 
| 
       72 
62 
     | 
    
         | 
| 
       73 
63 
     | 
    
         
             
                    return unless should_process?(filename)
         
     | 
| 
         @@ -80,14 +70,8 @@ module Sprockets 
     | 
|
| 
       80 
70 
     | 
    
         | 
| 
       81 
71 
     | 
    
         
             
                    babel_config = babelrc_data(filename)
         
     | 
| 
       82 
72 
     | 
    
         | 
| 
       83 
     | 
    
         
            -
                    result =  
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
                    if result['metadata'].has_key?('targetsToProcess')
         
     | 
| 
       86 
     | 
    
         
            -
                      result['metadata']['targetsToProcess'].each do |t|
         
     | 
| 
       87 
     | 
    
         
            -
                        unless should_process?(t)
         
     | 
| 
       88 
     | 
    
         
            -
                          raise ExcludedFileError, "#{t} was imported from #{filename} but this file won't be processed by Sprockets::Commoner"
         
     | 
| 
       89 
     | 
    
         
            -
                        end
         
     | 
| 
       90 
     | 
    
         
            -
                      end
         
     | 
| 
      
 73 
     | 
    
         
            +
                    result = input[:cache].fetch([filename, @cache_key, input[:data], babel_config]) do
         
     | 
| 
      
 74 
     | 
    
         
            +
                      transform(input[:data], options(input), paths: @env.paths)
         
     | 
| 
       91 
75 
     | 
    
         
             
                    end
         
     | 
| 
       92 
76 
     | 
    
         | 
| 
       93 
77 
     | 
    
         
             
                    if result['metadata'].has_key?('required')
         
     | 
    
        data/lib/sprockets/commoner.rb
    CHANGED
    
    | 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'sprockets'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'sprockets/commoner/json_processor'
         
     | 
| 
       2 
3 
     | 
    
         
             
            require 'sprockets/commoner/processor'
         
     | 
| 
       3 
4 
     | 
    
         
             
            require 'sprockets/commoner/bundle'
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
         @@ -7,6 +8,7 @@ module Sprockets 
     | 
|
| 
       7 
8 
     | 
    
         
             
              end
         
     | 
| 
       8 
9 
     | 
    
         | 
| 
       9 
10 
     | 
    
         
             
              register_postprocessor 'application/javascript', ::Sprockets::Commoner::Processor
         
     | 
| 
      
 11 
     | 
    
         
            +
              register_transformer 'application/json', 'application/javascript', ::Sprockets::Commoner::JSONProcessor
         
     | 
| 
       10 
12 
     | 
    
         
             
              register_bundle_metadata_reducer 'application/javascript', :commoner_enabled, false, :|
         
     | 
| 
       11 
13 
     | 
    
         
             
              register_bundle_metadata_reducer 'application/javascript', :commoner_used_helpers, Set.new, :+
         
     | 
| 
       12 
14 
     | 
    
         
             
              register_bundle_processor 'application/javascript', ::Sprockets::Commoner::Bundle
         
     | 
    
        data/sprockets-commoner.gemspec
    CHANGED
    
    | 
         @@ -27,7 +27,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       27 
27 
     | 
    
         
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         
     | 
| 
       28 
28 
     | 
    
         
             
              spec.require_paths = ["lib"]
         
     | 
| 
       29 
29 
     | 
    
         
             
              spec.add_dependency "sprockets", ">= 3", "< 4"
         
     | 
| 
       30 
     | 
    
         
            -
              spec.add_dependency "schmooze", "~> 0.1. 
     | 
| 
      
 30 
     | 
    
         
            +
              spec.add_dependency "schmooze", "~> 0.1.5"
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
       32 
32 
     | 
    
         
             
              spec.add_development_dependency "rake", "~> 10.0"
         
     | 
| 
       33 
33 
     | 
    
         
             
              spec.add_development_dependency "minitest", "~> 5.0"
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: sprockets-commoner
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.2.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Bouke van der Bijl
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2016-05- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-05-04 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: sprockets
         
     | 
| 
         @@ -36,14 +36,14 @@ dependencies: 
     | 
|
| 
       36 
36 
     | 
    
         
             
                requirements:
         
     | 
| 
       37 
37 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       38 
38 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       39 
     | 
    
         
            -
                    version: 0.1. 
     | 
| 
      
 39 
     | 
    
         
            +
                    version: 0.1.5
         
     | 
| 
       40 
40 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       41 
41 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       42 
42 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       43 
43 
     | 
    
         
             
                requirements:
         
     | 
| 
       44 
44 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       45 
45 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       46 
     | 
    
         
            -
                    version: 0.1. 
     | 
| 
      
 46 
     | 
    
         
            +
                    version: 0.1.5
         
     | 
| 
       47 
47 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       48 
48 
     | 
    
         
             
              name: rake
         
     | 
| 
       49 
49 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -124,6 +124,7 @@ extra_rdoc_files: [] 
     | 
|
| 
       124 
124 
     | 
    
         
             
            files:
         
     | 
| 
       125 
125 
     | 
    
         
             
            - ".gitignore"
         
     | 
| 
       126 
126 
     | 
    
         
             
            - ".nvmrc"
         
     | 
| 
      
 127 
     | 
    
         
            +
            - CHANGELOG.md
         
     | 
| 
       127 
128 
     | 
    
         
             
            - CODE_OF_CONDUCT.md
         
     | 
| 
       128 
129 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       129 
130 
     | 
    
         
             
            - README.md
         
     | 
| 
         @@ -153,6 +154,7 @@ files: 
     | 
|
| 
       153 
154 
     | 
    
         
             
            - js/babel-plugin-sprockets-commoner/package.json
         
     | 
| 
       154 
155 
     | 
    
         
             
            - lib/sprockets/commoner.rb
         
     | 
| 
       155 
156 
     | 
    
         
             
            - lib/sprockets/commoner/bundle.rb
         
     | 
| 
      
 157 
     | 
    
         
            +
            - lib/sprockets/commoner/json_processor.rb
         
     | 
| 
       156 
158 
     | 
    
         
             
            - lib/sprockets/commoner/processor.rb
         
     | 
| 
       157 
159 
     | 
    
         
             
            - lib/sprockets/commoner/railtie.rb
         
     | 
| 
       158 
160 
     | 
    
         
             
            - lib/sprockets/commoner/version.rb
         
     | 
| 
         @@ -178,7 +180,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       178 
180 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       179 
181 
     | 
    
         
             
            requirements: []
         
     | 
| 
       180 
182 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       181 
     | 
    
         
            -
            rubygems_version: 2. 
     | 
| 
      
 183 
     | 
    
         
            +
            rubygems_version: 2.5.1
         
     | 
| 
       182 
184 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       183 
185 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       184 
186 
     | 
    
         
             
            summary: Use Babel in Sprockets to compile modules for the browser
         
     |