cabloy 5.1.51 → 5.1.53

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 (113) hide show
  1. package/.claude/skills/cabloy-contract-loop/SKILL.md +1 -1
  2. package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +11 -1
  3. package/.claude/skills/cabloy-workflow/SKILL.md +8 -4
  4. package/.claude/skills/cabloy-workflow/references/edition-detection.md +3 -2
  5. package/.github/workflows/docs-pages.yml +2 -0
  6. package/CHANGELOG.md +42 -0
  7. package/CLAUDE.md +7 -4
  8. package/README.md +36 -21
  9. package/cabloy-docs/.vitepress/config.mjs +171 -44
  10. package/cabloy-docs/ai/class-placement-rule.md +1 -0
  11. package/cabloy-docs/ai/cli-for-agents.md +1 -1
  12. package/cabloy-docs/ai/docs-skills-rules-mapping.md +1 -0
  13. package/cabloy-docs/ai/edition-consistency-checklist.md +150 -0
  14. package/cabloy-docs/ai/edition-detection.md +3 -3
  15. package/cabloy-docs/ai/global-bean-lookup.md +1 -0
  16. package/cabloy-docs/ai/introduction.md +47 -3
  17. package/cabloy-docs/ai/repo-guidance.md +2 -2
  18. package/cabloy-docs/ai/rules-and-config.md +1 -1
  19. package/cabloy-docs/ai/skills.md +2 -0
  20. package/cabloy-docs/ai/verification.md +1 -0
  21. package/cabloy-docs/ai/virtual-decorator-guidance.md +206 -0
  22. package/cabloy-docs/backend/introduction.md +2 -2
  23. package/cabloy-docs/backend/logger-guide.md +1 -1
  24. package/cabloy-docs/backend/quickstart.md +3 -3
  25. package/cabloy-docs/editions/cabloy-basic.md +4 -3
  26. package/cabloy-docs/editions/cabloy-start.md +34 -3
  27. package/cabloy-docs/editions/choosing-between-basic-and-start.md +84 -0
  28. package/cabloy-docs/editions/overview.md +114 -20
  29. package/cabloy-docs/frontend/css-in-js-guide.md +1 -1
  30. package/cabloy-docs/frontend/environment-config-guide.md +28 -0
  31. package/cabloy-docs/frontend/foundation.md +3 -2
  32. package/cabloy-docs/frontend/introduction.md +73 -4
  33. package/cabloy-docs/frontend/navigation-guards-guide.md +1 -1
  34. package/cabloy-docs/frontend/quickstart.md +4 -2
  35. package/cabloy-docs/frontend/scripts.md +2 -2
  36. package/cabloy-docs/frontend/ssr-env.md +23 -0
  37. package/cabloy-docs/frontend/theme-guide.md +140 -7
  38. package/cabloy-docs/fullstack/cli.md +118 -0
  39. package/cabloy-docs/fullstack/comparison-with-other-frameworks.md +117 -0
  40. package/cabloy-docs/fullstack/edition-collaboration-differences.md +3 -2
  41. package/cabloy-docs/fullstack/introduction.md +84 -34
  42. package/cabloy-docs/fullstack/quickstart.md +7 -4
  43. package/cabloy-docs/fullstack/vona-zova-integration.md +2 -2
  44. package/cabloy-docs/fullstack/vscode-extensions.md +126 -0
  45. package/cabloy-docs/index.md +39 -40
  46. package/cabloy-docs/reference/frontend-directory-structure.md +125 -0
  47. package/cabloy-docs/reference/glossary.md +2 -2
  48. package/cabloy-docs/reference/introduction.md +47 -0
  49. package/cabloy-docs/reference/package-map.md +2 -0
  50. package/cabloy-docs/reference/repo-scripts.md +5 -3
  51. package/package.json +1 -1
  52. package/vona/README.md +1 -1
  53. package/vona/pnpm-lock.yaml +383 -38
  54. package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/package.json +1 -1
  55. package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/.metadata/index.ts +49 -1
  56. package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/controller/memoryDiag.ts +97 -0
  57. package/vona/src/suite-vendor/a-cabloy/package.json +1 -1
  58. package/zova/README.md +1 -1
  59. package/zova/package.original.json +4 -4
  60. package/zova/packages-cli/cli/package.json +2 -2
  61. package/zova/packages-cli/cli-set-front/package.json +2 -2
  62. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.tools.metadata.ts +1 -1
  63. package/zova/packages-cli/cli-set-front/src/lib/bean/toolsMetadata/generateConfig.ts +2 -12
  64. package/zova/packages-utils/zova-jsx/package.json +2 -2
  65. package/zova/packages-utils/zova-vite/package.json +2 -2
  66. package/zova/packages-utils/zova-vite/templates/app/controller.tsx_ +3 -3
  67. package/zova/packages-zova/zova/package.json +3 -3
  68. package/zova/packages-zova/zova-core/package.json +2 -2
  69. package/zova/packages-zova/zova-core/src/bean/beanContainer.ts +3 -3
  70. package/zova/packages-zova/zova-core/src/bean/beanControllerPageBase.ts +1 -0
  71. package/zova/packages-zova/zova-core/src/core/component/module.ts +16 -16
  72. package/zova/packages-zova/zova-core/src/core/context/component.ts +35 -3
  73. package/zova/packages-zova/zova-core/src/core/context/util.ts +15 -11
  74. package/zova/packages-zova/zova-core/src/core/sys/config.ts +1 -1
  75. package/zova/pnpm-lock.yaml +1607 -1690
  76. package/zova/src/front/config/config/config.ts +1 -1
  77. package/zova/src/suite/a-demo/modules/demo-basic/src/.metadata/index.ts +11 -0
  78. package/zova/src/suite/a-demo/modules/demo-basic/src/.metadata/locales.ts +0 -15
  79. package/zova/src/suite/a-demo/modules/demo-basic/src/.metadata/page/toolMinimal.ts +9 -0
  80. package/zova/src/suite/a-demo/modules/demo-basic/src/page/toolMinimal/controller.tsx +11 -0
  81. package/zova/src/suite/a-demo/modules/demo-basic/src/routes.ts +10 -0
  82. package/zova/src/suite/a-devui/modules/devui-adapter/src/bean/meta.themeHandler.ts +1 -0
  83. package/zova/src/suite/a-home/modules/home-base/src/.metadata/locales.ts +0 -15
  84. package/zova/src/suite/a-home/modules/home-base/src/service/routerGuards.ts +1 -1
  85. package/zova/src/suite/a-home/modules/home-base/src/service/ssrLayout.ts +1 -0
  86. package/zova/src/suite/a-home/modules/home-layoutadmin/src/.metadata/locales.ts +0 -15
  87. package/zova/src/suite/a-home/modules/home-layoutweb/src/.metadata/locales.ts +0 -15
  88. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/controller.tsx +2 -2
  89. package/zova/src/suite/a-home/modules/home-login/src/.metadata/locales.ts +0 -15
  90. package/zova/src/suite/a-home/modules/home-passport/src/model/passport.ts +2 -2
  91. package/zova/src/suite/cabloy-basic/modules/basic-captcha/src/.metadata/locales.ts +0 -15
  92. package/zova/src/suite/cabloy-basic/modules/basic-form/src/.metadata/locales.ts +0 -15
  93. package/zova/src/suite/cabloy-basic/modules/basic-page/src/.metadata/locales.ts +0 -15
  94. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/.metadata/locales.ts +0 -15
  95. package/zova/src/suite/cabloy-basic/modules/basic-table/src/.metadata/locales.ts +0 -15
  96. package/zova/src/suite-vendor/a-zova/modules/a-interceptor/package.json +1 -1
  97. package/zova/src/suite-vendor/a-zova/modules/a-interceptor/src/bean/interceptor.jwt.ts +1 -1
  98. package/zova/src/suite-vendor/a-zova/modules/a-model/package.json +1 -1
  99. package/zova/src/suite-vendor/a-zova/modules/a-model/src/service/storage.ts +4 -5
  100. package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +1 -1
  101. package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/monkey.ts +1 -1
  102. package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +1 -1
  103. package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssr.ts +36 -1
  104. package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssrMetaStore.ts +8 -2
  105. package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/monkey.ts +3 -0
  106. package/zova/src/suite-vendor/a-zova/modules/a-ssrserver/package.json +1 -1
  107. package/zova/src/suite-vendor/a-zova/modules/a-ssrserver/src/service/ssrHandler.ts +70 -29
  108. package/zova/src/suite-vendor/a-zova/modules/a-style/package.json +1 -1
  109. package/zova/src/suite-vendor/a-zova/modules/a-style/src/bean/bean.theme.ts +6 -3
  110. package/zova/src/suite-vendor/a-zova/modules/a-zod/package.json +1 -1
  111. package/zova/src/suite-vendor/a-zova/modules/a-zod/src/.metadata/locales.ts +0 -15
  112. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
  113. package/zova/src/suite-vendor/a-zova/package.json +9 -9
