js-routes 1.4.8 → 1.4.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2fb822322b2dc899d084e7562fb8208f490cfa466acb560faa624391e5c08d78
4
- data.tar.gz: 5b8ef3ebf451d7b6a3ea519c84d63c9360a63b80422756a60f4de76f68207cfe
3
+ metadata.gz: f8a952ba9e2f582074e459b770227628ee2cecf37cd50d03978ba9690bac5a94
4
+ data.tar.gz: 151da0e08b1b47fd6caa3bfbb1a5311ac0a528a9c88bb53b05dea181438823fb
5
5
  SHA512:
6
- metadata.gz: c62cf998ca3b96ce493a94bba20cbaf5b0980c29c2e3f4320f5633f4ea1336f0eaa4309658bb941be393184b332cb7f2eb2437a13b95351ff71b67c368d1a629
7
- data.tar.gz: f008e5cc545deb0e8fb389de0111b796af4cc66f3fccaed002e1c2107b2ed61955ab2c12502b0c87d6f39f4b4106a958cdc742830b3df0e12181bfc3a5b0732e
6
+ metadata.gz: 586fc3bcbef2fc96c12b0d53b5f9fd58eb19b8f5987ca7a6dac068ecc6865c363a4207e69afd4d0fe0c6d252d7b0c507428c7257a99cabf6fc34ba0c5afe29ea
7
+ data.tar.gz: 10276a454e7f07fe6166957c18516214c34853859f4e8645e06105984e80fb18b77016cbc398a1cdd5351eba6f4d38ce78555f34498be04f35e353c341500c75
data/.gitignore CHANGED
@@ -15,6 +15,8 @@ log
15
15
  # jeweler generated
16
16
  pkg
17
17
 
18
+ node_modules
19
+
18
20
  # Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
19
21
  #
20
22
  # * Create a file at ~/.gitignore
@@ -1,6 +1,24 @@
1
1
  ## master
2
2
 
3
- ## v1.4.8
3
+ ## v1.4.14
4
+
5
+ * Fix compatibility with UMD modules #237 [Comment](https://github.com/railsware/js-routes/issues/237#issuecomment-752754679)
6
+
7
+ ## v1.4.13
8
+
9
+ * Improve compatibility with node environment #269.
10
+ * Change default file location configuration to Webpacker if both Webpacker and Sprockets are loaded
11
+
12
+ ## v1.4.11
13
+
14
+ * Use app/javascript/routes.js as a default file location if app/javascript directory exists
15
+ * Add `default` export for better experience when used as es6 module
16
+
17
+ ## v1.4.10
18
+
19
+ * Require engine only when sprockets is loaded #257.
20
+
21
+ ## v1.4.9
4
22
 
5
23
  * Allow to specify null namespace and receive routes as an object without assigning it anywhere #247
6
24
 
data/Readme.md CHANGED
@@ -12,9 +12,80 @@ Your Rails Gemfile:
12
12
  gem "js-routes"
