cabloy 5.1.16 → 5.1.19

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 (194) hide show
  1. package/{vona/.github/workflows/actions-cov-pg.yml → .github/workflows/vona-cov-pg.yml} +7 -9
  2. package/{vona/.github/workflows/project-test.yml → .github/workflows/vona-test-crud.yml} +12 -12
  3. package/{vona/.github/workflows/actions-test-mysql.yml → .github/workflows/vona-test-mysql.yml} +6 -3
  4. package/{vona/.github/workflows/actions-test-pg.yml → .github/workflows/vona-test-pg.yml} +6 -3
  5. package/{vona/.github/workflows/actions-test-sqlite3.yml → .github/workflows/vona-test-sqlite3.yml} +6 -3
  6. package/{vona/.github/workflows/actions-tsc.yml → .github/workflows/vona-tsc.yml} +6 -4
  7. package/.github/workflows/zova-ui.yml +39 -0
  8. package/.gitignore +0 -0
  9. package/LICENSE +0 -0
  10. package/package.json +26 -26
  11. package/scripts/init.ts +29 -6
  12. package/vona/README.md +0 -0
  13. package/vona/README.zh-CN.md +0 -0
  14. package/vona/docker-compose-original/docker-compose.original.yml +51 -0
  15. package/vona/env/.env.prod.docker +4 -1
  16. package/vona/packages-cli/cabloy-cli/LICENSE +0 -0
  17. package/vona/packages-cli/cabloy-cli/README.md +0 -0
  18. package/vona/packages-cli/cabloy-cli/package.json +1 -1
  19. package/vona/packages-cli/cabloy-cli/src/start.ts +7 -10
  20. package/vona/packages-cli/cabloy-cli/src/utils.ts +8 -0
  21. package/vona/packages-cli/cli/LICENSE +0 -0
  22. package/vona/packages-cli/cli/README.md +0 -0
  23. package/vona/packages-cli/cli/package.json +2 -1
  24. package/vona/packages-cli/cli/src/bin/vona.ts +15 -4
  25. package/vona/packages-cli/cli-set-api/LICENSE +0 -0
  26. package/vona/packages-cli/cli-set-api/README.md +0 -0
  27. package/vona/packages-cli/cli-set-api/cli/templates/create/module/boilerplate/_package.json +0 -0
  28. package/vona/packages-cli/cli-set-api/cli/templates/create/module/boilerplate/src/index.ts_ +0 -0
  29. package/vona/packages-cli/cli-set-api/cli/templates/create/suite/modules/.gitkeep +0 -0
  30. package/vona/packages-cli/cli-set-api/package.json +1 -1
  31. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.bin.test.ts +10 -1
  32. package/vona/packages-utils/babel-plugin-vona-bean-module/README.md +0 -0
  33. package/vona/packages-utils/babel-plugin-vona-bean-module/package.json +0 -0
  34. package/vona/packages-utils/cascade-extend/LICENSE +0 -0
  35. package/vona/packages-utils/cascade-extend/README.md +0 -0
  36. package/vona/packages-utils/cascade-extend/package.json +0 -0
  37. package/vona/packages-utils/compose/README.md +0 -0
  38. package/vona/packages-utils/compose/package.json +0 -0
  39. package/vona/packages-utils/deps/README.md +0 -0
  40. package/vona/packages-utils/deps/package.json +0 -0
  41. package/vona/packages-utils/dotenv/README.md +0 -0
  42. package/vona/packages-utils/dotenv/package.json +0 -0
  43. package/vona/packages-utils/extend/README.md +0 -0
  44. package/vona/packages-utils/extend/package.json +0 -0
  45. package/vona/packages-utils/json5/README.md +0 -0
  46. package/vona/packages-utils/json5/package.json +0 -0
  47. package/vona/packages-utils/localeutil/README.md +0 -0
  48. package/vona/packages-utils/localeutil/package.json +0 -0
  49. package/vona/packages-utils/module-glob/README.md +0 -0
  50. package/vona/packages-utils/module-glob/package.json +0 -0
  51. package/vona/packages-utils/module-info-pro/README.md +0 -0
  52. package/vona/packages-utils/module-info-pro/package.json +0 -0
  53. package/vona/packages-utils/password-hash-salt/LICENSE +0 -0
  54. package/vona/packages-utils/password-hash-salt/README.md +0 -0
  55. package/vona/packages-utils/password-hash-salt/package.json +0 -0
  56. package/vona/packages-utils/process-helper/README.md +0 -0
  57. package/vona/packages-utils/process-helper/package.json +0 -0
  58. package/vona/packages-utils/socket/package.json +0 -0
  59. package/vona/packages-utils/table-identity/LICENSE +0 -0
  60. package/vona/packages-utils/table-identity/README.md +0 -0
  61. package/vona/packages-utils/table-identity/package.json +0 -0
  62. package/vona/packages-utils/utils/README.md +0 -0
  63. package/vona/packages-utils/utils/package.json +0 -0
  64. package/vona/packages-utils/zod-errors-custom/package.json +0 -0
  65. package/vona/packages-utils/zod-openapi/package.json +0 -0
  66. package/vona/packages-utils/zod-query/package.json +0 -0
  67. package/vona/packages-vona/vona/LICENSE +0 -0
  68. package/vona/packages-vona/vona/README.md +0 -0
  69. package/vona/packages-vona/vona/README.zh-CN.md +0 -0
  70. package/vona/packages-vona/vona/package.json +1 -1
  71. package/vona/packages-vona/vona-core/package.json +0 -0
  72. package/vona/packages-vona/vona-core/src/index.ts +0 -0
  73. package/vona/packages-vona/vona-core/src/lib/bean/resource/error/errorClass.ts +0 -0
  74. package/vona/packages-vona/vona-core/src/lib/bean/resource/error/errorInternal.ts +0 -0
  75. package/vona/packages-vona/vona-core/src/lib/core/context.ts +0 -0
  76. package/vona/packages-vona/vona-core/src/lib/core/meta.ts +0 -0
  77. package/vona/packages-vona/vona-core/src/lib/locale/zh-cn.ts +0 -0
  78. package/vona/packages-vona/vona-core/src/lib/module/config.ts +0 -0
  79. package/vona/packages-vona/vona-core/src/lib/module/constant.ts +0 -0
  80. package/vona/packages-vona/vona-core/src/lib/module/errors.ts +0 -0
  81. package/vona/packages-vona/vona-core/src/lib/module/loader.ts +0 -0
  82. package/vona/packages-vona/vona-core/src/lib/module/locales.ts +0 -0
  83. package/vona/packages-vona/vona-core/src/lib/module/module.ts +0 -0
  84. package/vona/packages-vona/vona-core/src/lib/utils/util.ts +0 -0
  85. package/vona/packages-vona/vona-mock/README.md +0 -0
  86. package/vona/packages-vona/vona-mock/package.json +0 -0
  87. package/vona/packages-vona/vona-shared/LICENSE +0 -0
  88. package/vona/packages-vona/vona-shared/package.json +0 -0
  89. package/vona/pnpm-lock.yaml +9 -0
  90. package/vona/scripts/release.sh +0 -0
  91. package/vona/src/suite-vendor/a-auth/modules/a-auth/src/lib/strategyMock.ts +0 -0
  92. package/vona/src/suite-vendor/a-cabloy/modules/a-status/package.json +0 -0
  93. package/vona/src/suite-vendor/a-cabloy/modules/a-status/src/model/status.ts +0 -0
  94. package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +1 -1
  95. package/vona/src/suite-vendor/a-vona/modules/a-instance/package.json +0 -0
  96. package/vona/src/suite-vendor/a-vona/modules/a-instance/src/index.ts +0 -0
  97. package/vona/src/suite-vendor/a-vona/modules/a-version/package.json +0 -0
  98. package/vona/src/suite-vendor/a-vona/modules/a-version/src/config/errors.ts +0 -0
  99. package/vona/src/suite-vendor/a-vona/modules/a-version/src/config/locale/zh-cn.ts +0 -0
  100. package/vona/src/suite-vendor/a-vona/modules/a-version/src/index.ts +0 -0
  101. package/vona/src/suite-vendor/a-vona/modules/test-vona/package.json +1 -1
  102. package/vona/src/suite-vendor/a-vona/modules/test-vona/test/mail.test.ts +1 -1
  103. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  104. package/zova/packages-cli/cli/LICENSE +0 -0
  105. package/zova/packages-cli/cli/README.md +0 -0
  106. package/zova/packages-cli/cli/package.json +3 -3
  107. package/zova/packages-cli/cli-set-front/LICENSE +0 -0
  108. package/zova/packages-cli/cli-set-front/README.md +0 -0
  109. package/zova/packages-cli/cli-set-front/cli/templates/create/module/boilerplate/_package.json +0 -0
  110. package/zova/packages-cli/cli-set-front/cli/templates/create/module/boilerplate/src/index.ts_ +0 -0
  111. package/zova/packages-cli/cli-set-front/cli/templates/create/suite/modules/.gitkeep +0 -0
  112. package/zova/packages-cli/cli-set-front/package.json +2 -2
  113. package/zova/packages-utils/babel-plugin-zova-bean-module/LICENSE +0 -0
  114. package/zova/packages-utils/babel-plugin-zova-bean-module/README.md +0 -0
  115. package/zova/packages-utils/babel-plugin-zova-bean-module/package.json +0 -0
  116. package/zova/packages-utils/babel-plugin-zova-bean-use/LICENSE +0 -0
  117. package/zova/packages-utils/babel-plugin-zova-bean-use/README.md +0 -0
  118. package/zova/packages-utils/babel-plugin-zova-bean-use/package.json +0 -0
  119. package/zova/packages-utils/babel-plugin-zova-behavior/LICENSE +0 -0
  120. package/zova/packages-utils/babel-plugin-zova-behavior/README.md +0 -0
  121. package/zova/packages-utils/babel-plugin-zova-behavior/package.json +0 -0
  122. package/zova/packages-utils/babel-plugin-zova-component/LICENSE +0 -0
  123. package/zova/packages-utils/babel-plugin-zova-component/README.md +0 -0
  124. package/zova/packages-utils/babel-plugin-zova-component/package.json +0 -0
  125. package/zova/packages-utils/logger/LICENSE +0 -0
  126. package/zova/packages-utils/logger/README.md +0 -0
  127. package/zova/packages-utils/logger/package.json +0 -0
  128. package/zova/packages-utils/mutate-on-copy/LICENSE +0 -0
  129. package/zova/packages-utils/mutate-on-copy/README.md +0 -0
  130. package/zova/packages-utils/mutate-on-copy/package.json +0 -0
  131. package/zova/packages-utils/quasar-app-extension-zova/LICENSE +0 -0
  132. package/zova/packages-utils/word-utils/LICENSE +0 -0
  133. package/zova/packages-utils/word-utils/README.md +0 -0
  134. package/zova/packages-utils/word-utils/package.json +0 -0
  135. package/zova/packages-utils/zova-jsx/LICENSE +0 -0
  136. package/zova/packages-utils/zova-jsx/package.json +0 -0
  137. package/zova/packages-utils/zova-openapi/LICENSE +0 -0
  138. package/zova/packages-utils/zova-openapi/package.json +0 -0
  139. package/zova/packages-utils/zova-vite/LICENSE +0 -0
  140. package/zova/packages-utils/zova-vite/README.md +0 -0
  141. package/zova/packages-utils/zova-vite/package.json +0 -0
  142. package/zova/packages-zova/zova/LICENSE +0 -0
  143. package/zova/packages-zova/zova/package.json +2 -2
  144. package/zova/packages-zova/zova-core/LICENSE +0 -0
  145. package/zova/packages-zova/zova-core/README.md +0 -0
  146. package/zova/packages-zova/zova-core/package.json +0 -0
  147. package/zova/packages-zova/zova-core/src/bean/resource/error/errorClass.ts +0 -0
  148. package/zova/packages-zova/zova-core/src/bean/resource/error/errorInternal.ts +0 -0
  149. package/zova/pnpm-lock.yaml +14 -14
  150. package/zova/scripts/release.sh +0 -0
  151. package/zova/src/suite/a-home/modules/home-index/package.json +0 -0
  152. package/zova/src/suite/a-home/modules/home-index/src/routes.ts +0 -0
  153. package/zova/src/suite-vendor/a-cabloy/LICENSE +0 -0
  154. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/LICENSE +0 -0
  155. package/zova/src/suite-vendor/a-zova/LICENSE +0 -0
  156. package/zova/src/suite-vendor/a-zova/modules/a-api/LICENSE +0 -0
  157. package/zova/src/suite-vendor/a-zova/modules/a-app/LICENSE +0 -0
  158. package/zova/src/suite-vendor/a-zova/modules/a-bean/LICENSE +0 -0
  159. package/zova/src/suite-vendor/a-zova/modules/a-behavior/LICENSE +0 -0
  160. package/zova/src/suite-vendor/a-zova/modules/a-behaviors/LICENSE +0 -0
  161. package/zova/src/suite-vendor/a-zova/modules/a-boundary/LICENSE +0 -0
  162. package/zova/src/suite-vendor/a-zova/modules/a-command/LICENSE +0 -0
  163. package/zova/src/suite-vendor/a-zova/modules/a-fetch/LICENSE +0 -0
  164. package/zova/src/suite-vendor/a-zova/modules/a-form/LICENSE +0 -0
  165. package/zova/src/suite-vendor/a-zova/modules/a-icon/LICENSE +0 -0
  166. package/zova/src/suite-vendor/a-zova/modules/a-interceptor/LICENSE +0 -0
  167. package/zova/src/suite-vendor/a-zova/modules/a-logger/LICENSE +0 -0
  168. package/zova/src/suite-vendor/a-zova/modules/a-meta/LICENSE +0 -0
  169. package/zova/src/suite-vendor/a-zova/modules/a-model/LICENSE +0 -0
  170. package/zova/src/suite-vendor/a-zova/modules/a-openapi/LICENSE +0 -0
  171. package/zova/src/suite-vendor/a-zova/modules/a-router/LICENSE +0 -0
  172. package/zova/src/suite-vendor/a-zova/modules/a-routerstack/LICENSE +0 -0
  173. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/LICENSE +0 -0
  174. package/zova/src/suite-vendor/a-zova/modules/a-ssr/LICENSE +0 -0
  175. package/zova/src/suite-vendor/a-zova/modules/a-ssrhmr/LICENSE +0 -0
  176. package/zova/src/suite-vendor/a-zova/modules/a-ssrserver/LICENSE +0 -0
  177. package/zova/src/suite-vendor/a-zova/modules/a-style/LICENSE +0 -0
  178. package/zova/src/suite-vendor/a-zova/modules/a-table/LICENSE +0 -0
  179. package/zova/src/suite-vendor/a-zova/modules/a-zod/LICENSE +0 -0
  180. package/zova/src/suite-vendor/a-zova/modules/a-zova/LICENSE +0 -0
  181. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
  182. package/zova/src/suite-vendor/a-zova/package.json +2 -2
  183. package/vona/.github/workflows/docs-deploy.yml +0 -70
  184. package/vona/.vscode/extensions.json +0 -4
  185. package/vona/.vscode/settings.json +0 -52
  186. package/vona/.vscode/vona.code-snippets +0 -207
  187. package/vona/docker-compose.original.yml +0 -88
  188. package/zova/.github/workflows/actions-dev.yml +0 -24
  189. package/zova/.github/workflows/actions-ui.yml +0 -45
  190. package/zova/.github/workflows/deploy.yml +0 -72
  191. package/zova/.vscode/extensions.json +0 -9
  192. package/zova/.vscode/settings.json +0 -44
  193. package/zova/.vscode/zova.code-snippets +0 -227
  194. /package/vona/{docker-compose-dockerfile-app → docker-compose-original/docker-compose-dockerfile-app} +0 -0
