js-routes 2.0.6 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +19 -0
- data/Readme.md +113 -63
- data/VERSION_2_UPGRADE.md +25 -20
- data/js-routes.gemspec +1 -1
- data/lib/js_routes/generators/webpacker.rb +32 -0
- data/lib/js_routes/version.rb +1 -1
- data/lib/js_routes.rb +188 -100
- data/lib/routes.d.ts +64 -49
- data/lib/routes.js +60 -51
- data/lib/routes.ts +123 -84
- data/lib/tasks/js_routes.rake +8 -2
- data/lib/templates/erb.js +11 -0
- data/lib/templates/initializer.rb +5 -0
- data/lib/templates/routes.js.erb +1 -0
- data/package.json +2 -1
- data/spec/js_routes/module_types/dts/routes.spec.d.ts +114 -0
- data/spec/js_routes/module_types/dts/test.spec.ts +56 -0
- data/spec/js_routes/module_types/dts_spec.rb +111 -0
- data/spec/js_routes/zzz_last_post_rails_init_spec.rb +2 -2
- data/spec/spec_helper.rb +1 -1
- data/spec/tsconfig.json +4 -0
- data/tsconfig.json +4 -8
- metadata +12 -5
- data/lib/routes.js.map +0 -1
@@ -0,0 +1,114 @@
|
|
1
|
+
/**
|
2
|
+
* File generated by js-routes RubyVariables.GEM_VERSION
|
3
|
+
* Based on Rails RubyVariables.RAILS_VERSION routes of RubyVariables.APP_CLASS
|
4
|
+
*/
|
5
|
+
declare type Optional<T> = {
|
6
|
+
[P in keyof T]?: T[P] | null;
|
7
|
+
};
|
8
|
+
declare type BaseRouteParameter = string | boolean | Date | number;
|
9
|
+
declare type MethodRouteParameter = BaseRouteParameter | (() => BaseRouteParameter);
|
10
|
+
declare type ModelRouteParameter = {
|
11
|
+
id: MethodRouteParameter;
|
12
|
+
} | {
|
13
|
+
to_param: MethodRouteParameter;
|
14
|
+
} | {
|
15
|
+
toParam: MethodRouteParameter;
|
16
|
+
};
|
17
|
+
declare type RequiredRouteParameter = BaseRouteParameter | ModelRouteParameter;
|
18
|
+
declare type OptionalRouteParameter = undefined | null | RequiredRouteParameter;
|
19
|
+
declare type QueryRouteParameter = OptionalRouteParameter | QueryRouteParameter[] | {
|
20
|
+
[k: string]: QueryRouteParameter;
|
21
|
+
};
|
22
|
+
declare type RouteParameters = Record<string, QueryRouteParameter>;
|
23
|
+
declare type Serializable = Record<string, unknown>;
|
24
|
+
declare type Serializer = (value: Serializable) => string;
|
25
|
+
declare type RouteHelperExtras = {
|
26
|
+
requiredParams(): string[];
|
27
|
+
toString(): string;
|
28
|
+
};
|
29
|
+
declare type RequiredParameters<T extends number> = T extends 1 ? [RequiredRouteParameter] : T extends 2 ? [RequiredRouteParameter, RequiredRouteParameter] : T extends 3 ? [RequiredRouteParameter, RequiredRouteParameter, RequiredRouteParameter] : T extends 4 ? [
|
30
|
+
RequiredRouteParameter,
|
31
|
+
RequiredRouteParameter,
|
32
|
+
RequiredRouteParameter,
|
33
|
+
RequiredRouteParameter
|
34
|
+
] : RequiredRouteParameter[];
|
35
|
+
declare type RouteHelperOptions<T extends string> = RouteOptions & Optional<Record<T, OptionalRouteParameter>>;
|
36
|
+
declare type RouteHelper<T extends number = number, U extends string = string> = ((...args: [...RequiredParameters<T>, RouteHelperOptions<U>]) => string) & RouteHelperExtras;
|
37
|
+
declare type RouteHelpers = Record<string, RouteHelper>;
|
38
|
+
declare type Configuration = {
|
39
|
+
prefix: string;
|
40
|
+
default_url_options: RouteParameters;
|
41
|
+
special_options_key: string;
|
42
|
+
serializer: Serializer;
|
43
|
+
};
|
44
|
+
interface RouterExposedMethods {
|
45
|
+
config(): Configuration;
|
46
|
+
configure(arg: Partial<Configuration>): Configuration;
|
47
|
+
serialize: Serializer;
|
48
|
+
}
|
49
|
+
declare type KeywordUrlOptions = Optional<{
|
50
|
+
host: string;
|
51
|
+
protocol: string;
|
52
|
+
subdomain: string;
|
53
|
+
port: string | number;
|
54
|
+
anchor: string;
|
55
|
+
trailing_slash: boolean;
|
56
|
+
}>;
|
57
|
+
declare type RouteOptions = KeywordUrlOptions & RouteParameters;
|
58
|
+
declare type PartsTable = Record<string, {
|
59
|
+
r?: boolean;
|
60
|
+
d?: OptionalRouteParameter;
|
61
|
+
}>;
|
62
|
+
declare type ModuleType = "CJS" | "AMD" | "UMD" | "ESM" | "DTS" | "NIL";
|
63
|
+
declare const RubyVariables: {
|
64
|
+
PREFIX: string;
|
65
|
+
DEPRECATED_GLOBBING_BEHAVIOR: boolean;
|
66
|
+
SPECIAL_OPTIONS_KEY: string;
|
67
|
+
DEFAULT_URL_OPTIONS: RouteParameters;
|
68
|
+
SERIALIZER: Serializer;
|
69
|
+
NAMESPACE: string;
|
70
|
+
ROUTES_OBJECT: RouteHelpers;
|
71
|
+
MODULE_TYPE: ModuleType;
|
72
|
+
WRAPPER: <T>(callback: T) => T;
|
73
|
+
};
|
74
|
+
declare const define: undefined | (((arg: unknown[], callback: () => unknown) => void) & {
|
75
|
+
amd?: unknown;
|
76
|
+
});
|
77
|
+
declare const module: {
|
78
|
+
exports: any;
|
79
|
+
} | undefined;
|
80
|
+
export const configure: RouterExposedMethods['configure'];
|
81
|
+
|
82
|
+
export const config: RouterExposedMethods['config'];
|
83
|
+
|
84
|
+
export const serialize: RouterExposedMethods['serialize'];
|
85
|
+
|
86
|
+
/**
|
87
|
+
* Generates rails route to
|
88
|
+
* /inboxes/:inbox_id/messages/:message_id/attachments/:id(.:format)
|
89
|
+
* @param {any} inbox_id
|
90
|
+
* @param {any} message_id
|
91
|
+
* @param {any} id
|
92
|
+
* @param {object | undefined} options
|
93
|
+
* @returns {string} route path
|
94
|
+
*/
|
95
|
+
export const inbox_message_attachment_path: ((
|
96
|
+
inbox_id: RequiredRouteParameter,
|
97
|
+
message_id: RequiredRouteParameter,
|
98
|
+
id: RequiredRouteParameter,
|
99
|
+
options?: {format?: OptionalRouteParameter} & RouteOptions
|
100
|
+
) => string) & RouteHelperExtras;
|
101
|
+
|
102
|
+
/**
|
103
|
+
* Generates rails route to
|
104
|
+
* /inboxes(.:format)
|
105
|
+
* @param {object | undefined} options
|
106
|
+
* @returns {string} route path
|
107
|
+
*/
|
108
|
+
export const inboxes_path: ((
|
109
|
+
options?: {format?: OptionalRouteParameter} & RouteOptions
|
110
|
+
) => string) & RouteHelperExtras;
|
111
|
+
|
112
|
+
// By some reason this line prevents all types in a file
|
113
|
+
// from being automatically exported
|
114
|
+
export {};
|
@@ -0,0 +1,56 @@
|
|
1
|
+
import {
|
2
|
+
inbox_message_attachment_path,
|
3
|
+
inboxes_path,
|
4
|
+
serialize,
|
5
|
+
configure,
|
6
|
+
config,
|
7
|
+
} from "./routes.spec";
|
8
|
+
|
9
|
+
// Route Helpers
|
10
|
+
inboxes_path();
|
11
|
+
inboxes_path({
|
12
|
+
locale: "en",
|
13
|
+
search: {
|
14
|
+
q: "ukraine",
|
15
|
+
page: 3,
|
16
|
+
keywords: ["large", "small", { advanced: true }],
|
17
|
+
},
|
18
|
+
});
|
19
|
+
|
20
|
+
inbox_message_attachment_path(1, "2", true);
|
21
|
+
inbox_message_attachment_path(
|
22
|
+
{ id: 1 },
|
23
|
+
{ to_param: () => "2" },
|
24
|
+
{ toParam: () => true }
|
25
|
+
);
|
26
|
+
inbox_message_attachment_path(1, "2", true, { format: "json" });
|
27
|
+
inboxes_path.toString();
|
28
|
+
inboxes_path.requiredParams();
|
29
|
+
|
30
|
+
// serialize test
|
31
|
+
const SerializerArgument = {
|
32
|
+
locale: "en",
|
33
|
+
search: {
|
34
|
+
q: "ukraine",
|
35
|
+
page: 3,
|
36
|
+
keywords: ["large", "small", { advanced: true }],
|
37
|
+
},
|
38
|
+
};
|
39
|
+
serialize(SerializerArgument);
|
40
|
+
config().serializer(SerializerArgument);
|
41
|
+
|
42
|
+
// configure test
|
43
|
+
configure({
|
44
|
+
default_url_options: { port: 1, host: null },
|
45
|
+
prefix: "",
|
46
|
+
special_options_key: "_options",
|
47
|
+
serializer: (value) => JSON.stringify(value),
|
48
|
+
});
|
49
|
+
|
50
|
+
// config tests
|
51
|
+
const Config = config();
|
52
|
+
console.log(
|
53
|
+
Config.prefix,
|
54
|
+
Config.default_url_options,
|
55
|
+
Config.special_options_key
|
56
|
+
);
|
@@ -0,0 +1,111 @@
|
|
1
|
+
|
2
|
+
require "active_support/core_ext/string/strip"
|
3
|
+
require "fileutils"
|
4
|
+
require "open3"
|
5
|
+
require "spec_helper"
|
6
|
+
|
7
|
+
describe JsRoutes, "compatibility with DTS" do
|
8
|
+
|
9
|
+
OPTIONS = {module_type: 'DTS', include: [/^inboxes$/, /^inbox_message_attachment$/]}
|
10
|
+
let(:extra_options) do
|
11
|
+
{}
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:generated_js) do
|
15
|
+
JsRoutes.generate({**OPTIONS, **extra_options})
|
16
|
+
end
|
17
|
+
|
18
|
+
context "when file is generated" do
|
19
|
+
let(:dir_name) do
|
20
|
+
File.expand_path(__dir__ + "/dts")
|
21
|
+
end
|
22
|
+
|
23
|
+
let(:file_name) do
|
24
|
+
dir_name + "/routes.spec.d.ts"
|
25
|
+
end
|
26
|
+
|
27
|
+
before do
|
28
|
+
FileUtils.mkdir_p(dir_name)
|
29
|
+
File.write(file_name, generated_js)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "has no compile errors", :slow do
|
33
|
+
command = "yarn tsc --strict --noEmit -p spec/tsconfig.json"
|
34
|
+
stdout, stderr, status = Open3.capture3(command)
|
35
|
+
expect(stderr).to eq("")
|
36
|
+
expect(stdout).to include("Done in ")
|
37
|
+
expect(status).to eq(0)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "when camel case is enabled" do
|
42
|
+
let(:extra_options) { {camel_case: true} }
|
43
|
+
|
44
|
+
it "camelizes route name and arguments" do
|
45
|
+
|
46
|
+
expect(generated_js).to include(<<-DOC.rstrip)
|
47
|
+
/**
|
48
|
+
* Generates rails route to
|
49
|
+
* /inboxes/:inbox_id/messages/:message_id/attachments/:id(.:format)
|
50
|
+
* @param {any} inboxId
|
51
|
+
* @param {any} messageId
|
52
|
+
* @param {any} id
|
53
|
+
* @param {object | undefined} options
|
54
|
+
* @returns {string} route path
|
55
|
+
*/
|
56
|
+
export const inboxMessageAttachmentPath: ((
|
57
|
+
inboxId: RequiredRouteParameter,
|
58
|
+
messageId: RequiredRouteParameter,
|
59
|
+
id: RequiredRouteParameter,
|
60
|
+
options?: {format?: OptionalRouteParameter} & RouteOptions
|
61
|
+
) => string) & RouteHelperExtras;
|
62
|
+
DOC
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
it "exports route helpers" do
|
67
|
+
expect(generated_js).to include(<<-DOC.rstrip)
|
68
|
+
/**
|
69
|
+
* Generates rails route to
|
70
|
+
* /inboxes(.:format)
|
71
|
+
* @param {object | undefined} options
|
72
|
+
* @returns {string} route path
|
73
|
+
*/
|
74
|
+
export const inboxes_path: ((
|
75
|
+
options?: {format?: OptionalRouteParameter} & RouteOptions
|
76
|
+
) => string) & RouteHelperExtras;
|
77
|
+
DOC
|
78
|
+
expect(generated_js).to include(<<-DOC.rstrip)
|
79
|
+
/**
|
80
|
+
* Generates rails route to
|
81
|
+
* /inboxes/:inbox_id/messages/:message_id/attachments/:id(.:format)
|
82
|
+
* @param {any} inbox_id
|
83
|
+
* @param {any} message_id
|
84
|
+
* @param {any} id
|
85
|
+
* @param {object | undefined} options
|
86
|
+
* @returns {string} route path
|
87
|
+
*/
|
88
|
+
export const inbox_message_attachment_path: ((
|
89
|
+
inbox_id: RequiredRouteParameter,
|
90
|
+
message_id: RequiredRouteParameter,
|
91
|
+
id: RequiredRouteParameter,
|
92
|
+
options?: {format?: OptionalRouteParameter} & RouteOptions
|
93
|
+
) => string) & RouteHelperExtras
|
94
|
+
DOC
|
95
|
+
end
|
96
|
+
|
97
|
+
it "exports utility methods" do
|
98
|
+
expect(generated_js).to include("export const serialize: RouterExposedMethods['serialize'];")
|
99
|
+
end
|
100
|
+
|
101
|
+
it "prevents all types from automatic export" do
|
102
|
+
expect(generated_js).to include("export {};")
|
103
|
+
end
|
104
|
+
|
105
|
+
describe "compiled javascript asset" do
|
106
|
+
subject { ERB.new(File.read("app/assets/javascripts/js-routes.js.erb")).result(binding) }
|
107
|
+
it "should have js routes code" do
|
108
|
+
is_expected.to include("export const inbox_message_path = __jsr.r(")
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
@@ -5,7 +5,7 @@
|
|
5
5
|
require 'spec_helper'
|
6
6
|
require "fileutils"
|
7
7
|
|
8
|
-
describe "after Rails initialization" do
|
8
|
+
describe "after Rails initialization", :slow do
|
9
9
|
NAME = Rails.root.join('app', 'assets', 'javascripts', 'routes.js').to_s
|
10
10
|
|
11
11
|
def sprockets_v3?
|
@@ -122,7 +122,7 @@ describe "after Rails initialization" do
|
|
122
122
|
end
|
123
123
|
end
|
124
124
|
|
125
|
-
describe "JSRoutes thread safety" do
|
125
|
+
describe "JSRoutes thread safety", :slow do
|
126
126
|
before do
|
127
127
|
begin
|
128
128
|
Rails.application.initialize!
|
data/spec/spec_helper.rb
CHANGED
data/spec/tsconfig.json
ADDED
data/tsconfig.json
CHANGED
@@ -3,14 +3,10 @@
|
|
3
3
|
"target": "es2019",
|
4
4
|
"lib": ["es2020", "dom"],
|
5
5
|
"module": "commonjs",
|
6
|
-
"
|
7
|
-
"sourceMap": true,
|
6
|
+
"sourceMap": false,
|
8
7
|
"declaration": true,
|
9
8
|
"allowSyntheticDefaultImports": true,
|
10
|
-
"resolveJsonModule":
|
11
|
-
"typeRoots": ["node_modules/@types", "./@types"],
|
12
|
-
|
13
|
-
"strict": true,
|
9
|
+
"resolveJsonModule": false,
|
14
10
|
"strictNullChecks": true,
|
15
11
|
"noImplicitAny": true,
|
16
12
|
"noImplicitThis": true,
|
@@ -22,11 +18,11 @@
|
|
22
18
|
"forceConsistentCasingInFileNames": true,
|
23
19
|
"emitDecoratorMetadata": true,
|
24
20
|
"experimentalDecorators": true
|
21
|
+
|
25
22
|
},
|
26
23
|
"ts-node": {
|
27
24
|
"files": true,
|
28
25
|
"transpileOnly": false
|
29
26
|
},
|
30
|
-
"include": ["
|
31
|
-
"exclude": ["node_modules", "**/thorn", "**/support", "**/tmp"]
|
27
|
+
"include": ["lib/*.ts"]
|
32
28
|
}
|
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.
|
4
|
+
version: 2.1.1
|
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-06
|
11
|
+
date: 2021-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 3.
|
47
|
+
version: 3.10.0
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 3.
|
54
|
+
version: 3.10.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -171,12 +171,15 @@ files:
|
|
171
171
|
- lib/js-routes.rb
|
172
172
|
- lib/js_routes.rb
|
173
173
|
- lib/js_routes/engine.rb
|
174
|
+
- lib/js_routes/generators/webpacker.rb
|
174
175
|
- lib/js_routes/version.rb
|
175
176
|
- lib/routes.d.ts
|
176
177
|
- lib/routes.js
|
177
|
-
- lib/routes.js.map
|
178
178
|
- lib/routes.ts
|
179
179
|
- lib/tasks/js_routes.rake
|
180
|
+
- lib/templates/erb.js
|
181
|
+
- lib/templates/initializer.rb
|
182
|
+
- lib/templates/routes.js.erb
|
180
183
|
- package.json
|
181
184
|
- spec/dummy/app/assets/config/manifest.js
|
182
185
|
- spec/dummy/app/assets/javascripts/.gitkeep
|
@@ -184,6 +187,9 @@ files:
|
|
184
187
|
- spec/js_routes/default_serializer_spec.rb
|
185
188
|
- spec/js_routes/module_types/amd_spec.rb
|
186
189
|
- spec/js_routes/module_types/cjs_spec.rb
|
190
|
+
- spec/js_routes/module_types/dts/routes.spec.d.ts
|
191
|
+
- spec/js_routes/module_types/dts/test.spec.ts
|
192
|
+
- spec/js_routes/module_types/dts_spec.rb
|
187
193
|
- spec/js_routes/module_types/esm_spec.rb
|
188
194
|
- spec/js_routes/module_types/umd_spec.rb
|
189
195
|
- spec/js_routes/options_spec.rb
|
@@ -191,6 +197,7 @@ files:
|
|
191
197
|
- spec/js_routes/zzz_last_post_rails_init_spec.rb
|
192
198
|
- spec/spec_helper.rb
|
193
199
|
- spec/support/routes.rb
|
200
|
+
- spec/tsconfig.json
|
194
201
|
- tsconfig.json
|
195
202
|
- yarn.lock
|
196
203
|
homepage: http://github.com/railsware/js-routes
|
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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"}
|