cabloy 5.1.141 → 5.1.143

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 (94) hide show
  1. package/.cabloy-version +1 -1
  2. package/.github/workflows/playwright-e2e.yml +2 -2
  3. package/CHANGELOG.md +27 -0
  4. package/cabloy-docs/frontend/form-guide.md +47 -0
  5. package/cabloy-docs/frontend/markdown-guide.md +50 -17
  6. package/cabloy-docs/frontend/route-alias-guide.md +20 -0
  7. package/cabloy-docs/frontend/scripts.md +9 -11
  8. package/cabloy-docs/frontend/zova-form-under-the-hood.md +25 -0
  9. package/cabloy-docs/fullstack/parallel-worktree-environment.md +1 -1
  10. package/cabloy-docs/fullstack/quickstart.md +5 -4
  11. package/cabloy-docs/reference/repo-scripts.md +29 -42
  12. package/e2e/config/playwright.config.ts +34 -0
  13. package/e2e/scripts/e2e.ts +2 -27
  14. package/e2e/scripts/runE2e.ts +62 -0
  15. package/e2e/scripts/runE2eArgs.test.ts +75 -0
  16. package/e2e/scripts/runE2eArgs.ts +158 -0
  17. package/e2e/specs/{a-commerce/commerce.spec.ts → a-commerce.spec.ts} +361 -30
  18. package/e2e/specs/{cabloy-basic/account.spec.ts → account.spec.ts} +1 -2
  19. package/oxlint.config.ts +3 -0
  20. package/package.json +3 -9
  21. package/scripts/upgrade.ts +63 -68
  22. package/vona/packages-utils/lint/package.json +1 -1
  23. package/vona/packages-utils/lint/src/oxc/lint.ts +1 -1
  24. package/vona/packages-utils/lint/src/oxc/lintVue.ts +1 -1
  25. package/vona/pnpm-lock.yaml +209 -65
  26. package/vona/pnpm-workspace.yaml +1 -1
  27. package/vona/src/suite/a-commerce/modules/commerce-trade/src/dto/refundRecoveryView.tsx +7 -2
  28. package/vona/src/suite/a-commerce/modules/commerce-trade/src/service/order.ts +31 -15
  29. package/vona/src/suite/a-home/modules/home-user/package.json +1 -0
  30. package/vona/src/suite/a-home/modules/home-user/src/service/account.ts +15 -2
  31. package/vona/src/suite/a-home/modules/home-user/test/accountActivation.test.ts +34 -4
  32. package/vona/src/suite-vendor/a-cabloy/modules/a-markdown/package.json +2 -1
  33. package/vona/src/suite-vendor/a-cabloy/modules/a-markdown/src/.metadata/index.ts +26 -0
  34. package/vona/src/suite-vendor/a-cabloy/modules/a-markdown/src/bean/imageScene.markdown.ts +13 -0
  35. package/vona/src/suite-vendor/a-cabloy/package.json +2 -2
  36. package/vona/src/suite-vendor/a-pay/modules/a-pay/package.json +1 -1
  37. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/service/providerOperation.ts +23 -0
  38. package/vona/src/suite-vendor/a-pay/modules/a-pay/src/service/refundOperation.ts +7 -0
  39. package/vona/src/suite-vendor/a-pay/modules/pay-mock/package.json +1 -1
  40. package/vona/src/suite-vendor/a-pay/modules/pay-paypal/package.json +1 -1
  41. package/vona/src/suite-vendor/a-pay/modules/pay-stripe/package.json +1 -1
  42. package/vona/src/suite-vendor/a-pay/package.json +5 -5
  43. package/zova/packages-utils/zova-jsx/package.json +2 -2
  44. package/zova/packages-zova/zova/package.json +3 -3
  45. package/zova/packages-zova/zova-core/package.json +1 -1
  46. package/zova/packages-zova/zova-core/src/bean/resource/locale/type.ts +1 -0
  47. package/zova/pnpm-lock.yaml +56 -11
  48. package/zova/src/front/config/config/config.cabloyBasicWeb.ts +3 -1
  49. package/zova/src/front/config/config/config.cabloyCommerce.ts +4 -2
  50. package/zova/src/suite/a-commerce/modules/commerce-member/src/page/address/controller.tsx +64 -63
  51. package/zova/src/suite/a-commerce/modules/commerce-trade/src/api/openapi/types.ts +6 -1
  52. package/zova/src/suite/a-commerce/modules/commerce-trade/src/component/tableCellActionRefund/controller.tsx +413 -134
  53. package/zova/src/suite/a-commerce/modules/commerce-trade/src/config/locale/en-us.ts +76 -0
  54. package/zova/src/suite/a-commerce/modules/commerce-trade/src/config/locale/zh-cn.ts +67 -0
  55. package/zova/src/suite/a-commerce/modules/commerce-trade/src/model/order.ts +1 -0
  56. package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/cart/controller.tsx +1 -1
  57. package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/checkout/controller.tsx +7 -7
  58. package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/order/controller.tsx +46 -9
  59. package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/payment/controller.tsx +50 -30
  60. package/zova/src/suite/cabloy-basic/modules/basic-captcha/src/component/formFieldCaptcha/controller.tsx +6 -2
  61. package/zova/src/suite/cabloy-basic/modules/basic-image/src/component/formFieldImage/controller.tsx +9 -15
  62. package/zova/src/suite/cabloy-basic/modules/basic-markdown/package.json +10 -2
  63. package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/.metadata/index.ts +11 -2
  64. package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/.metadata/locales.ts +7 -0
  65. package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/component/formFieldMarkdown/controller.tsx +723 -5
  66. package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/component/formFieldMarkdown/render.tsx +461 -2
  67. package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/config/locale/en-us.ts +59 -0
  68. package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/config/locale/zh-cn.ts +59 -0
  69. package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/index.ts +1 -0
  70. package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/lib/codeBlockLanguages.ts +42 -0
  71. package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/lib/richTextContentStyle.ts +20 -0
  72. package/zova/src/suite/cabloy-basic/modules/basic-markdown/test/lib/codeBlockLanguages.test.ts +25 -0
  73. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/package.json +1 -1
  74. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/model/resource.ts +1 -0
  75. package/zova/src/suite-vendor/a-cabloy/package.json +2 -2
  76. package/zova/src/suite-vendor/a-pay/modules/a-pay/package.json +1 -1
  77. package/zova/src/suite-vendor/a-pay/modules/a-pay/src/component/paymentNextAction/controller.tsx +26 -12
  78. package/zova/src/suite-vendor/a-pay/modules/pay-mock/cli/openapi.config.ts +1 -1
  79. package/zova/src/suite-vendor/a-pay/modules/pay-mock/package.json +1 -1
  80. package/zova/src/suite-vendor/a-pay/modules/pay-mock/src/api/payMockMockPayment.ts +26 -0
  81. package/zova/src/suite-vendor/a-pay/modules/pay-mock/src/apiSchema/payMockMockPayment.ts +8 -1
  82. package/zova/src/suite-vendor/a-pay/modules/pay-mock/src/model/payMockPayment.ts +13 -1
  83. package/zova/src/suite-vendor/a-pay/package.json +3 -3
  84. package/zova/src/suite-vendor/a-zova/modules/a-form/package.json +1 -1
  85. package/zova/src/suite-vendor/a-zova/modules/a-form/src/component/formField/controller.tsx +2 -0
  86. package/zova/src/suite-vendor/a-zova/modules/a-form/src/types/formField.ts +7 -6
  87. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
  88. package/zova/src/suite-vendor/a-zova/package.json +3 -3
  89. package/e2e/config/playwright.basic.config.ts +0 -3
  90. package/e2e/config/playwright.commerce.config.ts +0 -3
  91. package/e2e/config/playwright.shared.config.ts +0 -38
  92. package/e2e/scripts/testE2eClean.ts +0 -56
  93. /package/e2e/specs/{cabloy-basic/basic.spec.ts → cabloy-basic.spec.ts} +0 -0
  94. /package/vona/patches/{zova-core@5.1.86.patch → zova-core@5.1.87.patch} +0 -0
