cabloy 5.1.235 → 5.1.238

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.
Files changed (69) hide show
  1. package/.cabloy-version +1 -1
  2. package/CHANGELOG.md +10 -0
  3. package/package.json +1 -1
  4. package/repo-docs/backend/broadcast-guide.md +2 -0
  5. package/repo-docs/backend/queue-guide.md +31 -0
  6. package/repo-docs/backend/schedule-guide.md +23 -0
  7. package/repo-docs/frontend/scripts.md +1 -1
  8. package/vona/packages-cli/cli/package.json +1 -1
  9. package/vona/packages-cli/cli-set-api/package.json +1 -1
  10. package/vona/packages-vona/vona/package.json +1 -1
  11. package/vona/packages-vona/vona-core/package.json +1 -1
  12. package/vona/packages-vona/vona-core/src/lib/bean/resource/locale/appLocale.ts +2 -2
  13. package/vona/packages-vona/vona-core/src/lib/bean/resource/locale/utils.ts +46 -1
  14. package/vona/packages-vona/vona-core/src/lib/framework/start.ts +4 -0
  15. package/vona/packages-vona/vona-core/src/lib/module/locales.ts +41 -22
  16. package/vona/packages-vona/vona-core/src/lib/utils/zod-enhance.ts +1 -1
  17. package/vona/packages-vona/vona-core/src/types/config/config.ts +2 -0
  18. package/vona/packages-vona/vona-core/src/types/config/locale.ts +11 -4
  19. package/vona/packages-vona/vona-core/src/types/interface/module.ts +1 -0
  20. package/vona/packages-vona/vona-mock/package.json +1 -1
  21. package/vona/src/backend/config/config/config.ts +9 -0
  22. package/vona/src/suite/a-home/modules/home-base/src/main.ts +1 -4
  23. package/vona/src/suite-vendor/a-cabloy/modules/a-rbac/package.json +1 -1
  24. package/vona/src/suite-vendor/a-cabloy/package.json +2 -2
  25. package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +1 -1
  26. package/vona/src/suite-vendor/a-vona/modules/a-hmr/package.json +1 -1
  27. package/vona/src/suite-vendor/a-vona/modules/a-hmr/src/service/watch.ts +1 -0
  28. package/vona/src/suite-vendor/a-vona/modules/a-locale/package.json +1 -1
  29. package/vona/src/suite-vendor/a-vona/modules/a-locale/src/config/config.ts +2 -4
  30. package/vona/src/suite-vendor/a-vona/modules/a-locale/src/main.ts +12 -30
  31. package/vona/src/suite-vendor/a-vona/modules/a-openapi/package.json +1 -1
  32. package/vona/src/suite-vendor/a-vona/modules/a-openapi/src/bean/bean.openapi.ts +6 -2
  33. package/vona/src/suite-vendor/a-vona/modules/a-openapi/src/service/openapi.ts +107 -48
  34. package/vona/src/suite-vendor/a-vona/modules/a-openapi/src/types/contract.ts +25 -0
  35. package/vona/src/suite-vendor/a-vona/modules/a-openapi/src/types/index.ts +1 -0
  36. package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/package.json +1 -1
  37. package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/src/lib/const/decorator.ts +1 -0
  38. package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/src/lib/decorator/index.ts +1 -0
  39. package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/src/lib/decorator/mcp.ts +28 -0
  40. package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/src/types/api.ts +8 -0
  41. package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
  42. package/vona/src/suite-vendor/a-vona/modules/a-queue/package.json +1 -1
  43. package/vona/src/suite-vendor/a-vona/modules/a-queue/src/config/config.ts +2 -0
  44. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/package.json +1 -1
  45. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/service/rateLimit.ts +3 -1
  46. package/vona/src/suite-vendor/a-vona/modules/a-ratelimit/src/types/rateLimit.ts +4 -0
  47. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  48. package/zova/packages-utils/zova-jsx/package.json +2 -2
  49. package/zova/packages-zova/zova/package.json +3 -3
  50. package/zova/packages-zova/zova-core/package.json +1 -1
  51. package/zova/packages-zova/zova-core/src/core/component/locale.ts +13 -3
  52. package/zova/packages-zova/zova-core/src/core/sys/config.ts +28 -1
  53. package/zova/packages-zova/zova-core/src/core/sys/locale.ts +24 -0
  54. package/zova/packages-zova/zova-core/src/core/sys/module.ts +16 -4
  55. package/zova/packages-zova/zova-core/src/core/sys/sys.ts +7 -2
  56. package/zova/packages-zova/zova-core/src/types/interface/module.ts +1 -0
  57. package/zova/packages-zova/zova-core/src/utils/zod-enhance.ts +1 -1
  58. package/zova/pnpm-lock.yaml +7 -7
  59. package/zova/quasar.config.ts +2 -0
  60. package/zova/src/suite/a-home/modules/home-base/src/config/locale/en-us.ts +1 -0
  61. package/zova/src/suite/a-home/modules/home-base/src/config/locale/zh-cn.ts +1 -0
  62. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/render.locale.tsx +1 -1
  63. package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +1 -1
  64. package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssr.ts +13 -1
  65. package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssrNavigation.ts +24 -0
  66. package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/monkey.ts +8 -1
  67. package/zova/src/suite-vendor/a-zova/modules/a-ssr/test/lib/ssrNavigation.test.ts +54 -1
  68. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
  69. package/zova/src/suite-vendor/a-zova/package.json +3 -3
@@ -29,6 +29,7 @@ export class SysModule extends BeanSimple {
29
29
  public async initialize(modulesMeta: PluginZovaModulesMeta) {
30
30
  this.modulesMeta = modulesMeta;
31
31
  await this._loadAllMonkeysAndSyncsAndPreloads();
32
+ await this._requireAllSpecifics('locale');
32
33
  await this._requireAllSpecifics('preload');
33
34
  await this._requireAllSpecifics('monkey');
34
35
  await this._requireAllSpecifics('sync');
@@ -123,7 +124,8 @@ export class SysModule extends BeanSimple {
123
124
  process.env.SERVER ||
124
125
  info.capabilities?.monkey ||
125
126
  info.capabilities?.sync ||
126
- info.capabilities?.preload;
127
+ info.capabilities?.preload ||
128
+ info.capabilities?.locale;
127
129
  if (shouldLoad) {
128
130
  const moduleResource = module.resource as any;
129
131
  if (typeof moduleResource === 'function') {
@@ -159,7 +161,7 @@ export class SysModule extends BeanSimple {
159
161
  }
160
162
  }
161
163
 
162
- private async _requireAllSpecifics(capabilityName: 'preload' | 'monkey' | 'sync') {
164
+ private async _requireAllSpecifics(capabilityName: 'locale' | 'preload' | 'monkey' | 'sync') {
163
165
  const modulesMeta = this._ensureModulesMeta();
164
166
  const moduleNames = modulesMeta.moduleNames.filter(moduleName => {
165
167
  const module = modulesMeta.modules[moduleName];
@@ -182,7 +184,10 @@ export class SysModule extends BeanSimple {
182
184
  const module = modulesMeta.modules[moduleName];
183
185
  const info = module.info;
184
186
  const shouldInstall =
185
- !info.capabilities?.monkey && !info.capabilities?.sync && !info.capabilities?.preload;
187
+ !info.capabilities?.locale &&
188
+ !info.capabilities?.monkey &&
189
+ !info.capabilities?.sync &&
190
+ !info.capabilities?.preload;
186
191
  if (shouldInstall) {
187
192
  await this._install(moduleName, module);
188
193
  }
@@ -257,7 +262,14 @@ export class SysModule extends BeanSimple {
257
262
  }
258
263
 
259
264
  private _registerLocales(module: IModule) {
260
- this.sys.meta.locale._registerLocales(module.info.relativeName, module.resource.locales);
265
+ if (module.info.capabilities?.locale) {
266
+ this.sys.meta.locale._registerProviderLocales(
267
+ module.resource.localesProvider,
268
+ this._ensureModulesMeta().modules,
269
+ );
270
+ } else {
271
+ this.sys.meta.locale._registerLocales(module.info.relativeName, module.resource.locales);
272
+ }
261
273
  }
262
274
 
263
275
  private _registerConstants(module: IModule) {
@@ -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
- deepExtend(_config, await configFn(this));
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) => {
@@ -294,7 +294,7 @@ importers:
294
294
  specifier: workspace:^
295
295
  version: link:packages-zova/zova
296
296
  zova-jsx:
297
- specifier: ^1.1.94
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.94
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.94
1034
+ specifier: ^5.1.95
1035
1035
  version: link:../zova-core
1036
1036
  zova-suite-a-zova:
1037
- specifier: ^5.1.175
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.41
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.113
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.94
1633
+ specifier: ^1.1.95
1634
1634
  version: link:../../../../../packages-utils/zova-jsx
1635
1635
  devDependencies:
1636
1636
  '@cabloy/cli':
@@ -24,6 +24,8 @@ export default defineConfig(ctx => {
24
24
  injectTo: resolveEntry('client-entry.js'),
25
25
  match: /\.tsx$/,
26
26
  exclude: /\/\.metadata\//,
27
+ // Component roots may be fragments or teleports; locate their native TSX instead.
28
+ escapeTags: [/^[A-Z]/, /\./],
27
29
  pathType: 'absolute',
28
30
  server: 'close',
29
31
  skipSnippets: ['console'],
@@ -4,6 +4,7 @@ export default {
4
4
  Retry: 'Retry',
5
5
  LanguageEnglish: 'English',
6
6
  LanguageChinese: 'Chinese',
7
+ LanguageJapanese: 'Japanese',
7
8
  VonaIntegratedSsr: 'Vona integrated SSR',
8
9
  ZovaStandaloneSsr: 'Zova standalone SSR',
9
10
  SsrSite: 'SSR Site',
@@ -4,6 +4,7 @@ export default {
4
4
  Retry: '重试',
5
5
  LanguageEnglish: '英语',
6
6
  LanguageChinese: '简体中文',
7
+ LanguageJapanese: '日语',
7
8
  VonaIntegratedSsr: 'Vona 集成式 SSR',
8
9
  ZovaStandaloneSsr: 'Zova 独立式 SSR',
9
10
  SsrSite: 'SSR 站点',
@@ -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 = currentRoute?.meta?.locales ?? this.sys.config.locale.items;
11
+ const locales = this.app.meta.locale.getItems(currentRoute?.meta?.locales);
12
12
  return (
13
13
  <li>
14
14
  <details>
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-ssr",
3
- "version": "5.1.41",
3
+ "version": "5.1.42",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "",
6
6
  "keywords": [
@@ -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 { createSsrNavigationSync } from '../../src/lib/ssrNavigation.ts';
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.113",
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.94"
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.175",
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.41",
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.113"
34
+ "zova-module-a-zova": "^5.1.114"
35
35
  },
36
36
  "title": "a-zova"
37
37
  }