@@ -1,4 +1,4 @@
1
- name: actions-cov-pg
1
+ name: vona-cov-pg
2
2
  on:
3
3
  push:
4
4
  branches:
@@ -30,16 +30,14 @@ jobs:
30
30
  - uses: pnpm/action-setup@v5
31
31
  with:
32
32
  version: 10.19.0
33
- - run: cp package.original.json package.json
34
- - run: npm run init
35
- - uses: nick-fields/retry@v4
36
- with:
37
- timeout_minutes: 5
38
- max_attempts: 10
39
- command: |
40
- DATABASE_DEFAULT_CLIENT=pg npm run cov -- --ci
33
+ - name: init
34
+ run: npm run init
35
+ - name: cov
36
+ run: DATABASE_DEFAULT_CLIENT=pg npm run cov -- --ci
37
+ working-directory: vona
41
38
  - name: Upload coverage to Codecov
42
39
  uses: codecov/codecov-action@v6
43
40
  with:
44
41
  token: ${{ secrets.CODECOV_TOKEN }}
42
+ directory: vona
45
43
  verbose: true
@@ -1,4 +1,4 @@
1
- name: project-test
1
+ name: vona-test-crud
2
2
  on:
3
3
  push:
4
4
  branches:
@@ -23,17 +23,17 @@ jobs:
23
23
  - uses: pnpm/action-setup@v5
