js-routes 2.0.4 → 2.0.8
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 +18 -0
- data/Readme.md +4 -12
- data/VERSION_2_UPGRADE.md +25 -20
- data/lib/js_routes.rb +33 -14
- data/lib/js_routes/version.rb +1 -1
- data/lib/routes.d.ts +35 -42
- data/lib/routes.js +44 -27
- data/lib/routes.ts +46 -33
- data/package.json +2 -1
- data/spec/js_routes/default_serializer_spec.rb +1 -1
- data/spec/js_routes/options_spec.rb +19 -3
- data/spec/js_routes/rails_routes_compatibility_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/tsconfig.json +1 -1
- metadata +2 -3
- data/lib/routes.js.map +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f78bfaf0cba479c48245d0606cc10b262481e854f3fc82e7195a8b58548bf7a
|
4
|
+
data.tar.gz: 118cafad50e73568ba4b1758821af072194e9570178f1f9caf067785e9f5a0f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 95490b886a00861b0fe4a5e2419c67ec804bbb94a916edefe333acd2e0c94b407137952b97e4bf70d928ad1ebc5cf47333b5b5083f0dc227a43be2d3ebba7648
|
7
|
+
data.tar.gz: 666d2862d8a86e760176afdfdd62711a34202a4725d08609e5f5bf69732becb8829826ddeccaca0f8cacffa6a78022e69a05872ea26ce550e7352a9bfde0d0e4
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,23 @@
|
|
1
1
|
## master
|
2
2
|
|
3
|
+
## v2.0.8
|
4
|
+
|
5
|
+
* Forbid usage of `namespace` option if `module_type` is not `nil`. [#281](https://github.com/railsware/js-routes/issues/281).
|
6
|
+
|
7
|
+
## v2.0.7
|
8
|
+
|
9
|
+
* Remove source map annotation from JS file. Fixes [#277](https://github.com/railsware/js-routes/issues/277)
|
10
|
+
* Generated file is not minified, so it is better to use app side bundler/compressor for source maps
|
11
|
+
|
12
|
+
|
13
|
+
## v2.0.6
|
14
|
+
|
15
|
+
* Disable `namespace` option default for all envs [#278](https://github.com/railsware/js-routes/issues/278)
|
16
|
+
|
17
|
+
## v2.0.5
|
18
|
+
|
19
|
+
* Fixed backward compatibility issue [#276](https://github.com/railsware/js-routes/issues/276)
|
20
|
+
|
3
21
|
## v2.0.4
|
4
22
|
|
5
23
|
* Fixed backward compatibility issue [#275](https://github.com/railsware/js-routes/issues/275)
|
data/Readme.md
CHANGED
@@ -159,6 +159,7 @@ Options to configure JavaScript file generator. These options are only available
|
|
159
159
|
* Default: `[]`
|
160
160
|
* The regexp applies only to the name before the `_path` suffix, eg: you want to match exactly `settings_path`, the regexp should be `/^settings$/`
|
161
161
|
* `namespace` - global object used to access routes.
|
162
|
+
* Only available if `module_type` option is set to `nil`.
|
162
163
|
* Supports nested namespace like `MyProject.routes`
|
163
164
|
* Default: `nil`
|
164
165
|
* `camel_case` - specifies if route helpers should be generated in camel case instead of underscore case.
|
@@ -314,6 +315,9 @@ import {
|
|
314
315
|
} from 'routes.js.erb'
|
315
316
|
```
|
316
317
|
|
318
|
+
Such import structure allows for moddern JS bundlers like [Webpack](https://webpack.js.org/) to only include explicitly imported routes into JS bundle file.
|
319
|
+
See [Tree Shaking](https://webpack.js.org/guides/tree-shaking/) for more information.
|
320
|
+
|
317
321
|
### Exclude option
|
318
322
|
|
319
323
|
Split your routes into multiple files related to each section of your website like:
|
@@ -325,18 +329,6 @@ Split your routes into multiple files related to each section of your website li
|
|
325
329
|
<%= JsRoutes.generate(exclude: /^admin_/)
|
326
330
|
```
|
327
331
|
|
328
|
-
## JsRoutes and Heroku
|
329
|
-
|
330
|
-
When using this setup on Heroku, it is impossible to use the asset pipeline. You should use the "Very Advanced Setup" schema in this case.
|
331
|
-
|
332
|
-
For example create routes.js.erb in assets folder with needed content:
|
333
|
-
|
334
|
-
``` erb
|
335
|
-
<%= JsRoutes.generate(options) %>
|
336
|
-
```
|
337
|
-
|
338
|
-
This should just work.
|
339
|
-
|
340
332
|
## Advantages over alternatives
|
341
333
|
|
342
334
|
There are some alternatives available. Most of them has only basic feature and don't reach the level of quality I accept.
|
data/VERSION_2_UPGRADE.md
CHANGED
@@ -2,23 +2,40 @@
|
|
2
2
|
|
3
3
|
### Using ESM module by default
|
4
4
|
|
5
|
-
|
5
|
+
New version of JsRoutes doesn't try to guess your javascript environment module system because JS has generated a ton of legacy module systems in the past.
|
6
|
+
[ESM+Webpacker](/Readme.md#webpacker) upgrade is recommended.
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
module\_type | nil | ESM
|
10
|
-
namespace | Routes | nil
|
8
|
+
However, if you don't want to follow that pass, specify `module_type` configuration option instead based on module system available in your JS environment.
|
9
|
+
Here are supported values:
|
11
10
|
|
12
|
-
|
11
|
+
* CJS
|
12
|
+
* UMD
|
13
|
+
* AMD
|
14
|
+
* ESM
|
15
|
+
* nil
|
16
|
+
|
17
|
+
[Explaination Article](https://dev.to/iggredible/what-the-heck-are-cjs-amd-umd-and-esm-ikm)
|
18
|
+
|
19
|
+
If you don't want to use any JS module system and make routes available via a **global variable**, specify `nil` as a `module_type` and use `namespace` option:
|
13
20
|
|
14
21
|
``` ruby
|
15
22
|
JsRoutes.setup do |config|
|
16
23
|
config.module_type = nil
|
17
|
-
config.namespace =
|
24
|
+
config.namespace = "Routes"
|
18
25
|
end
|
19
26
|
```
|
20
27
|
|
21
|
-
|
28
|
+
### JSDoc comment
|
29
|
+
|
30
|
+
New version of js-routes generates function comment in the [JSDoc](https://jsdoc.app) format.
|
31
|
+
If you have any problems with that, you can disable it like this:
|
32
|
+
|
33
|
+
|
34
|
+
``` ruby
|
35
|
+
JsRoutes.setup do |config|
|
36
|
+
config.documentation = false
|
37
|
+
end
|
38
|
+
```
|
22
39
|
|
23
40
|
### `required_params` renamed
|
24
41
|
|
@@ -47,15 +64,3 @@ try {
|
|
47
64
|
}
|
48
65
|
}
|
49
66
|
```
|
50
|
-
|
51
|
-
### JSDoc comment format
|
52
|
-
|
53
|
-
New version of js-routes generates function comment in the [JSDoc](https://jsdoc.app) format.
|
54
|
-
If you have any problems with that disable the annotation:
|
55
|
-
|
56
|
-
``` ruby
|
57
|
-
JsRoutes.setup do |config|
|
58
|
-
config.documentation = false
|
59
|
-
end
|
60
|
-
```
|
61
|
-
|
data/lib/js_routes.rb
CHANGED
@@ -12,7 +12,7 @@ class JsRoutes
|
|
12
12
|
#
|
13
13
|
|
14
14
|
DEFAULTS = {
|
15
|
-
namespace:
|
15
|
+
namespace: nil,
|
16
16
|
exclude: [],
|
17
17
|
include: //,
|
18
18
|
file: -> do
|
@@ -60,6 +60,7 @@ class JsRoutes
|
|
60
60
|
value = value.call if value.is_a?(Proc)
|
61
61
|
send(:"#{attribute}=", value)
|
62
62
|
end
|
63
|
+
normalize_and_verify
|
63
64
|
self
|
64
65
|
end
|
65
66
|
|
@@ -76,7 +77,24 @@ class JsRoutes
|
|
76
77
|
end
|
77
78
|
|
78
79
|
def esm?
|
79
|
-
|
80
|
+
module_type === 'ESM'
|
81
|
+
end
|
82
|
+
|
83
|
+
def normalize_and_verify
|
84
|
+
normalize
|
85
|
+
verify
|
86
|
+
end
|
87
|
+
|
88
|
+
protected
|
89
|
+
|
90
|
+
def normalize
|
91
|
+
self.module_type = module_type&.upcase || 'NIL'
|
92
|
+
end
|
93
|
+
|
94
|
+
def verify
|
95
|
+
if module_type != 'NIL' && namespace
|
96
|
+
raise "JsRoutes namespace option can only be used if module_type is nil"
|
97
|
+
end
|
80
98
|
end
|
81
99
|
end
|
82
100
|
|
@@ -87,6 +105,7 @@ class JsRoutes
|
|
87
105
|
class << self
|
88
106
|
def setup(&block)
|
89
107
|
configuration.tap(&block) if block
|
108
|
+
configuration.normalize_and_verify
|
90
109
|
end
|
91
110
|
|
92
111
|
def configuration
|
@@ -248,12 +267,14 @@ class JsRoutes
|
|
248
267
|
end
|
249
268
|
end
|
250
269
|
|
270
|
+
protected
|
271
|
+
|
251
272
|
def body(absolute)
|
252
|
-
"__jsr.r(#{arguments(absolute).join(', ')})"
|
273
|
+
"__jsr.r(#{arguments(absolute).map{|a| json(a)}.join(', ')})"
|
253
274
|
end
|
254
275
|
|
255
276
|
def arguments(absolute)
|
256
|
-
absolute ? base_arguments + [
|
277
|
+
absolute ? base_arguments + [true] : base_arguments
|
257
278
|
end
|
258
279
|
|
259
280
|
def match_configuration?
|
@@ -261,7 +282,8 @@ class JsRoutes
|
|
261
282
|
end
|
262
283
|
|
263
284
|
def base_name
|
264
|
-
@base_name ||=
|
285
|
+
@base_name ||= parent_route ?
|
286
|
+
[parent_route.name, route.name].join('_') : route.name
|
265
287
|
end
|
266
288
|
|
267
289
|
def parent_spec
|
@@ -278,7 +300,7 @@ class JsRoutes
|
|
278
300
|
|
279
301
|
def helper_name(absolute)
|
280
302
|
suffix = absolute ? :url : @configuration[:compact] ? nil : :path
|
281
|
-
|
303
|
+
apply_case(base_name, suffix)
|
282
304
|
end
|
283
305
|
|
284
306
|
def documentation
|
@@ -297,10 +319,11 @@ JS
|
|
297
319
|
route.required_parts
|
298
320
|
end
|
299
321
|
|
300
|
-
protected
|
301
|
-
|
302
322
|
def base_arguments
|
303
|
-
|
323
|
+
@base_arguments ||= [parts_table, serialize(spec, parent_spec)]
|
324
|
+
end
|
325
|
+
|
326
|
+
def parts_table
|
304
327
|
parts_table = {}
|
305
328
|
route.parts.each do |part, hash|
|
306
329
|
parts_table[part] ||= {}
|
@@ -317,11 +340,7 @@ JS
|
|
317
340
|
parts_table[part][:d] = value
|
318
341
|
end
|
319
342
|
end
|
320
|
-
|
321
|
-
parts_table, serialize(spec, parent_spec)
|
322
|
-
].map do |argument|
|
323
|
-
json(argument)
|
324
|
-
end
|
343
|
+
parts_table
|
325
344
|
end
|
326
345
|
|
327
346
|
def documentation_params
|
data/lib/js_routes/version.rb
CHANGED
data/lib/routes.d.ts
CHANGED
@@ -6,59 +6,52 @@ declare type RouteParameter = unknown;
|
|
6
6
|
declare type RouteParameters = Record<string, RouteParameter>;
|
7
7
|
declare type Serializer = (value: unknown) => string;
|
8
8
|
declare type RouteHelper = {
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
(...args: RouteParameter[]): string;
|
10
|
+
requiredParams(): string[];
|
11
|
+
toString(): string;
|
12
12
|
};
|
13
13
|
declare type RouteHelpers = Record<string, RouteHelper>;
|
14
14
|
declare type Configuration = {
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
prefix: string;
|
16
|
+
default_url_options: RouteParameters;
|
17
|
+
special_options_key: string;
|
18
|
+
serializer: Serializer;
|
19
19
|
};
|
20
20
|
declare type Optional<T> = {
|
21
|
-
|
21
|
+
[P in keyof T]?: T[P] | null;
|
22
22
|
};
|
23
23
|
interface RouterExposedMethods {
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
config(): Configuration;
|
25
|
+
configure(arg: Partial<Configuration>): Configuration;
|
26
|
+
serialize: Serializer;
|
27
27
|
}
|
28
28
|
declare type KeywordUrlOptions = Optional<{
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
29
|
+
host: string;
|
30
|
+
protocol: string;
|
31
|
+
subdomain: string;
|
32
|
+
port: string;
|
33
|
+
anchor: string;
|
34
|
+
trailing_slash: boolean;
|
35
35
|
}>;
|
36
|
-
declare type PartsTable = Record<
|
37
|
-
string,
|
38
|
-
{
|
36
|
+
declare type PartsTable = Record<string, {
|
39
37
|
r?: boolean;
|
40
38
|
d?: unknown;
|
41
|
-
|
42
|
-
|
43
|
-
declare type ModuleType = "CJS" | "AMD" | "UMD" | "ESM";
|
39
|
+
}>;
|
40
|
+
declare type ModuleType = "CJS" | "AMD" | "UMD" | "ESM" | "NIL";
|
44
41
|
declare const RubyVariables: {
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
42
|
+
PREFIX: string;
|
43
|
+
DEPRECATED_GLOBBING_BEHAVIOR: boolean;
|
44
|
+
SPECIAL_OPTIONS_KEY: string;
|
45
|
+
DEFAULT_URL_OPTIONS: RouteParameters;
|
46
|
+
SERIALIZER: Serializer;
|
47
|
+
NAMESPACE: string;
|
48
|
+
ROUTES_OBJECT: RouteHelpers;
|
49
|
+
MODULE_TYPE: ModuleType;
|
50
|
+
WRAPPER: <T>(callback: T) => T;
|
54
51
|
};
|
55
|
-
declare const define:
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
| {
|
62
|
-
exports: any;
|
63
|
-
}
|
64
|
-
| undefined;
|
52
|
+
declare const define: undefined | (((arg: unknown[], callback: () => unknown) => void) & {
|
53
|
+
amd?: unknown;
|
54
|
+
});
|
55
|
+
declare const module: {
|
56
|
+
exports: any;
|
57
|
+
} | undefined;
|
data/lib/routes.js
CHANGED
@@ -18,25 +18,32 @@ RubyVariables.WRAPPER((that) => {
|
|
18
18
|
const Root = that;
|
19
19
|
const ModuleReferences = {
|
20
20
|
CJS: {
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
define(routes) {
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
23
|
+
module.exports = routes;
|
24
|
+
},
|
25
|
+
isSupported() {
|
26
|
+
return typeof module === "object";
|
27
|
+
},
|
24
28
|
},
|
25
29
|
AMD: {
|
26
|
-
define
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
30
|
+
define(routes) {
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
32
|
+
define([], function () {
|
33
|
+
return routes;
|
34
|
+
});
|
35
|
+
},
|
36
|
+
isSupported() {
|
37
|
+
return typeof define === "function" && !!define.amd;
|
38
|
+
},
|
32
39
|
},
|
33
40
|
UMD: {
|
34
|
-
define
|
35
|
-
if (ModuleReferences.AMD.
|
41
|
+
define(routes) {
|
42
|
+
if (ModuleReferences.AMD.isSupported()) {
|
36
43
|
ModuleReferences.AMD.define(routes);
|
37
44
|
}
|
38
45
|
else {
|
39
|
-
if (ModuleReferences.CJS.
|
46
|
+
if (ModuleReferences.CJS.isSupported()) {
|
40
47
|
try {
|
41
48
|
ModuleReferences.CJS.define(routes);
|
42
49
|
}
|
@@ -47,11 +54,27 @@ RubyVariables.WRAPPER((that) => {
|
|
47
54
|
}
|
48
55
|
}
|
49
56
|
},
|
50
|
-
|
57
|
+
isSupported() {
|
58
|
+
return (ModuleReferences.AMD.isSupported() ||
|
59
|
+
ModuleReferences.CJS.isSupported());
|
60
|
+
},
|
51
61
|
},
|
52
62
|
ESM: {
|
53
|
-
define
|
54
|
-
|
63
|
+
define() {
|
64
|
+
// Module can only be defined using ruby code generation
|
65
|
+
},
|
66
|
+
isSupported() {
|
67
|
+
// Its impossible to check if "export" keyword is supported
|
68
|
+
return true;
|
69
|
+
},
|
70
|
+
},
|
71
|
+
NIL: {
|
72
|
+
define(routes) {
|
73
|
+
Utils.namespace(Root, RubyVariables.NAMESPACE, routes);
|
74
|
+
},
|
75
|
+
isSupported() {
|
76
|
+
return !!Root;
|
77
|
+
},
|
55
78
|
},
|
56
79
|
};
|
57
80
|
class ParametersMissing extends Error {
|
@@ -62,7 +85,6 @@ RubyVariables.WRAPPER((that) => {
|
|
62
85
|
this.name = ParametersMissing.name;
|
63
86
|
}
|
64
87
|
}
|
65
|
-
const DeprecatedGlobbingBehavior = RubyVariables.DEPRECATED_GLOBBING_BEHAVIOR;
|
66
88
|
const UriEncoderSegmentRegex = /[^a-zA-Z0-9\-._~!$&'()*+,;=:@]/g;
|
67
89
|
const ReservedOptions = [
|
68
90
|
"anchor",
|
@@ -275,7 +297,7 @@ RubyVariables.WRAPPER((that) => {
|
|
275
297
|
return "";
|
276
298
|
}
|
277
299
|
// if left_part ends on '/' and right_part starts on '/'
|
278
|
-
if (left_part[left_part.length - 1] ===
|
300
|
+
if (left_part[left_part.length - 1] === "/" && right_part[0] === "/") {
|
279
301
|
// strip slash from right_part
|
280
302
|
// to prevent double slash
|
281
303
|
right_part = right_part.substring(1);
|
@@ -342,7 +364,9 @@ RubyVariables.WRAPPER((that) => {
|
|
342
364
|
value = value.join("/");
|
343
365
|
}
|
344
366
|
const result = this.path_identifier(value);
|
345
|
-
return
|
367
|
+
return RubyVariables.DEPRECATED_GLOBBING_BEHAVIOR
|
368
|
+
? result
|
369
|
+
: encodeURI(result);
|
346
370
|
}
|
347
371
|
get_prefix() {
|
348
372
|
const prefix = this.configuration.prefix;
|
@@ -449,7 +473,7 @@ RubyVariables.WRAPPER((that) => {
|
|
449
473
|
return { ...this.configuration };
|
450
474
|
}
|
451
475
|
is_module_supported(name) {
|
452
|
-
return ModuleReferences[name].
|
476
|
+
return ModuleReferences[name].isSupported();
|
453
477
|
}
|
454
478
|
ensure_module_supported(name) {
|
455
479
|
if (!this.is_module_supported(name)) {
|
@@ -457,9 +481,6 @@ RubyVariables.WRAPPER((that) => {
|
|
457
481
|
}
|
458
482
|
}
|
459
483
|
define_module(name, module) {
|
460
|
-
if (!name) {
|
461
|
-
return;
|
462
|
-
}
|
463
484
|
this.ensure_module_supported(name);
|
464
485
|
ModuleReferences[name].define(module);
|
465
486
|
}
|
@@ -484,10 +505,6 @@ RubyVariables.WRAPPER((that) => {
|
|
484
505
|
},
|
485
506
|
...RubyVariables.ROUTES_OBJECT,
|
486
507
|
};
|
487
|
-
Utils.
|
488
|
-
if (RubyVariables.MODULE_TYPE) {
|
489
|
-
Utils.define_module(RubyVariables.MODULE_TYPE, result);
|
490
|
-
}
|
508
|
+
Utils.define_module(RubyVariables.MODULE_TYPE, result);
|
491
509
|
return result;
|
492
510
|
})(this);
|
493
|
-
//# sourceMappingURL=routes.js.map
|
data/lib/routes.ts
CHANGED
@@ -39,7 +39,7 @@ type KeywordUrlOptions = Optional<{
|
|
39
39
|
|
40
40
|
type PartsTable = Record<string, { r?: boolean; d?: unknown }>;
|
41
41
|
|
42
|
-
type ModuleType = "CJS" | "AMD" | "UMD" | "ESM";
|
42
|
+
type ModuleType = "CJS" | "AMD" | "UMD" | "ESM" | "NIL";
|
43
43
|
|
44
44
|
declare const RubyVariables: {
|
45
45
|
PREFIX: string;
|
@@ -49,7 +49,7 @@ declare const RubyVariables: {
|
|
49
49
|
SERIALIZER: Serializer;
|
50
50
|
NAMESPACE: string;
|
51
51
|
ROUTES_OBJECT: RouteHelpers;
|
52
|
-
MODULE_TYPE: ModuleType
|
52
|
+
MODULE_TYPE: ModuleType;
|
53
53
|
WRAPPER: <T>(callback: T) => T;
|
54
54
|
};
|
55
55
|
|
@@ -94,28 +94,35 @@ RubyVariables.WRAPPER(
|
|
94
94
|
const Root = that;
|
95
95
|
type ModuleDefinition = {
|
96
96
|
define: (routes: unknown) => void;
|
97
|
-
|
97
|
+
isSupported: () => boolean;
|
98
98
|
};
|
99
99
|
const ModuleReferences: Record<ModuleType, ModuleDefinition> = {
|
100
100
|
CJS: {
|
101
|
-
|
102
|
-
|
103
|
-
|
101
|
+
define(routes) {
|
102
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
103
|
+
module!.exports = routes;
|
104
|
+
},
|
105
|
+
isSupported() {
|
106
|
+
return typeof module === "object";
|
107
|
+
},
|
104
108
|
},
|
105
109
|
AMD: {
|
106
|
-
define
|
110
|
+
define(routes) {
|
107
111
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
108
112
|
define!([], function () {
|
109
113
|
return routes;
|
110
|
-
})
|
111
|
-
|
114
|
+
});
|
115
|
+
},
|
116
|
+
isSupported() {
|
117
|
+
return typeof define === "function" && !!define.amd;
|
118
|
+
},
|
112
119
|
},
|
113
120
|
UMD: {
|
114
|
-
define
|
115
|
-
if (ModuleReferences.AMD.
|
121
|
+
define(routes) {
|
122
|
+
if (ModuleReferences.AMD.isSupported()) {
|
116
123
|
ModuleReferences.AMD.define(routes);
|
117
124
|
} else {
|
118
|
-
if (ModuleReferences.CJS.
|
125
|
+
if (ModuleReferences.CJS.isSupported()) {
|
119
126
|
try {
|
120
127
|
ModuleReferences.CJS.define(routes);
|
121
128
|
} catch (error) {
|
@@ -124,12 +131,29 @@ RubyVariables.WRAPPER(
|
|
124
131
|
}
|
125
132
|
}
|
126
133
|
},
|
127
|
-
|
128
|
-
|
134
|
+
isSupported() {
|
135
|
+
return (
|
136
|
+
ModuleReferences.AMD.isSupported() ||
|
137
|
+
ModuleReferences.CJS.isSupported()
|
138
|
+
);
|
139
|
+
},
|
129
140
|
},
|
130
141
|
ESM: {
|
131
|
-
define
|
132
|
-
|
142
|
+
define() {
|
143
|
+
// Module can only be defined using ruby code generation
|
144
|
+
},
|
145
|
+
isSupported() {
|
146
|
+
// Its impossible to check if "export" keyword is supported
|
147
|
+
return true;
|
148
|
+
},
|
149
|
+
},
|
150
|
+
NIL: {
|
151
|
+
define(routes) {
|
152
|
+
Utils.namespace(Root, RubyVariables.NAMESPACE, routes);
|
153
|
+
},
|
154
|
+
isSupported() {
|
155
|
+
return !!Root;
|
156
|
+
},
|
133
157
|
},
|
134
158
|
};
|
135
159
|
|
@@ -143,9 +167,6 @@ RubyVariables.WRAPPER(
|
|
143
167
|
}
|
144
168
|
}
|
145
169
|
|
146
|
-
const DeprecatedGlobbingBehavior =
|
147
|
-
RubyVariables.DEPRECATED_GLOBBING_BEHAVIOR;
|
148
|
-
|
149
170
|
const UriEncoderSegmentRegex = /[^a-zA-Z0-9\-._~!$&'()*+,;=:@]/g;
|
150
171
|
|
151
172
|
const ReservedOptions = [
|
@@ -498,7 +519,9 @@ RubyVariables.WRAPPER(
|
|
498
519
|
value = value.join("/");
|
499
520
|
}
|
500
521
|
const result = this.path_identifier(value as any);
|
501
|
-
return
|
522
|
+
return RubyVariables.DEPRECATED_GLOBBING_BEHAVIOR
|
523
|
+
? result
|
524
|
+
: encodeURI(result);
|
502
525
|
}
|
503
526
|
|
504
527
|
get_prefix(): string {
|
@@ -635,7 +658,7 @@ RubyVariables.WRAPPER(
|
|
635
658
|
}
|
636
659
|
|
637
660
|
is_module_supported(name: ModuleType): boolean {
|
638
|
-
return ModuleReferences[name].
|
661
|
+
return ModuleReferences[name].isSupported();
|
639
662
|
}
|
640
663
|
|
641
664
|
ensure_module_supported(name: ModuleType): void {
|
@@ -644,13 +667,7 @@ RubyVariables.WRAPPER(
|
|
644
667
|
}
|
645
668
|
}
|
646
669
|
|
647
|
-
define_module(
|
648
|
-
name: ModuleType | null,
|
649
|
-
module: RouterExposedMethods
|
650
|
-
): void {
|
651
|
-
if (!name) {
|
652
|
-
return;
|
653
|
-
}
|
670
|
+
define_module(name: ModuleType, module: RouterExposedMethods): void {
|
654
671
|
this.ensure_module_supported(name);
|
655
672
|
ModuleReferences[name].define(module);
|
656
673
|
}
|
@@ -683,11 +700,7 @@ RubyVariables.WRAPPER(
|
|
683
700
|
...RubyVariables.ROUTES_OBJECT,
|
684
701
|
};
|
685
702
|
|
686
|
-
Utils.
|
687
|
-
|
688
|
-
if (RubyVariables.MODULE_TYPE) {
|
689
|
-
Utils.define_module(RubyVariables.MODULE_TYPE, result);
|
690
|
-
}
|
703
|
+
Utils.define_module(RubyVariables.MODULE_TYPE, result);
|
691
704
|
return result;
|
692
705
|
}
|
693
706
|
)(this);
|
data/package.json
CHANGED
@@ -21,6 +21,7 @@
|
|
21
21
|
"prettier": "^2.2.1"
|
22
22
|
},
|
23
23
|
"scripts": {
|
24
|
+
"build": "tsc && yarn lint:fix",
|
24
25
|
"lint:fix": "yarn eslint --fix && yarn prettier --write lib/routes.ts",
|
25
26
|
"postinstall": "yarn husky-upgrade"
|
26
27
|
},
|
@@ -30,7 +31,7 @@
|
|
30
31
|
}
|
31
32
|
},
|
32
33
|
"lint-staged": {
|
33
|
-
"
|
34
|
+
"./lib/routes.ts": ["yarn lint:fix" ]
|
34
35
|
}
|
35
36
|
|
36
37
|
}
|
@@ -3,7 +3,11 @@ require 'spec_helper'
|
|
3
3
|
describe JsRoutes, "options" do
|
4
4
|
|
5
5
|
let(:generated_js) do
|
6
|
-
JsRoutes.generate({
|
6
|
+
JsRoutes.generate({
|
7
|
+
module_type: nil,
|
8
|
+
namespace: 'Routes',
|
9
|
+
**_options
|
10
|
+
})
|
7
11
|
end
|
8
12
|
|
9
13
|
before(:each) do
|
@@ -91,6 +95,18 @@ describe JsRoutes, "options" do
|
|
91
95
|
expect(evaljs("Routes.inboxes_path")).to be_nil
|
92
96
|
end
|
93
97
|
|
98
|
+
context "with camel_case option" do
|
99
|
+
let(:_options) { {include: /^admin_/, camel_case: true} }
|
100
|
+
|
101
|
+
it "should exclude specified routes from file" do
|
102
|
+
expect(evaljs("Routes.adminUsersPath()")).not_to be_nil
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should not exclude routes not under specified pattern" do
|
106
|
+
expect(evaljs("Routes.inboxesPath")).to be_nil
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
94
110
|
context "for rails engine" do
|
95
111
|
let(:_options) { {:include => /^blog_app_posts/} }
|
96
112
|
|
@@ -180,9 +196,9 @@ describe JsRoutes, "options" do
|
|
180
196
|
end
|
181
197
|
|
182
198
|
context "is nil" do
|
183
|
-
let(:_options) { {:namespace => nil} }
|
199
|
+
let(:_options) { {:namespace => nil, include: /^inbox$/} }
|
184
200
|
it "should use this namespace for routing" do
|
185
|
-
evaljs("window.zz = #{
|
201
|
+
evaljs("window.zz = #{generated_js}")
|
186
202
|
expect(evaljs("window.zz.inbox_path")).not_to be_nil
|
187
203
|
end
|
188
204
|
|
data/spec/spec_helper.rb
CHANGED
data/tsconfig.json
CHANGED
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.0.
|
4
|
+
version: 2.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bogdan Gusiev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -174,7 +174,6 @@ files:
|
|
174
174
|
- lib/js_routes/version.rb
|
175
175
|
- lib/routes.d.ts
|
176
176
|
- lib/routes.js
|
177
|
-
- lib/routes.js.map
|
178
177
|
- lib/routes.ts
|
179
178
|
- lib/tasks/js_routes.rake
|
180
179
|
- package.json
|
data/lib/routes.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["routes.ts"],"names":[],"mappings":"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"}
|