@shakerquiz/url 0.0.1 → 0.0.3

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.
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@shakerquiz/url",
4
- "version": "0.0.1",
4
+ "version": "0.0.3",
5
5
  "author": "yurkimus <yurkimus@gmail.com>",
6
6
  "license": "ISC",
7
7
  "exports": {
8
- "./admin": "./source/admin/index.js",
9
8
  "./checkin": "./source/checkin/index.js",
10
9
  "./cities": "./source/cities/index.js",
11
10
  "./files": "./source/files/index.js",
12
11
  "./games": "./source/games/index.js",
12
+ "./hub": "./source/hub/index.js",
13
13
  "./integrations": "./source/integrations/index.js",
14
14
  "./landing": "./source/landing/index.js",
15
15
  "./locations": "./source/locations/index.js",
@@ -20,6 +20,9 @@
20
20
  "./updates": "./source/updates/index.js",
21
21
  "./users": "./source/users/index.js",
22
22
  "./venues": "./source/venues/index.js",
23
- "./vk": "./source/vk/index.js"
23
+ "./vkma": "./source/vkma/index.js"
24
+ },
25
+ "dependencies": {
26
+ "@shakerquiz/utilities": "0.5.137"
24
27
  }
25
28
  }
@@ -1,86 +1,121 @@
1
+ import { guardNetwork, guardRouteService, guardService, hydrateRoutePathname, Network, Service } from '@shakerquiz/utilities'
2
+
1
3
  export var ServiceNetworkOrigin = {
2
- 'Roles': {
3
- 'Docker': new URL(Deno.env.get('ROLES_DOCKER_ORIGIN')),
4
- 'Public': new URL(Deno.env.get('ROLES_PUBLIC_ORIGIN')),
4
+ [Service['Roles']]: {
5
+ [Network['Docker']]: Deno.env.get('ROLES_DOCKER_ORIGIN'),
6
+ [Network['Public']]: Deno.env.get('ROLES_PUBLIC_ORIGIN'),
7
+ },
8
+
9
+ [Service['Users']]: {
10
+ [Network['Docker']]: Deno.env.get('USERS_DOCKER_ORIGIN'),
11
+ [Network['Public']]: Deno.env.get('USERS_PUBLIC_ORIGIN'),
5
12
  },
6
13
 
7
- 'Users': {
8
- 'Docker': new URL(Deno.env.get('USERS_DOCKER_ORIGIN')),
9
- 'Public': new URL(Deno.env.get('USERS_PUBLIC_ORIGIN')),
14
+ [Service['Checkin']]: {
15
+ [Network['Docker']]: Deno.env.get('CHECKIN_DOCKER_ORIGIN'),
16
+ [Network['Public']]: Deno.env.get('CHECKIN_PUBLIC_ORIGIN'),
10
17
  },
11
18
 
12
- 'Checkin': {
13
- 'Docker': new URL(Deno.env.get('CHECKIN_DOCKER_ORIGIN')),
14
- 'Public': new URL(Deno.env.get('CHECKIN_PUBLIC_ORIGIN')),
19
+ [Service['Locations']]: {
20
+ [Network['Docker']]: Deno.env.get('LOCATIONS_DOCKER_ORIGIN'),
21
+ [Network['Public']]: Deno.env.get('LOCATIONS_PUBLIC_ORIGIN'),
15
22
  },
16
23
 
17
- 'Locations': {
18
- 'Docker': new URL(Deno.env.get('LOCATIONS_DOCKER_ORIGIN')),
19
- 'Public': new URL(Deno.env.get('LOCATIONS_PUBLIC_ORIGIN')),
24
+ [Service['Cities']]: {
25
+ [Network['Docker']]: Deno.env.get('CITIES_DOCKER_ORIGIN'),
26
+ [Network['Public']]: Deno.env.get('CITIES_PUBLIC_ORIGIN'),
20
27
  },
21
28
 
22
- 'Cities': {
23
- 'Docker': new URL(Deno.env.get('CITIES_DOCKER_ORIGIN')),
24
- 'Public': new URL(Deno.env.get('CITIES_PUBLIC_ORIGIN')),
29
+ [Service['Venues']]: {
30
+ [Network['Docker']]: Deno.env.get('VENUES_DOCKER_ORIGIN'),
31
+ [Network['Public']]: Deno.env.get('VENUES_PUBLIC_ORIGIN'),
25
32
  },
26
33
 
27
- 'Venues': {
28
- 'Docker': new URL(Deno.env.get('VENUES_DOCKER_ORIGIN')),
29
- 'Public': new URL(Deno.env.get('VENUES_PUBLIC_ORIGIN')),
34
+ [Service['Themes']]: {
35
+ [Network['Docker']]: Deno.env.get('THEMES_DOCKER_ORIGIN'),
36
+ [Network['Public']]: Deno.env.get('THEMES_PUBLIC_ORIGIN'),
30
37
  },
31
38
 
32
- 'Themes': {
33
- 'Docker': new URL(Deno.env.get('THEMES_DOCKER_ORIGIN')),
34
- 'Public': new URL(Deno.env.get('THEMES_PUBLIC_ORIGIN')),
39
+ [Service['Games']]: {
40
+ [Network['Docker']]: Deno.env.get('GAMES_DOCKER_ORIGIN'),
41
+ [Network['Public']]: Deno.env.get('GAMES_PUBLIC_ORIGIN'),
35
42
  },
36
43
 
37
- 'Games': {
38
- 'Docker': new URL(Deno.env.get('GAMES_DOCKER_ORIGIN')),
39
- 'Public': new URL(Deno.env.get('GAMES_PUBLIC_ORIGIN')),
44
+ [Service['Registrations']]: {
45
+ [Network['Docker']]: Deno.env.get('REGISTRATIONS_DOCKER_ORIGIN'),
46
+ [Network['Public']]: Deno.env.get('REGISTRATIONS_PUBLIC_ORIGIN'),
40
47
  },
41
48
 
42
- 'Registrations': {
43
- 'Docker': new URL(Deno.env.get('REGISTRATIONS_DOCKER_ORIGIN')),
44
- 'Public': new URL(Deno.env.get('REGISTRATIONS_PUBLIC_ORIGIN')),
49
+ [Service['Files']]: {
50
+ [Network['Docker']]: Deno.env.get('FILES_DOCKER_ORIGIN'),
51
+ [Network['Public']]: Deno.env.get('FILES_PUBLIC_ORIGIN'),
45
52
  },
46
53
 
47
- 'Files': {
48
- 'Docker': new URL(Deno.env.get('FILES_DOCKER_ORIGIN')),
49
- 'Public': new URL(Deno.env.get('FILES_PUBLIC_ORIGIN')),
54
+ [Service['Integrations']]: {
55
+ [Network['Docker']]: Deno.env.get('INTEGRATIONS_DOCKER_ORIGIN'),
56
+ [Network['Public']]: Deno.env.get('INTEGRATIONS_PUBLIC_ORIGIN'),
50
57
  },
51
58
 
52
- 'Integrations': {
53
- 'Docker': new URL(Deno.env.get('INTEGRATIONS_DOCKER_ORIGIN')),
54
- 'Public': new URL(Deno.env.get('INTEGRATIONS_PUBLIC_ORIGIN')),
59
+ [Service['Updates']]: {
60
+ [Network['Docker']]: Deno.env.get('UPDATES_DOCKER_ORIGIN'),
61
+ [Network['Public']]: Deno.env.get('UPDATES_PUBLIC_ORIGIN'),
55
62
  },
56
63
 
57
- 'Updates': {
58
- 'Docker': new URL(Deno.env.get('UPDATES_DOCKER_ORIGIN')),
59
- 'Public': new URL(Deno.env.get('UPDATES_PUBLIC_ORIGIN')),
64
+ [Service['Procedures']]: {
65
+ [Network['Docker']]: Deno.env.get('PROCEDURES_DOCKER_ORIGIN'),
66
+ [Network['Public']]: Deno.env.get('PROCEDURES_PUBLIC_ORIGIN'),
60
67
  },
61
68
 
62
- 'Procedures': {
63
- 'Docker': new URL(Deno.env.get('PROCEDURES_DOCKER_ORIGIN')),
64
- 'Public': new URL(Deno.env.get('PROCEDURES_PUBLIC_ORIGIN')),
69
+ [Service['Minio']]: {
70
+ [Network['Docker']]: Deno.env.get('MINIO_DOCKER_ORIGIN'),
71
+ [Network['Public']]: Deno.env.get('MINIO_PUBLIC_ORIGIN'),
65
72
  },
66
73
 
67
- 'Minio': {
68
- 'Docker': new URL(Deno.env.get('MINIO_DOCKER_ORIGIN')),
69
- 'Public': new URL(Deno.env.get('MINIO_PUBLIC_ORIGIN')),
74
+ [Service['Landing']]: {
75
+ [Network['Docker']]: Deno.env.get('LANDING_DOCKER_ORIGIN'),
76
+ [Network['Public']]: Deno.env.get('LANDING_PUBLIC_ORIGIN'),
70
77
  },
71
78
 
72
- 'Landing': {
73
- 'Docker': new URL(Deno.env.get('LANDING_DOCKER_ORIGIN')),
74
- 'Public': new URL(Deno.env.get('LANDING_PUBLIC_ORIGIN')),
79
+ [Service['Vkma']]: {
80
+ [Network['Docker']]: Deno.env.get('VKMA_DOCKER_ORIGIN'),
81
+ [Network['Public']]: Deno.env.get('VKMA_PUBLIC_ORIGIN'),
75
82
  },
76
83
 
77
- 'Vk': {
78
- 'Docker': new URL(Deno.env.get('VK_DOCKER_ORIGIN')),
79
- 'Public': new URL(Deno.env.get('VK_PUBLIC_ORIGIN')),
84
+ [Service['Hub']]: {
85
+ [Network['Docker']]: Deno.env.get('HUB_DOCKER_ORIGIN'),
86
+ [Network['Public']]: Deno.env.get('HUB_PUBLIC_ORIGIN'),
80
87
  },
81
88
 
82
- 'Hub': {
83
- 'Docker': new URL(Deno.env.get('HUB_DOCKER_ORIGIN')),
84
- 'Public': new URL(Deno.env.get('HUB_PUBLIC_ORIGIN')),
89
+ [Service['Minio']]: {
90
+ [Network['Docker']]: Deno.env.get('MINIO_DOCKER_ORIGIN'),
91
+ [Network['Public']]: Deno.env.get('MINIO_PUBLIC_ORIGIN'),
85
92
  },
86
93
  }
94
+
95
+ /**
96
+ * @returns {string}
97
+ */
98
+ export var guardOrigin = (maybeService, maybeNetwork) => {
99
+ var service = guardService(maybeService)
100
+
101
+ var network = guardNetwork(maybeNetwork)
102
+
103
+ if (!(service in ServiceNetworkOrigin))
104
+ throw TypeError(`Service '${service}' does not exist.`)
105
+
106
+ if (!(network in ServiceNetworkOrigin[service]))
107
+ throw TypeError(`Network '${network}' in Service '${service}' does not exist.`)
108
+
109
+ return ServiceNetworkOrigin[service][network]
110
+ }
111
+
112
+ export var routeRequest = (maybeNetwork, maybeRoute, maybeRouteParams, maybeRouteSearch, init) => {
113
+ var url = new URL(
114
+ hydrateRoutePathname(maybeRoute, maybeRouteParams),
115
+ guardOrigin(guardRouteService(guardRoute(maybeRoute)), guardNetwork(maybeNetwork)),
116
+ )
117
+
118
+ url.search = maybeRouteSearch
119
+
120
+ return fetch(url, init)
121
+ }
@@ -1,86 +1,121 @@
1
+ import { guardNetwork, guardRouteService, guardService, hydrateRoutePathname, Network, Service } from '@shakerquiz/utilities'
2
+
1
3
  export var ServiceNetworkOrigin = {
2
- 'Roles': {
3
- 'Docker': new URL(Deno.env.get('ROLES_DOCKER_ORIGIN')),
4
- 'Public': new URL(Deno.env.get('ROLES_PUBLIC_ORIGIN')),
4
+ [Service['Roles']]: {
5
+ [Network['Docker']]: Deno.env.get('ROLES_DOCKER_ORIGIN'),
6
+ [Network['Public']]: Deno.env.get('ROLES_PUBLIC_ORIGIN'),
7
+ },
8
+
9
+ [Service['Users']]: {
10
+ [Network['Docker']]: Deno.env.get('USERS_DOCKER_ORIGIN'),
11
+ [Network['Public']]: Deno.env.get('USERS_PUBLIC_ORIGIN'),
5
12
  },
6
13
 
7
- 'Users': {
8
- 'Docker': new URL(Deno.env.get('USERS_DOCKER_ORIGIN')),
9
- 'Public': new URL(Deno.env.get('USERS_PUBLIC_ORIGIN')),
14
+ [Service['Checkin']]: {
15
+ [Network['Docker']]: Deno.env.get('CHECKIN_DOCKER_ORIGIN'),
16
+ [Network['Public']]: Deno.env.get('CHECKIN_PUBLIC_ORIGIN'),
10
17
  },
11
18
 
12
- 'Checkin': {
13
- 'Docker': new URL(Deno.env.get('CHECKIN_DOCKER_ORIGIN')),
14
- 'Public': new URL(Deno.env.get('CHECKIN_PUBLIC_ORIGIN')),
19
+ [Service['Locations']]: {
20
+ [Network['Docker']]: Deno.env.get('LOCATIONS_DOCKER_ORIGIN'),
21
+ [Network['Public']]: Deno.env.get('LOCATIONS_PUBLIC_ORIGIN'),
15
22
  },
16
23
 
17
- 'Locations': {
18
- 'Docker': new URL(Deno.env.get('LOCATIONS_DOCKER_ORIGIN')),
19
- 'Public': new URL(Deno.env.get('LOCATIONS_PUBLIC_ORIGIN')),
24
+ [Service['Cities']]: {
25
+ [Network['Docker']]: Deno.env.get('CITIES_DOCKER_ORIGIN'),
26
+ [Network['Public']]: Deno.env.get('CITIES_PUBLIC_ORIGIN'),
20
27
  },
21
28
 
22
- 'Cities': {
23
- 'Docker': new URL(Deno.env.get('CITIES_DOCKER_ORIGIN')),
24
- 'Public': new URL(Deno.env.get('CITIES_PUBLIC_ORIGIN')),
29
+ [Service['Venues']]: {
30
+ [Network['Docker']]: Deno.env.get('VENUES_DOCKER_ORIGIN'),
31
+ [Network['Public']]: Deno.env.get('VENUES_PUBLIC_ORIGIN'),
25
32
  },
26
33
 
27
- 'Venues': {
28
- 'Docker': new URL(Deno.env.get('VENUES_DOCKER_ORIGIN')),
29
- 'Public': new URL(Deno.env.get('VENUES_PUBLIC_ORIGIN')),
34
+ [Service['Themes']]: {
35
+ [Network['Docker']]: Deno.env.get('THEMES_DOCKER_ORIGIN'),
36
+ [Network['Public']]: Deno.env.get('THEMES_PUBLIC_ORIGIN'),
30
37
  },
31
38
 
32
- 'Themes': {
33
- 'Docker': new URL(Deno.env.get('THEMES_DOCKER_ORIGIN')),
34
- 'Public': new URL(Deno.env.get('THEMES_PUBLIC_ORIGIN')),
39
+ [Service['Games']]: {
40
+ [Network['Docker']]: Deno.env.get('GAMES_DOCKER_ORIGIN'),
41
+ [Network['Public']]: Deno.env.get('GAMES_PUBLIC_ORIGIN'),
35
42
  },
36
43
 
37
- 'Games': {
38
- 'Docker': new URL(Deno.env.get('GAMES_DOCKER_ORIGIN')),
39
- 'Public': new URL(Deno.env.get('GAMES_PUBLIC_ORIGIN')),
44
+ [Service['Registrations']]: {
45
+ [Network['Docker']]: Deno.env.get('REGISTRATIONS_DOCKER_ORIGIN'),
46
+ [Network['Public']]: Deno.env.get('REGISTRATIONS_PUBLIC_ORIGIN'),
40
47
  },
41
48
 
42
- 'Registrations': {
43
- 'Docker': new URL(Deno.env.get('REGISTRATIONS_DOCKER_ORIGIN')),
44
- 'Public': new URL(Deno.env.get('REGISTRATIONS_PUBLIC_ORIGIN')),
49
+ [Service['Files']]: {
50
+ [Network['Docker']]: Deno.env.get('FILES_DOCKER_ORIGIN'),
51
+ [Network['Public']]: Deno.env.get('FILES_PUBLIC_ORIGIN'),
45
52
  },
46
53
 
47
- 'Files': {
48
- 'Docker': new URL(Deno.env.get('FILES_DOCKER_ORIGIN')),
49
- 'Public': new URL(Deno.env.get('FILES_PUBLIC_ORIGIN')),
54
+ [Service['Integrations']]: {
55
+ [Network['Docker']]: Deno.env.get('INTEGRATIONS_DOCKER_ORIGIN'),
56
+ [Network['Public']]: Deno.env.get('INTEGRATIONS_PUBLIC_ORIGIN'),
50
57
  },
51
58
 
52
- 'Integrations': {
53
- 'Docker': new URL(Deno.env.get('INTEGRATIONS_DOCKER_ORIGIN')),
54
- 'Public': new URL(Deno.env.get('INTEGRATIONS_PUBLIC_ORIGIN')),
59
+ [Service['Updates']]: {
60
+ [Network['Docker']]: Deno.env.get('UPDATES_DOCKER_ORIGIN'),
61
+ [Network['Public']]: Deno.env.get('UPDATES_PUBLIC_ORIGIN'),
55
62
  },
56
63
 
57
- 'Updates': {
58
- 'Docker': new URL(Deno.env.get('UPDATES_DOCKER_ORIGIN')),
59
- 'Public': new URL(Deno.env.get('UPDATES_PUBLIC_ORIGIN')),
64
+ [Service['Procedures']]: {
65
+ [Network['Docker']]: Deno.env.get('PROCEDURES_DOCKER_ORIGIN'),
66
+ [Network['Public']]: Deno.env.get('PROCEDURES_PUBLIC_ORIGIN'),
60
67
  },
61
68
 
62
- 'Procedures': {
63
- 'Docker': new URL(Deno.env.get('PROCEDURES_DOCKER_ORIGIN')),
64
- 'Public': new URL(Deno.env.get('PROCEDURES_PUBLIC_ORIGIN')),
69
+ [Service['Minio']]: {
70
+ [Network['Docker']]: Deno.env.get('MINIO_DOCKER_ORIGIN'),
71
+ [Network['Public']]: Deno.env.get('MINIO_PUBLIC_ORIGIN'),
65
72
  },
66
73
 
67
- 'Minio': {
68
- 'Docker': new URL(Deno.env.get('MINIO_DOCKER_ORIGIN')),
69
- 'Public': new URL(Deno.env.get('MINIO_PUBLIC_ORIGIN')),
74
+ [Service['Landing']]: {
75
+ [Network['Docker']]: Deno.env.get('LANDING_DOCKER_ORIGIN'),
76
+ [Network['Public']]: Deno.env.get('LANDING_PUBLIC_ORIGIN'),
70
77
  },
71
78
 
72
- 'Landing': {
73
- 'Docker': new URL(Deno.env.get('LANDING_DOCKER_ORIGIN')),
74
- 'Public': new URL(Deno.env.get('LANDING_PUBLIC_ORIGIN')),
79
+ [Service['Vkma']]: {
80
+ [Network['Docker']]: Deno.env.get('VKMA_DOCKER_ORIGIN'),
81
+ [Network['Public']]: Deno.env.get('VKMA_PUBLIC_ORIGIN'),
75
82
  },
76
83
 
77
- 'Vk': {
78
- 'Docker': new URL(Deno.env.get('VK_DOCKER_ORIGIN')),
79
- 'Public': new URL(Deno.env.get('VK_PUBLIC_ORIGIN')),
84
+ [Service['Hub']]: {
85
+ [Network['Docker']]: Deno.env.get('HUB_DOCKER_ORIGIN'),
86
+ [Network['Public']]: Deno.env.get('HUB_PUBLIC_ORIGIN'),
80
87
  },
81
88
 
82
- 'Hub': {
83
- 'Docker': new URL(Deno.env.get('HUB_DOCKER_ORIGIN')),
84
- 'Public': new URL(Deno.env.get('HUB_PUBLIC_ORIGIN')),
89
+ [Service['Minio']]: {
90
+ [Network['Docker']]: Deno.env.get('MINIO_DOCKER_ORIGIN'),
91
+ [Network['Public']]: Deno.env.get('MINIO_PUBLIC_ORIGIN'),
85
92
  },
86
93
  }
94
+
95
+ /**
96
+ * @returns {string}
97
+ */
98
+ export var guardOrigin = (maybeService, maybeNetwork) => {
99
+ var service = guardService(maybeService)
100
+
101
+ var network = guardNetwork(maybeNetwork)
102
+
103
+ if (!(service in ServiceNetworkOrigin))
104
+ throw TypeError(`Service '${service}' does not exist.`)
105
+
106
+ if (!(network in ServiceNetworkOrigin[service]))
107
+ throw TypeError(`Network '${network}' in Service '${service}' does not exist.`)
108
+
109
+ return ServiceNetworkOrigin[service][network]
110
+ }
111
+
112
+ export var routeRequest = (maybeNetwork, maybeRoute, maybeRouteParams, maybeRouteSearch, init) => {
113
+ var url = new URL(
114
+ hydrateRoutePathname(maybeRoute, maybeRouteParams),
115
+ guardOrigin(guardRouteService(guardRoute(maybeRoute)), guardNetwork(maybeNetwork)),
116
+ )
117
+
118
+ url.search = maybeRouteSearch
119
+
120
+ return fetch(url, init)
121
+ }
@@ -1,86 +1,121 @@
1
+ import { guardNetwork, guardRouteService, guardService, hydrateRoutePathname, Network, Service } from '@shakerquiz/utilities'
2
+
1
3
  export var ServiceNetworkOrigin = {
2
- 'Roles': {
3
- 'Docker': new URL(process.env.ROLES_DOCKER_ORIGIN),
4
- 'Public': new URL(process.env.ROLES_PUBLIC_ORIGIN),
4
+ [Service['Roles']]: {
5
+ [Network['Docker']]: process.env.ROLES_DOCKER_ORIGIN,
6
+ [Network['Public']]: process.env.ROLES_PUBLIC_ORIGIN,
7
+ },
8
+
9
+ [Service['Users']]: {
10
+ [Network['Docker']]: process.env.USERS_DOCKER_ORIGIN,
11
+ [Network['Public']]: process.env.USERS_PUBLIC_ORIGIN,
5
12
  },
6
13
 
7
- 'Users': {
8
- 'Docker': new URL(process.env.USERS_DOCKER_ORIGIN),
9
- 'Public': new URL(process.env.USERS_PUBLIC_ORIGIN),
14
+ [Service['Checkin']]: {
15
+ [Network['Docker']]: process.env.CHECKIN_DOCKER_ORIGIN,
16
+ [Network['Public']]: process.env.CHECKIN_PUBLIC_ORIGIN,
10
17
  },
11
18
 
12
- 'Checkin': {
13
- 'Docker': new URL(process.env.CHECKIN_DOCKER_ORIGIN),
14
- 'Public': new URL(process.env.CHECKIN_PUBLIC_ORIGIN),
19
+ [Service['Locations']]: {
20
+ [Network['Docker']]: process.env.LOCATIONS_DOCKER_ORIGIN,
21
+ [Network['Public']]: process.env.LOCATIONS_PUBLIC_ORIGIN,
15
22
  },
16
23
 
17
- 'Locations': {
18
- 'Docker': new URL(process.env.LOCATIONS_DOCKER_ORIGIN),
19
- 'Public': new URL(process.env.LOCATIONS_PUBLIC_ORIGIN),
24
+ [Service['Cities']]: {
25
+ [Network['Docker']]: process.env.CITIES_DOCKER_ORIGIN,
26
+ [Network['Public']]: process.env.CITIES_PUBLIC_ORIGIN,
20
27
  },
21
28
 
22
- 'Cities': {
23
- 'Docker': new URL(process.env.CITIES_DOCKER_ORIGIN),
24
- 'Public': new URL(process.env.CITIES_PUBLIC_ORIGIN),
29
+ [Service['Venues']]: {
30
+ [Network['Docker']]: process.env.VENUES_DOCKER_ORIGIN,
31
+ [Network['Public']]: process.env.VENUES_PUBLIC_ORIGIN,
25
32
  },
26
33
 
27
- 'Venues': {
28
- 'Docker': new URL(process.env.VENUES_DOCKER_ORIGIN),
29
- 'Public': new URL(process.env.VENUES_PUBLIC_ORIGIN),
34
+ [Service['Themes']]: {
35
+ [Network['Docker']]: process.env.THEMES_DOCKER_ORIGIN,
36
+ [Network['Public']]: process.env.THEMES_PUBLIC_ORIGIN,
30
37
  },
31
38
 
32
- 'Themes': {
33
- 'Docker': new URL(process.env.THEMES_DOCKER_ORIGIN),
34
- 'Public': new URL(process.env.THEMES_PUBLIC_ORIGIN),
39
+ [Service['Games']]: {
40
+ [Network['Docker']]: process.env.GAMES_DOCKER_ORIGIN,
41
+ [Network['Public']]: process.env.GAMES_PUBLIC_ORIGIN,
35
42
  },
36
43
 
37
- 'Games': {
38
- 'Docker': new URL(process.env.GAMES_DOCKER_ORIGIN),
39
- 'Public': new URL(process.env.GAMES_PUBLIC_ORIGIN),
44
+ [Service['Registrations']]: {
45
+ [Network['Docker']]: process.env.REGISTRATIONS_DOCKER_ORIGIN,
46
+ [Network['Public']]: process.env.REGISTRATIONS_PUBLIC_ORIGIN,
40
47
  },
41
48
 
42
- 'Registrations': {
43
- 'Docker': new URL(process.env.REGISTRATIONS_DOCKER_ORIGIN),
44
- 'Public': new URL(process.env.REGISTRATIONS_PUBLIC_ORIGIN),
49
+ [Service['Files']]: {
50
+ [Network['Docker']]: process.env.FILES_DOCKER_ORIGIN,
51
+ [Network['Public']]: process.env.FILES_PUBLIC_ORIGIN,
45
52
  },
46
53
 
47
- 'Files': {
48
- 'Docker': new URL(process.env.FILES_DOCKER_ORIGIN),
49
- 'Public': new URL(process.env.FILES_PUBLIC_ORIGIN),
54
+ [Service['Integrations']]: {
55
+ [Network['Docker']]: process.env.INTEGRATIONS_DOCKER_ORIGIN,
56
+ [Network['Public']]: process.env.INTEGRATIONS_PUBLIC_ORIGIN,
50
57
  },
51
58
 
52
- 'Integrations': {
53
- 'Docker': new URL(process.env.INTEGRATIONS_DOCKER_ORIGIN),
54
- 'Public': new URL(process.env.INTEGRATIONS_PUBLIC_ORIGIN),
59
+ [Service['Updates']]: {
60
+ [Network['Docker']]: process.env.UPDATES_DOCKER_ORIGIN,
61
+ [Network['Public']]: process.env.UPDATES_PUBLIC_ORIGIN,
55
62
  },
56
63
 
57
- 'Updates': {
58
- 'Docker': new URL(process.env.UPDATES_DOCKER_ORIGIN),
59
- 'Public': new URL(process.env.UPDATES_PUBLIC_ORIGIN),
64
+ [Service['Procedures']]: {
65
+ [Network['Docker']]: process.env.PROCEDURES_DOCKER_ORIGIN,
66
+ [Network['Public']]: process.env.PROCEDURES_PUBLIC_ORIGIN,
60
67
  },
61
68
 
62
- 'Procedures': {
63
- 'Docker': new URL(process.env.PROCEDURES_DOCKER_ORIGIN),
64
- 'Public': new URL(process.env.PROCEDURES_PUBLIC_ORIGIN),
69
+ [Service['Minio']]: {
70
+ [Network['Docker']]: process.env.MINIO_DOCKER_ORIGIN,
71
+ [Network['Public']]: process.env.MINIO_PUBLIC_ORIGIN,
65
72
  },
66
73
 
67
- 'Minio': {
68
- 'Docker': new URL(process.env.MINIO_DOCKER_ORIGIN),
69
- 'Public': new URL(process.env.MINIO_PUBLIC_ORIGIN),
74
+ [Service['Landing']]: {
75
+ [Network['Docker']]: process.env.LANDING_DOCKER_ORIGIN,
76
+ [Network['Public']]: process.env.LANDING_PUBLIC_ORIGIN,
70
77
  },
71
78
 
72
- 'Landing': {
73
- 'Docker': new URL(process.env.LANDING_DOCKER_ORIGIN),
74
- 'Public': new URL(process.env.LANDING_PUBLIC_ORIGIN),
79
+ [Service['Vkma']]: {
80
+ [Network['Docker']]: process.env.VKMA_DOCKER_ORIGIN,
81
+ [Network['Public']]: process.env.VKMA_PUBLIC_ORIGIN,
75
82
  },
76
83
 
77
- 'Vk': {
78
- 'Docker': new URL(process.env.VK_DOCKER_ORIGIN),
79
- 'Public': new URL(process.env.VK_PUBLIC_ORIGIN),
84
+ [Service['Hub']]: {
85
+ [Network['Docker']]: process.env.HUB_DOCKER_ORIGIN,
86
+ [Network['Public']]: process.env.HUB_PUBLIC_ORIGIN,
80
87
  },
81
88
 
82
- 'Hub': {
83
- 'Docker': new URL(process.env.HUB_DOCKER_ORIGIN),
84
- 'Public': new URL(process.env.HUB_PUBLIC_ORIGIN),
89
+ [Service['Minio']]: {
90
+ [Network['Docker']]: process.env.MINIO_DOCKER_ORIGIN,
91
+ [Network['Public']]: process.env.MINIO_PUBLIC_ORIGIN,
85
92
  },
86
93
  }
94
+
95
+ /**
96
+ * @returns {string}
97
+ */
98
+ export var guardOrigin = (maybeService, maybeNetwork) => {
99
+ var service = guardService(maybeService)
100
+
101
+ var network = guardNetwork(maybeNetwork)
102
+
103
+ if (!(service in ServiceNetworkOrigin))
104
+ throw TypeError(`Service '${service}' does not exist.`)
105
+
106
+ if (!(network in ServiceNetworkOrigin[service]))
107
+ throw TypeError(`Network '${network}' in Service '${service}' does not exist.`)
108
+
109
+ return ServiceNetworkOrigin[service][network]
110
+ }
111
+
112
+ export var routeRequest = (maybeNetwork, maybeRoute, maybeRouteParams, maybeRouteSearch, init) => {
113
+ var url = new URL(
114
+ hydrateRoutePathname(maybeRoute, maybeRouteParams),
115
+ guardOrigin(guardRouteService(guardRoute(maybeRoute)), guardNetwork(maybeNetwork)),
116
+ )
117
+
118
+ url.search = maybeRouteSearch
119
+
120
+ return fetch(url, init)
121
+ }