24
24
  with:
25
25
  version: 10.19.0
26
- - run: npm i vona-cli -g
27
- - run: vona :create:project vona-test --template=cabloy-basic
28
- - run: vona :create:module demo-student --suite --ci
29
- working-directory: vona-test
30
- - run: pnpm install --no-frozen-lockfile
31
- working-directory: vona-test
32
- - run: vona :tools:crud student --module=demo-student
33
- working-directory: vona-test
26
+ - name: init
27
+ run: npm run init
28
+ - run: npm run vona :create:module demo-student -- --suite --ci
29
+ working-directory: vona
30
+ - run: npm run vona :tools:deps
31
+ working-directory: vona
32
+ - run: npm run vona :tools:crud student -- --module=demo-student
33
+ working-directory: vona
34
34
  - run: npm run test
35
- working-directory: vona-test
35
+ working-directory: vona
36
36
  - run: npm run build -- --flavor=ci
37
- working-directory: vona-test
37
+ working-directory: vona
38
38
  - run: npm run play -- --mode=prod --flavor=ci
39
- working-directory: vona-test
39
+ working-directory: vona
@@ -1,4 +1,4 @@
1
- name: actions-test-mysql
1
+ name: vona-test-mysql
2
2
  on:
3
3
  push:
4
4
  branches:
