@webiny/app 6.1.0-beta.1 → 6.1.0-beta.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/features/router/HistoryRouterGateway.d.ts +3 -1
- package/features/router/HistoryRouterGateway.js +33 -14
- package/features/router/HistoryRouterGateway.js.map +1 -1
- package/features/router/RouterRepository.js +0 -4
- package/features/router/RouterRepository.js.map +1 -1
- package/package.json +9 -9
|
@@ -7,6 +7,7 @@ export declare class HistoryRouterGateway implements RouterGateway.Interface {
|
|
|
7
7
|
private readonly router;
|
|
8
8
|
private stopListening;
|
|
9
9
|
private unblock;
|
|
10
|
+
private onRouteExitCb;
|
|
10
11
|
constructor(history: History, baseUrl: string);
|
|
11
12
|
onRouteExit(cb: OnRouteExit): void;
|
|
12
13
|
goToRoute(name: string, params: z.ZodTypeAny): void;
|
|
@@ -14,5 +15,6 @@ export declare class HistoryRouterGateway implements RouterGateway.Interface {
|
|
|
14
15
|
destroy(): void;
|
|
15
16
|
pushState(url: string): void;
|
|
16
17
|
private resolvePathname;
|
|
17
|
-
private
|
|
18
|
+
private installBlocker;
|
|
19
|
+
private removeBlockerAndRetry;
|
|
18
20
|
}
|
|
@@ -12,7 +12,8 @@ export class HistoryRouterGateway {
|
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
14
|
onRouteExit(cb) {
|
|
15
|
-
this.
|
|
15
|
+
this.onRouteExitCb = cb;
|
|
16
|
+
this.installBlocker();
|
|
16
17
|
}
|
|
17
18
|
goToRoute(name, params) {
|
|
18
19
|
const route = this.router.findRoute(name);
|
|
@@ -31,7 +32,11 @@ export class HistoryRouterGateway {
|
|
|
31
32
|
}
|
|
32
33
|
destroy() {
|
|
33
34
|
this.stopListening();
|
|
34
|
-
|
|
35
|
+
if (this.unblock) {
|
|
36
|
+
this.unblock();
|
|
37
|
+
this.unblock = undefined;
|
|
38
|
+
}
|
|
39
|
+
this.onRouteExitCb = undefined;
|
|
35
40
|
}
|
|
36
41
|
pushState(url) {
|
|
37
42
|
this.history.push(url);
|
|
@@ -47,35 +52,49 @@ export class HistoryRouterGateway {
|
|
|
47
52
|
} = result;
|
|
48
53
|
onMatch(matchedRoute);
|
|
49
54
|
}
|
|
50
|
-
|
|
55
|
+
installBlocker() {
|
|
51
56
|
if (this.unblock) {
|
|
52
|
-
// Remove existing blocker before installing a new one.
|
|
53
57
|
this.unblock();
|
|
54
58
|
}
|
|
55
59
|
this.unblock = this.history.block(tx => {
|
|
60
|
+
const onRouteExit = this.onRouteExitCb;
|
|
61
|
+
if (!onRouteExit) {
|
|
62
|
+
this.removeBlockerAndRetry(tx);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
56
65
|
let resolved = false;
|
|
57
66
|
onRouteExit({
|
|
58
67
|
continue: () => {
|
|
59
68
|
if (!resolved) {
|
|
60
69
|
resolved = true;
|
|
61
|
-
|
|
62
|
-
if (this.unblock) {
|
|
63
|
-
this.unblock();
|
|
64
|
-
this.unblock = undefined;
|
|
65
|
-
}
|
|
66
|
-
// Perform transition.
|
|
67
|
-
tx.retry();
|
|
70
|
+
this.removeBlockerAndRetry(tx);
|
|
68
71
|
}
|
|
69
72
|
},
|
|
70
73
|
cancel: () => {
|
|
71
74
|
resolved = true;
|
|
72
|
-
// Do nothing.
|
|
75
|
+
// Do nothing — history v5 already reverted the URL.
|
|
73
76
|
}
|
|
74
77
|
});
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
removeBlockerAndRetry(tx) {
|
|
81
|
+
// We must remove the blocker before retrying because history v5's
|
|
82
|
+
// allowTx() always returns false when any blocker is registered.
|
|
83
|
+
if (this.unblock) {
|
|
84
|
+
this.unblock();
|
|
85
|
+
this.unblock = undefined;
|
|
86
|
+
}
|
|
75
87
|
|
|
76
|
-
|
|
77
|
-
|
|
88
|
+
// Listen for the next navigation to complete, then reinstall the
|
|
89
|
+
// blocker. This avoids the race condition where setTimeout-based
|
|
90
|
+
// reinstallation fires before an async popstate (back/forward)
|
|
91
|
+
// has settled, causing the blocker to catch its own retried
|
|
92
|
+
// navigation in an infinite loop.
|
|
93
|
+
const unlisten = this.history.listen(() => {
|
|
94
|
+
unlisten();
|
|
95
|
+
this.installBlocker();
|
|
78
96
|
});
|
|
97
|
+
tx.retry();
|
|
79
98
|
}
|
|
80
99
|
}
|
|
81
100
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RouteUrl","Router","HistoryRouterGateway","constructor","history","baseUrl","router","stopListening","listen","location","queryParams","Object","fromEntries","URLSearchParams","search","entries","resolvePathname","pathname","onRouteExit","cb","
|
|
1
|
+
{"version":3,"names":["RouteUrl","Router","HistoryRouterGateway","constructor","history","baseUrl","router","stopListening","listen","location","queryParams","Object","fromEntries","URLSearchParams","search","entries","resolvePathname","pathname","onRouteExit","cb","onRouteExitCb","installBlocker","goToRoute","name","params","route","findRoute","console","warn","getBaseUrl","push","fromPattern","path","setRoutes","routes","currentPathname","destroy","unblock","undefined","pushState","url","result","resolve","matchedRoute","onMatch","block","tx","removeBlockerAndRetry","resolved","continue","cancel","unlisten","retry"],"sources":["HistoryRouterGateway.ts"],"sourcesContent":["import type { z } from \"zod\";\nimport type { History } from \"history\";\nimport type { RouteDefinition, OnRouteExit } from \"./abstractions.js\";\nimport { RouterGateway } from \"./abstractions.js\";\nimport { RouteUrl } from \"./RouteUrl.js\";\nimport { Router } from \"./Router.js\";\n\nexport class HistoryRouterGateway implements RouterGateway.Interface {\n private readonly history: History;\n private readonly router: Router;\n private stopListening: () => void;\n private unblock: (() => void) | undefined;\n private onRouteExitCb: OnRouteExit | undefined;\n\n constructor(history: History, baseUrl: string) {\n this.history = history;\n this.router = new Router(baseUrl);\n\n this.stopListening = history.listen(async ({ location }) => {\n const queryParams = Object.fromEntries(new URLSearchParams(location.search).entries());\n this.resolvePathname(location.pathname, queryParams);\n });\n }\n\n onRouteExit(cb: OnRouteExit): void {\n this.onRouteExitCb = cb;\n this.installBlocker();\n }\n\n goToRoute(name: string, params: z.ZodTypeAny): void {\n const route = this.router.findRoute(name);\n if (!route) {\n console.warn(`Route \"${name}\" not found.`);\n return;\n }\n\n const baseUrl = this.router.getBaseUrl();\n this.history.push(RouteUrl.fromPattern(route.path, params, baseUrl));\n }\n\n setRoutes(routes: RouteDefinition[]) {\n this.router.setRoutes(routes);\n\n const queryParams = Object.fromEntries(\n new URLSearchParams(this.history.location.search).entries()\n );\n const currentPathname = this.history.location.pathname;\n this.resolvePathname(currentPathname, queryParams);\n }\n\n destroy(): void {\n this.stopListening();\n if (this.unblock) {\n this.unblock();\n this.unblock = undefined;\n }\n this.onRouteExitCb = undefined;\n }\n\n pushState(url: string): void {\n this.history.push(url);\n }\n\n private async resolvePathname(pathname: string, queryParams?: Record<string, unknown>) {\n const result = this.router.resolve(pathname, queryParams);\n if (!result) {\n return;\n }\n\n const { matchedRoute, onMatch } = result;\n\n onMatch(matchedRoute);\n }\n\n private installBlocker(): void {\n if (this.unblock) {\n this.unblock();\n }\n\n this.unblock = this.history.block(tx => {\n const onRouteExit = this.onRouteExitCb;\n if (!onRouteExit) {\n this.removeBlockerAndRetry(tx);\n return;\n }\n\n let resolved = false;\n\n onRouteExit({\n continue: () => {\n if (!resolved) {\n resolved = true;\n this.removeBlockerAndRetry(tx);\n }\n },\n cancel: () => {\n resolved = true;\n // Do nothing — history v5 already reverted the URL.\n }\n });\n });\n }\n\n private removeBlockerAndRetry(tx: { retry: () => void }): void {\n // We must remove the blocker before retrying because history v5's\n // allowTx() always returns false when any blocker is registered.\n if (this.unblock) {\n this.unblock();\n this.unblock = undefined;\n }\n\n // Listen for the next navigation to complete, then reinstall the\n // blocker. This avoids the race condition where setTimeout-based\n // reinstallation fires before an async popstate (back/forward)\n // has settled, causing the blocker to catch its own retried\n // navigation in an infinite loop.\n const unlisten = this.history.listen(() => {\n unlisten();\n this.installBlocker();\n });\n\n tx.retry();\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -55,7 +55,6 @@ class RouterRepositoryImpl {
|
|
|
55
55
|
const tx = this.pendingTransition;
|
|
56
56
|
this.pendingTransition = undefined;
|
|
57
57
|
tx.continue();
|
|
58
|
-
setTimeout(() => this.installBlocker(), 0);
|
|
59
58
|
} else {
|
|
60
59
|
// No pending transition — expire the flag after the current
|
|
61
60
|
// call stack so it only covers synchronous navigations that
|
|
@@ -70,7 +69,6 @@ class RouterRepositoryImpl {
|
|
|
70
69
|
this.pendingTransition = undefined;
|
|
71
70
|
if (tx) {
|
|
72
71
|
tx.continue();
|
|
73
|
-
setTimeout(() => this.installBlocker(), 0);
|
|
74
72
|
}
|
|
75
73
|
}
|
|
76
74
|
cancelTransition() {
|
|
@@ -87,7 +85,6 @@ class RouterRepositoryImpl {
|
|
|
87
85
|
if (this.forceUnblocked) {
|
|
88
86
|
this.forceUnblocked = false;
|
|
89
87
|
controller.continue();
|
|
90
|
-
setTimeout(() => this.installBlocker(), 0);
|
|
91
88
|
return;
|
|
92
89
|
}
|
|
93
90
|
const blockingGuard = this.findBlockingGuard();
|
|
@@ -96,7 +93,6 @@ class RouterRepositoryImpl {
|
|
|
96
93
|
blockingGuard.onBlocked();
|
|
97
94
|
} else {
|
|
98
95
|
controller.continue();
|
|
99
|
-
setTimeout(() => this.installBlocker(), 0);
|
|
100
96
|
}
|
|
101
97
|
});
|
|
102
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["makeAutoObservable","runInAction","Abstractions","createImplementation","RouteUrl","INIT_ROUTE","name","path","pathname","params","RouterRepositoryImpl","currentRoute","routes","guards","Set","forceUnblocked","constructor","gateway","installBlocker","pendingTransition","getMatchedRoute","undefined","getCurrentRoute","find","route","registerRoutes","routesWithAction","map","routeWithAction","setRoutes","getLink","fromPattern","goToRoute","addGuard","config","add","delete","isBlocked","findBlockingGuard","unblock","tx","continue","setTimeout","confirmTransition","cancelTransition","cancel","destroy","onRouteExit","controller","blockingGuard","onBlocked","guard","onMatch","transitionToRoute","bind","matchedRoute","getRouteByName","parse","Object","assign","existingRoute","RouterRepository","implementation","abstraction","dependencies","RouterGateway"],"sources":["RouterRepository.ts"],"sourcesContent":["import { makeAutoObservable, runInAction } from \"mobx\";\nimport type {\n MatchedRoute,\n RouteDefinition,\n RouteTransitionGuardConfig,\n GuardDisposer,\n TransitionController\n} from \"./abstractions.js\";\nimport * as Abstractions from \"./abstractions.js\";\nimport { Route, RouteParamsDefinition, RouteParamsInfer } from \"./Route.js\";\nimport { createImplementation } from \"@webiny/di\";\nimport { RouteUrl } from \"./RouteUrl.js\";\n\nconst INIT_ROUTE = { name: \"__init__\", path: \"\", pathname: \"\", params: {} };\n\nclass RouterRepositoryImpl implements Abstractions.RouterRepository.Interface {\n private gateway: Abstractions.RouterGateway.Interface;\n private currentRoute: MatchedRoute = INIT_ROUTE;\n private routes: Route<any>[] = [];\n private guards = new Set<RouteTransitionGuardConfig>();\n private pendingTransition: TransitionController | undefined;\n private forceUnblocked = false;\n\n constructor(gateway: Abstractions.RouterGateway.Interface) {\n this.gateway = gateway;\n this.installBlocker();\n\n makeAutoObservable(this, {\n guards: false,\n pendingTransition: false,\n forceUnblocked: false\n } as any);\n }\n\n getMatchedRoute() {\n return this.currentRoute.name !== INIT_ROUTE.name ? this.currentRoute : undefined;\n }\n\n getCurrentRoute(): Route<any> | undefined {\n return this.routes.find(route => route.name === this.currentRoute.name);\n }\n\n registerRoutes = (routes: Route[]) => {\n this.routes = routes;\n const routesWithAction = routes.map<RouteDefinition>(this.routeWithAction);\n\n this.gateway.setRoutes(routesWithAction);\n };\n\n getLink<TParams extends RouteParamsDefinition | undefined>(\n route: Route<TParams>,\n params?: TParams extends RouteParamsDefinition ? RouteParamsInfer<TParams> : undefined\n ): string {\n return RouteUrl.fromPattern(route.path, params);\n }\n\n goToRoute<TParams extends RouteParamsDefinition | undefined>(\n route: Route<TParams>,\n params: TParams extends RouteParamsDefinition ? RouteParamsInfer<TParams> : undefined\n ): void {\n this.gateway.goToRoute(route.name, params);\n }\n\n addGuard(config: RouteTransitionGuardConfig): GuardDisposer {\n this.guards.add(config);\n return () => {\n this.guards.delete(config);\n };\n }\n\n isBlocked(): boolean {\n return this.findBlockingGuard() !== undefined;\n }\n\n unblock(): void {\n this.forceUnblocked = true;\n if (this.pendingTransition) {\n this.forceUnblocked = false;\n const tx = this.pendingTransition;\n this.pendingTransition = undefined;\n tx.continue();\n setTimeout(() => this.installBlocker(), 0);\n } else {\n // No pending transition — expire the flag after the current\n // call stack so it only covers synchronous navigations that\n // follow immediately (e.g. router.goToRoute on the next line).\n setTimeout(() => {\n this.forceUnblocked = false;\n }, 0);\n }\n }\n\n confirmTransition(): void {\n const tx = this.pendingTransition;\n this.pendingTransition = undefined;\n if (tx) {\n tx.continue();\n setTimeout(() => this.installBlocker(), 0);\n }\n }\n\n cancelTransition(): void {\n if (this.pendingTransition) {\n this.pendingTransition.cancel();\n this.pendingTransition = undefined;\n }\n }\n\n destroy() {\n this.gateway.destroy();\n }\n\n private installBlocker(): void {\n this.gateway.onRouteExit(controller => {\n if (this.forceUnblocked) {\n this.forceUnblocked = false;\n controller.continue();\n setTimeout(() => this.installBlocker(), 0);\n return;\n }\n\n const blockingGuard = this.findBlockingGuard();\n if (blockingGuard) {\n this.pendingTransition = controller;\n blockingGuard.onBlocked();\n } else {\n controller.continue();\n setTimeout(() => this.installBlocker(), 0);\n }\n });\n }\n\n private findBlockingGuard(): RouteTransitionGuardConfig | undefined {\n for (const config of this.guards) {\n if (config.guard()) {\n return config;\n }\n }\n return undefined;\n }\n\n private routeWithAction = (route: Route<any>) => {\n return {\n name: route.name,\n path: route.path,\n onMatch: this.transitionToRoute.bind(this)\n };\n };\n\n private async transitionToRoute(matchedRoute: MatchedRoute) {\n const route = this.getRouteByName(matchedRoute.name);\n if (!route) {\n return;\n }\n\n const params =\n typeof route.params?.parse === \"function\"\n ? route.params.parse(matchedRoute.params)\n : matchedRoute.params;\n\n runInAction(() => {\n Object.assign(this.currentRoute, {\n ...matchedRoute,\n params\n });\n });\n }\n\n private getRouteByName(name: string) {\n return this.routes.find(existingRoute => existingRoute.name === name);\n }\n}\n\nexport const RouterRepository = createImplementation({\n implementation: RouterRepositoryImpl,\n abstraction: Abstractions.RouterRepository,\n dependencies: [Abstractions.RouterGateway]\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["makeAutoObservable","runInAction","Abstractions","createImplementation","RouteUrl","INIT_ROUTE","name","path","pathname","params","RouterRepositoryImpl","currentRoute","routes","guards","Set","forceUnblocked","constructor","gateway","installBlocker","pendingTransition","getMatchedRoute","undefined","getCurrentRoute","find","route","registerRoutes","routesWithAction","map","routeWithAction","setRoutes","getLink","fromPattern","goToRoute","addGuard","config","add","delete","isBlocked","findBlockingGuard","unblock","tx","continue","setTimeout","confirmTransition","cancelTransition","cancel","destroy","onRouteExit","controller","blockingGuard","onBlocked","guard","onMatch","transitionToRoute","bind","matchedRoute","getRouteByName","parse","Object","assign","existingRoute","RouterRepository","implementation","abstraction","dependencies","RouterGateway"],"sources":["RouterRepository.ts"],"sourcesContent":["import { makeAutoObservable, runInAction } from \"mobx\";\nimport type {\n MatchedRoute,\n RouteDefinition,\n RouteTransitionGuardConfig,\n GuardDisposer,\n TransitionController\n} from \"./abstractions.js\";\nimport * as Abstractions from \"./abstractions.js\";\nimport { Route, RouteParamsDefinition, RouteParamsInfer } from \"./Route.js\";\nimport { createImplementation } from \"@webiny/di\";\nimport { RouteUrl } from \"./RouteUrl.js\";\n\nconst INIT_ROUTE = { name: \"__init__\", path: \"\", pathname: \"\", params: {} };\n\nclass RouterRepositoryImpl implements Abstractions.RouterRepository.Interface {\n private gateway: Abstractions.RouterGateway.Interface;\n private currentRoute: MatchedRoute = INIT_ROUTE;\n private routes: Route<any>[] = [];\n private guards = new Set<RouteTransitionGuardConfig>();\n private pendingTransition: TransitionController | undefined;\n private forceUnblocked = false;\n\n constructor(gateway: Abstractions.RouterGateway.Interface) {\n this.gateway = gateway;\n this.installBlocker();\n\n makeAutoObservable(this, {\n guards: false,\n pendingTransition: false,\n forceUnblocked: false\n } as any);\n }\n\n getMatchedRoute() {\n return this.currentRoute.name !== INIT_ROUTE.name ? this.currentRoute : undefined;\n }\n\n getCurrentRoute(): Route<any> | undefined {\n return this.routes.find(route => route.name === this.currentRoute.name);\n }\n\n registerRoutes = (routes: Route[]) => {\n this.routes = routes;\n const routesWithAction = routes.map<RouteDefinition>(this.routeWithAction);\n\n this.gateway.setRoutes(routesWithAction);\n };\n\n getLink<TParams extends RouteParamsDefinition | undefined>(\n route: Route<TParams>,\n params?: TParams extends RouteParamsDefinition ? RouteParamsInfer<TParams> : undefined\n ): string {\n return RouteUrl.fromPattern(route.path, params);\n }\n\n goToRoute<TParams extends RouteParamsDefinition | undefined>(\n route: Route<TParams>,\n params: TParams extends RouteParamsDefinition ? RouteParamsInfer<TParams> : undefined\n ): void {\n this.gateway.goToRoute(route.name, params);\n }\n\n addGuard(config: RouteTransitionGuardConfig): GuardDisposer {\n this.guards.add(config);\n return () => {\n this.guards.delete(config);\n };\n }\n\n isBlocked(): boolean {\n return this.findBlockingGuard() !== undefined;\n }\n\n unblock(): void {\n this.forceUnblocked = true;\n if (this.pendingTransition) {\n this.forceUnblocked = false;\n const tx = this.pendingTransition;\n this.pendingTransition = undefined;\n tx.continue();\n } else {\n // No pending transition — expire the flag after the current\n // call stack so it only covers synchronous navigations that\n // follow immediately (e.g. router.goToRoute on the next line).\n setTimeout(() => {\n this.forceUnblocked = false;\n }, 0);\n }\n }\n\n confirmTransition(): void {\n const tx = this.pendingTransition;\n this.pendingTransition = undefined;\n if (tx) {\n tx.continue();\n }\n }\n\n cancelTransition(): void {\n if (this.pendingTransition) {\n this.pendingTransition.cancel();\n this.pendingTransition = undefined;\n }\n }\n\n destroy() {\n this.gateway.destroy();\n }\n\n private installBlocker(): void {\n this.gateway.onRouteExit(controller => {\n if (this.forceUnblocked) {\n this.forceUnblocked = false;\n controller.continue();\n return;\n }\n\n const blockingGuard = this.findBlockingGuard();\n if (blockingGuard) {\n this.pendingTransition = controller;\n blockingGuard.onBlocked();\n } else {\n controller.continue();\n }\n });\n }\n\n private findBlockingGuard(): RouteTransitionGuardConfig | undefined {\n for (const config of this.guards) {\n if (config.guard()) {\n return config;\n }\n }\n return undefined;\n }\n\n private routeWithAction = (route: Route<any>) => {\n return {\n name: route.name,\n path: route.path,\n onMatch: this.transitionToRoute.bind(this)\n };\n };\n\n private async transitionToRoute(matchedRoute: MatchedRoute) {\n const route = this.getRouteByName(matchedRoute.name);\n if (!route) {\n return;\n }\n\n const params =\n typeof route.params?.parse === \"function\"\n ? route.params.parse(matchedRoute.params)\n : matchedRoute.params;\n\n runInAction(() => {\n Object.assign(this.currentRoute, {\n ...matchedRoute,\n params\n });\n });\n }\n\n private getRouteByName(name: string) {\n return this.routes.find(existingRoute => existingRoute.name === name);\n }\n}\n\nexport const RouterRepository = createImplementation({\n implementation: RouterRepositoryImpl,\n abstraction: Abstractions.RouterRepository,\n dependencies: [Abstractions.RouterGateway]\n});\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/app",
|
|
3
|
-
"version": "6.1.0-beta.
|
|
3
|
+
"version": "6.1.0-beta.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"repository": {
|
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
"@emotion/styled": "11.14.1",
|
|
20
20
|
"@types/react": "18.2.79",
|
|
21
21
|
"@webiny/di": "0.2.3",
|
|
22
|
-
"@webiny/feature": "6.1.0-beta.
|
|
23
|
-
"@webiny/i18n": "6.1.0-beta.
|
|
24
|
-
"@webiny/i18n-react": "6.1.0-beta.
|
|
25
|
-
"@webiny/plugins": "6.1.0-beta.
|
|
26
|
-
"@webiny/react-composition": "6.1.0-beta.
|
|
27
|
-
"@webiny/react-properties": "6.1.0-beta.
|
|
22
|
+
"@webiny/feature": "6.1.0-beta.3",
|
|
23
|
+
"@webiny/i18n": "6.1.0-beta.3",
|
|
24
|
+
"@webiny/i18n-react": "6.1.0-beta.3",
|
|
25
|
+
"@webiny/plugins": "6.1.0-beta.3",
|
|
26
|
+
"@webiny/react-composition": "6.1.0-beta.3",
|
|
27
|
+
"@webiny/react-properties": "6.1.0-beta.3",
|
|
28
28
|
"apollo-cache": "1.3.5",
|
|
29
29
|
"apollo-cache-inmemory": "1.6.6",
|
|
30
30
|
"apollo-client": "2.6.10",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@types/lodash": "4.17.24",
|
|
53
53
|
"@types/warning": "3.0.4",
|
|
54
|
-
"@webiny/build-tools": "6.1.0-beta.
|
|
54
|
+
"@webiny/build-tools": "6.1.0-beta.3",
|
|
55
55
|
"rimraf": "6.1.3",
|
|
56
56
|
"type-fest": "5.5.0",
|
|
57
57
|
"typescript": "5.9.3",
|
|
@@ -68,5 +68,5 @@
|
|
|
68
68
|
]
|
|
69
69
|
}
|
|
70
70
|
},
|
|
71
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "65e0ac1889b3392c99b8cac6cde508e1e831c715"
|
|
72
72
|
}
|