@@ -72,42 +72,83 @@ export class ServiceSsrHandler extends BeanBase {
72
72
  onRenderedList.push(fn);
73
73
  },
74
74
  };
75
- // render
76
- const renderFn = await serverEntry(ssrContext);
77
- const [runtimePageContent, err] = await catchError(() => {
78
- return renderToString(renderFn, ssrContext);
79
- });
75
+ let renderFn;
76
+ let runtimePageContent = '';
77
+ let renderedError;
78
+ let onRenderedFlushed = false;
79
+ let renderedFinalized = false;
80
+ try {
81
+ // render
82
+ renderFn = await serverEntry(ssrContext);
83
+ const [runtimePageContentInner, err] = await catchError(() => {
84
+ return renderToString(renderFn, ssrContext);
85
+ });
86
+ if (runtimePageContentInner) {
87
+ runtimePageContent = runtimePageContentInner as string;
88
+ }
80
89
 
81
- const error = ssrContext._meta.renderError ?? err;
82
- onRenderedList.forEach(fn => {
83
- fn(error);
84
- });
85
- cast(ssrContext).rendered(error);
86
- if (error) {
87
- if (error instanceof Error) throw error;
88
- return error;
89
- }
90
+ const error = ssrContext._meta.renderError ?? err;
91
+ renderedError = error;
92
+ onRenderedList.forEach(fn => {
93
+ fn(error);
94
+ });
95
+ onRenderedFlushed = true;
96
+ cast(ssrContext).rendered(error);
97
+ renderedFinalized = true;
98
+ if (error) {
99
+ if (error instanceof Error) throw error;
100
+ return error;
101
+ }
90
102
 
91
- ssrContext._meta.runtimePageContent = runtimePageContent;
103
+ ssrContext._meta.runtimePageContent = runtimePageContent;
104
+
105
+ // @vitejs/plugin-vue injects code into a component's setup() that registers
106
+ // itself on ctx.modules. After the render, ctx.modules would contain all the
107
+ // components that have been instantiated during this render call.
108
+ const modules = cast(ssrContext).modules;
109
+ if (modules) {
110
+ ssrContext._meta.endingHeadTags += this._renderModulesPreload_zova(modules, {
111
+ ssrContext,
112
+ });
113
+ ssrContext._meta.endingHeadTags += this._renderModulesPreload(modules, {
114
+ ssrContext,
115
+ });
116
+ }
92
117
 
93
- // @vitejs/plugin-vue injects code into a component's setup() that registers
94
- // itself on ctx.modules. After the render, ctx.modules would contain all the
95
- // components that have been instantiated during this render call.
96
- ssrContext._meta.endingHeadTags += this._renderModulesPreload_zova(cast(ssrContext).modules, {
97
- ssrContext,
98
- });
99
- ssrContext._meta.endingHeadTags += this._renderModulesPreload(cast(ssrContext).modules, {
100
- ssrContext,
101
- });
118
+ const html = renderTemplate(ssrContext);
102
119
 
103
- const html = renderTemplate(ssrContext);
120
+ // transferCache
121
+ await this._renderTransferCache(options, route);
104
122
 
105
- // transferCache
106
- await this._renderTransferCache(options, route);
123
+ // todo: ssg
107
124
 
108
- // todo: ssg
125
+ return html;
126
+ } finally {
127
+ const context = cast(ssrContext);
128
+ if (!onRenderedFlushed) {
129
+ onRenderedList.forEach(fn => {
130
+ fn(renderedError);
131
+ });
132
+ }
133
+ if (!renderedFinalized && typeof context.rendered === 'function') {
134
+ context.rendered(renderedError);
135
+ }
136
+ onRenderedList.length = 0;
137
+ this._clearSsrContext(context);
138
+ renderFn = undefined;
139
+ }
140
+ }
109
141
 