@@ -30,8 +30,11 @@ jobs:
30
30
  - uses: pnpm/action-setup@v5
31
31
  with:
32
32
  version: 10.19.0
33
- - run: cp package.original.json package.json
34
- - run: npm run init
33
+ - name: init
34
+ run: npm run init
35
35
  - run: DATABASE_DEFAULT_CLIENT=mysql DATABASE_CLIENT_MYSQL_HOST=127.0.0.1 DATABASE_CLIENT_MYSQL_PASSWORD=root npm run test
36
+ working-directory: vona
36
37
  - run: DATABASE_DEFAULT_CLIENT=mysql DATABASE_CLIENT_MYSQL_HOST=127.0.0.1 DATABASE_CLIENT_MYSQL_PASSWORD=root npm run build -- --flavor=ci
38
+ working-directory: vona
37
39
  - run: DATABASE_DEFAULT_CLIENT=mysql DATABASE_CLIENT_MYSQL_HOST=127.0.0.1 DATABASE_CLIENT_MYSQL_PASSWORD=root npm run play -- --mode=prod --flavor=ci
40
+ working-directory: vona
@@ -1,4 +1,4 @@
1
- name: actions-test-pg
1
+ name: vona-test-pg
2
2
  on:
3
3
  push:
4
4
  branches:
@@ -30,8 +30,11 @@ jobs:
30
30
  - uses: pnpm/action-setup@v5
31
31
  with:
32
32
  version: 10.19.0
