js-routes 2.3.0 → 2.3.2

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: 8030ebf1b79303bfad35b2003ced97e6ec398b8bab459bf0f867006c9bc5d763
4
- data.tar.gz: 4d84acaa15dacc791f26e059cb620d5c08d90891103fa5d73750d4bae3973e8b
3
+ metadata.gz: 771e5ddecccbde6b5b78778d456fe9602a4ae4b2aaa89e821cd6bda24be95565
4
+ data.tar.gz: b0ac96fe4273cc21fa616614429e270a393c7bcd11f15b5b79e1b14e56ec579f
5
5
  SHA512:
6
- metadata.gz: 24e4500fcf1f799633343366f84d619060cd57979edc25a9f83ec17baf6a505e3fbbd838f66b6ec70618bf7d991a0f0614a3c6ad02ce85a90931e4a047f168a6
7
- data.tar.gz: 7cab5ccd03712368ea32d43604381b32491ada2a933bf656b6efa0002132e638653f250e5a5037487e36c6ecfed01454d6df359e2e308b5fc7cd237c7af2fca2
6
+ metadata.gz: 150bccfe350126ca0db67d03a8a7bbc22884edd63ef2e86c1cecd4ac2d0d72b941d7f1133cadbe64d19f99332be22db9891ca42f2f4ccfbec7e77447b741fb71
7
+ data.tar.gz: 2a51b7337560e055a21ff96be1b6f89d40d88bc6b541c56129a5f99823436a7c31027cc6e029f6b33b00a42805cd7986d805a30fc8a8ce5cc4e9bd5be20e2757
data/CHANGELOG.md CHANGED
@@ -1,10 +1,35 @@
1
1
  # Changelog
2
2
 
