js-routes 1.4.14 → 2.0.4

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.
data/lib/routes.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["routes.ts"],"names":[],"mappings":"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"}
data/lib/routes.ts ADDED
@@ -0,0 +1,693 @@
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
+ type RouteParameter = unknown;
7
+ type RouteParameters = Record<string, RouteParameter>;
8
+ type Serializer = (value: unknown) => string;
9
+ type RouteHelper = {
10
+ (...args: RouteParameter[]): string;
11
+ requiredParams(): string[];
12
+ toString(): string;
13
+ };
14
+
15
+ type RouteHelpers = Record<string, RouteHelper>;
16
+
17
+ type Configuration = {
18
+ prefix: string;
19
+ default_url_options: RouteParameters;
20
+ special_options_key: string;
21
+ serializer: Serializer;
22
+ };
23
+
24
+ type Optional<T> = { [P in keyof T]?: T[P] | null };
25
+ interface RouterExposedMethods {
26
+ config(): Configuration;
27
+ configure(arg: Partial<Configuration>): Configuration;
28
+ serialize: Serializer;
29
+ }
30
+
31
+ type KeywordUrlOptions = Optional<{
32
+ host: string;
33
+ protocol: string;
34
+ subdomain: string;
35
+ port: string;
36
+ anchor: string;
37
+ trailing_slash: boolean;
38
+ }>;
39
+
40
+ type PartsTable = Record<string, { r?: boolean; d?: unknown }>;
41
+
42
+ type ModuleType = "CJS" | "AMD" | "UMD" | "ESM";
43
+
44
+ declare const RubyVariables: {
45
+ PREFIX: string;
46
+ DEPRECATED_GLOBBING_BEHAVIOR: boolean;
47
+ SPECIAL_OPTIONS_KEY: string;
48
+ DEFAULT_URL_OPTIONS: RouteParameters;
49
+ SERIALIZER: Serializer;
50
+ NAMESPACE: string;
51
+ ROUTES_OBJECT: RouteHelpers;
52
+ MODULE_TYPE: ModuleType | null;
53
+ WRAPPER: <T>(callback: T) => T;
54
+ };
55
+
56
+ declare const define:
57
+ | undefined
58
+ | (((arg: unknown[], callback: () => unknown) => void) & { amd?: unknown });
59
+
60
+ declare const module: { exports: any } | undefined;
61
+
62
+ RubyVariables.WRAPPER(
63
+ (that: unknown): RouterExposedMethods => {
64
+ const hasProp = (value: unknown, key: string) =>
65
+ Object.prototype.hasOwnProperty.call(value, key);
66
+ enum NodeTypes {
67
+ GROUP = 1,
68
+ CAT = 2,
69
+ SYMBOL = 3,
70
+ OR = 4,
71
+ STAR = 5,
72
+ LITERAL = 6,
73
+ SLASH = 7,
74
+ DOT = 8,
75
+ }
76
+ type RouteNodes = {
77
+ [NodeTypes.GROUP]: { left: RouteTree; right: never };
78
+ [NodeTypes.STAR]: { left: RouteTree; right: never };
79
+ [NodeTypes.LITERAL]: { left: string; right: never };
80
+ [NodeTypes.SLASH]: { left: "/"; right: never };
81
+ [NodeTypes.DOT]: { left: "."; right: never };
82
+ [NodeTypes.CAT]: { left: RouteTree; right: RouteTree };
83
+ [NodeTypes.SYMBOL]: { left: string; right: never };
84
+ };
85
+ type RouteNode<T extends keyof RouteNodes> = [
86
+ T,
87
+ RouteNodes[T]["left"],
88
+ RouteNodes[T]["right"]
89
+ ];
90
+ type RouteTree = {
91
+ [T in keyof RouteNodes]: RouteNode<T>;
92
+ }[keyof RouteNodes];
93
+
94
+ const Root = that;
95
+ type ModuleDefinition = {
96
+ define: (routes: unknown) => void;
97
+ support: () => boolean;
98
+ };
99
+ const ModuleReferences: Record<ModuleType, ModuleDefinition> = {
100
+ CJS: {
101
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
102
+ define: (routes) => (module!.exports = routes),
103
+ support: () => typeof module === "object",
104
+ },
105
+ AMD: {
106
+ define: (routes) =>
107
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
108
+ define!([], function () {
109
+ return routes;
110
+ }),
111
+ support: () => typeof define === "function" && !!define.amd,
112
+ },
113
+ UMD: {
114
+ define: (routes) => {
115
+ if (ModuleReferences.AMD.support()) {
116
+ ModuleReferences.AMD.define(routes);
117
+ } else {
118
+ if (ModuleReferences.CJS.support()) {
119
+ try {
120
+ ModuleReferences.CJS.define(routes);
121
+ } catch (error) {
122
+ if (error.name !== "TypeError") throw error;
123
+ }
124
+ }
125
+ }
126
+ },
127
+ support: () =>
128
+ ModuleReferences.AMD.support() || ModuleReferences.CJS.support(),
129
+ },
130
+ ESM: {
131
+ define: () => null,
132
+ support: () => true,
133
+ },
134
+ };
135
+
136
+ class ParametersMissing extends Error {
137
+ readonly keys: string[];
138
+ constructor(...keys: string[]) {
139
+ super(`Route missing required keys: ${keys.join(", ")}`);
140
+ this.keys = keys;
141
+ Object.setPrototypeOf(this, Object.getPrototypeOf(this));
142
+ this.name = ParametersMissing.name;
143
+ }
144
+ }
145
+
146
+ const DeprecatedGlobbingBehavior =
147
+ RubyVariables.DEPRECATED_GLOBBING_BEHAVIOR;
148
+
149
+ const UriEncoderSegmentRegex = /[^a-zA-Z0-9\-._~!$&'()*+,;=:@]/g;
150
+
151
+ const ReservedOptions = [
152
+ "anchor",
153
+ "trailing_slash",
154
+ "subdomain",
155
+ "host",
156
+ "port",
157
+ "protocol",
158
+ ] as const;
159
+ type ReservedOption = typeof ReservedOptions[any];
160
+
161
+ class UtilsClass {
162
+ configuration: Configuration = {
163
+ prefix: RubyVariables.PREFIX,
164
+ default_url_options: RubyVariables.DEFAULT_URL_OPTIONS,
165
+ special_options_key: RubyVariables.SPECIAL_OPTIONS_KEY,
166
+ serializer:
167
+ RubyVariables.SERIALIZER || this.default_serializer.bind(this),
168
+ };
169
+
170
+ default_serializer(value: any, prefix?: string | null): string {
171
+ if (this.is_nullable(value)) {
172
+ return "";
173
+ }
174
+ if (!prefix && !this.is_object(value)) {
175
+ throw new Error("Url parameters should be a javascript hash");
176
+ }
177
+ prefix = prefix || "";
178
+ const result: string[] = [];
179
+ if (this.is_array(value)) {
180
+ for (const element of value) {
181
+ result.push(this.default_serializer(element, prefix + "[]"));
182
+ }
183
+ } else if (this.is_object(value)) {
184
+ for (let key in value) {
185
+ if (!hasProp(value, key)) continue;
186
+ let prop = value[key];
187
+ if (this.is_nullable(prop) && prefix) {
188
+ prop = "";
189
+ }
190
+ if (this.is_not_nullable(prop)) {
191
+ if (prefix) {
192
+ key = prefix + "[" + key + "]";
193
+ }
194
+ result.push(this.default_serializer(prop, key));
195
+ }
196
+ }
197
+ } else {
198
+ if (this.is_not_nullable(value)) {
199
+ result.push(
200
+ encodeURIComponent(prefix) + "=" + encodeURIComponent("" + value)
201
+ );
202
+ }
203
+ }
204
+ return result.join("&");
205
+ }
206
+
207
+ serialize(object: unknown): string {
208
+ return this.configuration.serializer(object);
209
+ }
210
+
211
+ extract_options(
212
+ number_of_params: number,
213
+ args: RouteParameter[]
214
+ ): {
215
+ args: RouteParameter[];
216
+ options: KeywordUrlOptions & RouteParameters;
217
+ } {
218
+ const last_el = args[args.length - 1];
219
+ if (
220
+ (args.length > number_of_params && last_el === 0) ||
221
+ (this.is_object(last_el) &&
222
+ !this.looks_like_serialized_model(last_el))
223
+ ) {
224
+ if (this.is_object(last_el)) {
225
+ delete last_el[this.configuration.special_options_key];
226
+ }
227
+ return {
228
+ args: args.slice(0, args.length - 1),
229
+ options: last_el as KeywordUrlOptions & RouteParameters,
230
+ };
231
+ } else {
232
+ return { args, options: {} };
233
+ }
234
+ }
235
+
236
+ looks_like_serialized_model(
237
+ object: any
238
+ ): object is
239
+ | { id: unknown }
240
+ | { to_param: unknown }
241
+ | { toParam: unknown } {
242
+ return (
243
+ this.is_object(object) &&
244
+ !object[this.configuration.special_options_key] &&
245
+ ("id" in object || "to_param" in object || "toParam" in object)
246
+ );
247
+ }
248
+
249
+ path_identifier(object: unknown): string {
250
+ const result = this.unwrap_path_identifier(object);
251
+ return this.is_nullable(result) || result === false ? "" : "" + result;
252
+ }
253
+
254
+ unwrap_path_identifier(object: any): unknown {
255
+ let result: any = object;
256
+ if (!this.is_object(object)) {
257
+ return object;
258
+ }
259
+ if ("to_param" in object) {
260
+ result = object.to_param;
261
+ } else if ("toParam" in object) {
262
+ result = object.toParam;
263
+ } else if ("id" in object) {
264
+ result = object.id;
265
+ } else {
266
+ result = object;
267
+ }
268
+ return this.is_callable(result) ? result.call(object) : result;
269
+ }
270
+
271
+ partition_parameters(
272
+ parts: string[],
273
+ required_params: string[],
274
+ default_options: RouteParameters,
275
+ call_arguments: RouteParameter[]
276
+ ): {
277
+ keyword_parameters: KeywordUrlOptions;
278
+ query_parameters: RouteParameters;
279
+ } {
280
+ // eslint-disable-next-line prefer-const
281
+ let { args, options } = this.extract_options(
282
+ parts.length,
283
+ call_arguments
284
+ );
285
+ if (args.length > parts.length) {
286
+ throw new Error("Too many parameters provided for path");
287
+ }
288
+ let use_all_parts = args.length > required_params.length;
289
+ const parts_options: RouteParameters = {};
290
+ for (const key in options) {
291
+ const value = options[key];
292
+ if (!hasProp(options, key)) continue;
293
+ use_all_parts = true;
294
+ if (parts.includes(key)) {
295
+ parts_options[key] = value;
296
+ }
297
+ }
298
+ options = {
299
+ ...this.configuration.default_url_options,
300
+ ...default_options,
301
+ ...options,
302
+ };
303
+
304
+ const keyword_parameters: KeywordUrlOptions = {};
305
+ const query_parameters: RouteParameters = {};
306
+ for (const key in options) {
307
+ if (!hasProp(options, key)) continue;
308
+ const value = options[key];
309
+ if (this.is_reserved_option(key)) {
310
+ keyword_parameters[key] = value as any;
311
+ } else {
312
+ if (
313
+ !this.is_nullable(value) &&
314
+ (value !== default_options[key] || required_params.includes(key))
315
+ ) {
316
+ query_parameters[key] = value;
317
+ }
318
+ }
319
+ }
320
+ const route_parts = use_all_parts ? parts : required_params;
321
+ let i = 0;
322
+ for (const part of route_parts) {
323
+ if (i < args.length) {
324
+ const value = args[i];
325
+ if (!hasProp(parts_options, part)) {
326
+ query_parameters[part] = value;
327
+ ++i;
328
+ }
329
+ }
330
+ }
331
+ return { keyword_parameters, query_parameters };
332
+ }
333
+ build_route(
334
+ parts: string[],
335
+ required_params: string[],
336
+ default_options: RouteParameters,
337
+ route: RouteTree,
338
+ absolute: boolean,
339
+ args: RouteParameter[]
340
+ ): string {
341
+ const {
342
+ keyword_parameters,
343
+ query_parameters,
344
+ } = this.partition_parameters(
345
+ parts,
346
+ required_params,
347
+ default_options,
348
+ args
349
+ );
350
+ const missing_params = required_params.filter(
351
+ (param) =>
352
+ !hasProp(query_parameters, param) ||
353
+ this.is_nullable(query_parameters[param])
354
+ );
355
+ if (missing_params.length) {
356
+ throw new ParametersMissing(...missing_params);
357
+ }
358
+ let result = this.get_prefix() + this.visit(route, query_parameters);
359
+ if (keyword_parameters.trailing_slash) {
360
+ result = result.replace(/(.*?)[/]?$/, "$1/");
361
+ }
362
+ const url_params = this.serialize(query_parameters);
363
+ if (url_params.length) {
364
+ result += "?" + url_params;
365
+ }
366
+ result += keyword_parameters.anchor
367
+ ? "#" + keyword_parameters.anchor
368
+ : "";
369
+ if (absolute) {
370
+ result = this.route_url(keyword_parameters) + result;
371
+ }
372
+ return result;
373
+ }
374
+
375
+ visit(
376
+ route: RouteTree,
377
+ parameters: RouteParameters,
378
+ optional = false
379
+ ): string {
380
+ switch (route[0]) {
381
+ case NodeTypes.GROUP:
382
+ return this.visit(route[1], parameters, true);
383
+ case NodeTypes.CAT:
384
+ return this.visit_cat(route, parameters, optional);
385
+ case NodeTypes.SYMBOL:
386
+ return this.visit_symbol(route, parameters, optional);
387
+ case NodeTypes.STAR:
388
+ return this.visit_globbing(route[1], parameters, true);
389
+ case NodeTypes.LITERAL:
390
+ case NodeTypes.SLASH:
391
+ case NodeTypes.DOT:
392
+ return route[1];
393
+ default:
394
+ throw new Error("Unknown Rails node type");
395
+ }
396
+ }
397
+
398
+ is_not_nullable<T>(object: T): object is NonNullable<T> {
399
+ return !this.is_nullable(object);
400
+ }
401
+
402
+ is_nullable(object: unknown): object is null | undefined {
403
+ return object === undefined || object === null;
404
+ }
405
+
406
+ visit_cat(
407
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
408
+ [_type, left, right]: RouteNode<NodeTypes.CAT>,
409
+ parameters: RouteParameters,
410
+ optional: boolean
411
+ ): string {
412
+ const left_part = this.visit(left, parameters, optional);
413
+ let right_part = this.visit(right, parameters, optional);
414
+ if (
415
+ optional &&
416
+ ((this.is_optional_node(left[0]) && !left_part) ||
417
+ (this.is_optional_node(right[0]) && !right_part))
418
+ ) {
419
+ return "";
420
+ }
421
+ // if left_part ends on '/' and right_part starts on '/'
422
+ if (left_part[left_part.length - 1] === "/" && right_part[0] === "/") {
423
+ // strip slash from right_part
424
+ // to prevent double slash
425
+ right_part = right_part.substring(1);
426
+ }
427
+ return left_part + right_part;
428
+ }
429
+
430
+ visit_symbol(
431
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
432
+ [_type, key]: RouteNode<NodeTypes.SYMBOL>,
433
+ parameters: RouteParameters,
434
+ optional: boolean
435
+ ): string {
436
+ const value = this.path_identifier(parameters[key]);
437
+ delete parameters[key];
438
+ if (value.length) {
439
+ return this.encode_segment(value);
440
+ }
441
+ if (optional) {
442
+ return "";
443
+ } else {
444
+ throw new ParametersMissing(key);
445
+ }
446
+ }
447
+
448
+ encode_segment(segment: string): string {
449
+ return segment.replace(UriEncoderSegmentRegex, function (str) {
450
+ return encodeURIComponent(str);
451
+ });
452
+ }
453
+
454
+ is_optional_node(node: NodeTypes): boolean {
455
+ return [NodeTypes.STAR, NodeTypes.SYMBOL, NodeTypes.CAT].includes(node);
456
+ }
457
+
458
+ build_path_spec(route: RouteTree, wildcard = false): string {
459
+ let key: string;
460
+ switch (route[0]) {
461
+ case NodeTypes.GROUP:
462
+ return "(" + this.build_path_spec(route[1]) + ")";
463
+ case NodeTypes.CAT:
464
+ return (
465
+ this.build_path_spec(route[1]) + this.build_path_spec(route[2])
466
+ );
467
+ case NodeTypes.STAR:
468
+ return this.build_path_spec(route[1], true);
469
+ case NodeTypes.SYMBOL:
470
+ key = route[1];
471
+ if (wildcard) {
472
+ return (key.startsWith("*") ? "" : "*") + key;
473
+ } else {
474
+ return ":" + key;
475
+ }
476
+ break;
477
+ case NodeTypes.SLASH:
478
+ case NodeTypes.DOT:
479
+ case NodeTypes.LITERAL:
480
+ return route[1];
481
+ default:
482
+ throw new Error("Unknown Rails node type");
483
+ }
484
+ }
485
+
486
+ visit_globbing(
487
+ route: RouteTree,
488
+ parameters: RouteParameters,
489
+ optional: boolean
490
+ ): string {
491
+ const key = route[1] as string;
492
+ let value = parameters[key];
493
+ delete parameters[key];
494
+ if (this.is_nullable(value)) {
495
+ return this.visit(route, parameters, optional);
496
+ }
497
+ if (this.is_array(value)) {
498
+ value = value.join("/");
499
+ }
500
+ const result = this.path_identifier(value as any);
501
+ return DeprecatedGlobbingBehavior ? result : encodeURI(result);
502
+ }
503
+
504
+ get_prefix(): string {
505
+ const prefix = this.configuration.prefix;
506
+ return prefix.match("/$")
507
+ ? prefix.substring(0, prefix.length - 1)
508
+ : prefix;
509
+ }
510
+
511
+ route(
512
+ parts_table: PartsTable,
513
+ route_spec: RouteTree,
514
+ absolute = false
515
+ ): RouteHelper {
516
+ const required_params: string[] = [];
517
+ const parts: string[] = [];
518
+ const default_options: RouteParameters = {};
519
+ for (const [part, { r: required, d: value }] of Object.entries(
520
+ parts_table
521
+ )) {
522
+ parts.push(part);
523
+ if (required) {
524
+ required_params.push(part);
525
+ }
526
+ if (this.is_not_nullable(value)) {
527
+ default_options[part] = value;
528
+ }
529
+ }
530
+ const result = (...args: RouteParameter[]): string => {
531
+ return this.build_route(
532
+ parts,
533
+ required_params,
534
+ default_options,
535
+ route_spec,
536
+ absolute,
537
+ args
538
+ );
539
+ };
540
+ result.requiredParams = () => required_params;
541
+ result.toString = () => {
542
+ return this.build_path_spec(route_spec);
543
+ };
544
+ return result;
545
+ }
546
+
547
+ route_url(route_defaults: KeywordUrlOptions): string {
548
+ const hostname = route_defaults.host || this.current_host();
549
+ if (!hostname) {
550
+ return "";
551
+ }
552
+ const subdomain = route_defaults.subdomain
553
+ ? route_defaults.subdomain + "."
554
+ : "";
555
+ const protocol = route_defaults.protocol || this.current_protocol();
556
+ let port =
557
+ route_defaults.port ||
558
+ (!route_defaults.host ? this.current_port() : undefined);
559
+ port = port ? ":" + port : "";
560
+ return protocol + "://" + subdomain + hostname + port;
561
+ }
562
+
563
+ has_location(): boolean {
564
+ return this.is_not_nullable(window) && !!window.location;
565
+ }
566
+
567
+ current_host(): string | null {
568
+ if (this.has_location()) {
569
+ return window.location.hostname;
570
+ } else {
571
+ return null;
572
+ }
573
+ }
574
+
575
+ current_protocol(): string {
576
+ if (this.has_location() && window.location.protocol !== "") {
577
+ return window.location.protocol.replace(/:$/, "");
578
+ } else {
579
+ return "http";
580
+ }
581
+ }
582
+ current_port(): string {
583
+ if (this.has_location() && window.location.port !== "") {
584
+ return window.location.port;
585
+ } else {
586
+ return "";
587
+ }
588
+ }
589
+
590
+ is_object(value: unknown): value is Record<string, unknown> {
591
+ return (
592
+ typeof value === "object" &&
593
+ Object.prototype.toString.call(value) === "[object Object]"
594
+ );
595
+ }
596
+
597
+ is_array<T>(object: unknown | T[]): object is T[] {
598
+ return object instanceof Array;
599
+ }
600
+
601
+ is_callable(object: unknown): object is Function {
602
+ return typeof object === "function" && !!object.call;
603
+ }
604
+
605
+ is_reserved_option(key: unknown): key is ReservedOption {
606
+ return ReservedOptions.includes(key as any);
607
+ }
608
+
609
+ namespace(
610
+ object: any,
611
+ namespace: string | null | undefined,
612
+ routes: unknown
613
+ ): unknown {
614
+ const parts = namespace?.split(".") || [];
615
+ if (parts.length === 0) {
616
+ return routes;
617
+ }
618
+ for (let index = 0; index < parts.length; index++) {
619
+ const part = parts[index];
620
+ if (index < parts.length - 1) {
621
+ object = object[part] || (object[part] = {});
622
+ } else {
623
+ return (object[part] = routes);
624
+ }
625
+ }
626
+ }
627
+
628
+ configure(new_config: Partial<Configuration>): Configuration {
629
+ this.configuration = { ...this.configuration, ...new_config };
630
+ return this.configuration;
631
+ }
632
+
633
+ config(): Configuration {
634
+ return { ...this.configuration };
635
+ }
636
+
637
+ is_module_supported(name: ModuleType): boolean {
638
+ return ModuleReferences[name].support();
639
+ }
640
+
641
+ ensure_module_supported(name: ModuleType): void {
642
+ if (!this.is_module_supported(name)) {
643
+ throw new Error(`${name} is not supported by runtime`);
644
+ }
645
+ }
646
+
647
+ define_module(
648
+ name: ModuleType | null,
649
+ module: RouterExposedMethods
650
+ ): void {
651
+ if (!name) {
652
+ return;
653
+ }
654
+ this.ensure_module_supported(name);
655
+ ModuleReferences[name].define(module);
656
+ }
657
+ }
658
+
659
+ const Utils = new UtilsClass();
660
+
661
+ // We want this helper name to be short
662
+ const __jsr = {
663
+ r(
664
+ parts_table: PartsTable,
665
+ route_spec: RouteTree,
666
+ absolute?: boolean
667
+ ): RouteHelper {
668
+ return Utils.route(parts_table, route_spec, absolute);
669
+ },
670
+ };
671
+
672
+ const result = {
673
+ ...__jsr,
674
+ configure: (config: Partial<Configuration>) => {
675
+ return Utils.configure(config);
676
+ },
677
+ config: (): Configuration => {
678
+ return Utils.config();
679
+ },
680
+ serialize: (object: unknown): string => {
681
+ return Utils.serialize(object);
682
+ },
683
+ ...RubyVariables.ROUTES_OBJECT,
684
+ };
685
+
686
+ Utils.namespace(Root, RubyVariables.NAMESPACE, result);
687
+
688
+ if (RubyVariables.MODULE_TYPE) {
689
+ Utils.define_module(RubyVariables.MODULE_TYPE, result);
690
+ }
691
+ return result;
692
+ }
693
+ )(this);