33
- - run: cp package.original.json package.json
34
- - run: npm run init
33
+ - name: init
34
+ run: npm run init
35
35
  - run: DATABASE_DEFAULT_CLIENT=pg npm run test
36
+ working-directory: vona
36
37
  - run: DATABASE_DEFAULT_CLIENT=pg npm run build -- --flavor=ci
38
+ working-directory: vona
37
39
  - run: DATABASE_DEFAULT_CLIENT=pg npm run play -- --mode=prod --flavor=ci
40
+ working-directory: vona
@@ -1,4 +1,4 @@
1
- name: actions-test-sqlite3
1
+ name: vona-test-sqlite3
2
2
  on:
3
3
  push:
4
4
  branches:
@@ -23,8 +23,11 @@ jobs:
23
23
  - uses: pnpm/action-setup@v5
24
24
  with:
25
25
  version: 10.19.0
26
- - run: cp package.original.json package.json
27
- - run: npm run init
26
+ - name: init
27
+ run: npm run init
28
28
  - run: DATABASE_DEFAULT_CLIENT=sqlite3 npm run test
29
+ working-directory: vona
29
30
  - run: DATABASE_DEFAULT_CLIENT=sqlite3 npm run build -- --flavor=ci
31
+ working-directory: vona
30
32
  - run: DATABASE_DEFAULT_CLIENT=sqlite3 npm run play -- --mode=prod --flavor=ci
33
+ working-directory: vona
@@ -1,4 +1,4 @@
1
- name: actions-tsc
1
+ name: vona-tsc
2
2
  on:
3
3
  push:
4
4
  branches:
@@ -18,6 +18,8 @@ jobs:
18
18
  - uses: pnpm/action-setup@v5
19
19
  with:
20
20
  version: 10.19.0
21
- - run: cp package.original.json package.json
22
- - run: npm run init
23
- - run: npm run tsc
21
+ - name: init
22
+ run: npm run init
23
+ - name: tsc
24
+ run: npm run tsc
25
+ working-directory: vona
@@ -0,0 +1,39 @@
1
+ name: zova-ui
2
+ on:
3
+ push:
4
+ branches:
5
+ - main
6
+ jobs:
7
+ unittest:
8
+ strategy:
9
+ fail-fast: false
10
+ matrix:
11
+ node-version: [24]
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v6
15
+ - uses: actions/setup-node@v6
16
+ with:
17
+ node-version: ${{ matrix.node-version }}
18
+ - uses: pnpm/action-setup@v5
19
+ with:
20
+ version: 10.19.0
21
+ - name: init
22
+ run: npm run init
23
+ - name: suite
24
+ run: npm run zova :create:suite test-demo
25
+ working-directory: zova
26
+ - name: module
27
+ run: npm run zova :create:module test-demo -- --suite=test-demo --ci
28
+ working-directory: zova
29
+ - run: npm run zova :tools:deps
30
+ working-directory: zova
31
+ - name: page
32
+ run: npm run zova :create:page first -- --module=test-demo
33
+ working-directory: zova
34
+ - name: component
35
+ run: npm run zova :create:component child -- --module=test-demo
36
+ working-directory: zova
37
+ - name: npm run build
38
+ run: npm run build
39
+ working-directory: zova
package/.gitignore CHANGED
File without changes
package/LICENSE CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cabloy",
3
- "version": "5.1.16",
3
+ "version": "5.1.19",
4
4
  "description": "A Node.js fullstack framework",
5
5
  "keywords": [
6
6
  "cabloy",
@@ -19,10 +19,32 @@
19
19
  "url": "git+https://github.com/cabloy/cabloy.git"
20
20
  },
21
21
  "type": "module",