110
- return html;
142
+ private _clearSsrContext(context): void {
143
+ context.modules?.clear?.();
144
+ if (context.__qMetaList?.length) {
145
+ context.__qMetaList.length = 0;
146
+ }
147
+ context.state = undefined;
148
+ context.stateDefer = undefined;
149
+ context.performAction = undefined;
150
+ context.rendered = undefined;
151
+ context._meta = undefined;
111
152
  }
112
153
 
113
154
  public async ensureReady(handlerNonce: number) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-style",
3
- "version": "5.1.25",
3
+ "version": "5.1.26",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "style",
6
6
  "keywords": [
@@ -66,7 +66,7 @@ export class BeanTheme extends BeanModelBase {
66
66
  }
67
67
 
68
68
  // not use watch.immediate for await done
69
- await this._applyThemeWrapper();
69
+ await this._applyInitialThemeAndSsrDualOutput();
70
70
  }
71
71
 
72
72
  protected __dispose__() {
@@ -77,9 +77,12 @@ export class BeanTheme extends BeanModelBase {
77
77
  this._dark = this._getDarkFromDarkMode(this.darkMode);
78
78
  }
79
79
 
80
- async _applyThemeWrapper() {
80
+ async _applyInitialThemeAndSsrDualOutput() {
81
+ // When server-side theme cookies are disabled, apply twice during SSR initialization so the
82
+ // server emits both data-ssr-theme-dark-false/true markers and the browser can resolve the
83
+ // final data-theme during bootstrap.
81
84
  await this._applyTheme();
82
- if (this.sys.config.ssr.ignoreCookieOnServer) {
85
+ if (this.sys.config.ssr.cookieDisabledOnServer) {
83
86
  this.toggleDark();
84
87
  await this._applyTheme();
85
88
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-zod",
3
- "version": "5.1.23",
3
+ "version": "5.1.24",
4
4
  "gitHead": "09d901d17140a80ee0764211b441cda72fd94663",
5
5
  "description": "",
6
6
  "keywords": [
@@ -1,7 +1,3 @@
1
- import type { TypeLocaleBase } from 'zova';
2
-
3
- import { useApp, useComputed } from 'zova';
4
-
5
1
  import locale_en_us from '../config/locale/en-us.js';
6
2
  import locale_zh_cn from '../config/locale/zh-cn.js';
7
3
 
@@ -9,14 +5,3 @@ export const locales = {
9
5
  'en-us': locale_en_us,
10
6
  'zh-cn': locale_zh_cn,
11
7
  };
12
-
13
- export function $useLocale<K extends keyof (typeof locales)[TypeLocaleBase]>(
14
- key: K,
15
- ...args: any[]
16
- ) {
17
- const app = useApp();
18
- const str = `a-zod::${key}`;
19
- return useComputed(() => {
20
- return app.meta.text(str, ...args);
21
- });
22
- }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-zova",
3
- "version": "5.1.60",
3
+ "version": "5.1.62",
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.54"
46
+ "zova-jsx": "^1.1.56"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@cabloy/cli": "^3.1.14",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-suite-a-zova",
3
- "version": "5.1.92",
3
+ "version": "5.1.94",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "zova",
6
6
  "license": "MIT",
@@ -18,21 +18,21 @@
18
18
  "zova-module-a-fetch": "^5.1.17",
19
19
  "zova-module-a-form": "^5.1.32",
20
20
  "zova-module-a-icon": "^5.1.20",
21
- "zova-module-a-interceptor": "^5.1.22",
21
+ "zova-module-a-interceptor": "^5.1.23",
22
22
  "zova-module-a-logger": "^5.1.20",
23
23
  "zova-module-a-meta": "^5.1.15",
24
- "zova-module-a-model": "^5.1.23",
25
- "zova-module-a-openapi": "^5.1.30",
24
+ "zova-module-a-model": "^5.1.24",
25
+ "zova-module-a-openapi": "^5.1.31",
26
26
  "zova-module-a-router": "^5.1.23",
27
27
  "zova-module-a-routerstack": "^5.1.20",
28
28
  "zova-module-a-routertabs": "^5.1.25",
29
- "zova-module-a-ssr": "^5.1.18",
29
+ "zova-module-a-ssr": "^5.1.20",
30
30
  "zova-module-a-ssrhmr": "^5.1.16",
31
- "zova-module-a-ssrserver": "^5.1.15",
32
- "zova-module-a-style": "^5.1.25",
31
+ "zova-module-a-ssrserver": "^5.1.16",
32
+ "zova-module-a-style": "^5.1.26",
33
33
  "zova-module-a-table": "^5.1.27",
34
- "zova-module-a-zod": "^5.1.23",
35
- "zova-module-a-zova": "^5.1.60"
34
+ "zova-module-a-zod": "^5.1.24",
35
+ "zova-module-a-zova": "^5.1.62"
36
36
  },
37
37
  "title": "a-zova"
38
38
  }