@merkur/plugin-router 0.36.5 → 0.37.0

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/lib/index.cjs CHANGED
@@ -15,7 +15,27 @@ const ENV =
15
15
  : DEV;
16
16
 
17
17
  function createRouter(widget, routes, options) {
18
- widget.$dependencies.router = new UniversalRouter(routes, options);
18
+ let wrappedRoutes = routes.reduce((result, route) => {
19
+ const clonedRoute = { ...route };
20
+
21
+ if (core.isFunction(clonedRoute.action)) {
22
+ const originAction = clonedRoute.action;
23
+ clonedRoute.action = (...rest) => {
24
+ // @TODO UniversalRouter don't parse query from url so context.params are only named route parameters
25
+ // For some application can be helpful to have named route parameters and query parameters merged
26
+ // because link method support both named parameters and query parameters
27
+ widget.$in.router.context = rest[0];
28
+
29
+ return originAction(...rest);
30
+ };
31
+ }
32
+
33
+ result.push(clonedRoute);
34
+
35
+ return result;
36
+ }, []);
37
+
38
+ widget.$dependencies.router = new UniversalRouter(wrappedRoutes, options);
19
39
  widget.$dependencies.link = generateUrls(widget.$dependencies.router, {
20
40
  stringifyQueryParams: (params) => new URLSearchParams(params).toString(),
21
41
  });
@@ -29,6 +49,7 @@ function routerPlugin() {
29
49
 
30
50
  widget.$in.router = {
31
51
  route: null,
52
+ context: null,
32
53
  options: {},
33
54
  pathname: null,
34
55
  isMounting: false,
@@ -104,6 +125,9 @@ function routerAPI() {
104
125
  getCurrentRoute(widget) {
105
126
  return widget.$in.router.route;
106
127
  },
128
+ getCurrentContext(widget) {
129
+ return widget.$in.router.context;
130
+ },
107
131
  },
108
132
  };
109
133
  }
@@ -137,6 +161,7 @@ async function loadHook(widget, originalLoad, ...rest) {
137
161
  : Promise.resolve({});
138
162
  const routeStatePromise = plugin.route.load(widget, {
139
163
  route: plugin.route,
164
+ context: plugin.context,
140
165
  args: rest,
141
166
  globalState: globalStatePromise,
142
167
  });
@@ -162,7 +187,11 @@ async function mountHook(widget, originalMount, ...rest) {
162
187
  const result = await originalMount(...rest);
163
188
 
164
189
  if (plugin.isMounting && core.isFunction(plugin.route.init)) {
165
- await plugin.route.init(widget, { route: plugin.route, args: rest });
190
+ await plugin.route.init(widget, {
191
+ route: plugin.route,
192
+ context: plugin.context,
193
+ args: rest,
194
+ });
166
195
  }
167
196
 
168
197
  if (
@@ -171,7 +200,11 @@ async function mountHook(widget, originalMount, ...rest) {
171
200
  !plugin.isRouteActivated
172
201
  ) {
173
202
  plugin.isRouteActivated = true;
174
- plugin.route.activate(widget, { route: plugin.route, args: rest });
203
+ plugin.route.activate(widget, {
204
+ route: plugin.route,
205
+ context: plugin.context,
206
+ args: rest,
207
+ });
175
208
  }
176
209
 
177
210
  plugin.isMounting = false;
@@ -191,7 +224,11 @@ async function updateHook(widget, originalUpdate, ...rest) {
191
224
  !plugin.isRouteActivated
192
225
  ) {
193
226
  plugin.isRouteActivated = true;
194
- plugin.route.activate(widget, { route: plugin.route, args: rest });
227
+ plugin.route.activate(widget, {
228
+ route: plugin.route,
229
+ context: plugin.context,
230
+ args: rest,
231
+ });
195
232
  }
196
233
 
197
234
  return result;
@@ -232,9 +269,10 @@ async function resolveRoute(widget) {
232
269
 
233
270
  async function setupRouterCycle(widget, ...rest) {
234
271
  const route = await resolveRoute(widget);
272
+ const plugin = widget.$in.router;
235
273
 
236
274
  if (core.isFunction(route.init)) {
237
- await route.init(widget, { route, args: rest });
275
+ await route.init(widget, { route, context: plugin.context, args: rest });
238
276
  }
239
277
  }
240
278
 
@@ -245,11 +283,19 @@ async function tearDownRouterCycle(widget, ...rest) {
245
283
 
246
284
  if (route) {
247
285
  if (core.isFunction(route.deactivate) && isRouteActivated === true) {
248
- await route.deactivate(widget, { route, args: rest });
286
+ await route.deactivate(widget, {
287
+ route,
288
+ context: plugin.context,
289
+ args: rest,
290
+ });
249
291
  }
250
292
 
251
293
  if (core.isFunction(route.destroy)) {
252
- await route.destroy(widget, { route, args: rest });
294
+ await route.destroy(widget, {
295
+ route,
296
+ context: plugin.context,
297
+ args: rest,
298
+ });
253
299
  }
254
300
  }
255
301
 
package/lib/index.es9.cjs CHANGED
@@ -9,7 +9,24 @@ var RouterEvents = Object.freeze({
9
9
  const DEV = 'development';
10
10
  const ENV = typeof process !== 'undefined' && process && process.env ? process.env.NODE_ENV : DEV;
11
11
  function createRouter(widget, routes, options) {
12
- widget.$dependencies.router = new UniversalRouter(routes, options);
12
+ let wrappedRoutes = routes.reduce((result, route) => {
13
+ const clonedRoute = {
14
+ ...route
15
+ };
16
+ if (core.isFunction(clonedRoute.action)) {
17
+ const originAction = clonedRoute.action;
18
+ clonedRoute.action = (...rest) => {
19
+ // @TODO UniversalRouter don't parse query from url so context.params are only named route parameters
20
+ // For some application can be helpful to have named route parameters and query parameters merged
21
+ // because link method support both named parameters and query parameters
22
+ widget.$in.router.context = rest[0];
23
+ return originAction(...rest);
24
+ };
25
+ }
26
+ result.push(clonedRoute);
27
+ return result;
28
+ }, []);
29
+ widget.$dependencies.router = new UniversalRouter(wrappedRoutes, options);
13
30
  widget.$dependencies.link = generateUrls(widget.$dependencies.router, {
14
31
  stringifyQueryParams: params => new URLSearchParams(params).toString()
15
32
  });
@@ -21,6 +38,7 @@ function routerPlugin() {
21
38
  core.assignMissingKeys(widget, routerAPI());
22
39
  widget.$in.router = {
23
40
  route: null,
41
+ context: null,
24
42
  options: {},
25
43
  pathname: null,
26
44
  isMounting: false,
@@ -81,6 +99,9 @@ function routerAPI() {
81
99
  },
82
100
  getCurrentRoute(widget) {
83
101
  return widget.$in.router.route;
102
+ },
103
+ getCurrentContext(widget) {
104
+ return widget.$in.router.context;
84
105
  }
85
106
  }
86
107
  };
@@ -106,6 +127,7 @@ async function loadHook(widget, originalLoad, ...rest) {
106
127
  const globalStatePromise = core.isFunction(originalLoad) ? originalLoad(widget, ...rest) : Promise.resolve({});
107
128
  const routeStatePromise = plugin.route.load(widget, {
108
129
  route: plugin.route,
130
+ context: plugin.context,
109
131
  args: rest,
110
132
  globalState: globalStatePromise
111
133
  });
@@ -128,6 +150,7 @@ async function mountHook(widget, originalMount, ...rest) {
128
150
  if (plugin.isMounting && core.isFunction(plugin.route.init)) {
129
151
  await plugin.route.init(widget, {
130
152
  route: plugin.route,
153
+ context: plugin.context,
131
154
  args: rest
132
155
  });
133
156
  }
@@ -135,6 +158,7 @@ async function mountHook(widget, originalMount, ...rest) {
135
158
  plugin.isRouteActivated = true;
136
159
  plugin.route.activate(widget, {
137
160
  route: plugin.route,
161
+ context: plugin.context,
138
162
  args: rest
139
163
  });
140
164
  }
@@ -150,6 +174,7 @@ async function updateHook(widget, originalUpdate, ...rest) {
150
174
  plugin.isRouteActivated = true;
151
175
  plugin.route.activate(widget, {
152
176
  route: plugin.route,
177
+ context: plugin.context,
153
178
  args: rest
154
179
  });
155
180
  }
@@ -181,9 +206,11 @@ async function resolveRoute(widget) {
181
206
  }
182
207
  async function setupRouterCycle(widget, ...rest) {
183
208
  const route = await resolveRoute(widget);
209
+ const plugin = widget.$in.router;
184
210
  if (core.isFunction(route.init)) {
185
211
  await route.init(widget, {
186
212
  route,
213
+ context: plugin.context,
187
214
  args: rest
188
215
  });
189
216
  }
@@ -198,12 +225,14 @@ async function tearDownRouterCycle(widget, ...rest) {
198
225
  if (core.isFunction(route.deactivate) && isRouteActivated === true) {
199
226
  await route.deactivate(widget, {
200
227
  route,
228
+ context: plugin.context,
201
229
  args: rest
202
230
  });
203
231
  }
204
232
  if (core.isFunction(route.destroy)) {
205
233
  await route.destroy(widget, {
206
234
  route,
235
+ context: plugin.context,
207
236
  args: rest
208
237
  });
209
238
  }
package/lib/index.es9.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { assignMissingKeys, bindWidgetToFunctions, setDefaultValueForUndefined, hookMethod, isFunction } from '@merkur/core';
1
+ import { isFunction, assignMissingKeys, bindWidgetToFunctions, setDefaultValueForUndefined, hookMethod } from '@merkur/core';
2
2
  import UniversalRouter from 'universal-router';
3
3
  import generateUrls from 'universal-router/generateUrls';
4
4
  var RouterEvents = Object.freeze({
@@ -7,7 +7,24 @@ var RouterEvents = Object.freeze({
7
7
  const DEV = 'development';
8
8
  const ENV = typeof process !== 'undefined' && process && process.env ? process.env.NODE_ENV : DEV;
9
9
  function createRouter(widget, routes, options) {
10
- widget.$dependencies.router = new UniversalRouter(routes, options);
10
+ let wrappedRoutes = routes.reduce((result, route) => {
11
+ const clonedRoute = {
12
+ ...route
13
+ };
14
+ if (isFunction(clonedRoute.action)) {
15
+ const originAction = clonedRoute.action;
16
+ clonedRoute.action = (...rest) => {
17
+ // @TODO UniversalRouter don't parse query from url so context.params are only named route parameters
18
+ // For some application can be helpful to have named route parameters and query parameters merged
19
+ // because link method support both named parameters and query parameters
20
+ widget.$in.router.context = rest[0];
21
+ return originAction(...rest);
22
+ };
23
+ }
24
+ result.push(clonedRoute);
25
+ return result;
26
+ }, []);
27
+ widget.$dependencies.router = new UniversalRouter(wrappedRoutes, options);
11
28
  widget.$dependencies.link = generateUrls(widget.$dependencies.router, {
12
29
  stringifyQueryParams: params => new URLSearchParams(params).toString()
13
30
  });
@@ -19,6 +36,7 @@ function routerPlugin() {
19
36
  assignMissingKeys(widget, routerAPI());
20
37
  widget.$in.router = {
21
38
  route: null,
39
+ context: null,
22
40
  options: {},
23
41
  pathname: null,
24
42
  isMounting: false,
@@ -79,6 +97,9 @@ function routerAPI() {
79
97
  },
80
98
  getCurrentRoute(widget) {
81
99
  return widget.$in.router.route;
100
+ },
101
+ getCurrentContext(widget) {
102
+ return widget.$in.router.context;
82
103
  }
83
104
  }
84
105
  };
@@ -104,6 +125,7 @@ async function loadHook(widget, originalLoad, ...rest) {
104
125
  const globalStatePromise = isFunction(originalLoad) ? originalLoad(widget, ...rest) : Promise.resolve({});
105
126
  const routeStatePromise = plugin.route.load(widget, {
106
127
  route: plugin.route,
128
+ context: plugin.context,
107
129
  args: rest,
108
130
  globalState: globalStatePromise
109
131
  });
@@ -126,6 +148,7 @@ async function mountHook(widget, originalMount, ...rest) {
126
148
  if (plugin.isMounting && isFunction(plugin.route.init)) {
127
149
  await plugin.route.init(widget, {
128
150
  route: plugin.route,
151
+ context: plugin.context,
129
152
  args: rest
130
153
  });
131
154
  }
@@ -133,6 +156,7 @@ async function mountHook(widget, originalMount, ...rest) {
133
156
  plugin.isRouteActivated = true;
134
157
  plugin.route.activate(widget, {
135
158
  route: plugin.route,
159
+ context: plugin.context,
136
160
  args: rest
137
161
  });
138
162
  }
@@ -148,6 +172,7 @@ async function updateHook(widget, originalUpdate, ...rest) {
148
172
  plugin.isRouteActivated = true;
149
173
  plugin.route.activate(widget, {
150
174
  route: plugin.route,
175
+ context: plugin.context,
151
176
  args: rest
152
177
  });
153
178
  }
@@ -179,9 +204,11 @@ async function resolveRoute(widget) {
179
204
  }
180
205
  async function setupRouterCycle(widget, ...rest) {
181
206
  const route = await resolveRoute(widget);
207
+ const plugin = widget.$in.router;
182
208
  if (isFunction(route.init)) {
183
209
  await route.init(widget, {
184
210
  route,
211
+ context: plugin.context,
185
212
  args: rest
186
213
  });
187
214
  }
@@ -196,12 +223,14 @@ async function tearDownRouterCycle(widget, ...rest) {
196
223
  if (isFunction(route.deactivate) && isRouteActivated === true) {
197
224
  await route.deactivate(widget, {
198
225
  route,
226
+ context: plugin.context,
199
227
  args: rest
200
228
  });
201
229
  }
202
230
  if (isFunction(route.destroy)) {
203
231
  await route.destroy(widget, {
204
232
  route,
233
+ context: plugin.context,
205
234
  args: rest
206
235
  });
207
236
  }
package/lib/index.js CHANGED
@@ -15,7 +15,27 @@ const ENV =
15
15
  : DEV;
16
16
 
17
17
  function createRouter(widget, routes, options) {
18
- widget.$dependencies.router = new UniversalRouter(routes, options);
18
+ let wrappedRoutes = routes.reduce((result, route) => {
19
+ const clonedRoute = { ...route };
20
+
21
+ if (core.isFunction(clonedRoute.action)) {
22
+ const originAction = clonedRoute.action;
23
+ clonedRoute.action = (...rest) => {
24
+ // @TODO UniversalRouter don't parse query from url so context.params are only named route parameters
25
+ // For some application can be helpful to have named route parameters and query parameters merged
26
+ // because link method support both named parameters and query parameters
27
+ widget.$in.router.context = rest[0];
28
+
29
+ return originAction(...rest);
30
+ };
31
+ }
32
+
33
+ result.push(clonedRoute);
34
+
35
+ return result;
36
+ }, []);
37
+
38
+ widget.$dependencies.router = new UniversalRouter(wrappedRoutes, options);
19
39
  widget.$dependencies.link = generateUrls(widget.$dependencies.router, {
20
40
  stringifyQueryParams: (params) => new URLSearchParams(params).toString(),
21
41
  });
@@ -29,6 +49,7 @@ function routerPlugin() {
29
49
 
30
50
  widget.$in.router = {
31
51
  route: null,
52
+ context: null,
32
53
  options: {},
33
54
  pathname: null,
34
55
  isMounting: false,
@@ -104,6 +125,9 @@ function routerAPI() {
104
125
  getCurrentRoute(widget) {
105
126
  return widget.$in.router.route;
106
127
  },
128
+ getCurrentContext(widget) {
129
+ return widget.$in.router.context;
130
+ },
107
131
  },
108
132
  };
109
133
  }
@@ -137,6 +161,7 @@ async function loadHook(widget, originalLoad, ...rest) {
137
161
  : Promise.resolve({});
138
162
  const routeStatePromise = plugin.route.load(widget, {
139
163
  route: plugin.route,
164
+ context: plugin.context,
140
165
  args: rest,
141
166
  globalState: globalStatePromise,
142
167
  });
@@ -162,7 +187,11 @@ async function mountHook(widget, originalMount, ...rest) {
162
187
  const result = await originalMount(...rest);
163
188
 
164
189
  if (plugin.isMounting && core.isFunction(plugin.route.init)) {
165
- await plugin.route.init(widget, { route: plugin.route, args: rest });
190
+ await plugin.route.init(widget, {
191
+ route: plugin.route,
192
+ context: plugin.context,
193
+ args: rest,
194
+ });
166
195
  }
167
196
 
168
197
  if (
@@ -171,7 +200,11 @@ async function mountHook(widget, originalMount, ...rest) {
171
200
  !plugin.isRouteActivated
172
201
  ) {
173
202
  plugin.isRouteActivated = true;
174
- plugin.route.activate(widget, { route: plugin.route, args: rest });
203
+ plugin.route.activate(widget, {
204
+ route: plugin.route,
205
+ context: plugin.context,
206
+ args: rest,
207
+ });
175
208
  }
176
209
 
177
210
  plugin.isMounting = false;
@@ -191,7 +224,11 @@ async function updateHook(widget, originalUpdate, ...rest) {
191
224
  !plugin.isRouteActivated
192
225
  ) {
193
226
  plugin.isRouteActivated = true;
194
- plugin.route.activate(widget, { route: plugin.route, args: rest });
227
+ plugin.route.activate(widget, {
228
+ route: plugin.route,
229
+ context: plugin.context,
230
+ args: rest,
231
+ });
195
232
  }
196
233
 
197
234
  return result;
@@ -232,9 +269,10 @@ async function resolveRoute(widget) {
232
269
 
233
270
  async function setupRouterCycle(widget, ...rest) {
234
271
  const route = await resolveRoute(widget);
272
+ const plugin = widget.$in.router;
235
273
 
236
274
  if (core.isFunction(route.init)) {
237
- await route.init(widget, { route, args: rest });
275
+ await route.init(widget, { route, context: plugin.context, args: rest });
238
276
  }
239
277
  }
240
278
 
@@ -245,11 +283,19 @@ async function tearDownRouterCycle(widget, ...rest) {
245
283
 
246
284
  if (route) {
247
285
  if (core.isFunction(route.deactivate) && isRouteActivated === true) {
248
- await route.deactivate(widget, { route, args: rest });
286
+ await route.deactivate(widget, {
287
+ route,
288
+ context: plugin.context,
289
+ args: rest,
290
+ });
249
291
  }
250
292
 
251
293
  if (core.isFunction(route.destroy)) {
252
- await route.destroy(widget, { route, args: rest });
294
+ await route.destroy(widget, {
295
+ route,
296
+ context: plugin.context,
297
+ args: rest,
298
+ });
253
299
  }
254
300
  }
255
301
 
package/lib/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { assignMissingKeys, bindWidgetToFunctions, setDefaultValueForUndefined, hookMethod, isFunction } from '@merkur/core';
1
+ import { isFunction, assignMissingKeys, bindWidgetToFunctions, setDefaultValueForUndefined, hookMethod } from '@merkur/core';
2
2
  import UniversalRouter from 'universal-router';
3
3
  import generateUrls from 'universal-router/generateUrls';
4
4
 
@@ -13,7 +13,27 @@ const ENV =
13
13
  : DEV;
14
14
 
15
15
  function createRouter(widget, routes, options) {
16
- widget.$dependencies.router = new UniversalRouter(routes, options);
16
+ let wrappedRoutes = routes.reduce((result, route) => {
17
+ const clonedRoute = { ...route };
18
+
19
+ if (isFunction(clonedRoute.action)) {
20
+ const originAction = clonedRoute.action;
21
+ clonedRoute.action = (...rest) => {
22
+ // @TODO UniversalRouter don't parse query from url so context.params are only named route parameters
23
+ // For some application can be helpful to have named route parameters and query parameters merged
24
+ // because link method support both named parameters and query parameters
25
+ widget.$in.router.context = rest[0];
26
+
27
+ return originAction(...rest);
28
+ };
29
+ }
30
+
31
+ result.push(clonedRoute);
32
+
33
+ return result;
34
+ }, []);
35
+
36
+ widget.$dependencies.router = new UniversalRouter(wrappedRoutes, options);
17
37
  widget.$dependencies.link = generateUrls(widget.$dependencies.router, {
18
38
  stringifyQueryParams: (params) => new URLSearchParams(params).toString(),
19
39
  });
@@ -27,6 +47,7 @@ function routerPlugin() {
27
47
 
28
48
  widget.$in.router = {
29
49
  route: null,
50
+ context: null,
30
51
  options: {},
31
52
  pathname: null,
32
53
  isMounting: false,
@@ -102,6 +123,9 @@ function routerAPI() {
102
123
  getCurrentRoute(widget) {
103
124
  return widget.$in.router.route;
104
125
  },
126
+ getCurrentContext(widget) {
127
+ return widget.$in.router.context;
128
+ },
105
129
  },
106
130
  };
107
131
  }
@@ -135,6 +159,7 @@ async function loadHook(widget, originalLoad, ...rest) {
135
159
  : Promise.resolve({});
136
160
  const routeStatePromise = plugin.route.load(widget, {
137
161
  route: plugin.route,
162
+ context: plugin.context,
138
163
  args: rest,
139
164
  globalState: globalStatePromise,
140
165
  });
@@ -160,7 +185,11 @@ async function mountHook(widget, originalMount, ...rest) {
160
185
  const result = await originalMount(...rest);
161
186
 
162
187
  if (plugin.isMounting && isFunction(plugin.route.init)) {
163
- await plugin.route.init(widget, { route: plugin.route, args: rest });
188
+ await plugin.route.init(widget, {
189
+ route: plugin.route,
190
+ context: plugin.context,
191
+ args: rest,
192
+ });
164
193
  }
165
194
 
166
195
  if (
@@ -169,7 +198,11 @@ async function mountHook(widget, originalMount, ...rest) {
169
198
  !plugin.isRouteActivated
170
199
  ) {
171
200
  plugin.isRouteActivated = true;
172
- plugin.route.activate(widget, { route: plugin.route, args: rest });
201
+ plugin.route.activate(widget, {
202
+ route: plugin.route,
203
+ context: plugin.context,
204
+ args: rest,
205
+ });
173
206
  }
174
207
 
175
208
  plugin.isMounting = false;
@@ -189,7 +222,11 @@ async function updateHook(widget, originalUpdate, ...rest) {
189
222
  !plugin.isRouteActivated
190
223
  ) {
191
224
  plugin.isRouteActivated = true;
192
- plugin.route.activate(widget, { route: plugin.route, args: rest });
225
+ plugin.route.activate(widget, {
226
+ route: plugin.route,
227
+ context: plugin.context,
228
+ args: rest,
229
+ });
193
230
  }
194
231
 
195
232
  return result;
@@ -230,9 +267,10 @@ async function resolveRoute(widget) {
230
267
 
231
268
  async function setupRouterCycle(widget, ...rest) {
232
269
  const route = await resolveRoute(widget);
270
+ const plugin = widget.$in.router;
233
271
 
234
272
  if (isFunction(route.init)) {
235
- await route.init(widget, { route, args: rest });
273
+ await route.init(widget, { route, context: plugin.context, args: rest });
236
274
  }
237
275
  }
238
276
 
@@ -243,11 +281,19 @@ async function tearDownRouterCycle(widget, ...rest) {
243
281
 
244
282
  if (route) {
245
283
  if (isFunction(route.deactivate) && isRouteActivated === true) {
246
- await route.deactivate(widget, { route, args: rest });
284
+ await route.deactivate(widget, {
285
+ route,
286
+ context: plugin.context,
287
+ args: rest,
288
+ });
247
289
  }
248
290
 
249
291
  if (isFunction(route.destroy)) {
250
- await route.destroy(widget, { route, args: rest });
292
+ await route.destroy(widget, {
293
+ route,
294
+ context: plugin.context,
295
+ args: rest,
296
+ });
251
297
  }
252
298
  }
253
299
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@merkur/plugin-router",
3
- "version": "0.36.5",
3
+ "version": "0.37.0",
4
4
  "description": "Merkur router plugin.",
5
5
  "main": "lib/index",
6
6
  "module": "lib/index",
@@ -56,9 +56,9 @@
56
56
  },
57
57
  "homepage": "https://merkur.js.org/",
58
58
  "devDependencies": {
59
- "@merkur/core": "^0.36.0",
60
- "@merkur/plugin-component": "^0.36.0",
61
- "@merkur/plugin-event-emitter": "^0.36.0"
59
+ "@merkur/core": "^0.37.0",
60
+ "@merkur/plugin-component": "^0.37.0",
61
+ "@merkur/plugin-event-emitter": "^0.37.0"
62
62
  },
63
63
  "peerDependencies": {
64
64
  "@merkur/core": "*",
@@ -68,5 +68,5 @@
68
68
  "dependencies": {
69
69
  "universal-router": "^9.1.0"
70
70
  },
71
- "gitHead": "89939c5215ebe0cb4403b488ebb0400611aba9e3"
71
+ "gitHead": "af826493e5ed4b37602dd43ce89a59baeeb1bada"
72
72
  }