22
+ "devDependencies": {
23
+ "@cabloy/lint": "^5.1.21",
24
+ "@cabloy/process-helper": "^3.1.3",
25
+ "@types/fs-extra": "^11.0.4",
26
+ "@types/node": "^22.19.17",
27
+ "husky": "^9.1.7",
28
+ "lint-staged": "^17.0.5",
29
+ "minimist": "^1.2.8",
30
+ "oxfmt": "^0.45.0",
31
+ "oxlint": "^1.65.0",
32
+ "textlint": "^15.7.0",
33
+ "textlint-rule-en-no-mixed-period": "^3.0.2",
34
+ "textlint-rule-ja-no-mixed-period": "^3.0.2",
35
+ "textlint-rule-ja-space-between-half-and-full-width": "^2.4.2",
36
+ "textlint-rule-period-in-list-item": "^1.0.1",
37
+ "typescript": "^5.9.3"
38
+ },
39
+ "engines": {
40
+ "node": ">=24.4.0"
41
+ },
22
42
  "scripts": {
23
43
  "init": "pnpm install --no-frozen-lockfile && node scripts/init.ts",
24
44
  "upgrade": "node scripts/upgrade.ts",
25
45
  "upgrade:dry-run": "node scripts/upgrade.ts --dry-run",
46
+ "vona": "node ./vona/packages-cli/cli/src/bin/vona.ts --projectPath=vona",
47
+ "zova": "node ./zova/packages-cli/cli/src/bin/zova.ts --projectPath=zova",
26
48
  "dev": "cd vona && npm run dev",
27
49
  "build": "pnpm --dir zova run build:ssr:cabloyBasicBatch && pnpm --dir vona run build",
28
50
  "build:docker": "pnpm --dir zova run build:ssr:cabloyBasicBatch && pnpm --dir vona run build:docker",
@@ -41,28 +63,6 @@
41
63
  "release:dry-run": "node scripts/release.ts --dry-run",
42
64
  "release:changelog": "node scripts/release.ts --changelog-only",
43
65
  "release:publish": "node scripts/release.ts --publish-only",
44
- "release:github": "node scripts/release.ts --release-only",
45
- "prepare": "husky"
46
- },
47
- "devDependencies": {
48
- "@cabloy/lint": "^5.1.21",
49
- "@cabloy/process-helper": "^3.1.3",
50
- "@types/fs-extra": "^11.0.4",
51
- "@types/node": "^22.19.17",
52
- "husky": "^9.1.7",
53
- "lint-staged": "^17.0.5",
54
- "minimist": "^1.2.8",
55
- "oxfmt": "^0.45.0",
56
- "oxlint": "^1.65.0",
57
- "textlint": "^15.7.0",
58
- "textlint-rule-en-no-mixed-period": "^3.0.2",
59
- "textlint-rule-ja-no-mixed-period": "^3.0.2",
60
- "textlint-rule-ja-space-between-half-and-full-width": "^2.4.2",
61
- "textlint-rule-period-in-list-item": "^1.0.1",
62
- "typescript": "^5.9.3"
63
- },
64
- "engines": {
65
- "node": ">=24.4.0"
66
- },
67
- "packageManager": "pnpm@10.19.0"
68
- }
66
+ "release:github": "node scripts/release.ts --release-only"
67
+ }
68
+ }
package/scripts/init.ts CHANGED
@@ -1,6 +1,14 @@
1
1
  import { execSync } from 'node:child_process';
2
2
  import { randomBytes, randomInt, randomUUID } from 'node:crypto';
3
- import { copyFileSync, cpSync, existsSync, readFileSync, writeFileSync } from 'node:fs';
3
+ import {
4
+ copyFileSync,
5
+ cpSync,
6
+ existsSync,
7
+ readdirSync,
8
+ readFileSync,
9
+ rmSync,
10
+ writeFileSync,
11
+ } from 'node:fs';
4
12
  import { basename } from 'node:path';
5
13
  import { dirname, resolve } from 'node:path';
6
14
  import { fileURLToPath } from 'node:url';
@@ -28,6 +36,17 @@ function exec(cmd: string): void {
28
36
  execSync(cmd, { stdio: 'inherit', cwd: ROOT_DIR });
29
37
  }
30
38
 
39
+ function deleteGitkeepFiles(dir: string): void {
40
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
41
+ const fullPath = resolve(dir, entry.name);
42
+ if (entry.isDirectory()) {
43
+ deleteGitkeepFiles(fullPath);
44
+ } else if (entry.name === '.gitkeep') {
45
+ rmSync(fullPath);
46
+ }
47
+ }
48
+ }
49
+
31
50
  // --- Step 0: Set APP_NAME in .env files ---
32
51
 