13
13
  ```
14
14
 
15
- ### Basic Setup
15
+ ## Setup
16
16
 
17
- Require JsRoutes in `application.js` or other bundle
17
+ Run:
18
+
19
+ ```
20
+ rake js:routes
21
+ ```
22
+
23
+ Make routes available globally in `app/javascript/packs/application.js`:
24
+
25
+ ``` javascript
26
+ window.Routes = require('routes');
27
+ ```
28
+
29
+ Individual routes can be imported using:
30
+
31
+ ``` javascript
32
+ import {edit_post_path, new_post_path} from 'routes';
33
+ ```
34
+
35
+ **Note**: that this setup requires `rake js:routes` to be run each time routes file is updated.
36
+
37
+ #### Webpacker + automatic updates
38
+
39
+ This setup can automatically update your routes without `rake js:routes` being called manually.
40
+ It requires [rails-erb-loader](https://github.com/usabilityhub/rails-erb-loader) npm package to work.
41
+
42
+ Add `erb` loader to webpacker:
43
+
44
+ ``` sh
45
+ yarn add rails-erb-loader
46
+ rm -f app/javascript/routes.js # delete static file if any
47
+ ```
48
+
49
+ Create webpack ERB config `config/webpack/loaders/erb.js`:
50
+
51
+ ``` javascript
52
+ module.exports = {
53
+ test: /\.js\.erb$/,
54
+ enforce: 'pre',
55
+ exclude: /node_modules/,
56
+ use: [{
57
+ loader: 'rails-erb-loader',
58
+ options: {
59
+ runner: (/^win/.test(process.platform) ? 'ruby ' : '') + 'bin/rails runner'
60
+ }
61
+ }]
62
+ }
63
+ ```
64
+
65
+ Enable `erb` extension in `config/webpacker/environment.js`:
66
+
67
+ ```
68
+ const erb = require('./loaders/erb')
69
+ environment.loaders.append('erb', erb)
70
+ ```
71
+
72
+ Create routes file `app/javascript/routes.js.erb`:
73
+
74
+ ``` erb
75
+ <%= JsRoutes.generate() %>
76
+ ```
77
+
78
+ Use routes wherever you need them `app/javascript/packs/application.js`:
79
+
80
+ ``` javascript
81
+ window.Routes = require('routes.js.erb');
82
+ ```
83
+
84
+ #### Sprockets (Deprecated)
85
+
86
+ If you are using [Sprockets](https://github.com/rails/sprockets-rails) you may configure js-routes in the following way.
87
+
88
+ Require JsRoutes in `app/assets/javascripts/application.js` or other bundle
18
89
 
19
90
  ``` js
20
91
  //= require js-routes
@@ -32,7 +103,7 @@ This cache is not flushed on server restart in development environment.
32
103
 
33
104
  ### Configuration
34
105
 
35
- You can configure JsRoutes in two main ways. Either with an initializer (e.g. `config/initializers/jsroutes.rb`):
106
+ You can configure JsRoutes in two main ways. Either with an initializer (e.g. `config/initializers/js_routes.rb`):
36
107
 
37
108
  ``` ruby
38
109
  JsRoutes.setup do |config|
@@ -40,7 +111,7 @@ JsRoutes.setup do |config|
40
111
  end
41
112
  ```
42
113
 