@@ -5,6 +5,7 @@ import { acquireTestLock, app } from 'vona-mock';
5
5
 
6
6
  const activationConsumePath = '/home/user/account/activation/consume';
7
7
  const activationConsumerUrl = 'https://account.example.test/home/user/activation';
8
+ const activationConsumerUrlAdmin = 'https://account.example.test/admin/home/user/activation';
8
9
 
9
10
  describe('accountActivation.test.ts', { concurrency: false, sequential: true }, () => {
10
11
  const releases: Array<() => void> = [];
@@ -73,6 +74,26 @@ describe('accountActivation.test.ts', { concurrency: false, sequential: true },
73
74
  }
74
75
  });
75
76
 
77
+ it('preserves an enabled SSR site public path in activation links', async () => {
78
+ let fixture: IFixture | undefined;
79
+ let restoreSites: (() => void) | undefined;
80
+ try {
81
+ fixture = await createFixture();
82
+ restoreSites = configureAdminSsrSite();
83
+ const issued = await issueActivationLink(fixture, activationConsumerUrlAdmin);
84
+ assert.equal(issued.path, '/admin/home/user/activation');
85
+ assert.deepEqual(await getActivationState(getDigest(issued.token)), {
86
+ purpose: 'account-activation',
87
+ userId: fixture.userId,
88
+ consumerPath: '/home/user/activation',
89
+ email: fixture.email,
90
+ });
91
+ } finally {
92
+ restoreSites?.();
93
+ if (fixture) await removeFixture(fixture);
94
+ }
95
+ });
96
+
76
97
  it('issues an activation link through registration and activates the registered user', async () => {
77
98
  let registration: IRegistration | undefined;
78
99
  try {
@@ -175,6 +196,17 @@ interface IRegistration extends IFixture {
175
196
  path: string;
176
197
  }
177
198
 
199
+ function configureAdminSsrSite() {
200
+ const service = app.scope('a-ssr').service.ssr;
201
+ const getSitesEnabled = service.getSitesEnabled;
202
+ service.getSitesEnabled = (() => [
203
+ { beanOptions: { options: { publicPath: 'admin' } } },
204
+ ]) as typeof service.getSitesEnabled;
205
+ return () => {
206
+ service.getSitesEnabled = getSitesEnabled;
207
+ };
208
+ }
209
+
178
210
  async function configureActivation() {
179
211
  return await app.bean.executor.mockCtx(async () => {
180
212
  const options =
@@ -288,7 +320,7 @@ async function removeFixture(fixture: IFixture) {
288
320
  });
289
321
  }
290
322
 
291
- async function issueActivationLink(fixture: IFixture) {
323
+ async function issueActivationLink(fixture: IFixture, consumerUrl = activationConsumerUrl) {
292
324
  let text: unknown;
293
325
  const mail = app.bean.mail;
294
326
  const send = mail.send;
@@ -297,9 +329,7 @@ async function issueActivationLink(fixture: IFixture) {
297
329
  };
298
330
  try {
299
331
  await app.bean.executor.mockCtx(async () => {
300
- await app
301
- .scope('home-user')
302
- .service.account.issueActivationLink(fixture.userId, activationConsumerUrl);
332
+ await app.scope('home-user').service.account.issueActivationLink(fixture.userId, consumerUrl);
303
333
  });
304
334
  } finally {
305
335
  mail.send = send;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-markdown",
3
- "version": "5.0.1",
3
+ "version": "5.0.2",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "Vona Module"
@@ -58,6 +58,7 @@
58
58
  "title": "a-markdown",
59
59
  "vonaModule": {
60
60
  "dependencies": {
61
+ "a-image": "5.0.0",
61
62
  "a-vona": "5.0.0"
62
63
  }
63
64
  }
@@ -1,4 +1,30 @@
1
1
  // eslint-disable
2
+ /** imageScene: begin */
3
+ export * from '../bean/imageScene.markdown.ts';
4
+
5
+ import { type IDecoratorImageSceneOptions } from 'vona-module-a-image';
6
+ declare module 'vona-module-a-image' {
7
+
8
+ export interface IImageSceneRecord {
9
+ 'a-markdown:markdown': IDecoratorImageSceneOptions;
10
+ }
11
+
12
+
13
+ }
14
+ declare module 'vona-module-a-markdown' {
15
+
16
+ export interface ImageSceneMarkdown {
17
+ /** @internal */
18
+ get scope(): ScopeModuleAMarkdown;
19
+ }
20
+
21
+ export interface ImageSceneMarkdown {
22
+ get $beanFullName(): 'a-markdown.imageScene.markdown';
23
+ get $onionName(): 'a-markdown:markdown';
24
+ get $onionOptions(): IDecoratorImageSceneOptions;
25
+ }
26
+ }
27
+ /** imageScene: end */
2
28
  /** bean: begin */
3
29
  export * from '../bean/bean.markdown.ts';
4
30
 
@@ -0,0 +1,13 @@
1
+ import { BeanBase } from 'vona';
2
+ import { ImageScene } from 'vona-module-a-image';
3
+
4
+ @ImageScene({
5
+ public: true,
6
+ upload: {
7
+ maxSize: 5 * 1024 * 1024,
8
+ mimeTypes: ['image/jpeg', 'image/png', 'image/webp'],
9
+ extensions: ['.jpg', '.jpeg', '.png', '.webp'],
10
+ multiple: false,
11
+ },
12
+ })
13
+ export class ImageSceneMarkdown extends BeanBase {}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-suite-a-cabloy",
3
- "version": "5.1.45",
3
+ "version": "5.1.46",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "",
6
6
  "author": "",
@@ -8,7 +8,7 @@
8
8
  "type": "module",
9
9
  "dependencies": {
10
10
  "vona-module-a-cabloy": "workspace:^",
11
- "vona-module-a-markdown": "^5.0.1",
11
+ "vona-module-a-markdown": "^5.0.2",
12
12
  "vona-module-a-rbac": "^5.0.1",
13
13
  "vona-module-a-socket": "workspace:^",
14
14
  "vona-module-a-ssr": "workspace:^",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-a-pay",
3
- "version": "5.0.7",
3
+ "version": "5.0.8",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "Vona Module"
@@ -302,6 +302,29 @@ export class ServiceProviderOperation extends BeanBase {
302
302
  operation.kind === 'refund' && operation.refundOperationId
303
303
  ? await this.scope.model.refundOperation.getByIdForUpdate(operation.refundOperationId)
304
304
  : undefined;
305
+ if (operation.kind === 'refund' && refund?.providerRefundId) {
306
+ const session = await this.scope.model.paymentSession.getById(operation.paymentSessionId);
307
+ if (!session) this.app.throw(404, 'payment session not found');
308
+ const { provider } = this.bean.payProvider.resolveByName(
309
+ session.providerName,
310
+ session.clientName,
311
+ );
312
+ if (!provider.queryRefund) {
313
+ if (operation.nextAttemptAt) {
314
+ await this.scope.model.providerOperation.updateById(operation.id, {
315
+ nextAttemptAt: undefined,
316
+ });
317
+ }
318
+ return undefined;
319
+ }
320
+ }
321
+ if (
322
+ operation.kind === 'refund' &&
323
+ refund &&
324
+ ['succeeded', 'failed', 'cancelled'].includes(refund.state)
325
+ ) {
326
+ return undefined;
327
+ }
305
328
  if (
306
329
  operation.kind === 'refund' &&
307
330
  operation.submittedAt &&
@@ -203,6 +203,13 @@ export class ServiceRefundOperation extends BeanBase {
203
203
  amountMinor: refund.amountMinor,
204
204
  currency: refund.currency,
205
205
  });
206
+ const providerOperation = await this.scope.model.providerOperation.getForUpdate({
207
+ refundOperationId: refund.id,
208
+ kind: 'refund',
209
+ });
210
+ if (providerOperation) {
211
+ await this._completeProviderOperation(providerOperation, options.providerRefundId);
212
+ }
206
213
  }
207
214
  return {
208
215
  refund: {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-pay-mock",
3
- "version": "5.0.7",
3
+ "version": "5.0.8",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "Vona Module"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-pay-paypal",
3
- "version": "5.0.7",
3
+ "version": "5.0.8",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "Vona Module"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-module-pay-stripe",
3
- "version": "5.0.7",
3
+ "version": "5.0.8",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "Vona Module"
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "vona-suite-a-pay",
3
- "version": "5.0.7",
3
+ "version": "5.0.8",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "files": [],
7
7
  "type": "module",
8
8
  "dependencies": {
9
- "vona-module-a-pay": "^5.0.7",
10
- "vona-module-pay-mock": "^5.0.7",
11
- "vona-module-pay-paypal": "^5.0.7",
12
- "vona-module-pay-stripe": "^5.0.7"
9
+ "vona-module-a-pay": "^5.0.8",
10
+ "vona-module-pay-mock": "^5.0.8",
11
+ "vona-module-pay-paypal": "^5.0.8",
12
+ "vona-module-pay-stripe": "^5.0.8"
13
13
  },
14
14
  "title": "a-pay"
15
15
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-jsx",
3
- "version": "1.1.86",
3
+ "version": "1.1.87",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "Zova JSX",
6
6
  "keywords": [
@@ -50,7 +50,7 @@
50
50
  "@cabloy/word-utils": "^2.1.14",
51
51
  "typestyle": "^2.4.0",
52
52
  "vue": "^3.5.38",
53
- "zova-core": "^5.1.86"
53
+ "zova-core": "^5.1.87"
54
54
  },
55
55
  "devDependencies": {
56
56
  "clean-package": "^2.2.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova",
3
- "version": "5.1.151",
3
+ "version": "5.1.152",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "A vue3 framework with ioc",
6
6
  "keywords": [
@@ -45,8 +45,8 @@
45
45
  "postpack": "clean-package restore"
46
46
  },
47
47
  "dependencies": {
48
- "zova-core": "^5.1.86",
49
- "zova-suite-a-zova": "^5.1.150"
48
+ "zova-core": "^5.1.87",
49
+ "zova-suite-a-zova": "^5.1.151"
50
50
  },
51
51
  "devDependencies": {
52
52
  "clean-package": "^2.2.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-core",
3
- "version": "5.1.86",
3
+ "version": "5.1.87",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "A vue3 framework with ioc",
6
6
  "keywords": [
@@ -1,4 +1,5 @@
1
1
  export const LocaleModuleNameSeparator = '::';
2
+ export const LocalePattern = '[a-z]{2}-[a-z]{2}|[a-z]{2}';
2
3
 
3
4
  export interface IModuleLocale {
4
5
  (...args: any[]): string;
@@ -136,7 +136,7 @@ importers:
136
136
  specifier: workspace:^
137
137
  version: link:packages-zova/zova
138
138
  zova-jsx:
139
- specifier: ^1.1.86
139
+ specifier: ^1.1.87
140
140
  version: link:packages-utils/zova-jsx
141
141
  zova-module-a-api:
142
142
  specifier: workspace:^
@@ -726,7 +726,7 @@ importers:
726
726
  specifier: ^3.5.38
727
727
  version: 3.5.38(typescript@5.9.3)
728
728
  zova-core:
729
- specifier: ^5.1.86
729
+ specifier: ^5.1.87
730
730
  version: link:../../packages-zova/zova-core
731
731
  devDependencies:
732
732
  clean-package:
@@ -867,10 +867,10 @@ importers:
867
867
  packages-zova/zova:
868
868
  dependencies:
869
869
  zova-core:
870
- specifier: ^5.1.86
870
+ specifier: ^5.1.87
871
871
  version: link:../zova-core
872
872
  zova-suite-a-zova:
873
- specifier: ^5.1.149
873
+ specifier: ^5.1.151
874
874
  version: link:../../src/suite-vendor/a-zova
875
875
  devDependencies:
876
876
  clean-package:
@@ -977,7 +977,7 @@ importers:
977
977
  specifier: ^5.0.1
978
978
  version: link:modules/a-rbac
979
979
  zova-module-rest-resource:
980
- specifier: ^5.1.45
980
+ specifier: ^5.1.46
981
981
  version: link:modules/rest-resource
982
982
 
983
983
  src/suite-vendor/a-cabloy/modules/a-rbac:
@@ -1001,10 +1001,10 @@ importers:
1001
1001
  src/suite-vendor/a-pay:
1002
1002
  dependencies:
1003
1003
  zova-module-a-pay:
1004
- specifier: ^5.0.5
1004
+ specifier: ^5.0.7
1005
1005
  version: link:modules/a-pay
1006
1006
  zova-module-pay-mock:
1007
- specifier: ^5.0.3
1007
+ specifier: ^5.0.5
1008
1008
  version: link:modules/pay-mock
1009
1009
  zova-module-pay-paypal:
1010
1010
  specifier: ^5.0.2
@@ -1076,7 +1076,7 @@ importers:
1076
1076
  specifier: ^5.1.25
1077
1077
  version: link:modules/a-fetch
1078
1078
  zova-module-a-form:
1079
- specifier: ^5.1.47
1079
+ specifier: ^5.1.48
1080
1080
  version: link:modules/a-form
1081
1081
  zova-module-a-icon:
1082
1082
  specifier: ^5.1.27
@@ -1112,7 +1112,7 @@ importers:
1112
1112
  specifier: ^5.1.23
1113
1113
  version: link:modules/a-ssrhmr
1114
1114
  zova-module-a-ssrserver:
1115
- specifier: ^5.1.25
1115
+ specifier: ^5.1.26
1116
1116
  version: link:modules/a-ssrserver
1117
1117
  zova-module-a-style:
1118
1118
  specifier: ^5.1.35
@@ -1124,7 +1124,7 @@ importers:
1124
1124
  specifier: ^5.1.37
1125
1125
  version: link:modules/a-zod
1126
1126
  zova-module-a-zova:
1127
- specifier: ^5.1.101
1127
+ specifier: ^5.1.102
1128
1128
  version: link:modules/a-zova
1129
1129
 
1130
1130
  src/suite-vendor/a-zova/modules/a-api:
@@ -1466,7 +1466,7 @@ importers:
1466
1466
  specifier: ^3.7.2
1467
1467
  version: 3.7.2
1468
1468
  zova-jsx:
1469
- specifier: ^1.1.86
1469
+ specifier: ^1.1.87
1470
1470
  version: link:../../../../../packages-utils/zova-jsx
1471
1471
  devDependencies:
1472
1472
  '@cabloy/cli':
@@ -1999,6 +1999,9 @@ importers:
1999
1999
  '@tiptap/core':
2000
2000
  specifier: ^3.30.0
2001
2001
  version: 3.30.0(@tiptap/pm@3.30.0)
2002
+ '@tiptap/extension-code-block-lowlight':
2003
+ specifier: 3.30.0
2004
+ version: 3.30.0(@tiptap/core@3.30.0(@tiptap/pm@3.30.0))(@tiptap/extension-code-block@3.30.0(@tiptap/core@3.30.0(@tiptap/pm@3.30.0))(@tiptap/pm@3.30.0))(@tiptap/pm@3.30.0)(highlight.js@11.11.2)(lowlight@3.3.0)
2002
2005
  '@tiptap/extension-highlight':
2003
2006
  specifier: ^3.30.0
2004
2007
  version: 3.30.0(@tiptap/core@3.30.0(@tiptap/pm@3.30.0))
@@ -2020,6 +2023,9 @@ importers:
2020
2023
  '@tiptap/vue-3':
2021
2024
  specifier: ^3.30.0
2022
2025
  version: 3.30.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.30.0(@tiptap/pm@3.30.0))(@tiptap/pm@3.30.0)(vue@3.5.38(typescript@5.9.3))
2026
+ lowlight:
2027
+ specifier: ^3.3.0
2028
+ version: 3.3.0
2023
2029
  devDependencies:
2024
2030
  clean-package:
2025
2031
  specifier: ^2.2.0
@@ -4368,6 +4374,15 @@ packages:
4368
4374
  peerDependencies:
4369
4375
  '@tiptap/extension-list': 3.30.0
4370
4376
 
4377
+ '@tiptap/extension-code-block-lowlight@3.30.0':
4378
+ resolution: {integrity: sha512-SDWMmqBe38o1ORmpx2rEzuxjbmUr50/XqMtwzaE/k6jHQ8tovIcTpAEbXEBj0hSDFdeZaFZnuOGVX85Y6SHQyQ==}
4379
+ peerDependencies:
4380
+ '@tiptap/core': 3.30.0
4381
+ '@tiptap/extension-code-block': 3.30.0
4382
+ '@tiptap/pm': 3.30.0
4383
+ highlight.js: ^11
4384
+ lowlight: ^2 || ^3
4385
+
4371
4386
  '@tiptap/extension-code-block@3.30.0':
4372
4387
  resolution: {integrity: sha512-m0KcCiUijaHNqTQCw9ydKRAzOrWxL0MogQu2WnTrbSrtCBwSiRvbG3ocqv5L3OfkoqnezeZCSg9JRwN+QBLP4Q==}
4373
4388
  peerDependencies:
@@ -4568,6 +4583,9 @@ packages:
4568
4583
  '@types/har-format@1.2.16':
4569
4584
  resolution: {integrity: sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==}
4570
4585
 
4586
+ '@types/hast@3.0.5':
4587
+ resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==}
4588
+
4571
4589
  '@types/http-errors@2.0.5':
4572
4590
  resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==}
4573
4591
 
@@ -6106,6 +6124,10 @@ packages:
6106
6124
  header-case@2.0.4:
6107
6125
  resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==}
6108
6126
 
6127
+ highlight.js@11.11.2:
6128
+ resolution: {integrity: sha512-oaXMACAU0kzOMXBjWpNcX+vlwSBCIAiZ9BHa7gA15NOTtT2L/l8OSZDuqS2XppOhZBPJ7hm4o8ep2kyuip2uEQ==}
6129
+ engines: {node: '>=12.0.0'}
6130
+
6109
6131
  hono@4.12.27:
6110
6132
  resolution: {integrity: sha512-1yrb/+w6HWQJrUCLkJ2IF5jNIPvvFkblV5RNOYl6bV+OA6p9GLcMpHFFGTosSvHvcAUibuUukRqhlYI4z32C7Q==}
6111
6133
  engines: {node: '>=16.9.0'}
@@ -6639,6 +6661,9 @@ packages:
6639
6661
  lower-case@2.0.2:
6640
6662
  resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
6641
6663
 
6664
+ lowlight@3.3.0:
6665
+ resolution: {integrity: sha512-0JNhgFoPvP6U6lE/UdVsSq99tn6DhjjpAj5MxG49ewd2mOBVtwWYIT8ClyABhq198aXXODMU6Ox8DrGy/CpTZQ==}
6666
+
6642
6667
  lru-cache@10.4.3:
6643
6668
  resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
6644
6669
 
@@ -10473,6 +10498,14 @@ snapshots:
10473
10498
  dependencies:
10474
10499
  '@tiptap/extension-list': 3.30.0(@tiptap/core@3.30.0(@tiptap/pm@3.30.0))(@tiptap/pm@3.30.0)
10475
10500
 
10501
+ '@tiptap/extension-code-block-lowlight@3.30.0(@tiptap/core@3.30.0(@tiptap/pm@3.30.0))(@tiptap/extension-code-block@3.30.0(@tiptap/core@3.30.0(@tiptap/pm@3.30.0))(@tiptap/pm@3.30.0))(@tiptap/pm@3.30.0)(highlight.js@11.11.2)(lowlight@3.3.0)':
10502
+ dependencies:
10503
+ '@tiptap/core': 3.30.0(@tiptap/pm@3.30.0)
10504
+ '@tiptap/extension-code-block': 3.30.0(@tiptap/core@3.30.0(@tiptap/pm@3.30.0))(@tiptap/pm@3.30.0)
10505
+ '@tiptap/pm': 3.30.0
10506
+ highlight.js: 11.11.2
10507
+ lowlight: 3.3.0
10508
+
10476
10509
  '@tiptap/extension-code-block@3.30.0(@tiptap/core@3.30.0(@tiptap/pm@3.30.0))(@tiptap/pm@3.30.0)':
10477
10510
  dependencies:
10478
10511
  '@tiptap/core': 3.30.0(@tiptap/pm@3.30.0)
@@ -10715,6 +10748,10 @@ snapshots:
10715
10748
 
10716
10749
  '@types/har-format@1.2.16': {}
10717
10750
 
10751
+ '@types/hast@3.0.5':
10752
+ dependencies:
10753
+ '@types/unist': 3.0.3
10754
+
10718
10755
  '@types/http-errors@2.0.5': {}
10719
10756
 
10720
10757
  '@types/js-cookie@3.0.6': {}
@@ -12529,6 +12566,8 @@ snapshots:
12529
12566
  capital-case: 1.0.4
12530
12567
  tslib: 2.8.1
12531
12568
 
12569
+ highlight.js@11.11.2: {}
12570
+
12532
12571
  hono@4.12.27: {}
12533
12572
 
12534
12573
  hookable@6.1.1: {}
@@ -12975,6 +13014,12 @@ snapshots:
12975
13014
  dependencies:
12976
13015
  tslib: 2.8.1
12977
13016
 
13017
+ lowlight@3.3.0:
13018
+ dependencies:
13019
+ '@types/hast': 3.0.5
13020
+ devlop: 1.1.0
13021
+ highlight.js: 11.11.2
13022
+
12978
13023
  lru-cache@10.4.3: {}
12979
13024
 
12980
13025
  lru-cache@11.5.1: {}
@@ -1,5 +1,7 @@
1
1
  import type { ZovaConfigOptional, ZovaSys } from 'zova';
2
2
 
3
+ import { LocalePattern } from 'zova';
4
+
3
5
  export default function (_sys: ZovaSys) {
4
6
  const config: ZovaConfigOptional = {};
5
7
 
@@ -9,7 +11,7 @@ export default function (_sys: ZovaSys) {
9
11
  '/home/indexadmin/dashboard': undefined,
10
12
  },
11
13
  name: {
12
- 'home-indexweb:home': { alias: '/:locale(zh-cn)?' },
14
+ 'home-indexweb:home': { alias: `/:locale(${LocalePattern})?` },
13
15
  },
14
16
  };
15
17
 
@@ -1,5 +1,7 @@
1
1
  import type { ZovaConfigOptional, ZovaSys } from 'zova';
2
2
 
3
+ import { LocalePattern } from 'zova';
4
+
3
5
  export default function (_sys: ZovaSys) {
4
6
  const config: ZovaConfigOptional = {};
5
7
 
@@ -8,8 +10,8 @@ export default function (_sys: ZovaSys) {
8
10
  '/home/indexadmin/dashboard': undefined,
9
11
  },
10
12
  name: {
11
- 'commerce-catalog:catalogue': { alias: '/:locale(zh-cn)?' },
12
- 'commerce-catalog:product': { alias: '/:locale(zh-cn)?/product/:id' },
13
+ 'commerce-catalog:catalogue': { alias: `/:locale(${LocalePattern})?` },
14
+ 'commerce-catalog:product': { alias: `/:locale(${LocalePattern})?/product/:id` },
13
15
  'home-indexweb:home': undefined,
14
16
  },
15
17
  };