33
52
  function setAppName(): void {
@@ -63,7 +82,6 @@ function generateEnvProdLocal(): void {
63
82
 
64
83
  function generateEnvProdDockerLocal(): void {
65
84
  const envFilePath = resolve(ROOT_DIR, 'vona/env/.env.prod.docker.local');
66
- const composeFilePath = resolve(ROOT_DIR, 'vona/docker-compose.yml');
67
85
  if (existsSync(envFilePath)) {
68
86
  // eslint-disable-next-line
69
87
  console.log('[init] vona/env/.env.prod.docker.local already exists, skipping');
@@ -87,8 +105,9 @@ function generateEnvProdDockerLocal(): void {
87
105
  if (!existsSync(composeDirTarget)) {
88
106
  cpSync(composeDirOriginal, composeDirTarget, {
89
107
  recursive: true,
90
- filter: src => !src.includes('.DS_Store'),
108
+ filter: src => !src.includes('.DS_Store') && !src.endsWith('docker-compose.original.yml'),
91
109
  });
110
+ deleteGitkeepFiles(composeDirTarget);
92
111
  // eslint-disable-next-line
93
112
  console.log('[init] Generated vona/docker-compose directory');
94
113
  } else {
@@ -96,8 +115,12 @@ function generateEnvProdDockerLocal(): void {
96
115
  console.log('[init] vona/docker-compose directory already exists, skipping');
97
116
  }
98
117
 
99
- // Generate docker-compose.yml from original
100
- const composeOriginalPath = resolve(ROOT_DIR, 'vona/docker-compose.original.yml');
118
+ // Generate docker-compose.yml from template
119
+ const composeOriginalPath = resolve(
120
+ ROOT_DIR,
121
+ 'vona/docker-compose-original/docker-compose.original.yml',
122
+ );
123
+ const composeFilePath = resolve(ROOT_DIR, 'vona/docker-compose/docker-compose.yml');
101
124
  let composeContent = readFileSync(composeOriginalPath, 'utf-8');
102
125
  composeContent = composeContent.replace(
103
126
  /POSTGRES_PASSWORD:\s*'<placeholder>'/,
@@ -113,7 +136,7 @@ function generateEnvProdDockerLocal(): void {
113
136
  );
114
137
  writeFileSync(composeFilePath, composeContent);
115
138
  // eslint-disable-next-line
116
- console.log('[init] Generated vona/docker-compose.yml');
139
+ console.log('[init] Generated vona/docker-compose/docker-compose.yml');
117
140
  }
118
141
 
119
142
  // --- Step C: init:vona ---
package/vona/README.md CHANGED
File without changes
File without changes
@@ -0,0 +1,51 @@
1
+ services:
2
+ app:
3
+ depends_on:
4
+ - pg
5
+ - redis
6
+ build:
7
+ context: ..
8
+ dockerfile: docker-compose/docker-compose-dockerfile-app
9
+ restart: always
10
+ ports:
11
+ - '7202:7102'
12
+ volumes:
13
+ - ./output/dist/docker:/opt/node/app/dist/docker
14
+ - ./output/app/.vona:/root/.vona
15
+ command: [./scripts/wait-for-it.sh, 'pg:5432', 'redis:6379', -s, --, ./scripts/app-init.sh]
16
+
17
+ nginx:
18
+ image: nginx:latest
19
+ depends_on:
20
+ - app
21
+ restart: always
22
+ ports:
23
+ - '80:80'
24
+ volumes:
25
+ - ./output/app/.vona:/usr/share/nginx/app/.vona
26
+ - ./logs/nginx:/var/log/nginx
27
+ - ./config/nginx/conf.d:/etc/nginx/conf.d
28
+
29
+ pg:
30
+ image: postgres:17
31
+ restart: always
32
+ ports:
33
+ - '35432:5432'
34
+ # set shared memory limit when using docker compose
35
+ shm_size: 128mb
36
+ # or set shared memory limit when deploy via swarm stack
37
+ volumes:
38
+ - ./data/pg:/var/lib/postgresql/data
39
+ environment:
40
+ POSTGRES_DB: vona
41
+ POSTGRES_USER: postgres
42
+ POSTGRES_PASSWORD: '<placeholder>'
43
+
44
+ redis:
45
+ image: redis:latest
46
+ command: [redis-server, --appendonly, yes]
47
+ restart: always
48
+ ports:
49
+ - '36379:6379'
50
+ volumes:
51
+ - ./data/redis:/data
@@ -5,11 +5,14 @@ SERVER_WORKERS = 1
5
5
 
6
6
  # build
7
7
 
8
+ BUILD_MINIFY = false
8
9
  BUILD_COPY_DIST = ./docker-compose/output/dist
9
10
 
10
11
  # database
11
12
 
12
- DATABASE_DEFAULT_CLIENT = 'sqlite3' # sqlite3/pg/mysql
13
+ DATABASE_DEFAULT_CLIENT = 'pg' # sqlite3/pg/mysql
14
+
15
+ DATABASE_CLIENT_SQLITE3_NATIVEBINDING = false
13
16
 
14
17
  DATABASE_CLIENT_PG_HOST = pg # see: docker-compose.yml
15
18
  DATABASE_CLIENT_PG_PORT = 5432
File without changes
File without changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cabloy/cli",
3
- "version": "3.1.13",
3
+ "version": "3.1.14",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "@cabloy/cli",
6
6
  "keywords": [
@@ -7,6 +7,7 @@ import type { ICommandArgv } from './types/argv.ts';
7
7
  import { BeanCli } from './lib/bean.cli.ts';
8
8
  import { CliCommand } from './lib/cli.ts';
9
9
  import { collectCommands } from './lib/commands.ts';
10
+ import { parseProjectPath } from './utils.ts';
10
11
 
11
12
  const DISPATCH = Symbol.for('eb:Command#dispatch');
12
13
  const PARSE = Symbol.for('eb:Command#parse');
@@ -42,24 +43,20 @@ export class CabloyCommand extends CommonBin {
42
43
  const parsed = await this[PARSE](this.rawArgv);
43
44
  // argv
44
45
  const argv = {
45
- projectPath: process.cwd(),
46
+ projectPath: parseProjectPath(parsed.projectPath),
46
47
  } as ICommandArgv;
47
48
  // indexBrandName
48
- const indexBrandName = this.rawArgv.indexOf(this.brandName);
49
+ const indexBrandName = parsed._.indexOf(this.brandName);
49
50
  // cli
50
- const indexCommand = indexBrandName > -1 ? indexBrandName + 1 : 0;
51
- Object.assign(argv, this._prepareCliFullName(parsed._[indexCommand]));
51
+ const commandName = parsed._[indexBrandName + 1];
52
+ const indexCommand = this.rawArgv.indexOf(commandName);
53
+ Object.assign(argv, this._prepareCliFullName(commandName));
52
54
  // cli meta
53
55
  const context = { brandName: this.brandName, argv };
54
56
  const beanCli = new BeanCli();
55
57
  const meta = await beanCli.meta({ context });
56
58
  // cli run
57
- const rawArgv = this.rawArgv.slice();
58
- if (indexBrandName > -1) {
59
- rawArgv.splice(0, indexBrandName + 2);
60
- } else {
61
- rawArgv.splice(0, 1);
62
- }
59
+ const rawArgv = this.rawArgv.slice(indexCommand + 1);
63
60
  const command = new CliCommand(rawArgv, { meta, argv });
64
61
  await command[DISPATCH]();
65
62
  // should not force exit, let app shutdown gracefully
@@ -3,6 +3,7 @@ import type { VonaMetaFlavor } from '@cabloy/module-info';
3
3
  import boxen from 'boxen';
4
4
  import chalk from 'chalk';
5
5
  import { createRequire } from 'node:module';
6
+ import path from 'node:path';
6
7
  import semver from 'semver';
7
8
  import urllib from 'urllib';
8
9
 
@@ -59,3 +60,10 @@ export function patchFlavor(
59
60
  ): VonaMetaFlavor | undefined {
60
61
  return Array.isArray(flavor) ? flavor[flavor.length - 1] : flavor;
61
62
  }
63
+
64
+ export function parseProjectPath(projectPath?: string) {
65
+ const projectPathDefault = process.cwd();
66
+ if (!projectPath) return projectPathDefault;
67
+ if (path.isAbsolute(projectPath)) return projectPath;
68
+ return path.join(projectPathDefault, projectPath);
69
+ }
File without changes
File without changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-cli",
3
- "version": "1.1.102",
3
+ "version": "1.1.103",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "vona cli",
6
6
  "keywords": [
@@ -38,6 +38,7 @@
38
38
  "@cabloy/cli": "workspace:^",
39
39
  "@cabloy/process-helper": "workspace:^",
40
40
  "fs-extra": "^11.3.4",
41
+ "mri": "^1.2.0",
41
42
  "semver": "^7.7.4",
42
43
  "vona-cli-set-api": "workspace:^"
43
44
  },
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ import { parseProjectPath } from '@cabloy/cli';
3
4
  import { ProcessHelper } from '@cabloy/process-helper';
5
+ import mri from 'mri';
4
6
  import semver from 'semver';
5
7
 
6
8
  import { playAttach } from '../play.ts';
@@ -30,22 +32,31 @@ async function checkPnpm() {
30
32
  }
31
33
 
32
34
  async function main() {
35
+ const rawArgv = process.argv.slice(2);
36
+ const _args = mri(rawArgv, {
37
+ boolean: ['force', 'help', 'version'],
38
+ alias: { h: 'help', v: 'version' },
39
+ });
40
+ const projectPath = parseProjectPath(_args.projectPath);
33
41
  // args
34
42
  let args: string[] = [];
35
- const rawArgv = process.argv.slice(2);
36
- const isPlay = rawArgv[0] === 'play';
43
+ const isPlay = _args._[0] === 'play';
37
44
  const isPlayAttach = isPlay && (rawArgv.includes('-a') || rawArgv.includes('--attach'));
38
45
  if (isPlay) {
39
46
  if (!isPlayAttach) {
40
47
  args = args.concat([':bin:play']);
41
48
  }
42
- args = args.concat(rawArgv.slice(1)).concat(['--dummy']);
49
+ const indexPlay = rawArgv.indexOf('play');
50
+ args = args.concat(rawArgv.slice(indexPlay + 1)).concat(['--dummy']);
51
+ if (_args.projectPath) {
52
+ args = [`--projectPath=${_args.projectPath}`].concat(args);
53
+ }
43
54
  } else {
44
55
  args = rawArgv;
45
56
  }
46
57
  // run
47
58
  if (isPlayAttach) {
48
- await playAttach(process.cwd(), args);
59
+ await playAttach(projectPath, args);
49
60
  } else {
50
61
  if (!isPlay) {
51
62
  await checkPnpm();
File without changes
File without changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-cli-set-api",
3
- "version": "1.1.100",
3
+ "version": "1.1.101",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "vona cli-set-api",
6
6
  "keywords": [
@@ -50,7 +50,16 @@ export class CliBinTest extends BeanCliBase {
50
50
  async _run(projectPath: string, modulesMeta: Awaited<ReturnType<typeof glob>>) {
51
51
  const { argv } = this.context;
52
52
  // globs
53
- const patterns = this._combineTestPatterns(projectPath, modulesMeta);
53
+ let patterns;
54
+ if (argv._.length > 0) {
55
+ patterns = argv._.map(item => {
56
+ if (item.startsWith('src/')) return item;
57
+ if (item.startsWith('vona/src/')) return item.substring('vona/'.length);
58
+ return `src/**/test/**/${item}`;
59
+ });
60
+ } else {
61
+ patterns = this._combineTestPatterns(projectPath, modulesMeta);
62
+ }
54
63
  // testFile
55
64
  let testFile = path.join(import.meta.dirname, '../../../toolsIsolate/test.ts');
56
65
  if (!fse.existsSync(testFile)) {
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes