cabloy 5.1.221 → 5.1.222

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 (52) hide show
  1. package/.cabloy-version +1 -1
  2. package/CHANGELOG.md +11 -0
  3. package/package.json +1 -1
  4. package/repo-agent-governance/managed-assets.json +15 -15
  5. package/repo-agent-governance/policies/repository.md +1 -0
  6. package/repo-agent-governance/skills/cabloy-backend-scaffold/SKILL.md +5 -1
  7. package/repo-agent-governance/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +7 -5
  8. package/repo-agent-governance/skills/cabloy-frontend-scaffold/SKILL.md +5 -1
  9. package/repo-agent-governance/skills/cabloy-frontend-scaffold/references/follow-up-checklist.md +6 -4
  10. package/repo-docs/backend/unit-testing.md +5 -1
  11. package/repo-docs/frontend/scripts.md +8 -0
  12. package/vona/packages-cli/cabloy-cli/package.json +1 -1
  13. package/vona/packages-cli/cli/package.json +1 -1
  14. package/vona/packages-cli/cli-set-api/package.json +1 -1
  15. package/vona/packages-utils/process-helper/package.json +1 -1
  16. package/vona/packages-utils/process-helper/src/index.test.ts +62 -0
  17. package/vona/packages-utils/process-helper/src/index.ts +9 -4
  18. package/vona/packages-vona/vona/package.json +1 -1
  19. package/vona/packages-vona/vona-core/package.json +1 -1
  20. package/vona/packages-vona/vona-core/src/lib/core/completedReadiness.test.ts +558 -0
  21. package/vona/packages-vona/vona-core/src/lib/core/completedReadiness.ts +389 -0
  22. package/vona/packages-vona/vona-core/src/lib/core/context.ts +3 -0
  23. package/vona/packages-vona/vona-core/src/lib/core/index.ts +11 -0
  24. package/vona/packages-vona/vona-core/src/lib/core/meta.ts +5 -0
  25. package/vona/packages-vona/vona-core/src/lib/framework/start.test.ts +10 -0
  26. package/vona/packages-vona/vona-core/src/lib/framework/start.ts +8 -0
  27. package/vona/packages-vona/vona-mock/package.json +1 -1
  28. package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +1 -1
  29. package/vona/src/suite-vendor/a-vona/modules/a-executor/package.json +1 -1
  30. package/vona/src/suite-vendor/a-vona/modules/a-executor/src/bean/bean.executor.ts +124 -4
  31. package/vona/src/suite-vendor/a-vona/modules/a-executor/src/types/executor.ts +7 -0
  32. package/vona/src/suite-vendor/a-vona/modules/a-executor/test/readyExisting.test.ts +423 -0
  33. package/vona/src/suite-vendor/a-vona/modules/a-executor/test/readyExistingCommit.test.ts +174 -0
  34. package/vona/src/suite-vendor/a-vona/modules/a-instance/package.json +1 -1
  35. package/vona/src/suite-vendor/a-vona/modules/a-instance/src/bean/bean.instance.ts +3 -1
  36. package/vona/src/suite-vendor/a-vona/modules/a-instance/src/lib/existingReadyAdmission.ts +125 -0
  37. package/vona/src/suite-vendor/a-vona/modules/a-instance/src/service/instance.ts +72 -25
  38. package/vona/src/suite-vendor/a-vona/modules/a-instance/test/existingReadyAdmission.test.ts +949 -0
  39. package/vona/src/suite-vendor/a-vona/modules/a-logger/package.json +1 -1
  40. package/vona/src/suite-vendor/a-vona/modules/a-logger/test/middlewareSystem.httpLog.test.ts +61 -59
  41. package/vona/src/suite-vendor/a-vona/modules/a-mail/package.json +1 -1
  42. package/vona/src/suite-vendor/a-vona/modules/a-mail/src/service/mail.ts +5 -0
  43. package/vona/src/suite-vendor/a-vona/modules/a-startup/package.json +1 -1
  44. package/vona/src/suite-vendor/a-vona/modules/a-startup/test/devSeed.test.ts +61 -2
  45. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  46. package/zova/package.original.json +0 -1
  47. package/zova/packages-cli/cli/package.json +4 -4
  48. package/zova/packages-cli/cli-set-front/package.json +2 -2
  49. package/zova/packages-zova/zova/package.json +2 -2
  50. package/zova/pnpm-lock.yaml +7 -78
  51. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
  52. package/zova/src/suite-vendor/a-zova/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-logger",
3
- "version": "5.1.17",
3
+ "version": "5.1.18",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "",
6
6
  "keywords": [
@@ -1,7 +1,7 @@
1
1
  import assert from 'node:assert/strict';
2
2
  import { readFileSync } from 'node:fs';
3
3
  import { registerHooks } from 'node:module';
4
- import { test } from 'node:test';
4
+ import { describe, test } from 'node:test';
5
5
  import ts from 'typescript';
6
6
 
7
7
  const middlewareUrl = new URL(
@@ -49,64 +49,66 @@ const hooks = registerHooks({
49
49
  const { MiddlewareSystemHttpLog } = await import(middlewareUrl);
50
50
  hooks.deregister();
51
51
 
52
- test('HTTP logger skips context and diagnostic access inside a request boundary', async () => {
53
- const middleware = Object.create(MiddlewareSystemHttpLog.prototype);
54
- for (const key of ['app', 'ctx', '$loggerChild']) {
55
- Object.defineProperty(middleware, key, {
56
- get() {
57
- assert.fail('protected diagnostic access');
58
- },
52
+ describe('HTTP logger', { concurrency: false }, () => {
53
+ test('HTTP logger skips context and diagnostic access inside a request boundary', async () => {
54
+ const middleware = Object.create(MiddlewareSystemHttpLog.prototype);
55
+ for (const key of ['app', 'ctx', '$loggerChild']) {
56
+ Object.defineProperty(middleware, key, {
57
+ get() {
58
+ assert.fail('protected diagnostic access');
59
+ },
60
+ });
61
+ }
62
+ let calls = 0;
63
+ setBoundary({ diagnostics: 'suppress' });
64
+ try {
65
+ assert.equal(
66
+ await middleware.execute({}, async () => {
67
+ calls++;
68
+ return 23;
69
+ }),
70
+ 23,
71
+ );
72
+ assert.equal(calls, 1);
73
+ } finally {
74
+ setBoundary(undefined);
75
+ }
76
+ });
77
+
78
+ for (const path of ['/health/ready', '/health/test-stop']) {
79
+ test(`HTTP logger redacts request authorization and response proof at ${path} without mutating headers`, async () => {
80
+ const headers = {
81
+ 'x-vona-test-challenge': 'secret-challenge',
82
+ 'X-Vona-Test-Stop-Authorization': 'secret-authorization',
83
+ 'x-vona-test-stop-nonce': 'secret-nonce',
84
+ 'accept': 'application/json',
85
+ };
86
+ const responseHeaders = {
87
+ 'x-vona-test-proof': 'secret-readiness',
88
+ 'X-Vona-Test-Stop-Proof': 'secret-ack',
89
+ 'content-type': 'application/json',
90
+ };
91
+ const logs: string[] = [];
92
+ const middleware = Object.create(MiddlewareSystemHttpLog.prototype);
93
+ Object.assign(middleware, {
94
+ app: { meta: { env: { VONA_TEST_RUN_ID: '20261014010203-a1b2c3d4' } } },
95
+ ctx: {
96
+ path,
97
+ req: { url: path, headers },
98
+ res: { statusCode: 200, getHeaders: () => responseHeaders },
99
+ },
100
+ $loggerChild: () => ({
101
+ http: (message: () => string) => logs.push(message()),
102
+ startTimer: () => ({ done: ({ message }: { message: string }) => logs.push(message) }),
103
+ }),
104
+ });
105
+ await middleware.execute({}, async () => {});
106
+ assert.equal(logs.length, 2);
107
+ assert.equal(logs.join('\n').includes('secret-'), false);
108
+ assert.match(logs[0], /application\/json/);
109
+ assert.match(logs[1], /application\/json/);
110
+ assert.equal(headers['X-Vona-Test-Stop-Authorization'], 'secret-authorization');
111
+ assert.equal(responseHeaders['X-Vona-Test-Stop-Proof'], 'secret-ack');
59
112
  });
60
113
  }
61
- let calls = 0;
62
- setBoundary({ diagnostics: 'suppress' });
63
- try {
64
- assert.equal(
65
- await middleware.execute({}, async () => {
66
- calls++;
67
- return 23;
68
- }),
69
- 23,
70
- );
71
- assert.equal(calls, 1);
72
- } finally {
73
- setBoundary(undefined);
74
- }
75
114
  });
76
-
77
- for (const path of ['/health/ready', '/health/test-stop']) {
78
- test(`HTTP logger redacts request authorization and response proof at ${path} without mutating headers`, async () => {
79
- const headers = {
80
- 'x-vona-test-challenge': 'secret-challenge',
81
- 'X-Vona-Test-Stop-Authorization': 'secret-authorization',
82
- 'x-vona-test-stop-nonce': 'secret-nonce',
83
- 'accept': 'application/json',
84
- };
85
- const responseHeaders = {
86
- 'x-vona-test-proof': 'secret-readiness',
87
- 'X-Vona-Test-Stop-Proof': 'secret-ack',
88
- 'content-type': 'application/json',
89
- };
90
- const logs: string[] = [];
91
- const middleware = Object.create(MiddlewareSystemHttpLog.prototype);
92
- Object.assign(middleware, {
93
- app: { meta: { env: { VONA_TEST_RUN_ID: '20261014010203-a1b2c3d4' } } },
94
- ctx: {
95
- path,
96
- req: { url: path, headers },
97
- res: { statusCode: 200, getHeaders: () => responseHeaders },
98
- },
99
- $loggerChild: () => ({
100
- http: (message: () => string) => logs.push(message()),
101
- startTimer: () => ({ done: ({ message }: { message: string }) => logs.push(message) }),
102
- }),
103
- });
104
- await middleware.execute({}, async () => {});
105
- assert.equal(logs.length, 2);
106
- assert.equal(logs.join('\n').includes('secret-'), false);
107
- assert.match(logs[0], /application\/json/);
108
- assert.match(logs[1], /application\/json/);
109
- assert.equal(headers['X-Vona-Test-Stop-Authorization'], 'secret-authorization');
110
- assert.equal(responseHeaders['X-Vona-Test-Stop-Proof'], 'secret-ack');
111
- });
112
- }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-mail",
3
- "version": "5.1.14",
3
+ "version": "5.1.15",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "",
6
6
  "keywords": [
@@ -13,6 +13,11 @@ export class ServiceMail extends BeanBase {
13
13
  async sendById(id: TableIdentity) {
14
14
  const mail = await this.scope.model.mail.getById(id);
15
15
  if (!mail) return;
16
+ if (this.app.meta.isTest) {
17
+ await this.scope.model.mail.delete({ id });
18
+ this.$logger.info('Test mode: skipped external mail send.');
19
+ return;
20
+ }
16
21
  const clientName = mail.client;
17
22
  // client
18
23
  let client = this._getClient(clientName);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-startup",
3
- "version": "5.1.21",
3
+ "version": "5.1.22",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "",
6
6
  "keywords": [
@@ -1,8 +1,38 @@
1
1
  import assert from 'node:assert/strict';
2
+ import { execFile } from 'node:child_process';
3
+ import { registerHooks } from 'node:module';
2
4
  import { afterEach, beforeEach, describe, it } from 'node:test';
5
+ import { fileURLToPath } from 'node:url';
6
+ import { promisify } from 'node:util';
3
7
 
4
- import { ServiceInstance } from '../../a-instance/src/service/instance.ts';
5
- import { ServiceStartup } from '../src/service/startup.ts';
8
+ // Only bypass bean registration; exercise real startup methods with local fixtures.
9
+ const serviceUrls = [
10
+ new URL('../../a-instance/src/service/instance.ts', import.meta.url).href,
11
+ new URL('../src/service/startup.ts', import.meta.url).href,
12
+ ];
13
+ const hooks = registerHooks({
14
+ resolve(specifier, context, nextResolve) {
15
+ if (serviceUrls.includes(context.parentURL!) && specifier === 'vona-module-a-bean') {
16
+ return {
17
+ url: 'data:text/javascript,export function Service() { return () => {}; }',
18
+ shortCircuit: true,
19
+ };
20
+ }
21
+ return nextResolve(specifier, context);
22
+ },
23
+ });
24
+ const { ServiceInstance, ServiceStartup } = await (async () => {
25
+ try {
26
+ return {
27
+ ...(await import('../../a-instance/src/service/instance.ts')),
28
+ ...(await import('../src/service/startup.ts')),
29
+ };
30
+ } finally {
31
+ hooks.deregister();
32
+ }
33
+ })();
34
+ type ServiceInstance = InstanceType<typeof ServiceInstance>;
35
+ type ServiceStartup = InstanceType<typeof ServiceStartup>;
6
36
 
7
37
  function fixture(created: string[] = []) {
8
38
  const calls: string[] = [];
@@ -105,6 +135,35 @@ const isolateCalls = [
105
135
  ];
106
136
 
107
137
  describe('creation-driven dev seed', { concurrency: false }, () => {
138
+ // Keep reset-flag mutations out of the managed runner's concurrent test process.
139
+ if (process.env.VONA_TEST_RUN_ID !== undefined) {
140
+ it('runs dev seed cases in an isolated process', async () => {
141
+ const loader = import.meta.resolve('ts-node-maintained/esm');
142
+ const projectRoot = new URL('../../../../../../', import.meta.url);
143
+ const registerSource = `import { register } from 'node:module'; register(${JSON.stringify(loader)}, ${JSON.stringify(projectRoot.href)});`;
144
+ const env = Object.fromEntries(Object.entries(process.env)) as NodeJS.ProcessEnv;
145
+ delete env.VONA_TEST_RUN_ID;
146
+ delete env.NODE_TEST_CONTEXT;
147
+ delete env.VONA_DB_RESET;
148
+ env.TS_NODE_PROJECT = fileURLToPath(new URL('tsconfig.json', projectRoot));
149
+ const { stdout } = await promisify(execFile)(
150
+ process.execPath,
151
+ [
152
+ '--import',
153
+ `data:text/javascript,${encodeURIComponent(registerSource)}`,
154
+ '--test',
155
+ '--test-reporter=tap',
156
+ '--test-name-pattern=creation-driven dev seed',
157
+ fileURLToPath(import.meta.url),
158
+ ],
159
+ { env, timeout: 30_000 },
160
+ );
161
+ assert.match(stdout, /# fail 0\b/);
162
+ assert.match(stdout, /# pass 16\b/);
163
+ });
164
+ return;
165
+ }
166
+
108
167
  let previousReset: string | undefined;
109
168
  beforeEach(() => {
110
169
  previousReset = process.env.VONA_DB_RESET;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-suite-a-vona",
3
- "version": "5.1.103",
3
+ "version": "5.1.104",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "",
6
6
  "author": "",
@@ -85,7 +85,6 @@
85
85
  "typescript": "^5.9.3",
86
86
  "vite": "^8.3.4",
87
87
  "vite-plugin-fake-server-turbo": "^3.0.18",
88
- "vue-tsc": "^3.3.1",
89
88
  "zova-vite": "workspace:^",
90
89
  "textlint": "^15.7.0",
91
90
  "textlint-rule-en-no-mixed-period": "^3.0.2",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-cli",
3
- "version": "1.2.117",
3
+ "version": "1.2.118",
4
4
  "gitHead": "6f675a8cc46d596142c591c28a40cc4d82fcc6cc",
5
5
  "description": "zova cli",
6
6
  "keywords": [
@@ -40,11 +40,11 @@
40
40
  "postpack": "clean-package restore"
41
41
  },
42
42
  "dependencies": {
43
- "@cabloy/cli": "^3.1.29",
44
- "@cabloy/process-helper": "^3.1.8",
43
+ "@cabloy/cli": "^3.1.30",
44
+ "@cabloy/process-helper": "^3.1.9",
45
45
  "fs-extra": "^11.3.5",
46
46
  "semver": "^7.6.2",
47
- "zova-cli-set-front": "^1.2.115"
47
+ "zova-cli-set-front": "^1.2.116"
48
48
  },
49
49
  "devDependencies": {
50
50
  "clean-package": "^2.2.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-cli-set-front",
3
- "version": "1.2.115",
3
+ "version": "1.2.116",
4
4
  "gitHead": "6f675a8cc46d596142c591c28a40cc4d82fcc6cc",
5
5
  "description": "zova cli-set-front",
6
6
  "keywords": [
@@ -41,7 +41,7 @@
41
41
  "@babel/plugin-proposal-decorators": "^7.29.0",
42
42
  "@babel/plugin-transform-class-properties": "^7.28.6",
43
43
  "@babel/plugin-transform-typescript": "^7.28.6",
44
- "@cabloy/cli": "^3.1.29",
44
+ "@cabloy/cli": "^3.1.30",
45
45
  "@cabloy/extend": "^3.2.8",
46
46
  "@cabloy/module-info": "^2.0.3",
47
47
  "@cabloy/openapi-typescript": "^7.9.2",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova",
3
- "version": "5.1.172",
3
+ "version": "5.1.173",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "A vue3 framework with ioc",
6
6
  "keywords": [
@@ -46,7 +46,7 @@
46
46
  },
47
47
  "dependencies": {
48
48
  "zova-core": "^5.1.93",
49
- "zova-suite-a-zova": "^5.1.171"
49
+ "zova-suite-a-zova": "^5.1.172"
50
50
  },
51
51
  "devDependencies": {
52
52
  "clean-package": "^2.2.0",
@@ -588,9 +588,6 @@ importers:
588
588
  vite-plugin-fake-server-turbo:
589
589
  specifier: ^3.0.18
590
590
  version: 3.0.18
591
- vue-tsc:
592
- specifier: ^3.3.1
593
- version: 3.3.11(typescript@5.9.3)
594
591
  zova-openapi:
595
592
  specifier: ^1.1.17
596
593
  version: link:packages-utils/zova-openapi
@@ -613,7 +610,7 @@ importers:
613
610
  specifier: ^7.6.2
614
611
  version: 7.8.5
615
612
  zova-cli-set-front:
616
- specifier: ^1.2.114
613
+ specifier: ^1.2.115
617
614
  version: link:../cli-set-front
618
615
  devDependencies:
619
616
  clean-package:
@@ -699,13 +696,13 @@ importers:
699
696
  version: 1.2.14
700
697
  rolldown-plugin-dts:
701
698
  specifier: ^0.22.5
702
- version: 0.22.5(@typescript/native-preview@7.0.0-dev.20260707.2)(rolldown@1.2.14)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3))
699
+ version: 0.22.5(@typescript/native-preview@7.0.0-dev.20260707.2)(rolldown@1.2.14)(typescript@5.9.3)
703
700
  svgo:
704
701
  specifier: ^3.2.0
705
702
  version: 3.3.5
706
703
  tsdown:
707
704
  specifier: ^0.21.7
708
- version: 0.21.10(@typescript/native-preview@7.0.0-dev.20260707.2)(synckit@0.11.13)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3))
705
+ version: 0.21.10(@typescript/native-preview@7.0.0-dev.20260707.2)(synckit@0.11.13)(typescript@5.9.3)
709
706
  typescript:
710
707
  specifier: ^5.9.3
711
708
  version: 5.9.3
@@ -4966,15 +4963,6 @@ packages:
4966
4963
  vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
4967
4964
  vue: ^3.2.25
4968
4965
 
4969
- '@volar/language-core@2.4.28':
4970
- resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==}
4971
-
4972
- '@volar/source-map@2.4.28':
4973
- resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==}
4974
-
4975
- '@volar/typescript@2.4.28':
4976
- resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==}
4977
-
4978
4966
  '@vue/babel-helper-vue-transform-on@2.0.1':
4979
4967
  resolution: {integrity: sha512-uZ66EaFbnnZSYqYEyplWvn46GhZ1KuYSThdT68p+am7MgBNbQ3hphTL9L+xSIsWkdktwhPYLwPgVWqo96jDdRA==}
4980
4968
 
@@ -5001,9 +4989,6 @@ packages:
5001
4989
  '@vue/devtools-api@6.6.4':
5002
4990
  resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
5003
4991
 
5004
- '@vue/language-core@3.3.11':
5005
- resolution: {integrity: sha512-QJmpliwAVpC/OxubIByPAhNzsQPRc8/gxlN2qnVzVfIMjMDz/9RnXRFoetjz5yEgXVXyp4LqhXq3V53PjmNzFw==}
5006
-
5007
4992
  '@vue/shared@3.5.13':
5008
4993
  resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
5009
4994
 
@@ -5054,9 +5039,6 @@ packages:
5054
5039
  ajv@8.20.0:
5055
5040
  resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==}
5056
5041
 
5057
- alien-signals@3.2.1:
5058
- resolution: {integrity: sha512-I8FjmltrfnDFoZedi5CG8DghVYNhzb/Ijluz7tCSJH0xpd0484Kowhbb1XDYOxfJpU1p5wnM2X54dA+IfGyD1g==}
5059
-
5060
5042
  ansi-align@3.0.1:
5061
5043
  resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
5062
5044
 
@@ -7187,9 +7169,6 @@ packages:
7187
7169
  ms@2.1.3:
7188
7170
  resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
7189
7171
 
7190
- muggle-string@0.4.1:
7191
- resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==}
7192
-
7193
7172
  mute-stream@3.0.0:
7194
7173
  resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==}
7195
7174
  engines: {node: ^20.17.0 || >=22.9.0}
@@ -7392,9 +7371,6 @@ packages:
7392
7371
  pascal-case@3.1.2:
7393
7372
  resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
7394
7373
 
7395
- path-browserify@1.0.1:
7396
- resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
7397
-
7398
7374
  path-case@3.0.4:
7399
7375
  resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==}
7400
7376
 
@@ -8567,9 +8543,6 @@ packages:
8567
8543
  yaml:
8568
8544
  optional: true
8569
8545
 
8570
- vscode-uri@3.2.0:
8571
- resolution: {integrity: sha512-m2gXo3bn0G1kT9InzMf07fTbqMbGtyckj3bH5ktLO+1Ssv+yiATZ4dhwaQv9UZWxJh6E9IFGnQyjgWVDWVBDrg==}
8572
-
8573
8546
  vue-advanced-cropper@2.8.9:
8574
8547
  resolution: {integrity: sha512-1jc5gO674kVGpJKekoaol6ZlwaF5VYDLSBwBOUpViW0IOrrRsyLw6XNszjEqgbavvqinlKNS6Kqlom3B5M72Tw==}
8575
8548
  engines: {node: '>=8', npm: '>=5'}
@@ -8598,12 +8571,6 @@ packages:
8598
8571
  peerDependencies:
8599
8572
  vue: ^3.5.13
8600
8573
 
8601
- vue-tsc@3.3.11:
8602
- resolution: {integrity: sha512-gOb0B9rtU2+f1dszwPqSH5kAieIF9ReeLhD3kSRNHv5WZZUQz/JdVXW0RTdqhNTMlQkqKzrTTviqKr/4FYZraQ==}
8603
- hasBin: true
8604
- peerDependencies:
8605
- typescript: '>=5.0.0'
8606
-
8607
8574
  vue3-browser-compiler-yx@1.0.4:
8608
8575
  resolution: {integrity: sha512-F42+9OGvZT83zOPCp0jycA76ZEozv7DTaYkVVGdpf+Syjh/S/8xj/GRnJ+P8/AkfpHoCOR2WAZupDJS6/qS4OQ==}
8609
8576
  peerDependencies:
@@ -11130,18 +11097,6 @@ snapshots:
11130
11097
  vite: 8.3.4(@types/node@22.20.2)(esbuild@0.25.12)(jiti@2.7.0)(sass-embedded@1.104.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.9.1)
11131
11098
  vue: 3.5.42(typescript@5.9.3)
11132
11099
 
11133
- '@volar/language-core@2.4.28':
11134
- dependencies:
11135
- '@volar/source-map': 2.4.28
11136
-
11137
- '@volar/source-map@2.4.28': {}
11138
-
11139
- '@volar/typescript@2.4.28':
11140
- dependencies:
11141
- '@volar/language-core': 2.4.28
11142
- path-browserify: 1.0.1
11143
- vscode-uri: 3.2.0
11144
-
11145
11100
  '@vue/babel-helper-vue-transform-on@2.0.1': {}
11146
11101
 
11147
11102
  '@vue/babel-plugin-resolve-type@2.0.1(@babel/core@7.29.7(supports-color@10.2.2))(supports-color@10.2.2)':
@@ -11188,16 +11143,6 @@ snapshots:
11188
11143
 
11189
11144
  '@vue/devtools-api@6.6.4': {}
11190
11145
 
11191
- '@vue/language-core@3.3.11':
11192
- dependencies:
11193
- '@volar/language-core': 2.4.28
11194
- '@vue/compiler-dom': 3.5.13
11195
- '@vue/shared': 3.5.13
11196
- alien-signals: 3.2.1
11197
- muggle-string: 0.4.1
11198
- path-browserify: 1.0.1
11199
- picomatch: 4.0.7
11200
-
11201
11146
  '@vue/shared@3.5.13': {}
11202
11147
 
11203
11148
  '@zhennann/common-bin@4.0.1(supports-color@10.2.2)':
@@ -11256,8 +11201,6 @@ snapshots:
11256
11201
  json-schema-traverse: 1.0.0
11257
11202
  require-from-string: 2.0.2
11258
11203
 
11259
- alien-signals@3.2.1: {}
11260
-
11261
11204
  ansi-align@3.0.1:
11262
11205
  dependencies:
11263
11206
  string-width: 4.2.3
@@ -13741,8 +13684,6 @@ snapshots:
13741
13684
 
13742
13685
  ms@2.1.3: {}
13743
13686
 
13744
- muggle-string@0.4.1: {}
13745
-
13746
13687
  mute-stream@3.0.0: {}
13747
13688
 
13748
13689
  nanoid@3.3.19: {}
@@ -13964,8 +13905,6 @@ snapshots:
13964
13905
  no-case: 3.0.4
13965
13906
  tslib: 2.8.1
13966
13907
 
13967
- path-browserify@1.0.1: {}
13968
-
13969
13908
  path-case@3.0.4:
13970
13909
  dependencies:
13971
13910
  dot-case: 3.0.4
@@ -14385,7 +14324,7 @@ snapshots:
14385
14324
  glob: 13.0.6
14386
14325
  package-json-from-dist: 1.0.1
14387
14326
 
14388
- rolldown-plugin-dts@0.22.5(@typescript/native-preview@7.0.0-dev.20260707.2)(rolldown@1.2.14)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3)):
14327
+ rolldown-plugin-dts@0.22.5(@typescript/native-preview@7.0.0-dev.20260707.2)(rolldown@1.2.14)(typescript@5.9.3):
14389
14328
  dependencies:
14390
14329
  '@babel/generator': 8.0.0-rc.2
14391
14330
  '@babel/helper-validator-identifier': 8.0.0-rc.2
@@ -14400,11 +14339,10 @@ snapshots:
14400
14339
  optionalDependencies:
14401
14340
  '@typescript/native-preview': 7.0.0-dev.20260707.2
14402
14341
  typescript: 5.9.3
14403
- vue-tsc: 3.3.11(typescript@5.9.3)
14404
14342
  transitivePeerDependencies:
14405
14343
  - oxc-resolver
14406
14344
 
14407
- rolldown-plugin-dts@0.23.2(@typescript/native-preview@7.0.0-dev.20260707.2)(rolldown@1.0.0-rc.17)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3)):
14345
+ rolldown-plugin-dts@0.23.2(@typescript/native-preview@7.0.0-dev.20260707.2)(rolldown@1.0.0-rc.17)(typescript@5.9.3):
14408
14346
  dependencies:
14409
14347
  '@babel/generator': 8.0.0-rc.3
14410
14348
  '@babel/helper-validator-identifier': 8.0.0-rc.3
@@ -14420,7 +14358,6 @@ snapshots:
14420
14358
  optionalDependencies:
14421
14359
  '@typescript/native-preview': 7.0.0-dev.20260707.2
14422
14360
  typescript: 5.9.3
14423
- vue-tsc: 3.3.11(typescript@5.9.3)
14424
14361
  transitivePeerDependencies:
14425
14362
  - oxc-resolver
14426
14363
 
@@ -15035,7 +14972,7 @@ snapshots:
15035
14972
  optionalDependencies:
15036
14973
  typescript: 5.9.3
15037
14974
 
15038
- tsdown@0.21.10(@typescript/native-preview@7.0.0-dev.20260707.2)(synckit@0.11.13)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3)):
14975
+ tsdown@0.21.10(@typescript/native-preview@7.0.0-dev.20260707.2)(synckit@0.11.13)(typescript@5.9.3):
15039
14976
  dependencies:
15040
14977
  ansis: 4.3.1
15041
14978
  cac: 7.0.0
@@ -15046,7 +14983,7 @@ snapshots:
15046
14983
  obug: 2.2.1
15047
14984
  picomatch: 4.0.7
15048
14985
  rolldown: 1.0.0-rc.17
15049
- rolldown-plugin-dts: 0.23.2(@typescript/native-preview@7.0.0-dev.20260707.2)(rolldown@1.0.0-rc.17)(typescript@5.9.3)(vue-tsc@3.3.11(typescript@5.9.3))
14986
+ rolldown-plugin-dts: 0.23.2(@typescript/native-preview@7.0.0-dev.20260707.2)(rolldown@1.0.0-rc.17)(typescript@5.9.3)
15050
14987
  semver: 7.8.5
15051
14988
  tinyexec: 1.3.1
15052
14989
  tinyglobby: 0.2.17
@@ -15295,8 +15232,6 @@ snapshots:
15295
15232
  terser: 5.51.2
15296
15233
  yaml: 2.9.1
15297
15234
 
15298
- vscode-uri@3.2.0: {}
15299
-
15300
15235
  vue-advanced-cropper@2.8.9(vue@3.5.42(typescript@5.9.3)):
15301
15236
  dependencies:
15302
15237
  classnames: 2.5.1
@@ -15324,12 +15259,6 @@ snapshots:
15324
15259
  dependencies:
15325
15260
  vue: 3.5.42(typescript@5.9.3)
15326
15261
 
15327
- vue-tsc@3.3.11(typescript@5.9.3):
15328
- dependencies:
15329
- '@volar/typescript': 2.4.28
15330
- '@vue/language-core': 3.3.11
15331
- typescript: 5.9.3
15332
-
15333
15262
  vue3-browser-compiler-yx@1.0.4(vue@3.5.42(typescript@5.9.3)):
15334
15263
  dependencies:
15335
15264
  '@babel/parser': 7.29.8
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-zova",
3
- "version": "5.1.109",
3
+ "version": "5.1.110",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "zova",
6
6
  "keywords": [
@@ -46,7 +46,7 @@
46
46
  "zova-jsx": "^1.1.93"
47
47
  },
48
48
  "devDependencies": {
49
- "@cabloy/cli": "^3.1.29",
49
+ "@cabloy/cli": "^3.1.30",
50
50
  "@types/luxon": "^3.7.1",
51
51
  "clean-package": "^2.2.0",
52
52
  "fs-extra": "^11.3.5",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-suite-a-zova",
3
- "version": "5.1.171",
3
+ "version": "5.1.172",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "zova",
6
6
  "license": "MIT",
@@ -31,7 +31,7 @@
31
31
  "zova-module-a-style": "^5.1.35",
32
32
  "zova-module-a-table": "^5.1.44",
33
33
  "zova-module-a-zod": "^5.1.37",
34
- "zova-module-a-zova": "^5.1.109"
34
+ "zova-module-a-zova": "^5.1.110"
35
35
  },
36
36
  "title": "a-zova"
37
37
  }