43
- Or dynamically in JavaScript, although not all configuration options are supported:
114
+ Or dynamically in JavaScript, although only [Formatter Options](#formatter-options) are supported (see below)
44
115
 
45
116
  ``` js
46
117
  Routes.configure({
@@ -49,93 +120,84 @@ Routes.configure({
49
120
  Routes.config(); // current config
50
121
  ```
51
122
 
52
- Available options:
123
+ #### Available Options
124
+
125
+ ##### Generator Options
126
+
127
+ Options to configure JavaScript file generator. These options are only available in Ruby context but not JavaScript.
53
128
 
54
- * `default_url_options` - default parameters used when generating URLs
55
- * Option is configurable at JS level with `Routes.configure()`
56
- * Example: {:format => "json", :trailing\_slash => true, :protocol => "https", :subdomain => "api", :host => "example.com", :port => 3000}
57
- * Default: {}
58
129
  * `exclude` - Array of regexps to exclude from routes.
59
- * Default: []
130
+ * Default: `[]`
60
131
  * The regexp applies only to the name before the `_path` suffix, eg: you want to match exactly `settings_path`, the regexp should be `/^settings$/`
61
132
  * `include` - Array of regexps to include in routes.
62
- * Default: []
133
+ * Default: `[]`
63
134
  * The regexp applies only to the name before the `_path` suffix, eg: you want to match exactly `settings_path`, the regexp should be `/^settings$/`
64
135
  * `namespace` - global object used to access routes.
65
136
  * Supports nested namespace like `MyProject.routes`
66
137
  * Default: `Routes`
67
- * `prefix` - String representing a url path to prepend to all paths.
68
- * Option is configurable at JS level with `Routes.configure()`
69
- * Example: `http://yourdomain.com`. This will cause route helpers to generate full path only.
70
- * Default: `Rails.application.config.relative_url_root`
71
- * `camel_case` (version >= 0.8.8) - Generate camel case route names.
72
- * Default: false
73
- * `url_links` (version >= 0.8.9) - Generate `*_url` helpers (in addition to the default `*_path` helpers).
74
- * Example: true
75
- * Default: false
138
+ * `camel_case` - Generate camel case route names.
139
+ * Default: `false`
140
+ * `url_links` - Generate `*_url` helpers (in addition to the default `*_path` helpers).
141
+ * Example: `true`
142
+ * Default: `false`
76
143
  * Note: generated URLs will first use the protocol, host, and port options specified in the route definition. Otherwise, the URL will be based on the option specified in the `default_url_options` config. If no default option has been set, then the URL will fallback to the current URL based on `window.location`.
77
- * `compact` (version > 0.9.9) - Remove `_path` suffix in path routes(`*_url` routes stay untouched if they were enabled)
78
- * Default: false
144
+ * `compact` - Remove `_path` suffix in path routes(`*_url` routes stay untouched if they were enabled)
145
+ * Default: `false`
79
146
  * Sample route call when option is set to true: Routes.users() => `/users`
80
- * `serializer` (version >= 1.1.0) - Puts a JS function here that serializes a Javascript Hash object into URL paramters: `{a: 1, b: 2} => "a=1&b=2"`.
81
- * Default: `nil`. Uses built-in serializer
82
- * Option is configurable at JS level with `Routes.configure()`
83
- * Example: `jQuery.param` - use jQuery's serializer algorithm. You can attach serialize function from your favorite AJAX framework.
84
- * Example: `MyApp.custom_serialize` - use completely custom serializer of your application.
85
-
86
- * `special_options_key` - a special key that helps JsRoutes to destinguish serialized model from options hash
87
- * This option is required because JS doesn't provide a difference between an object and a hash
88
- * Option is configurable at JS level with `Routes.configure()`
89
- * Default: `_options`
90
147
  * `application` - a key to specify which rails engine you want to generate routes too.
91
148
  * This option allows to only generate routes for a specific rails engine, that is mounted into routes instead of all Rails app routes
92
149
  * Default: `Rails.application`
150
+ * `file` - a file location where generated routes are stored
151
+ * Default: `app/javascript/routes.js` if setup with Webpacker, otherwise `app/assets/javascripts/routes.js` if setup with Sprockets.
152
+
153
+ ##### Formatter Options
154
+
155
+ Options to configure routes formatting. These options are available both in Ruby and JavaScript context.
93
156
 
94
- ### Very Advanced Setup
157
+ * `default_url_options` - default parameters used when generating URLs
158
+ * Example: `{format: "json", trailing_slash: true, protocol: "https", subdomain: "api", host: "example.com", port: 3000}`
159
+ * Default: `{}`
160
+ * `prefix` - string that will prepend any generated URL. Usually used when app URL root includes a path component.
161
+ * Example: `/rails-app`
162
+ * Default: `Rails.application.config.relative_url_root`
163
+ * `serializer` - a JS function that serializes a Javascript Hash object into URL paramters like `{a: 1, b: 2} => "a=1&b=2"`.
164
+ * Default: `nil`. Uses built-in serializer compatible with Rails
165
+ * Example: `jQuery.param` - use jQuery's serializer algorithm. You can attach serialize function from your favorite AJAX framework.
166
+ * Example: `function (object) { ... }` - use completely custom serializer of your application.
167
+ * `special_options_key` - a special key that helps JsRoutes to destinguish serialized model from options hash
168
+ * This option exists because JS doesn't provide a difference between an object and a hash
169
+ * Default: `_options`
170
+
171
+ ### Advanced Setup
95
172
 
96
173
  In case you need multiple route files for different parts of your application, you have to create the files manually.
97
174
  If your application has an `admin` and an `application` namespace for example:
98
175
 
99
176
  ```
100
- # app/assets/javascripts/admin/routes.js.erb
177
+ # app/javascript/admin/routes.js.erb
101
178
  <%= JsRoutes.generate(namespace: "AdminRoutes", include: /admin/) %>
102
-
103
- # app/assets/javascripts/admin.js.coffee
104
- #= require admin/routes
105
179
  ```
106
180
 
107
181
  ```
108
- # app/assets/javascripts/application/routes.js.erb
109
- <%= JsRoutes.generate(namespace: "AppRoutes", exclude: /admin/) %>
110
-
111
- # app/assets/javascripts/application.js.coffee
112
- #= require application/routes
182
+ # app/javascript/customer/routes.js.erb
183
+ <%= JsRoutes.generate(namespace: "CustomerRoutes", exclude: /admin/) %>
113
184
  ```
114
185
 
115
186
  In order to generate the routes JS code to a string:
116
187
 
117
- ```ruby
188
+ ``` ruby
118
189
  routes_js = JsRoutes.generate(options)
119
190
  ```
120
191
 
121
192
  If you want to generate the routes files outside of the asset pipeline, you can use `JsRoutes.generate!`:
122
193
 
123
194
  ``` ruby
124
- path = "app/assets/javascripts"
125
- JsRoutes.generate!("#{path}/app_routes.js", :namespace => "AppRoutes", :exclude => [/^admin_/, /^api_/])
126
- JsRoutes.generate!("#{path}/adm_routes.js", :namespace => "AdmRoutes", :include => /^admin_/)
127
- JsRoutes.generate!("#{path}/api_routes.js", :namespace => "ApiRoutes", :include => /^api_/, :default_url_options => {:format => "json"})
195
+ path = "app/javascript"
196
+ JsRoutes.generate!("#{path}/app_routes.js", namespace: "AppRoutes", exclude: [/^admin_/, /^api_/])
197
+ JsRoutes.generate!("#{path}/adm_routes.js", namespace: "AdmRoutes", include: /^admin_/)
198
+ JsRoutes.generate!("#{path}/api_routes.js", namespace: "ApiRoutes", include: /^api_/, default_url_options: {format: "json"})
128
199
  ```
129
200
 
130
- ### Rails relative URL root
131
-
132
- If you've installed your application in a sub-path or sub-URI of your server instead of at the root, you need to set the `RAILS_RELATIVE_URL_ROOT` environment variable to the correct path prefix for your application when you precompile assets. Eg., if your application's base URL is "https://appl.example.com/Application1", the command to precompile assets would be:
133
- ```
134
- RAILS_RELATIVE_URL_ROOT=/Application1 RAILS_ENV=production bundle exec rake assets:precompile
135
- ```
136
- The environment variable is only needed for precompilation of assets, at any other time (eg. when assets are compiled on-the-fly as in the development environment) Rails will set the relative URL root correctly on it's own.
137
-
138
-
139
201
  ## Usage
140
202
 
141
203
  Configuration above will create a nice javascript file with `Routes` object that has all the rails routes available:
@@ -206,7 +268,7 @@ Routes.company_project_path({company_id: 1, id: 2, _options: true}) // => "/comp
206
268
 
207
269
  ## What about security?
208
270
 
209
- JsRoutes itself do not have security holes. It makes URLs
271
+ JsRoutes itself does not have security holes. It makes URLs
210
272
  without access protection more reachable by potential attacker.
211
273
  In order to prevent this use `:exclude` option for sensitive urls like `/admin_/`
212
274
 
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.summary = %q{Brings Rails named routes to javascript}
22
22
 
23
23
  s.add_runtime_dependency(%q<railties>, [">= 4"])
24
- s.add_runtime_dependency(%q<sprockets-rails>)
24
+ s.add_development_dependency(%q<sprockets-rails>)
25
25
  s.add_development_dependency(%q<rspec>, [">= 3.0.0"])
26
26
  s.add_development_dependency(%q<bundler>, [">= 1.1.0"])
27
27
  s.add_development_dependency(%q<coffee-script>, [">= 0"])
@@ -1,5 +1,7 @@
1
1
  require 'uri'
2
- require 'js_routes/engine' if defined?(Rails)
2
+ if defined?(::Rails) && defined?(::Sprockets::Railtie)
3
+ require 'js_routes/engine'
4
+ end
3
5
  require 'js_routes/version'
4
6
 
5
7
  class JsRoutes
@@ -8,13 +10,17 @@ class JsRoutes
8
10
  # OPTIONS
9
11
  #
10
12
 
11
- DEFAULT_PATH = File.join('app','assets','javascripts','routes.js')
12
-
13
13
  DEFAULTS = {
14
- namespace: "Routes",
14
+ namespace: -> { defined?(Webpacker) ? nil : "Routes" },
15
15
  exclude: [],
16
16
  include: //,
17
- file: DEFAULT_PATH,
17
+ file: -> do
18
+ webpacker_dir = Rails.root.join('app', 'javascript')
19
+ sprockets_dir = Rails.root.join('app','assets','javascripts')
20
+ sprockets_file = sprockets_dir.join('routes.js')
21
+ webpacker_file = webpacker_dir.join('routes.js')
22
+ !Dir.exists?(webpacker_dir) && defined?(::Sprockets) ? sprockets_file : webpacker_file
23
+ end,
18
24
  prefix: -> { Rails.application.config.relative_url_root || "" },
19
25
  url_links: false,
20
26
  camel_case: false,
@@ -23,7 +29,7 @@ class JsRoutes
23
29
  serializer: nil,
24
30
  special_options_key: "_options",
25
31
  application: -> { Rails.application }
26
- }
32
+ } #:nodoc:
27
33
 
28
34
  NODE_TYPES = {
29
35
  GROUP: 1,
@@ -34,11 +40,11 @@ class JsRoutes
34
40
  LITERAL: 6,
35
41
  SLASH: 7,
36
42
  DOT: 8
37
- }
43
+ } #:nodoc:
38
44
 
39
- LAST_OPTIONS_KEY = "options".freeze
40
- FILTERED_DEFAULT_PARTS = [:controller, :action]
41
- URL_OPTIONS = [:protocol, :domain, :host, :port, :subdomain]
45
+ LAST_OPTIONS_KEY = "options".freeze #:nodoc:
46
+ FILTERED_DEFAULT_PARTS = [:controller, :action] #:nodoc:
47
+ URL_OPTIONS = [:protocol, :domain, :host, :port, :subdomain] #:nodoc:
42
48
 
43
49
  class Configuration < Struct.new(*DEFAULTS.keys)
44
50
  def initialize(attributes = nil)
@@ -215,7 +221,7 @@ class JsRoutes
215
221
  parent_spec = parent_route.try(:path).try(:spec)
216
222
  route_arguments = route_js_arguments(route, parent_spec)
217
223
  url_link = generate_url_link(name, route_arguments)
218
- _ = <<-JS.strip!
224
+ <<-JS.strip!
219
225
  // #{name.join('.')} => #{parent_spec}#{route.path.spec}
220
226
  // function(#{build_params(route.required_parts)})
221
227
  #{route_name}: Utils.route(#{route_arguments})#{",\n" + url_link if url_link.length > 0}
@@ -47,7 +47,6 @@ class Engine < ::Rails::Engine
47
47
  when -> (v) { v2.match?('', v) },
48
48
  -> (v) { vgte3.match?('', v) }
49
49
 
50
- # Other rails version, assumed newer
51
50
  Rails.application.config.assets.configure do |config|
52
51
  config.register_preprocessor(
53
52
  "application/javascript",
@@ -1,3 +1,3 @@
1
1
  class JsRoutes
2
- VERSION = "1.4.8"
2
+ VERSION = "1.4.14"
3
3
  end
@@ -4,12 +4,10 @@ Based on Rails RAILS_VERSION routes of APP_CLASS
4
4
  */
5
5
 
6
6
  (function() {
7
- var DeprecatedGlobbingBehavior, NodeTypes, ParameterMissing, ReservedOptions, SpecialOptionsKey, UriEncoderSegmentRegex, Utils, root,
7
+ var DeprecatedGlobbingBehavior, NodeTypes, ParameterMissing, ReservedOptions, SpecialOptionsKey, UriEncoderSegmentRegex, Utils, error, result,
8
8
  hasProp = {}.hasOwnProperty,
9
9
  slice = [].slice;
10
10
 
11
- root = typeof exports !== "undefined" && exports !== null ? exports : this;
12
-
13
11
  ParameterMissing = function(message, fileName, lineNumber) {
14
12
  var instance;
15
13
  instance = new Error(message, fileName, lineNumber);
@@ -437,8 +435,8 @@ Based on Rails RAILS_VERSION routes of APP_CLASS
437
435
  return this._classToTypeCache;
438
436
  },
439
437
  get_object_type: function(obj) {
440
- if (root.jQuery && (root.jQuery.type != null)) {
441
- return root.jQuery.type(obj);
438
+ if (this.jQuery && (this.jQuery.type != null)) {
439
+ return this.jQuery.type(obj);
442
440
  }
443
441
  if (obj == null) {
444
442
  return "" + obj;
@@ -497,25 +495,34 @@ Based on Rails RAILS_VERSION routes of APP_CLASS
497
495
  routes.config = function() {
498
496
  return Utils.config();
499
497
  };
500
- Object.defineProperty(routes, 'defaults', {
501
- get: function() {
502
- throw new Error(NAMESPACE + ".defaults is removed. Use " + NAMESPACE + ".configure() instead.");
503
- },
504
- set: function(value) {}
505
- });
506
498
  routes.default_serializer = function(object, prefix) {
507
499
  return Utils.default_serializer(object, prefix);
508
500
  };
509
- return Utils.namespace(root, NAMESPACE, routes);
501
+ return Object.assign({
502
+ "default": routes
503
+ }, routes);
510
504
  }
511
505
  };
512
506
 
507
+ result = Utils.make();
508
+
513
509
  if (typeof define === "function" && define.amd) {
514
510
  define([], function() {
515
- return Utils.make();
511
+ return result;
516
512
  });
513
+ } else if (typeof module !== "undefined" && module !== null) {
514
+ try {
515
+ module.exports = result;
516
+ } catch (error1) {
517
+ error = error1;
518
+ if (error.name !== 'TypeError') {
519
+ throw error;
520
+ }
521
+ }
517
522
  } else {
518
- return Utils.make();
523
+ Utils.namespace(this, NAMESPACE, result);
519
524
  }
520
525
 
526
+ return result;
527
+
521
528
  }).call(this);
@@ -2,7 +2,6 @@
2
2
  File generated by js-routes GEM_VERSION
3
3
  Based on Rails RAILS_VERSION routes of APP_CLASS
4
4
  ###
5
- root = (exports ? this)
6
5
 
7
6
  ParameterMissing = (message, fileName, lineNumber) ->
8
7
  instance = new Error(message, fileName, lineNumber)
@@ -363,7 +362,7 @@ Utils =
363
362
  @_classToTypeCache["[object #{name}]"] = name.toLowerCase()
364
363
  @_classToTypeCache
365
364
  get_object_type: (obj) ->
366
- return root.jQuery.type(obj) if root.jQuery and root.jQuery.type?
365
+ return this.jQuery.type(obj) if this.jQuery and this.jQuery.type?
367
366
  return "#{obj}" unless obj?
368
367
  (if typeof obj is "object" or typeof obj is "function" then @_classToType()[Object::toString.call(obj)] or "object" else typeof obj)
369
368
 
@@ -393,19 +392,25 @@ Utils =
393
392
  routes = ROUTES
394
393
  routes.configure = (config) -> Utils.configure(config)
395
394
  routes.config = -> Utils.config()
396
- Object.defineProperty routes, 'defaults',
397
- get: ->
398
- throw new Error("#{NAMESPACE}.defaults is removed. Use #{NAMESPACE}.configure() instead.")
399
- set: (value) ->
400
-
401
395
  routes.default_serializer = (object, prefix) ->
402
396
  Utils.default_serializer(object, prefix)
403
- # Browser globals
404
- Utils.namespace(root, NAMESPACE, routes)
397
+ Object.assign({default: routes}, routes)
398
+
399
+ result = Utils.make()
405
400
 
406
401
  # Set up Routes appropriately for the environment.
407
402
  if typeof define is "function" and define.amd
408
403
  # AMD
409
- define [], -> Utils.make()
404
+ define [], -> result
405
+ else if module?
406
+ # CommonJS
407
+ try
408
+ module.exports = result
409
+ catch error
410
+ unless error.name == 'TypeError'
411
+ throw error
410
412
  else
411
- return Utils.make()
413
+ # Browser globals
414
+ Utils.namespace(this, NAMESPACE, result)
415
+
416
+ return result
@@ -0,0 +1,2 @@
1
+ //= link_tree ../images
2
+ //= link_directory ../stylesheets .css
@@ -27,16 +27,11 @@ EOF
27
27
  evaljs(JsRoutes.generate({}))
28
28
  end
29
29
 
30
- it "should working from global scope" do
31
- expect(evaljs("Routes.inboxes_path()")).to eq(test_routes.inboxes_path())
32
- end
33
-
34
- it "should working from define function" do
35
- expect(evaljs("Routes.inboxes_path()")).to eq(evaljs("GlobalCheck['js-routes'].inboxes_path()"))
36
- end
37
-
38
30
  it "should working from require" do
39
31
  expect(evaljs("require(['js-routes'], function(r){ return r.inboxes_path(); })")).to eq(test_routes.inboxes_path())
40
32
  end
41
33
 
34
+ it "should define default export for es6 modules" do
35
+ expect(evaljs("require(['js-routes'], function(r){ return r.default.inboxes_path(); })")).to eq(test_routes.inboxes_path())
36
+ end
42
37
  end
@@ -0,0 +1,12 @@
1
+ require "spec_helper"
2
+
3
+ describe JsRoutes, "compatibility with CommonJS (node)" do
4
+ before(:each) do
5
+ evaljs("module = { exports: null }")
6
+ evaljs(JsRoutes.generate({}))
7
+ end
8
+
9
+ it "should define module exports" do
10
+ expect(evaljs("module.exports.inboxes_path()")).to eq(test_routes.inboxes_path())
11
+ end
12
+ end
@@ -60,11 +60,6 @@ describe JsRoutes do
60
60
  end
61
61
 
62
62
  it "should not generate file before initialization" do
63
- # This method is alread fixed in Rails master
64
- # But in 3.2 stable we need to hack it like this
65
- if Rails.application.instance_variable_get("@initialized")
66
- pending
67
- end
68
63
  expect(File.exists?(name)).to be_falsey
69
64
  end
70
65
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: js-routes
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.8
4
+ version: 1.4.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bogdan Gusiev
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-19 00:00:00.000000000 Z
11
+ date: 2021-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -31,7 +31,7 @@ dependencies:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
- type: :runtime
34
+ type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
@@ -172,9 +172,11 @@ files:
172
172
  - lib/routes.js
173
173
  - lib/routes.js.coffee
174
174
  - lib/tasks/js_routes.rake
175
+ - spec/dummy/app/assets/config/manifest.js
175
176
  - spec/dummy/app/assets/javascripts/.gitkeep
176
177
  - spec/dummy/config/routes.rb
177
178
  - spec/js_routes/amd_compatibility_spec.rb
179
+ - spec/js_routes/common_js_compatibility_spec.rb
178
180
  - spec/js_routes/default_serializer_spec.rb
179
181
  - spec/js_routes/generated_javascript_spec.rb
180
182
  - spec/js_routes/options_spec.rb
@@ -186,7 +188,7 @@ homepage: http://github.com/railsware/js-routes
186
188
  licenses:
187
189
  - MIT
188
190
  metadata: {}
189
- post_install_message:
191
+ post_install_message:
190
192
  rdoc_options: []
191
193
  require_paths:
192
194
  - lib
@@ -201,9 +203,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
201
203
  - !ruby/object:Gem::Version
202
204
  version: '0'
203
205
  requirements: []
204
- rubyforge_project:
205
- rubygems_version: 2.7.8
206
- signing_key:
206
+ rubygems_version: 3.2.0
207
+ signing_key:
207
208
  specification_version: 4
208
209
  summary: Brings Rails named routes to javascript
209
210
  test_files: []