js-routes 1.4.9 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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,680 @@
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;
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
+ url_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 url_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
+ url_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
+ if (!hasProp(parts_options, part)) {
325
+ query_parameters[part] = args[i];
326
+ ++i;
327
+ }
328
+ }
329
+ }
330
+ return { url_parameters, query_parameters };
331
+ }
332
+ build_route(
333
+ parts: string[],
334
+ required_params: string[],
335
+ default_options: RouteParameters,
336
+ route: RouteTree,
337
+ full_url: boolean,
338
+ args: RouteParameter[]
339
+ ): string {
340
+ const { url_parameters, query_parameters } = this.partition_parameters(
341
+ parts,
342
+ required_params,
343
+ default_options,
344
+ args
345
+ );
346
+ const missing_params = required_params.filter(
347
+ (param) =>
348
+ !hasProp(query_parameters, param) ||
349
+ this.is_nullable(query_parameters[param])
350
+ );
351
+ if (missing_params.length) {
352
+ throw new ParametersMissing(...missing_params);
353
+ }
354
+ let result = this.get_prefix() + this.visit(route, query_parameters);
355
+ if (url_parameters.trailing_slash) {
356
+ result = result.replace(/(.*?)[/]?$/, "$1/");
357
+ }
358
+ const url_params = this.serialize(query_parameters);
359
+ if (url_params.length) {
360
+ result += "?" + url_params;
361
+ }
362
+ result += url_parameters.anchor ? "#" + url_parameters.anchor : "";
363
+ if (full_url) {
364
+ result = this.route_url(url_parameters) + result;
365
+ }
366
+ return result;
367
+ }
368
+
369
+ visit(
370
+ route: RouteTree,
371
+ parameters: RouteParameters,
372
+ optional = false
373
+ ): string {
374
+ switch (route[0]) {
375
+ case NodeTypes.GROUP:
376
+ return this.visit(route[1], parameters, true);
377
+ case NodeTypes.CAT:
378
+ return this.visit_cat(route, parameters, optional);
379
+ case NodeTypes.SYMBOL:
380
+ return this.visit_symbol(route, parameters, optional);
381
+ case NodeTypes.STAR:
382
+ return this.visit_globbing(route[1], parameters, true);
383
+ case NodeTypes.LITERAL:
384
+ case NodeTypes.SLASH:
385
+ case NodeTypes.DOT:
386
+ return route[1];
387
+ default:
388
+ throw new Error("Unknown Rails node type");
389
+ }
390
+ }
391
+
392
+ is_not_nullable<T>(object: T): object is NonNullable<T> {
393
+ return !this.is_nullable(object);
394
+ }
395
+
396
+ is_nullable(object: unknown): object is null | undefined {
397
+ return object === undefined || object === null;
398
+ }
399
+
400
+ visit_cat(
401
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
402
+ [_type, left, right]: RouteNode<NodeTypes.CAT>,
403
+ parameters: RouteParameters,
404
+ optional: boolean
405
+ ): string {
406
+ const left_part = this.visit(left, parameters, optional);
407
+ const right_part = this.visit(right, parameters, optional);
408
+ if (
409
+ optional &&
410
+ ((this.is_optional_node(left[0]) && !left_part) ||
411
+ (this.is_optional_node(right[0]) && !right_part))
412
+ ) {
413
+ return "";
414
+ }
415
+ return left_part + right_part;
416
+ }
417
+
418
+ visit_symbol(
419
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
420
+ [_type, key]: RouteNode<NodeTypes.SYMBOL>,
421
+ parameters: RouteParameters,
422
+ optional: boolean
423
+ ): string {
424
+ const value = this.path_identifier(parameters[key]);
425
+ delete parameters[key];
426
+ if (value.length) {
427
+ return this.encode_segment(value);
428
+ }
429
+ if (optional) {
430
+ return "";
431
+ } else {
432
+ throw new ParametersMissing(key);
433
+ }
434
+ }
435
+
436
+ encode_segment(segment: string): string {
437
+ return segment.replace(UriEncoderSegmentRegex, function (str) {
438
+ return encodeURIComponent(str);
439
+ });
440
+ }
441
+
442
+ is_optional_node(node: NodeTypes): boolean {
443
+ return [NodeTypes.STAR, NodeTypes.SYMBOL, NodeTypes.CAT].includes(node);
444
+ }
445
+
446
+ build_path_spec(route: RouteTree, wildcard = false): string {
447
+ let key: string;
448
+ switch (route[0]) {
449
+ case NodeTypes.GROUP:
450
+ return "(" + this.build_path_spec(route[1]) + ")";
451
+ case NodeTypes.CAT:
452
+ return (
453
+ this.build_path_spec(route[1]) + this.build_path_spec(route[2])
454
+ );
455
+ case NodeTypes.STAR:
456
+ return this.build_path_spec(route[1], true);
457
+ case NodeTypes.SYMBOL:
458
+ key = route[1];
459
+ if (wildcard) {
460
+ return (key.startsWith("*") ? "" : "*") + key;
461
+ } else {
462
+ return ":" + key;
463
+ }
464
+ break;
465
+ case NodeTypes.SLASH:
466
+ case NodeTypes.DOT:
467
+ case NodeTypes.LITERAL:
468
+ return route[1];
469
+ default:
470
+ throw new Error("Unknown Rails node type");
471
+ }
472
+ }
473
+
474
+ visit_globbing(
475
+ route: RouteTree,
476
+ parameters: RouteParameters,
477
+ optional: boolean
478
+ ): string {
479
+ const key = route[1] as string;
480
+ let value = parameters[key];
481
+ delete parameters[key];
482
+ if (this.is_nullable(value)) {
483
+ return this.visit(route, parameters, optional);
484
+ }
485
+ if (this.is_array(value)) {
486
+ value = value.join("/");
487
+ }
488
+ value = this.path_identifier(value as any);
489
+
490
+ return DeprecatedGlobbingBehavior ? "" + value : encodeURI("" + value);
491
+ }
492
+
493
+ get_prefix(): string {
494
+ const prefix = this.configuration.prefix;
495
+ return prefix.match("/$")
496
+ ? prefix.substring(0, prefix.length - 1)
497
+ : prefix;
498
+ }
499
+
500
+ route(
501
+ parts_table: PartsTable,
502
+ route_spec: RouteTree,
503
+ full_url = false
504
+ ): RouteHelper {
505
+ const required_params: string[] = [];
506
+ const parts: string[] = [];
507
+ const default_options: RouteParameters = {};
508
+ for (const [part, { r: required, d: value }] of Object.entries(
509
+ parts_table
510
+ )) {
511
+ parts.push(part);
512
+ if (required) {
513
+ required_params.push(part);
514
+ }
515
+ if (this.is_not_nullable(value)) {
516
+ default_options[part] = value;
517
+ }
518
+ }
519
+ const result = (...args: RouteParameter[]): string => {
520
+ return this.build_route(
521
+ parts,
522
+ required_params,
523
+ default_options,
524
+ route_spec,
525
+ full_url,
526
+ args
527
+ );
528
+ };
529
+ result.requiredParams = () => required_params;
530
+ result.toString = () => {
531
+ return this.build_path_spec(route_spec);
532
+ };
533
+ return result;
534
+ }
535
+
536
+ route_url(route_defaults: KeywordUrlOptions): string {
537
+ const hostname = route_defaults.host || this.current_host();
538
+ if (!hostname) {
539
+ return "";
540
+ }
541
+ const subdomain = route_defaults.subdomain
542
+ ? route_defaults.subdomain + "."
543
+ : "";
544
+ const protocol = route_defaults.protocol || this.current_protocol();
545
+ let port =
546
+ route_defaults.port ||
547
+ (!route_defaults.host ? this.current_port() : undefined);
548
+ port = port ? ":" + port : "";
549
+ return protocol + "://" + subdomain + hostname + port;
550
+ }
551
+
552
+ has_location(): boolean {
553
+ return this.is_not_nullable(window) && !!window.location;
554
+ }
555
+
556
+ current_host(): string | null {
557
+ if (this.has_location()) {
558
+ return window.location.hostname;
559
+ } else {
560
+ return null;
561
+ }
562
+ }
563
+
564
+ current_protocol(): string {
565
+ if (this.has_location() && window.location.protocol !== "") {
566
+ return window.location.protocol.replace(/:$/, "");
567
+ } else {
568
+ return "http";
569
+ }
570
+ }
571
+ current_port(): string {
572
+ if (this.has_location() && window.location.port !== "") {
573
+ return window.location.port;
574
+ } else {
575
+ return "";
576
+ }
577
+ }
578
+
579
+ is_object(value: unknown): value is Record<string, unknown> {
580
+ return typeof value === "object" && "" + value === "[object Object]";
581
+ }
582
+
583
+ is_array<T>(object: unknown | T[]): object is T[] {
584
+ return object instanceof Array;
585
+ }
586
+
587
+ is_callable(object: unknown): object is Function {
588
+ return typeof object === "function" && !!object.call;
589
+ }
590
+
591
+ is_reserved_option(key: unknown): key is ReservedOption {
592
+ return ReservedOptions.includes(key as any);
593
+ }
594
+
595
+ namespace(
596
+ object: any,
597
+ namespace: string | null | undefined,
598
+ routes: unknown
599
+ ): unknown {
600
+ const parts = namespace?.split(".") || [];
601
+ if (parts.length === 0) {
602
+ return routes;
603
+ }
604
+ for (let index = 0; index < parts.length; index++) {
605
+ const part = parts[index];
606
+ if (index < parts.length - 1) {
607
+ object = object[part] || (object[part] = {});
608
+ } else {
609
+ return (object[part] = routes);
610
+ }
611
+ }
612
+ }
613
+
614
+ configure(new_config: Partial<Configuration>): Configuration {
615
+ this.configuration = { ...this.configuration, ...new_config };
616
+ return this.configuration;
617
+ }
618
+
619
+ config(): Configuration {
620
+ return { ...this.configuration };
621
+ }
622
+
623
+ is_module_supported(name: ModuleType): boolean {
624
+ return ModuleReferences[name].support();
625
+ }
626
+
627
+ ensure_module_supported(name: ModuleType): void {
628
+ if (!this.is_module_supported(name)) {
629
+ throw new Error(`${name} is not supported by runtime`);
630
+ }
631
+ }
632
+
633
+ define_module(
634
+ name: ModuleType | null,
635
+ module: RouterExposedMethods
636
+ ): void {
637
+ if (!name) {
638
+ return;
639
+ }
640
+ this.ensure_module_supported(name);
641
+ ModuleReferences[name].define(module);
642
+ }
643
+ }
644
+
645
+ const Utils = new UtilsClass();
646
+
647
+ // We want this helper name to be short
648
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
649
+ const __jsr = {
650
+ r(
651
+ parts_table: PartsTable,
652
+ route_spec: RouteTree,
653
+ full_url?: boolean
654
+ ): RouteHelper {
655
+ return Utils.route(parts_table, route_spec, full_url);
656
+ },
657
+ };
658
+
659
+ const result = {
660
+ ...__jsr,
661
+ configure: (config: Partial<Configuration>) => {
662
+ return Utils.configure(config);
663
+ },
664
+ config: (): Configuration => {
665
+ return Utils.config();
666
+ },
667
+ serialize: (object: unknown): string => {
668
+ return Utils.serialize(object);
669
+ },
670
+ ...RubyVariables.ROUTES_OBJECT,
671
+ };
672
+
673
+ Utils.namespace(Root, RubyVariables.NAMESPACE, result);
674
+
675
+ if (RubyVariables.MODULE_TYPE) {
676
+ Utils.define_module(RubyVariables.MODULE_TYPE, result);
677
+ }
678
+ return result;
679
+ }
680
+ )(this);