cabloy 5.1.236 → 5.1.239
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/.cabloy-version +1 -1
- package/CHANGELOG.md +11 -0
- package/package.json +1 -1
- package/repo-docs/backend/broadcast-guide.md +2 -0
- package/repo-docs/backend/queue-guide.md +31 -0
- package/repo-docs/backend/schedule-guide.md +23 -0
- package/vona/packages-cli/cli/package.json +1 -1
- package/vona/packages-cli/cli-set-api/package.json +1 -1
- package/vona/packages-vona/vona/package.json +1 -1
- package/vona/packages-vona/vona-core/package.json +1 -1
- package/vona/packages-vona/vona-core/src/lib/bean/resource/locale/appLocale.ts +2 -2
- package/vona/packages-vona/vona-core/src/lib/bean/resource/locale/utils.ts +46 -1
- package/vona/packages-vona/vona-core/src/lib/framework/start.ts +4 -0
- package/vona/packages-vona/vona-core/src/lib/module/locales.ts +41 -22
- package/vona/packages-vona/vona-core/src/lib/utils/zod-enhance.ts +1 -1
- package/vona/packages-vona/vona-core/src/types/config/config.ts +2 -0
- package/vona/packages-vona/vona-core/src/types/config/locale.ts +11 -4
- package/vona/packages-vona/vona-core/src/types/interface/module.ts +1 -0
- package/vona/packages-vona/vona-mock/package.json +1 -1
- package/vona/patches/{zova-core@5.1.94.patch → zova-core@5.1.95.patch} +2 -2
- package/vona/pnpm-lock.yaml +146 -21
- package/vona/pnpm-workspace.yaml +1 -1
- package/vona/src/backend/config/config/config.ts +9 -0
- package/vona/src/suite/a-home/modules/home-base/src/main.ts +1 -4
- package/vona/src/suite-vendor/a-cabloy/modules/a-rbac/package.json +1 -1
- package/vona/src/suite-vendor/a-cabloy/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-hmr/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-hmr/src/service/watch.ts +1 -0
- package/vona/src/suite-vendor/a-vona/modules/a-locale/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-locale/src/config/config.ts +2 -4
- package/vona/src/suite-vendor/a-vona/modules/a-locale/src/main.ts +12 -30
- package/vona/src/suite-vendor/a-vona/modules/a-openapi/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-openapi/src/bean/bean.openapi.ts +6 -2
- package/vona/src/suite-vendor/a-vona/modules/a-openapi/src/service/openapi.ts +107 -48
- package/vona/src/suite-vendor/a-vona/modules/a-openapi/src/types/contract.ts +25 -0
- package/vona/src/suite-vendor/a-vona/modules/a-openapi/src/types/index.ts +1 -0
- package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/src/lib/const/decorator.ts +1 -0
- package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/src/lib/decorator/index.ts +1 -0
- package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/src/lib/decorator/mcp.ts +28 -0
- package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/src/types/api.ts +8 -0
- package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-queue/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-queue/src/config/config.ts +2 -0
- package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/service/rateLimit.ts +3 -1
- package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/types/rateLimit.ts +4 -0
- package/vona/src/suite-vendor/a-vona/package.json +1 -1
- package/zova/packages-utils/zova-jsx/package.json +2 -2
- package/zova/packages-zova/zova/package.json +3 -3
- package/zova/packages-zova/zova-core/package.json +1 -1
- package/zova/packages-zova/zova-core/src/core/component/locale.ts +13 -3
- package/zova/packages-zova/zova-core/src/core/sys/config.ts +28 -1
- package/zova/packages-zova/zova-core/src/core/sys/locale.ts +24 -0
- package/zova/packages-zova/zova-core/src/core/sys/module.ts +16 -4
- package/zova/packages-zova/zova-core/src/core/sys/sys.ts +7 -2
- package/zova/packages-zova/zova-core/src/types/interface/module.ts +1 -0
- package/zova/packages-zova/zova-core/src/utils/zod-enhance.ts +1 -1
- package/zova/pnpm-lock.yaml +7 -7
- package/zova/src/suite/a-home/modules/home-base/src/config/locale/en-us.ts +1 -0
- package/zova/src/suite/a-home/modules/home-base/src/config/locale/zh-cn.ts +1 -0
- package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/render.locale.tsx +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssr.ts +13 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssrNavigation.ts +24 -0
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/monkey.ts +8 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/test/lib/ssrNavigation.test.ts +54 -1
- package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/package.json +3 -3
|
@@ -9,7 +9,7 @@ import type { ZovaConstant } from './constant.ts';
|
|
|
9
9
|
import { BeanContainer } from '../../bean/beanContainer.ts';
|
|
10
10
|
import { cast } from '../../types/utils/cast.ts';
|
|
11
11
|
import { zodEnhanceSys } from '../../utils/zod-enhance.ts';
|
|
12
|
-
import { configDefault } from './config.ts';
|
|
12
|
+
import { configDefault, validateLocaleConfig } from './config.ts';
|
|
13
13
|
import { constantDefault } from './constant.ts';
|
|
14
14
|
import { SysMeta } from './meta.ts';
|
|
15
15
|
import { appResource } from './resource.ts';
|
|
@@ -123,8 +123,13 @@ export class ZovaSys {
|
|
|
123
123
|
private async _combineConfig(config: TypeModuleResourceConfig[]): Promise<ZovaConfig> {
|
|
124
124
|
const _config = deepExtend({}, configDefault(this.env));
|
|
125
125
|
for (const configFn of config) {
|
|
126
|
-
|
|
126
|
+
const layer = await configFn(this);
|
|
127
|
+
deepExtend(_config, layer);
|
|
128
|
+
// The enabled set is a policy replacement, not an additive dictionary.
|
|
129
|
+
const items = (layer as Partial<ZovaConfig>).locale?.items;
|
|
130
|
+
if (items !== undefined) _config.locale.items = { ...items };
|
|
127
131
|
}
|
|
132
|
+
validateLocaleConfig(_config.locale);
|
|
128
133
|
return _config;
|
|
129
134
|
}
|
|
130
135
|
|
|
@@ -28,6 +28,7 @@ export interface IModuleResource {
|
|
|
28
28
|
Main: Constructable<IModuleMain>;
|
|
29
29
|
Monkey: Constructable<IMonkeyModule & IMonkeyApp & IMonkeyController>;
|
|
30
30
|
locales: TypeModuleResourceLocales;
|
|
31
|
+
localesProvider: TypeModuleResourceLocales;
|
|
31
32
|
errors: TypeModuleResourceErrors;
|
|
32
33
|
config: TypeModuleResourceConfig;
|
|
33
34
|
constants: unknown;
|
|
@@ -8,7 +8,7 @@ import type { ILocaleRecord } from '../bean/resource/locale/type.ts';
|
|
|
8
8
|
import type { ZovaApplication } from '../core/app/application.ts';
|
|
9
9
|
|
|
10
10
|
export type ZodLocaleError = () => { localeError: z.core.$ZodErrorMap };
|
|
11
|
-
export type ZodLocaleErrors = Record<keyof ILocaleRecord, ZodLocaleError
|
|
11
|
+
export type ZodLocaleErrors = Partial<Record<keyof ILocaleRecord, ZodLocaleError>>;
|
|
12
12
|
|
|
13
13
|
export function zodEnhance(app: ZovaApplication) {
|
|
14
14
|
setLocaleAdapter((text: string, iss?: object) => {
|
package/zova/pnpm-lock.yaml
CHANGED
|
@@ -294,7 +294,7 @@ importers:
|
|
|
294
294
|
specifier: workspace:^
|
|
295
295
|
version: link:packages-zova/zova
|
|
296
296
|
zova-jsx:
|
|
297
|
-
specifier: ^1.1.
|
|
297
|
+
specifier: ^1.1.95
|
|
298
298
|
version: link:packages-utils/zova-jsx
|
|
299
299
|
zova-module-a-api:
|
|
300
300
|
specifier: workspace:^
|
|
@@ -890,7 +890,7 @@ importers:
|
|
|
890
890
|
specifier: ^3.5.38
|
|
891
891
|
version: 3.5.42(typescript@5.9.3)
|
|
892
892
|
zova-core:
|
|
893
|
-
specifier: ^5.1.
|
|
893
|
+
specifier: ^5.1.95
|
|
894
894
|
version: link:../../packages-zova/zova-core
|
|
895
895
|
devDependencies:
|
|
896
896
|
clean-package:
|
|
@@ -1031,10 +1031,10 @@ importers:
|
|
|
1031
1031
|
packages-zova/zova:
|
|
1032
1032
|
dependencies:
|
|
1033
1033
|
zova-core:
|
|
1034
|
-
specifier: ^5.1.
|
|
1034
|
+
specifier: ^5.1.95
|
|
1035
1035
|
version: link:../zova-core
|
|
1036
1036
|
zova-suite-a-zova:
|
|
1037
|
-
specifier: ^5.1.
|
|
1037
|
+
specifier: ^5.1.176
|
|
1038
1038
|
version: link:../../src/suite-vendor/a-zova
|
|
1039
1039
|
devDependencies:
|
|
1040
1040
|
clean-package:
|
|
@@ -1279,7 +1279,7 @@ importers:
|
|
|
1279
1279
|
specifier: ^5.1.36
|
|
1280
1280
|
version: link:modules/a-routertabs
|
|
1281
1281
|
zova-module-a-ssr:
|
|
1282
|
-
specifier: ^5.1.
|
|
1282
|
+
specifier: ^5.1.42
|
|
1283
1283
|
version: link:modules/a-ssr
|
|
1284
1284
|
zova-module-a-ssrhmr:
|
|
1285
1285
|
specifier: ^5.1.24
|
|
@@ -1297,7 +1297,7 @@ importers:
|
|
|
1297
1297
|
specifier: ^5.1.39
|
|
1298
1298
|
version: link:modules/a-zod
|
|
1299
1299
|
zova-module-a-zova:
|
|
1300
|
-
specifier: ^5.1.
|
|
1300
|
+
specifier: ^5.1.114
|
|
1301
1301
|
version: link:modules/a-zova
|
|
1302
1302
|
|
|
1303
1303
|
src/suite-vendor/a-zova/modules/a-api:
|
|
@@ -1630,7 +1630,7 @@ importers:
|
|
|
1630
1630
|
specifier: ^3.7.2
|
|
1631
1631
|
version: 3.7.2
|
|
1632
1632
|
zova-jsx:
|
|
1633
|
-
specifier: ^1.1.
|
|
1633
|
+
specifier: ^1.1.95
|
|
1634
1634
|
version: link:../../../../../packages-utils/zova-jsx
|
|
1635
1635
|
devDependencies:
|
|
1636
1636
|
'@cabloy/cli':
|
package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/render.locale.tsx
CHANGED
|
@@ -8,7 +8,7 @@ export class RenderLocale extends BeanRenderBase {
|
|
|
8
8
|
public render() {
|
|
9
9
|
const currentRoute = this.$currentRoute;
|
|
10
10
|
const metaLocale = currentRoute?.meta?.locale;
|
|
11
|
-
const locales =
|
|
11
|
+
const locales = this.app.meta.locale.getItems(currentRoute?.meta?.locales);
|
|
12
12
|
return (
|
|
13
13
|
<li>
|
|
14
14
|
<details>
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
RouteLocationNormalizedGeneric,
|
|
3
|
+
RouteLocationResolvedGeneric,
|
|
4
|
+
} from '@cabloy/vue-router';
|
|
1
5
|
import type { ComponentInternalInstance, Ref, VNode } from 'vue';
|
|
2
6
|
import type { Functionable, IControllerLoadEvent, ILocaleRecord, ZovaContext } from 'zova';
|
|
3
7
|
|
|
4
|
-
import { RouteLocationNormalizedGeneric, RouteLocationResolvedGeneric } from '@cabloy/vue-router';
|
|
5
8
|
import { includeBooleanAttr, isBooleanAttr, isString, stringifyStyle } from '@vue/shared';
|
|
6
9
|
import { defu } from 'defu';
|
|
7
10
|
import { normalizeClass, normalizeStyle, ref, useSSRContext } from 'vue';
|
|
@@ -20,6 +23,7 @@ import type {
|
|
|
20
23
|
} from '../types/ssr.ts';
|
|
21
24
|
|
|
22
25
|
import { CtxSSRMetaStore } from './ssrMetaStore.ts';
|
|
26
|
+
import { getCanonicalLocaleRoutePath } from './ssrNavigation.ts';
|
|
23
27
|
import { resolveSsrProfile, resolveSsrProfileOptions } from './ssrProfile.ts';
|
|
24
28
|
|
|
25
29
|
const SymbolIsRuntimeSsrPreHydration = Symbol('SymbolIsRuntimeSsrPreHydration');
|
|
@@ -212,6 +216,14 @@ export class CtxSSR extends BeanSimple {
|
|
|
212
216
|
public _setLocale(route: RouteLocationResolvedGeneric | RouteLocationNormalizedGeneric) {
|
|
213
217
|
if (route.meta.locale) {
|
|
214
218
|
this.app.meta.locale.current = route.params?.locale as unknown as keyof ILocaleRecord;
|
|
219
|
+
if (process.env.SERVER) {
|
|
220
|
+
const canonicalPath = getCanonicalLocaleRoutePath(
|
|
221
|
+
route,
|
|
222
|
+
this.app.meta.locale,
|
|
223
|
+
this.sys.config.locale.default,
|
|
224
|
+
);
|
|
225
|
+
if (canonicalPath) this.app.$redirect(canonicalPath);
|
|
226
|
+
}
|
|
215
227
|
}
|
|
216
228
|
}
|
|
217
229
|
|
|
@@ -3,6 +3,30 @@ import type {
|
|
|
3
3
|
RouteLocationResolvedGeneric,
|
|
4
4
|
} from '@cabloy/vue-router';
|
|
5
5
|
|
|
6
|
+
import { combineParamsAndQuery } from '@cabloy/utils';
|
|
7
|
+
|
|
8
|
+
// Keep the matched route/alias and existing optional-default URL policy. No new identity.
|
|
9
|
+
export function getCanonicalLocaleRoutePath(
|
|
10
|
+
route: TypeSsrNavigationRoute,
|
|
11
|
+
locale: { normalize(value: unknown): string },
|
|
12
|
+
defaultLocale: string,
|
|
13
|
+
): string | undefined {
|
|
14
|
+
if (!route.meta.locale) return;
|
|
15
|
+
const value = locale.normalize(route.params?.locale);
|
|
16
|
+
const canonical = value === defaultLocale ? '' : value;
|
|
17
|
+
if ((route.params?.locale ?? '') === canonical) return;
|
|
18
|
+
// A synthetic layout parent may retain its original path while its child matches
|
|
19
|
+
// the public alias. The deepest matching record owns the actual destination URL.
|
|
20
|
+
const matched = route.matched.findLast(record => record.path.includes(':locale'));
|
|
21
|
+
if (!matched) return;
|
|
22
|
+
const path =
|
|
23
|
+
combineParamsAndQuery(matched.path, {
|
|
24
|
+
params: { ...route.params, locale: canonical || undefined },
|
|
25
|
+
query: route.query,
|
|
26
|
+
}) + (route.hash ?? '');
|
|
27
|
+
return path !== route.fullPath ? path : undefined;
|
|
28
|
+
}
|
|
29
|
+
|
|
6
30
|
export type TypeSsrNavigationRoute = RouteLocationNormalizedGeneric | RouteLocationResolvedGeneric;
|
|
7
31
|
|
|
8
32
|
export interface ISsrNavigationSync {
|
|
@@ -15,7 +15,7 @@ import { BeanSimple, cast } from 'zova';
|
|
|
15
15
|
|
|
16
16
|
import type { SSRMetaOptions } from './types/ssr.ts';
|
|
17
17
|
|
|
18
|
-
import { createSsrNavigationSync } from './lib/ssrNavigation.ts';
|
|
18
|
+
import { createSsrNavigationSync, getCanonicalLocaleRoutePath } from './lib/ssrNavigation.ts';
|
|
19
19
|
import { useMeta } from './lib/useMeta.ts';
|
|
20
20
|
|
|
21
21
|
export class Monkey
|
|
@@ -60,6 +60,13 @@ export class Monkey
|
|
|
60
60
|
},
|
|
61
61
|
});
|
|
62
62
|
router.beforeEach(to => {
|
|
63
|
+
const canonicalPath = getCanonicalLocaleRoutePath(
|
|
64
|
+
to,
|
|
65
|
+
this.app.meta.locale,
|
|
66
|
+
this.sys.config.locale.default,
|
|
67
|
+
);
|
|
68
|
+
if (canonicalPath)
|
|
69
|
+
return { path: canonicalPath, query: to.query, hash: to.hash, replace: true };
|
|
63
70
|
navigationSync.beforeEach(to);
|
|
64
71
|
});
|
|
65
72
|
router.afterEach((to, from, failure) => {
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
+
import { createMemoryHistory, createRouter } from '@cabloy/vue-router';
|
|
1
2
|
import assert from 'node:assert/strict';
|
|
2
3
|
import test from 'node:test';
|
|
3
4
|
|
|
4
5
|
import type { TypeSsrNavigationRoute } from '../../src/lib/ssrNavigation.ts';
|
|
5
6
|
|
|
6
|
-
import {
|
|
7
|
+
import { AppLocale } from '../../../../../../../packages-zova/zova-core/src/core/component/locale.ts';
|
|
8
|
+
import {
|
|
9
|
+
createSsrNavigationSync,
|
|
10
|
+
getCanonicalLocaleRoutePath,
|
|
11
|
+
} from '../../src/lib/ssrNavigation.ts';
|
|
7
12
|
|
|
8
13
|
function createRoute(locale?: string): TypeSsrNavigationRoute {
|
|
9
14
|
return {
|
|
@@ -67,3 +72,51 @@ test('SSR navigation keeps destination profile and locale after success', () =>
|
|
|
67
72
|
assert.equal(locale, 'zh-cn');
|
|
68
73
|
assert.equal(profileRoute, to);
|
|
69
74
|
});
|
|
75
|
+
|
|
76
|
+
test('matched locale routes canonicalize disabled, noncanonical and default input through actual router', async () => {
|
|
77
|
+
const locale = Object.assign(new AppLocale(), {
|
|
78
|
+
sys: {
|
|
79
|
+
config: { locale: { default: 'en-us', items: { 'en-us': 'English', 'zh-cn': 'Chinese' } } },
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
const router = createRouter({
|
|
83
|
+
history: createMemoryHistory(),
|
|
84
|
+
routes: [
|
|
85
|
+
{
|
|
86
|
+
name: '$:home-indexweb:home',
|
|
87
|
+
path: '/home/indexweb/home/:locale?',
|
|
88
|
+
alias: '/:locale([a-z]{2}-[a-z]{2}|[a-z]{2})?',
|
|
89
|
+
component: {},
|
|
90
|
+
children: [
|
|
91
|
+
{
|
|
92
|
+
name: 'home-indexweb:home',
|
|
93
|
+
path: '',
|
|
94
|
+
// SysRouter preserves the authored alias on the child as well as its layout.
|
|
95
|
+
alias: '/:locale([a-z]{2}-[a-z]{2}|[a-z]{2})?',
|
|
96
|
+
component: {},
|
|
97
|
+
meta: { locale: true, requiresAuth: false, ssrProfile: 'public' },
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
{ name: 'static', path: '/static', component: {} },
|
|
102
|
+
],
|
|
103
|
+
});
|
|
104
|
+
const canonical = (path: string) =>
|
|
105
|
+
getCanonicalLocaleRoutePath(router.resolve(path), locale, 'en-us');
|
|
106
|
+
assert.equal(canonical('/ja-jp?tab=one#section'), '/?tab=one#section');
|
|
107
|
+
assert.equal(canonical('/home/indexweb/home/ja-jp'), '/home/indexweb/home/');
|
|
108
|
+
assert.equal(canonical('/home/indexweb/home/ZH_CN'), '/home/indexweb/home/zh-cn');
|
|
109
|
+
assert.equal(canonical('/en-us'), '/');
|
|
110
|
+
assert.equal(canonical('/zh-cn'), undefined);
|
|
111
|
+
assert.equal(canonical('/'), undefined);
|
|
112
|
+
assert.equal(canonical('/static'), undefined);
|
|
113
|
+
router.beforeEach(to => {
|
|
114
|
+
const path = getCanonicalLocaleRoutePath(to, locale, 'en-us');
|
|
115
|
+
if (path) return { path, query: to.query, hash: to.hash, replace: true };
|
|
116
|
+
});
|
|
117
|
+
await router.push('/ja-jp?tab=one#section');
|
|
118
|
+
assert.equal(router.currentRoute.value.fullPath, '/?tab=one#section');
|
|
119
|
+
assert.equal(router.currentRoute.value.name, 'home-indexweb:home');
|
|
120
|
+
assert.equal(router.currentRoute.value.meta.ssrProfile, 'public');
|
|
121
|
+
assert.equal(router.currentRoute.value.meta.requiresAuth, false);
|
|
122
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zova-module-a-zova",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.114",
|
|
4
4
|
"gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
|
|
5
5
|
"description": "zova",
|
|
6
6
|
"keywords": [
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"@cabloy/word-utils": "^2.1.14",
|
|
44
44
|
"defu": "^6.1.7",
|
|
45
45
|
"luxon": "^3.7.2",
|
|
46
|
-
"zova-jsx": "^1.1.
|
|
46
|
+
"zova-jsx": "^1.1.95"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@cabloy/cli": "^3.1.31",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zova-suite-a-zova",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.176",
|
|
4
4
|
"gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
|
|
5
5
|
"description": "zova",
|
|
6
6
|
"license": "MIT",
|
|
@@ -25,13 +25,13 @@
|
|
|
25
25
|
"zova-module-a-router": "^5.1.43",
|
|
26
26
|
"zova-module-a-routerstack": "^5.1.30",
|
|
27
27
|
"zova-module-a-routertabs": "^5.1.36",
|
|
28
|
-
"zova-module-a-ssr": "^5.1.
|
|
28
|
+
"zova-module-a-ssr": "^5.1.42",
|
|
29
29
|
"zova-module-a-ssrhmr": "^5.1.24",
|
|
30
30
|
"zova-module-a-ssrserver": "^5.1.27",
|
|
31
31
|
"zova-module-a-style": "^5.1.36",
|
|
32
32
|
"zova-module-a-table": "^5.1.45",
|
|
33
33
|
"zova-module-a-zod": "^5.1.39",
|
|
34
|
-
"zova-module-a-zova": "^5.1.
|
|
34
|
+
"zova-module-a-zova": "^5.1.114"
|
|
35
35
|
},
|
|
36
36
|
"title": "a-zova"
|
|
37
37
|
}
|