3
+ ## v2.3.2
4
+
5
+ * Add `banner` option that allow to control JSDoc on top of generated file. [#324](https://github.com/bogdan/repo/issues/324).
6
+
7
+ ``` ruby
8
+ JsRoutes.configure do |c|
9
+ c.banner = -> {
10
+ commit_hash = `git rev-parse --short HEAD`.strip
11
+
12
+ <<~DOC
13
+ @file Javascript Route helpers of my magic pony app.
14
+ @author Bogdan Gusiev
15
+ @license MIT
16
+ @version #{commit_hash}
17
+ DOC
18
+ }
19
+ end
20
+ ```
21
+
22
+ ## v2.3.1
23
+
24
+ * Add timestamp on when routes.js was generated into banner.
25
+ * Fix application specified directly without proc. [#323](https://github.com/railsware/js-routes/issues/323)
26
+ * Support `optional_definition_params` option. See [Related Docs](./Readme.md#optional-definition-params).
27
+
3
28
  ## v2.3.0
4
29
 
5
30
  * Drop support of Rails 4.x
6
- * Fix support of shakapacker [#321](https://github.com/railsware/js-routes/issue/321).
7
- * Fix support for Rails 8 [#319](https://github.com/railsware/js-routes/issue/319)
31
+ * Fix support of shakapacker [#321](https://github.com/railsware/js-routes/issues/321).
32
+ * Fix support for Rails 8 [#319](https://github.com/railsware/js-routes/issues/319)
8
33
  * Deprecated `rake js:routes:typescript`.
9
34
  `rake js:routes` now automatically detects if types support can be used on not.
10
35
 
@@ -12,7 +37,7 @@
12
37
 
13
38
  * Remove sorbet files from repo
14
39
  * Clearly define files included in gem
15
- * Fix Middleware and Middleware generator bugs [#316](https://github.com/railsware/js-routes/issue/316)
40
+ * Fix Middleware and Middleware generator bugs [#316](https://github.com/railsware/js-routes/issues/316)
16
41
  * Remove empty object linter warning on DTS module
17
42
  * Generators: Add `.ts` extension when searching for main JS file of the project
18
43
 
data/Readme.md CHANGED
@@ -42,8 +42,8 @@ There are several possible ways to setup JsRoutes:
42
42
 
43
43
  ### Quick Start
44
44
 
45
- Setup [Rack Middleware](https://guides.rubyonrails.org/rails_on_rack.html#action-dispatcher-middleware-stack)
46
- to automatically generate and maintain `routes.js` file and corresponding
45
+ Setup [Rack Middleware](https://guides.rubyonrails.org/rails_on_rack.html#action-dispatcher-middleware-stack)
46
+ to automatically generate and maintain `routes.js` file and corresponding
47
47
  [Typescript definitions](https://www.typescriptlang.org/docs/handbook/declaration-files/templates/module-d-ts.html) `routes.d.ts`:
48
48
 
49
49
  #### Use a Generator
@@ -70,13 +70,12 @@ import {post_path} from '../routes';
70
70
  alert(post_path(1))
71
71
  ```
72
72
 
73
- Upgrade js building process to update js-routes files in `Rakefile`:
73
+ Upgrade js building process to update js-routes files in `Rakefile`:
74
74
 
75
75
  ``` ruby
76
- task "javascript:build" => "js:routes:typescript"
76
+ task "javascript:build" => "js:routes"
77
77
  # For setups without jsbundling-rails
78
- task "assets:precompile" => "js:routes:typescript"
79
-
78
+ task "assets:precompile" => "js:routes"
80
79
  ```
81
80
 
82
81
  Add js-routes files to `.gitignore`:
@@ -236,7 +235,7 @@ JsRoutes.definitions! # to output to file
236
235
  JsRoutes.definitions # to output to string
237
236
  ```
238
237
 
239
- Even more advanced setups can be achieved by setting `module_type` to `DTS` inside [configuration](#module_type)
238
+ Even more advanced setups can be achieved by setting `module_type` to `DTS` inside [configuration](#module_type)
240
239
  which will cause any `JsRoutes` instance to generate defintions instead of routes themselves.
241
240
 
242
241
  <div id="sprockets"></div>
@@ -325,9 +324,26 @@ Options to configure JavaScript file generator. These options are only available
325
324
  * Sample route call when option is set to true: `users() // => /users`
326
325
  * `application` - a key to specify which rails engine you want to generate routes too.
327
326
  * This option allows to only generate routes for a specific rails engine, that is mounted into routes instead of all Rails app routes
328
- * Default: `Rails.application`
327
+ * It is recommended to wrap the value with `lambda`. This will reduce the reliance on order during initialization your application.
328
+ * Default: `-> { Rails.application }`
329
329
  * `file` - a file location where generated routes are stored
330
330
  * Default: `app/javascript/routes.js` if setup with Webpacker, otherwise `app/assets/javascripts/routes.js` if setup with Sprockets.
331
+ * `optional_definition_params` - make all route paramters in definition optional
332
+ * See [related compatibility issue](#optional-definition-params)
333
+ * Default: `false`
334
+ * `banner` - specify a JSDoc comment on top of the file.
335
+ * It is not stripped by minifiers by default and helps to originate the content when debugging the build.
336
+ * You may want to control how much information from backend is exposed to potential attacker at the cost of your own comfort.
337
+ * See [JSDoc Guide](https://github.com/shri/JSDoc-Style-Guide/blob/master/README.md#files)
338
+ * Supports a lazy generation with `Proc`.
339
+ * Default: A string that generates the following:
340
+
341
+ ```
342
+ /**
343
+ * File generated by js-routes 2.3.1 on 2024-12-04 09:45:59 +0100
344
+ * Based on Rails 7.2.0 routes of App
345
+ */
346
+ ```
331
347
 
332
348
  <div id="formatter-options"></div>
333
349
 
@@ -359,33 +375,33 @@ import {
359
375
  user_path, user_project_path, company_path
360
376
  } from 'routes';
361
377
 
362
- users_path()
378
+ users_path()
363
379
  // => "/users"
364
380
 
365
- user_path(1)
381
+ user_path(1)
366
382
  // => "/users/1"
367
-
368
- user_path(1, {format: 'json'})
383
+
384
+ user_path(1, {format: 'json'})
369
385
  // => "/users/1.json"
370
386
 
371
- user_path(1, {anchor: 'profile'})
387
+ user_path(1, {anchor: 'profile'})
372
388
  // => "/users/1#profile"
373
389
 
374
- new_user_project_path(1, {format: 'json'})
390
+ new_user_project_path(1, {format: 'json'})
375
391
  // => "/users/1/projects/new.json"
376
392
 
377
- user_project_path(1,2, {q: 'hello', custom: true})
393
+ user_project_path(1,2, {q: 'hello', custom: true})
378
394
  // => "/users/1/projects/2?q=hello&custom=true"
379
395
 
380
- user_project_path(1,2, {hello: ['world', 'mars']})
396
+ user_project_path(1,2, {hello: ['world', 'mars']})
381
397
  // => "/users/1/projects/2?hello%5B%5D=world&hello%5B%5D=mars"
382
398
 
383
399
  var google = {id: 1, name: "Google"};
384
- company_path(google)
400
+ company_path(google)
385
401
  // => "/companies/1"
386
402
 
387
403
  var google = {id: 1, name: "Google", to_param: "google"};
388
- company_path(google)
404
+ company_path(google)
389
405
  // => "/companies/google"
390
406
  ```
391
407
 
@@ -418,7 +434,10 @@ user_path.requiredParams() // => ['id']
418
434
 
419
435
  ## Rails Compatibility
420
436
 
421
- JsRoutes tries to replicate the Rails routing API as closely as possible. If you find any incompatibilities (outside of what is described below), please [open an issue](https://github.com/railsware/js-routes/issues/new).
437
+ JsRoutes tries to replicate the Rails routing API as closely as possible.
438
+ There are only 2 known issues with compatibility that happen very rarely and have their workarounds.
439
+
440
+ If you find any incompatibilities outside of ones below, please [open an issue](https://github.com/railsware/js-routes/issues/new).
422
441
 
423
442
  ### Object and Hash distinction issue
424
443
 
@@ -428,14 +447,63 @@ In this case you would need to pass a special key to help:
428
447
  ``` js
429
448
  import {company_project_path} from '../routes'
430
449
 
431
- company_project_path({company_id: 1, id: 2}) // => Not enough parameters
432
- company_project_path({company_id: 1, id: 2, _options: true}) // => "/companies/1/projects/2"
450
+ company_project_path({company_id: 1, id: 2})
451
+ // => Not enough parameters
452
+ company_project_path({company_id: 1, id: 2, _options: true})
453
+ // => "/companies/1/projects/2"
454
+ ```
455
+
456
+ Use `special_options_key` to configure the `_options` parameter name.
457
+
458
+ <div id="optional-definition-params"></div>
459
+
460
+ ### Rails required parameters specified as optional
461
+
462
+ Rails is very flexible on how route parameters can be specified.
463
+ All of the following calls will make the same result:
464
+
465
+ ``` ruby
466
+ # Given route
467
+ # /inboxes/:inbox_id/messages/:message_id/attachments/:id
468
+ # every call below returns:
469
+ # => "/inboxes/1/messages/2/attachments/3"
470
+
471
+ inbox_message_attachment_path(1, 2, 3)
472
+ inbox_message_attachment_path(1, 2, id: 3)
473
+ inbox_message_attachment_path(1, message_id: 2, id: 3)
474
+ inbox_message_attachment_path(inbox_id: 1, message_id: 2, id: 3)
475
+
476
+ # including these mad versions
477
+ inbox_message_attachment_path(2, inbox_id: 1, id: 3)
478
+ inbox_message_attachment_path(1, 3, message_id: 2)
479
+ inbox_message_attachment_path(3, inbox_id: 1, message_id: 2)
433
480
  ```
434
481
 
482
+ While all of these methods are supported by JsRoutes, it is impossible to support them in `DTS` type definitions.
483
+ If you are using routes like this, use the following configuration that will prevent required parameters presence to be validated by definition:
484
+
485
+ ``` ruby
486
+ JsRoutes.configure do |c|
487
+ c.optional_definition_params = true
488
+ end
489
+ ```
490
+
491
+ This will enforce the following route signature:
492
+
493
+ ``` typescript
494
+ export const inbox_message_attachment_path: ((
495
+ inbox_id?: RequiredRouteParameter,
496
+ message_id?: RequiredRouteParameter,
497
+ id?: RequiredRouteParameter,
498
+ options?: RouteOptions
499
+ ) => string) & RouteHelperExtras;
500
+ ```
501
+
502
+ That will make every call above valid.
435
503
 
436
504
  ## What about security?
437
505
 
438
- JsRoutes itself does not have security holes.
506
+ JsRoutes itself does not have security holes.
439
507
  It makes URLs without access protection more reachable by potential attacker.
440
508
  If that is an issue for you, you may use one of the following solutions:
441
509
 
@@ -488,5 +556,3 @@ Advantages of this one are:
488
556
  * Full rails compatibility
489
557
  * Support Rails `#to_param` convention for seo optimized paths
490
558
  * Well tested
491
-
492
-
@@ -3,6 +3,7 @@
3
3
  require "pathname"
4
4
  require "js_routes/types"
5
5
  require 'js_routes/utils'
6
+ require 'js_routes/version'
6
7
 
7
8
  module JsRoutes
8
9
  class Configuration
@@ -37,6 +38,10 @@ module JsRoutes
37
38
  attr_accessor :documentation
38
39
  sig { returns(T.nilable(String)) }
39
40
  attr_accessor :module_type
41
+ sig { returns(T::Boolean) }
42
+ attr_accessor :optional_definition_params
43
+ sig { returns(BannerCaller) }
44
+ attr_accessor :banner
40
45
 
41
46
  sig {params(attributes: T.nilable(Options)).void }
42
47
  def initialize(attributes = nil)
@@ -51,9 +56,11 @@ module JsRoutes
51
56
  @compact = T.let(false, T::Boolean)
52
57
  @serializer = T.let(nil, T.nilable(String))
53
58
  @special_options_key = T.let("_options", Literal)
54
- @application = T.let(-> { Rails.application }, ApplicationCaller)
59
+ @application = T.let(T.unsafe(-> { Rails.application }), ApplicationCaller)
55
60
  @module_type = T.let('ESM', T.nilable(String))
56
61
  @documentation = T.let(true, T::Boolean)
62
+ @optional_definition_params = T.let(false, T::Boolean)
63
+ @banner = T.let(default_banner, BannerCaller)
57
64
 
58
65
  return unless attributes
59
66
  assign(attributes)
@@ -155,5 +162,17 @@ module JsRoutes
155
162
  raise "JsRoutes namespace option can only be used if module_type is nil"
156
163
  end
157
164
  end
165
+
166
+ sig { returns(T.proc.returns(String)) }
167
+ def default_banner
168
+ -> () {
169
+ app = application.is_a?(Proc) ? T.unsafe(application).call : application
170
+ <<~TXT
171
+ File generated by js-routes #{JsRoutes::VERSION} on #{Time.now}
172
+ Based on Rails #{Rails.version} routes of #{app.class}
173
+ TXT
174
+
175
+ }
176
+ end
158
177
  end
159
178
  end
@@ -29,9 +29,9 @@ module JsRoutes
29
29
  if named_routes.empty?
30
30
  if application.is_a?(Rails::Application)
31
31
  if Rails.version >= "8.0.0"
32
- application.reload_routes_unless_loaded
32
+ T.unsafe(application).reload_routes_unless_loaded
33
33
  else
34
- application.reload_routes!
34
+ T.unsafe(application).reload_routes!
35
35
  end
36
36
  end
37
37
  end
@@ -43,7 +43,20 @@ module JsRoutes
43
43
  raise("Missing key #{key} in JS template")
44
44
  end
45
45
  end
46
- content + routes_export + prevent_types_export
46
+ banner + content + routes_export + prevent_types_export
47
+ end
48
+
49
+ sig { returns(String) }
50
+ def banner
51
+ banner = @configuration.banner
52
+ banner = banner.call if banner.is_a?(Proc)
53
+ return "" if banner.blank?
54
+ [
55
+ "/**",
56
+ *banner.split("\n").map { |line| " * #{line}" },
57
+ " */",
58
+ "",
59
+ ].join("\n")
47
60
  end
48
61
 
49
62
  sig { void }
@@ -76,16 +89,11 @@ module JsRoutes
76
89
 
77
90
  sig { returns(T::Hash[String, String]) }
78
91
  def js_variables
79
- version = Rails.version
80
92
  prefix = @configuration.prefix
81
93
  prefix = prefix.call if prefix.is_a?(Proc)
82
94
  {
83
- 'GEM_VERSION' => JsRoutes::VERSION,
84
95
  'ROUTES_OBJECT' => routes_object,
85
- 'RAILS_VERSION' => ::Rails.version,
86
- 'DEPRECATED_GLOBBING_BEHAVIOR' => version >= '4.0.0' && version < '4.1.0',
87
- 'DEPRECATED_FALSE_PARAMETER_BEHAVIOR' => version < '7.0.0',
88
- 'APP_CLASS' => application.class.to_s,
96
+ 'DEPRECATED_FALSE_PARAMETER_BEHAVIOR' => Rails.version < '7.0.0',
89
97
  'DEFAULT_URL_OPTIONS' => json(@configuration.default_url_options),
90
98
  'PREFIX' => json(prefix),
91
99
  'SPECIAL_OPTIONS_KEY' => json(@configuration.special_options_key),
@@ -118,7 +126,8 @@ module JsRoutes
118
126
 
119
127
  sig { returns(Application) }
120
128
  def application
121
- @configuration.application.call
129
+ app = @configuration.application
130
+ app.is_a?(Proc) ? app.call : app
122
131
  end
123
132
 
124
133
  sig { params(value: T.untyped).returns(String) }
@@ -187,7 +196,7 @@ export {};
187
196
  rails_engine_app = T.unsafe(app_from_route(route))
188
197
  if rails_engine_app.is_a?(Class) &&
189
198
  rails_engine_app < Rails::Engine && !route.path.anchored
190
- rails_engine_app.routes.named_routes.flat_map do |_, engine_route|
199
+ T.unsafe(rails_engine_app).routes.named_routes.flat_map do |_, engine_route|
191
200
  route_helpers_if_match(engine_route, route)
192
201
  end
193
202
  else
@@ -200,7 +209,7 @@ export {};
200
209
  app = route.app
201
210
  # Rails Engine can use additional
202
211
  # ActionDispatch::Routing::Mapper::Constraints, which contain app
203
- if app.is_a?(ActionDispatch::Routing::Mapper::Constraints)
212
+ if app.is_a?(T.unsafe(ActionDispatch::Routing::Mapper::Constraints))
204
213
  app.app
205
214
  else
206
215
  app
@@ -6,7 +6,7 @@ module JsRoutes
6
6
  # whenever routes.rb is modified
7
7
  #
8
8
  # Inspired by
9
- # https://github.com/fnando/i18n-js/blob/main/lib/i18n/js/middleware.rb
9
+ # https://github.com/fnando/i18n-js/blob/v3/lib/i18n/js/middleware.rb
10
10
  class Middleware
11
11
  include JsRoutes::Types
12
12
  include RackApp
@@ -66,7 +66,8 @@ module JsRoutes
66
66
  sig { returns(String) }
67
67
  def definition_body
68
68
  options_type = optional_parts_type ? "#{optional_parts_type} & RouteOptions" : "RouteOptions"
69
- args = required_parts.map{|p| "#{apply_case(p)}: RequiredRouteParameter"}
69
+ predicate = @configuration.optional_definition_params ? '?' : ''
70
+ args = required_parts.map{|p| "#{apply_case(p)}#{predicate}: RequiredRouteParameter"}
70
71
  args << "options?: #{options_type}"
71
72
  "((\n#{args.join(",\n").indent(2)}\n) => string) & RouteHelperExtras"
72
73
  end
@@ -16,11 +16,20 @@ module JsRoutes
16
16
  Literal = T.type_alias { T.any(String, Symbol) }
17
17
  JourneyRoute = T.type_alias{ActionDispatch::Journey::Route}
18
18
  RouteSpec = T.type_alias {T.untyped}
19
- Application = T.type_alias { T.any(T::Class[Rails::Engine], Rails::Application) }
20
- ApplicationCaller = T.type_alias { T.proc.returns(Application) }
19
+ Application = T.type_alias do
20
+ T.any(T::Class[Rails::Engine], Rails::Application)
21
+ end
22
+ ApplicationCaller = T.type_alias do
23
+ T.any(Application, T.proc.returns(Application))
24
+ end
25
+ BannerCaller = T.type_alias do
26
+ T.any(String, NilClass, T.proc.returns(T.any(String, NilClass)))
27
+ end
21
28
  Clusivity = T.type_alias { T.any(Regexp, T::Array[Regexp]) }
22
29
  FileName = T.type_alias { T.any(String, Pathname, NilClass) }
23
- ConfigurationBlock = T.type_alias { T.proc.params(arg0: JsRoutes::Configuration).void }
30
+ ConfigurationBlock = T.type_alias do
31
+ T.proc.params(arg0: JsRoutes::Configuration).void
32
+ end
24
33
  Prefix = T.type_alias do
25
34
  T.any(T.proc.returns(String), String, NilClass)
26
35
  end
@@ -1,4 +1,4 @@
1
1
  # typed: strict
2
2
  module JsRoutes
3
- VERSION = "2.3.0"
3
+ VERSION = "2.3.2"
4
4
  end
data/lib/routes.d.ts CHANGED
@@ -1,7 +1,3 @@
1
- /**
2
- * File generated by js-routes RubyVariables.GEM_VERSION
3
- * Based on Rails RubyVariables.RAILS_VERSION routes of RubyVariables.APP_CLASS
4
- */
5
1
  declare type Optional<T> = {
6
2
  [P in keyof T]?: T[P] | null;
7
3
  };
@@ -64,7 +60,6 @@ declare type PartsTable = Collection<{
64
60
  declare type ModuleType = "CJS" | "AMD" | "UMD" | "ESM" | "DTS" | "NIL";
65
61
  declare const RubyVariables: {
66
62
  PREFIX: string;
67
- DEPRECATED_GLOBBING_BEHAVIOR: boolean;
68
63
  DEPRECATED_FALSE_PARAMETER_BEHAVIOR: boolean;
69
64
  SPECIAL_OPTIONS_KEY: string;
70
65
  DEFAULT_URL_OPTIONS: RouteParameters;
data/lib/routes.js CHANGED
@@ -1,7 +1,3 @@
1
- /**
2
- * File generated by js-routes RubyVariables.GEM_VERSION
3
- * Based on Rails RubyVariables.RAILS_VERSION routes of RubyVariables.APP_CLASS
4
- */
5
1
  // eslint-disable-next-line
6
2
  RubyVariables.WRAPPER(
7
3
  // eslint-disable-next-line
@@ -415,9 +411,7 @@ RubyVariables.WRAPPER(
415
411
  value = value.join("/");
416
412
  }
417
413
  const result = this.path_identifier(value);
418
- return RubyVariables.DEPRECATED_GLOBBING_BEHAVIOR
419
- ? result
420
- : encodeURI(result);
414
+ return encodeURI(result);
421
415
  }
422
416
  get_prefix() {
423
417
  const prefix = this.configuration.prefix;
data/lib/routes.ts CHANGED
@@ -1,8 +1,3 @@
1
- /**
2
- * File generated by js-routes RubyVariables.GEM_VERSION
3
- * Based on Rails RubyVariables.RAILS_VERSION routes of RubyVariables.APP_CLASS
4
- */
5
-
6
1
  type Optional<T> = { [P in keyof T]?: T[P] | null };
7
2
  type Collection<T> = Record<string, T>;
8
3
 
@@ -82,7 +77,6 @@ type ModuleType = "CJS" | "AMD" | "UMD" | "ESM" | "DTS" | "NIL";
82
77
 
83
78
  declare const RubyVariables: {
84
79
  PREFIX: string;
85
- DEPRECATED_GLOBBING_BEHAVIOR: boolean;
86
80
  DEPRECATED_FALSE_PARAMETER_BEHAVIOR: boolean;
87
81
  SPECIAL_OPTIONS_KEY: string;
88
82
  DEFAULT_URL_OPTIONS: RouteParameters;
@@ -606,9 +600,7 @@ RubyVariables.WRAPPER(
606
600
  value = value.join("/");
607
601
  }
608
602
  const result = this.path_identifier(value as any);
609
- return RubyVariables.DEPRECATED_GLOBBING_BEHAVIOR
610
- ? result
611
- : encodeURI(result);
603
+ return encodeURI(result);
612
604
  }
613
605
 
614
606
  get_prefix(): string {
@@ -1,5 +1,27 @@
1
1
  JsRoutes.setup do |c|
2
2
  # Setup your JS module system:
3
- # ESM, CJS, AMD, UMD or nil
3
+ # ESM, CJS, AMD, UMD or nil.
4
4
  # c.module_type = "ESM"
5
+
6
+ # Legacy setup for no modules system.
7
+ # Sets up a global variable `Routes`
8
+ # that holds route helpers.
9
+ # c.module_type = nil
10
+ # c.namespace = "Routes"
11
+
12
+ # Follow javascript naming convention
13
+ # but lose the ability to match helper name
14
+ # on backend and frontend consistently.
15
+ # c.camel_case = true
16
+
17
+ # Generate only helpers that match specific pattern.
18
+ # c.exclude = /^api_/
19
+ # c.include = /^admin_/
20
+
21
+ # Generate `*_url` helpers besides `*_path`
22
+ # for apps that work on multiple domains.
23
+ # c.url_links = true
24
+
25
+ # More options:
26
+ # @see https://github.com/railsware/js-routes#available-options
5
27
  end
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: 2.3.0
4
+ version: 2.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bogdan Gusiev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-16 00:00:00.000000000 Z
11
+ date: 2024-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -144,9 +144,9 @@ licenses:
144
144
  - MIT
145
145
  metadata:
146
146
  bug_tracker_uri: https://github.com/railsware/js-routes/issues
147
- changelog_uri: https://github.com/railsware/js-routes/blob/v2.3.0/CHANGELOG.md
147
+ changelog_uri: https://github.com/railsware/js-routes/blob/v2.3.2/CHANGELOG.md
148
148
  documentation_uri: https://github.com/railsware/js-routes
149
- source_code_uri: https://github.com/railsware/js-routes/tree/v2.3.0/activerecord
149
+ source_code_uri: https://github.com/railsware/js-routes/tree/v2.3.2/activerecord
150
150
  rubygems_mfa_required: 'true'
151
151
  github_repo: ssh://github.com/railsware/js-routes
152
152
  post_install_message:
@@ -164,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
164
  - !ruby/object:Gem::Version
165
165
  version: '0'
166
166
  requirements: []
167
- rubygems_version: 3.5.11
167
+ rubygems_version: 3.5.14
168
168
  signing_key:
169
169
  specification_version: 4
170
170
  summary: Brings Rails named routes to javascript