cabloy 5.1.50 → 5.1.52
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.
- package/.claude/skills/cabloy-backend-scaffold/SKILL.md +207 -0
- package/.claude/skills/cabloy-backend-scaffold/evals/evals.json +29 -0
- package/.claude/skills/cabloy-backend-scaffold/references/backend-thread-map.md +52 -0
- package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +39 -0
- package/.claude/skills/cabloy-contract-loop/SKILL.md +201 -0
- package/.claude/skills/cabloy-contract-loop/evals/evals.json +29 -0
- package/.claude/skills/cabloy-contract-loop/references/contract-loop-map.md +47 -0
- package/.claude/skills/cabloy-contract-loop/references/verification-checklist.md +32 -0
- package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +230 -0
- package/.claude/skills/cabloy-frontend-scaffold/evals/evals.json +35 -0
- package/.claude/skills/cabloy-frontend-scaffold/references/follow-up-checklist.md +41 -0
- package/.claude/skills/cabloy-frontend-scaffold/references/frontend-thread-map.md +54 -0
- package/.claude/skills/cabloy-workflow/SKILL.md +292 -0
- package/.claude/skills/cabloy-workflow/evals/evals.json +35 -0
- package/.claude/skills/cabloy-workflow/references/cli-strategy.md +39 -0
- package/.claude/skills/cabloy-workflow/references/edition-detection.md +30 -0
- package/.github/workflows/docs-pages.yml +56 -0
- package/.gitignore +1 -0
- package/CHANGELOG.md +54 -0
- package/CLAUDE.md +59 -0
- package/README.md +152 -0
- package/cabloy-docs/.vitepress/config.mjs +255 -0
- package/cabloy-docs/.vitepress/public/CNAME +1 -0
- package/cabloy-docs/.vitepress/theme/custom.css +64 -0
- package/cabloy-docs/.vitepress/theme/edition-badges.md +5 -0
- package/cabloy-docs/.vitepress/theme/index.js +5 -0
- package/cabloy-docs/ai/class-placement-rule.md +139 -0
- package/cabloy-docs/ai/cli-for-agents.md +56 -0
- package/cabloy-docs/ai/cli-to-skill-map.md +165 -0
- package/cabloy-docs/ai/docs-skills-rules-mapping.md +168 -0
- package/cabloy-docs/ai/edition-consistency-checklist.md +150 -0
- package/cabloy-docs/ai/edition-detection.md +30 -0
- package/cabloy-docs/ai/future-skill-roadmap.md +135 -0
- package/cabloy-docs/ai/global-bean-lookup.md +158 -0
- package/cabloy-docs/ai/introduction.md +62 -0
- package/cabloy-docs/ai/playbook-backend-module.md +111 -0
- package/cabloy-docs/ai/playbook-contract-regeneration.md +100 -0
- package/cabloy-docs/ai/playbook-frontend-page.md +99 -0
- package/cabloy-docs/ai/playbook-metadata-refresh.md +67 -0
- package/cabloy-docs/ai/repo-guidance.md +58 -0
- package/cabloy-docs/ai/rules-and-config.md +29 -0
- package/cabloy-docs/ai/skills.md +37 -0
- package/cabloy-docs/ai/verification.md +31 -0
- package/cabloy-docs/ai/virtual-decorator-guidance.md +206 -0
- package/cabloy-docs/backend/aop-overview.md +128 -0
- package/cabloy-docs/backend/auth-guide.md +151 -0
- package/cabloy-docs/backend/backend-essentials.md +128 -0
- package/cabloy-docs/backend/broadcast-guide.md +138 -0
- package/cabloy-docs/backend/cache-guide.md +70 -0
- package/cabloy-docs/backend/captcha-guide.md +162 -0
- package/cabloy-docs/backend/cli.md +173 -0
- package/cabloy-docs/backend/config-guide.md +249 -0
- package/cabloy-docs/backend/controller-aop-guide.md +270 -0
- package/cabloy-docs/backend/controller-guide.md +347 -0
- package/cabloy-docs/backend/crud-workflow.md +118 -0
- package/cabloy-docs/backend/dto-guide.md +161 -0
- package/cabloy-docs/backend/dto-infer-generation.md +153 -0
- package/cabloy-docs/backend/dynamic-datasource-guide.md +70 -0
- package/cabloy-docs/backend/election-guide.md +141 -0
- package/cabloy-docs/backend/entity-guide.md +150 -0
- package/cabloy-docs/backend/error-guide.md +108 -0
- package/cabloy-docs/backend/event-guide.md +183 -0
- package/cabloy-docs/backend/external-aop-guide.md +149 -0
- package/cabloy-docs/backend/field-indexes.md +79 -0
- package/cabloy-docs/backend/foundation.md +281 -0
- package/cabloy-docs/backend/i18n-guide.md +211 -0
- package/cabloy-docs/backend/internal-aop-guide.md +181 -0
- package/cabloy-docs/backend/introduction.md +95 -0
- package/cabloy-docs/backend/jwt-guide.md +276 -0
- package/cabloy-docs/backend/logger-guide.md +223 -0
- package/cabloy-docs/backend/mail-guide.md +189 -0
- package/cabloy-docs/backend/menu-guide.md +80 -0
- package/cabloy-docs/backend/migration-and-changes.md +192 -0
- package/cabloy-docs/backend/model-guide.md +274 -0
- package/cabloy-docs/backend/multi-database-datasource.md +171 -0
- package/cabloy-docs/backend/multi-instance-and-instance-resolution.md +196 -0
- package/cabloy-docs/backend/openapi-guide.md +118 -0
- package/cabloy-docs/backend/orm-aggregate-group-guide.md +210 -0
- package/cabloy-docs/backend/orm-configuration-guide.md +165 -0
- package/cabloy-docs/backend/orm-guide.md +109 -0
- package/cabloy-docs/backend/orm-mutation-guide.md +195 -0
- package/cabloy-docs/backend/orm-select-guide.md +243 -0
- package/cabloy-docs/backend/queue-guide.md +271 -0
- package/cabloy-docs/backend/quickstart.md +141 -0
- package/cabloy-docs/backend/redis-guide.md +70 -0
- package/cabloy-docs/backend/redlock-guide.md +60 -0
- package/cabloy-docs/backend/relations-guide.md +250 -0
- package/cabloy-docs/backend/runtime-and-flavors.md +304 -0
- package/cabloy-docs/backend/schedule-guide.md +81 -0
- package/cabloy-docs/backend/scripts.md +116 -0
- package/cabloy-docs/backend/serialization-guide.md +192 -0
- package/cabloy-docs/backend/service-guide.md +166 -0
- package/cabloy-docs/backend/sharding-guide.md +49 -0
- package/cabloy-docs/backend/startup-guide.md +326 -0
- package/cabloy-docs/backend/transaction-guide.md +82 -0
- package/cabloy-docs/backend/unit-testing.md +209 -0
- package/cabloy-docs/backend/upload-guide.md +160 -0
- package/cabloy-docs/backend/user-access-guide.md +157 -0
- package/cabloy-docs/backend/validation-guide.md +80 -0
- package/cabloy-docs/backend/worker-guide.md +59 -0
- package/cabloy-docs/editions/cabloy-basic.md +26 -0
- package/cabloy-docs/editions/cabloy-start.md +55 -0
- package/cabloy-docs/editions/choosing-between-basic-and-start.md +84 -0
- package/cabloy-docs/editions/detection.md +31 -0
- package/cabloy-docs/editions/overview.md +107 -0
- package/cabloy-docs/frontend/api-guide.md +93 -0
- package/cabloy-docs/frontend/api-schema-guide.md +43 -0
- package/cabloy-docs/frontend/app-startup-guide.md +185 -0
- package/cabloy-docs/frontend/cli.md +78 -0
- package/cabloy-docs/frontend/component-guide.md +105 -0
- package/cabloy-docs/frontend/component-props-guide.md +97 -0
- package/cabloy-docs/frontend/component-v-model-guide.md +110 -0
- package/cabloy-docs/frontend/css-in-js-guide.md +151 -0
- package/cabloy-docs/frontend/design-principles.md +55 -0
- package/cabloy-docs/frontend/environment-config-guide.md +250 -0
- package/cabloy-docs/frontend/foundation.md +58 -0
- package/cabloy-docs/frontend/generic-component-guide.md +35 -0
- package/cabloy-docs/frontend/icon-engine-guide.md +88 -0
- package/cabloy-docs/frontend/introduction.md +33 -0
- package/cabloy-docs/frontend/ioc-and-beans.md +211 -0
- package/cabloy-docs/frontend/mock-guide.md +109 -0
- package/cabloy-docs/frontend/model-architecture.md +87 -0
- package/cabloy-docs/frontend/model-state-guide.md +70 -0
- package/cabloy-docs/frontend/module-scope.md +168 -0
- package/cabloy-docs/frontend/modules-and-suites.md +179 -0
- package/cabloy-docs/frontend/navigation-guards-guide.md +68 -0
- package/cabloy-docs/frontend/openapi-sdk-guide.md +102 -0
- package/cabloy-docs/frontend/page-guide.md +223 -0
- package/cabloy-docs/frontend/page-params-guide.md +87 -0
- package/cabloy-docs/frontend/page-query-guide.md +96 -0
- package/cabloy-docs/frontend/page-route-guide.md +147 -0
- package/cabloy-docs/frontend/quickstart.md +202 -0
- package/cabloy-docs/frontend/route-alias-guide.md +61 -0
- package/cabloy-docs/frontend/scripts.md +86 -0
- package/cabloy-docs/frontend/sdk-guide.md +45 -0
- package/cabloy-docs/frontend/server-data.md +74 -0
- package/cabloy-docs/frontend/ssr-client-only.md +40 -0
- package/cabloy-docs/frontend/ssr-env.md +51 -0
- package/cabloy-docs/frontend/ssr-init-data.md +46 -0
- package/cabloy-docs/frontend/ssr-overview.md +48 -0
- package/cabloy-docs/frontend/ssr-seo-meta.md +52 -0
- package/cabloy-docs/frontend/system-startup-guide.md +186 -0
- package/cabloy-docs/frontend/theme-guide.md +154 -0
- package/cabloy-docs/frontend/zod-guide.md +161 -0
- package/cabloy-docs/fullstack/cli.md +118 -0
- package/cabloy-docs/fullstack/comparison-with-other-frameworks.md +117 -0
- package/cabloy-docs/fullstack/edition-collaboration-differences.md +62 -0
- package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +64 -0
- package/cabloy-docs/fullstack/introduction.md +81 -0
- package/cabloy-docs/fullstack/openapi-to-sdk.md +116 -0
- package/cabloy-docs/fullstack/quickstart.md +89 -0
- package/cabloy-docs/fullstack/vona-zova-integration.md +86 -0
- package/cabloy-docs/fullstack/vscode-extensions.md +126 -0
- package/cabloy-docs/index.md +72 -0
- package/cabloy-docs/package.json +16 -0
- package/cabloy-docs/pnpm-lock.yaml +1607 -0
- package/cabloy-docs/reference/backend-directory-structure.md +88 -0
- package/cabloy-docs/reference/cli-reference.md +49 -0
- package/cabloy-docs/reference/glossary.md +38 -0
- package/cabloy-docs/reference/package-map.md +105 -0
- package/cabloy-docs/reference/repo-scripts.md +36 -0
- package/package.json +4 -1
- package/scripts/init.ts +12 -0
- package/scripts/upgrade.ts +31 -3
- package/vona/README.md +4 -4
- package/vona/README.zh-CN.md +4 -4
- package/vona/packages-vona/vona/package.json +1 -1
- package/vona/pnpm-lock.yaml +383 -38
- package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/package.json +1 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/src/bean/summerCache.datasourceWrite.ts +2 -2
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/package.json +1 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/.metadata/index.ts +49 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/controller/memoryDiag.ts +97 -0
- package/vona/src/suite-vendor/a-cabloy/package.json +1 -1
- package/vona/src/suite-vendor/a-captcha/modules/a-captcha/package.json +1 -1
- package/vona/src/suite-vendor/a-captcha/modules/a-captcha/src/bean/cacheRedis.captcha.ts +2 -2
- package/vona/src/suite-vendor/a-captcha/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-bean/cli/bean/metadata/generate.ts +5 -6
- package/vona/src/suite-vendor/a-vona/modules/a-bean/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-cache/cli/cacheMem/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-cache/cli/cacheRedis/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-cache/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-cache/src/.metadata/index.ts +13 -2
- package/vona/src/suite-vendor/a-vona/modules/a-cache/src/bean/bean.cache.ts +6 -7
- package/vona/src/suite-vendor/a-vona/modules/a-cache/src/{bean/bean.cacheMemBase.ts → service/cacheMemBase_.ts} +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-cache/src/{bean/bean.cacheRedisBase.ts → service/cacheRedisBase_.ts} +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.emailConfirm.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.passwordReset.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-openapi/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-openapi/src/bean/summerCache.json.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-orm/cli/databaseDialect/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/.metadata/index.ts +4 -3
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/bean.database.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/bean.model.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/bean/schedule.softDeletionPrune.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/common/utils.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/index.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_cache.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_meta.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.modelBase.ts +0 -5
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoAggregate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoCreate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGet.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoGroup.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoMutate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoSelectAndCount.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/dto/dtoUpdate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/index.ts +1 -0
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/modelCacheBase.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relations.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsDynamic.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsMutate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/relationsStatic.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/cacheEntity_.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/cacheQuery_.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/database.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean/bean.databaseDialectBase.ts → service/databaseDialectBase_.ts} +38 -41
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/db_.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/relations_.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/database.ts +0 -5
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoGet.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoMutate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/dto/dtoSelectAndCount.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/model.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelAggr.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelCount.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelGeneral.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelGroup.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelIncrement.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relations.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsColumns.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDef.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDefDynamic.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsDefMutate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsMutate.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/relationsTables.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.betterSqlite3.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.mysql.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/src/bean/databaseDialect.pg.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/bean.permission.ts +109 -40
- package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/summerCache.permission.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-startup/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-startup/src/bean/cacheRedis.startupDebounce.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-summer/cli/boilerplate/{{sceneName}}.{{beanName}}.ts_ +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-summer/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-summer/src/.metadata/index.ts +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-summer/src/bean/bean.summer.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-summer/src/service/localMem_.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-summer/src/service/localRedis_.ts +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-summer/src/{bean/bean.summerCacheBase.ts → service/summerCacheBase_.ts} +3 -3
- package/vona/src/suite-vendor/a-vona/modules/a-swagger/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-swagger/src/bean/summerCache.rapidoc.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-swagger/src/bean/summerCache.swagger.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-user/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-user/src/bean/cacheRedis.authToken.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-worker/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-worker/src/bean/cacheRedis.workerAlive.ts +2 -2
- package/vona/src/suite-vendor/a-vona/package.json +1 -1
- package/zova/README.md +5 -5
- package/zova/README.zh-CN.md +4 -4
- package/zova/package.original.json +4 -4
- package/zova/packages-cli/cli/package.json +2 -2
- package/zova/packages-cli/cli-set-front/package.json +2 -2
- package/zova/packages-utils/zova-jsx/package.json +2 -2
- package/zova/packages-utils/zova-vite/package.json +2 -2
- package/zova/packages-utils/zova-vite/templates/app/controller.tsx_ +3 -3
- package/zova/packages-zova/zova/package.json +3 -3
- package/zova/packages-zova/zova-core/package.json +2 -2
- package/zova/packages-zova/zova-core/src/bean/beanContainer.ts +3 -3
- package/zova/packages-zova/zova-core/src/bean/beanControllerPageBase.ts +1 -0
- package/zova/packages-zova/zova-core/src/core/component/module.ts +16 -16
- package/zova/packages-zova/zova-core/src/core/context/component.ts +35 -3
- package/zova/packages-zova/zova-core/src/core/context/util.ts +15 -11
- package/zova/pnpm-lock.yaml +1596 -1679
- package/zova/src/suite/a-demo/modules/demo-basic/src/.metadata/index.ts +11 -0
- package/zova/src/suite/a-demo/modules/demo-basic/src/.metadata/page/toolMinimal.ts +9 -0
- package/zova/src/suite/a-demo/modules/demo-basic/src/page/toolMinimal/controller.tsx +11 -0
- package/zova/src/suite/a-demo/modules/demo-basic/src/routes.ts +10 -0
- package/zova/src/suite-vendor/a-zova/modules/a-model/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-model/src/service/storage.ts +4 -5
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/src/monkey.ts +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssr.ts +36 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssrMetaStore.ts +7 -2
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/monkey.ts +3 -0
- package/zova/src/suite-vendor/a-zova/modules/a-ssrserver/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssrserver/src/service/ssrHandler.ts +70 -29
- package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/package.json +6 -6
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud.ts +0 -0
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud_inner.ts +0 -0
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_crud_table.ts +0 -0
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_knex.ts +0 -0
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_utils.ts +0 -0
- /package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_view.ts +0 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# CLI Strategy Reference
|
|
2
|
+
|
|
3
|
+
## Principle
|
|
4
|
+
|
|
5
|
+
The Vona and Zova CLIs already encode many framework conventions. A good Cabloy workflow should reuse them before writing files manually.
|
|
6
|
+
|
|
7
|
+
## Vona
|
|
8
|
+
|
|
9
|
+
Look for command families such as:
|
|
10
|
+
|
|
11
|
+
- `bin:*`
|
|
12
|
+
- `create:*`
|
|
13
|
+
- `init:*`
|
|
14
|
+
- `tools:*`
|
|
15
|
+
|
|
16
|
+
These commonly cover backend scaffolding, initialization, metadata, CRUD workflows, and verification.
|
|
17
|
+
|
|
18
|
+
## Zova
|
|
19
|
+
|
|
20
|
+
Look for command families such as:
|
|
21
|
+
|
|
22
|
+
- `bin:*`
|
|
23
|
+
- `create:*`
|
|
24
|
+
- `init:*`
|
|
25
|
+
- `refactor:*`
|
|
26
|
+
- `tools:*`
|
|
27
|
+
- `openapi:*`
|
|
28
|
+
|
|
29
|
+
These commonly cover frontend scaffolding, refactors, metadata, and OpenAPI-related generation.
|
|
30
|
+
|
|
31
|
+
## Practical rule
|
|
32
|
+
|
|
33
|
+
Before suggesting manual scaffolding, check whether the request can be translated into:
|
|
34
|
+
|
|
35
|
+
1. a Vona command
|
|
36
|
+
2. a Zova command
|
|
37
|
+
3. a short CLI + inspect + verify loop
|
|
38
|
+
|
|
39
|
+
If yes, recommend that path first.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Edition Detection Reference
|
|
2
|
+
|
|
3
|
+
## Primary markers
|
|
4
|
+
|
|
5
|
+
Use these root markers first:
|
|
6
|
+
|
|
7
|
+
- `__CABLOY_BASIC__`
|
|
8
|
+
- `__CABLOY_START__`
|
|
9
|
+
|
|
10
|
+
## Why the markers matter
|
|
11
|
+
|
|
12
|
+
They prevent the most common category error in Cabloy AI work: assuming Cabloy Basic and Cabloy Start are interchangeable.
|
|
13
|
+
|
|
14
|
+
That assumption is especially dangerous for:
|
|
15
|
+
|
|
16
|
+
- UI-layer-sensitive examples
|
|
17
|
+
- frontend flavor names
|
|
18
|
+
- page/component workflows
|
|
19
|
+
- suite/module availability
|
|
20
|
+
- SSR site baselines and project assets
|
|
21
|
+
- docs and skills that try to support both repos
|
|
22
|
+
|
|
23
|
+
## Secondary checks
|
|
24
|
+
|
|
25
|
+
After the marker is identified, confirm the active workflow against:
|
|
26
|
+
|
|
27
|
+
- the repository or workspace `package.json` that owns the active scripts
|
|
28
|
+
- relevant `npm run vona` or `npm run zova` usage
|
|
29
|
+
- edition-specific flavor names in scripts
|
|
30
|
+
- nearby module or suite layout
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
name: docs-pages
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches:
|
|
5
|
+
- main
|
|
6
|
+
paths:
|
|
7
|
+
- 'cabloy-docs/**'
|
|
8
|
+
- 'README.md'
|
|
9
|
+
- '.github/workflows/docs-pages.yml'
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
pages: write
|
|
15
|
+
id-token: write
|
|
16
|
+
|
|
17
|
+
concurrency:
|
|
18
|
+
group: docs-pages
|
|
19
|
+
cancel-in-progress: true
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
build:
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v6
|
|
26
|
+
- uses: pnpm/action-setup@v5
|
|
27
|
+
with:
|
|
28
|
+
version: 10.19.0
|
|
29
|
+
- uses: actions/setup-node@v6
|
|
30
|
+
with:
|
|
31
|
+
node-version: 24
|
|
32
|
+
cache: pnpm
|
|
33
|
+
cache-dependency-path: cabloy-docs/pnpm-lock.yaml
|
|
34
|
+
- name: install docs dependencies
|
|
35
|
+
run: pnpm --dir cabloy-docs install --frozen-lockfile
|
|
36
|
+
- name: build docs
|
|
37
|
+
env:
|
|
38
|
+
GA_MEASUREMENT_ID: ${{ vars.GA_MEASUREMENT_ID }}
|
|
39
|
+
run: pnpm --dir cabloy-docs docs:build
|
|
40
|
+
- name: setup pages
|
|
41
|
+
uses: actions/configure-pages@v5
|
|
42
|
+
- name: upload pages artifact
|
|
43
|
+
uses: actions/upload-pages-artifact@v4
|
|
44
|
+
with:
|
|
45
|
+
path: cabloy-docs/.vitepress/dist
|
|
46
|
+
|
|
47
|
+
deploy:
|
|
48
|
+
needs: build
|
|
49
|
+
runs-on: ubuntu-latest
|
|
50
|
+
environment:
|
|
51
|
+
name: github-pages
|
|
52
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
53
|
+
steps:
|
|
54
|
+
- name: deploy to github pages
|
|
55
|
+
id: deployment
|
|
56
|
+
uses: actions/deploy-pages@v4
|
package/.gitignore
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,59 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.1.52
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- Add SSR memory diagnostic endpoints.
|
|
8
|
+
- Expand framework capabilities across SSR, controller, module, component, utility, and runtime integration areas.
|
|
9
|
+
- Add virtual decorator guidance to the AI documentation.
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
- Correct runtime home paths in the documentation.
|
|
14
|
+
- Fix homepage scope badge layout in the documentation.
|
|
15
|
+
|
|
16
|
+
### Improvements
|
|
17
|
+
|
|
18
|
+
- Refine SSR internals and metadata handling.
|
|
19
|
+
- Polish controller and page base implementation details.
|
|
20
|
+
- Update monkey patching and runtime support code.
|
|
21
|
+
- Improve package metadata and lockfile consistency.
|
|
22
|
+
- Pass the GA measurement ID into the docs build pipeline.
|
|
23
|
+
- Add GA4 tracking support for the documentation site.
|
|
24
|
+
- Improve CLI, index, glossary, skill, and README documentation.
|
|
25
|
+
- Add and refine the Cabloy framework comparison and fullstack introduction content.
|
|
26
|
+
- Polish branding, wording, and AI vibe coding terminology across the docs.
|
|
27
|
+
|
|
28
|
+
## 5.1.51
|
|
29
|
+
|
|
30
|
+
### Features
|
|
31
|
+
|
|
32
|
+
- Add unified Cabloy documentation and root skills.
|
|
33
|
+
- Update the project with new capabilities.
|
|
34
|
+
|
|
35
|
+
### Bug Fixes
|
|
36
|
+
|
|
37
|
+
- Precompute default permissions from route metadata to ensure permission projection behaves correctly.
|
|
38
|
+
|
|
39
|
+
### Improvements
|
|
40
|
+
|
|
41
|
+
- Refresh documentation entry points and add a pages workflow.
|
|
42
|
+
- Update the quickstart and clarify onboarding and upgrade workflow guidance.
|
|
43
|
+
- Clarify documentation audiences, contributor scope, and implementation guidance across backend and reference docs.
|
|
44
|
+
- Separate project and contributor documentation entry points and improve root README positioning and overview.
|
|
45
|
+
- Expand unified migration, backend, frontend, auth, and AOP guides.
|
|
46
|
+
- Align Web/Admin terminology across English and Chinese documentation.
|
|
47
|
+
- Add architecture notes and internal engineering documentation structure for permission projection.
|
|
48
|
+
- Exclude internal engineering docs and Claude worktrees from published npm packages.
|
|
49
|
+
- Align global bean typing with metadata.
|
|
50
|
+
- Rename the database dialect base to match service naming.
|
|
51
|
+
- Move the model base chain into the library layer.
|
|
52
|
+
- Align service underscore registration semantics.
|
|
53
|
+
- Move the database dialect base into the service scene.
|
|
54
|
+
- Align B2 runtime anchors with the service scene.
|
|
55
|
+
- Add project site publishing support, including CNAME and publish workflow updates.
|
|
56
|
+
|
|
3
57
|
## 5.1.50
|
|
4
58
|
|
|
5
59
|
### Features
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Cabloy Monorepo Guidance
|
|
2
|
+
|
|
3
|
+
## Repository identity
|
|
4
|
+
|
|
5
|
+
This repository is **Cabloy Basic**, the public framework/reference edition, identified by the root marker file:
|
|
6
|
+
|
|
7
|
+
- `__CABLOY_BASIC__`
|
|
8
|
+
|
|
9
|
+
A sibling repository named `cabloy-start` is the private commercial edition, delivered as a licensed separate source repository and identified by:
|
|
10
|
+
|
|
11
|
+
- `__CABLOY_START__`
|
|
12
|
+
|
|
13
|
+
Always detect the active edition before making UI-sensitive assumptions, choosing frontend examples, recommending module-specific workflows, or assuming the project creation path.
|
|
14
|
+
|
|
15
|
+
## Monorepo layout
|
|
16
|
+
|
|
17
|
+
- `package.json` is the primary shared workflow entrypoint.
|
|
18
|
+
- `vona/` contains the backend framework, backend modules, and the Vona CLI.
|
|
19
|
+
- `zova/` contains the frontend framework, frontend modules, and the Zova CLI.
|
|
20
|
+
- `cabloy-docs/` contains the unified public documentation.
|
|
21
|
+
- `.docs-internal/` contains internal engineering notes and ADRs.
|
|
22
|
+
- `.claude/` contains Claude commands, skills, and settings.
|
|
23
|
+
|
|
24
|
+
## Preferred workflow
|
|
25
|
+
|
|
26
|
+
Before inventing a custom implementation path:
|
|
27
|
+
|
|
28
|
+
1. check the root `package.json`
|
|
29
|
+
2. detect the edition marker
|
|
30
|
+
3. inspect the relevant CLI entrypoint:
|
|
31
|
+
- `npm run vona`
|
|
32
|
+
- `npm run zova`
|
|
33
|
+
4. use existing command families before writing framework scaffolding manually
|
|
34
|
+
5. verify the result with targeted checks or shared root scripts
|
|
35
|
+
|
|
36
|
+
## Documentation boundary
|
|
37
|
+
|
|
38
|
+
- Put user-facing and agent-facing guidance in `cabloy-docs/`.
|
|
39
|
+
- Put maintainer rationale, architecture notes, and ADRs in `.docs-internal/`.
|
|
40
|
+
- Do not mix internal rationale into public how-to pages unless a trimmed user-facing explanation is genuinely needed.
|
|
41
|
+
|
|
42
|
+
## AI development rules
|
|
43
|
+
|
|
44
|
+
- Prefer CLI-backed workflows over manual scaffolding whenever Vona or Zova already provides a generator, refactor, metadata, or verification command.
|
|
45
|
+
- Treat legacy docs as input material, not as unquestioned truth. When docs conflict with source code, prefer current source code.
|
|
46
|
+
- For frontend work, assume Cabloy Basic and Cabloy Start share a frontend engineering layer but may diverge in UI layer, frontend flavors, suite/module availability, SSR site baselines, project assets, and generated outputs.
|
|
47
|
+
- Reuse existing repo terminology: Cabloy, Vona, Zova, suite, module, bean, SSR, SPA, Web, Admin.
|
|
48
|
+
- For backend base-class placement, use the A / B1 / B2 rule from `cabloy-docs/ai/class-placement-rule.md`.
|
|
49
|
+
- Pure helper bases belong in `src/lib`; subclass-only bases should be evaluated case by case and often belong in `src/lib`.
|
|
50
|
+
- Runtime-anchor bases that still require container-managed or selector/class-token behavior but should not be global beans should prefer `src/service` with `@Service()`.
|
|
51
|
+
- Service-scene runtime-anchor bases that should not register in `IBeanRecordGeneral` should prefer the `src/service/*_.ts` form.
|
|
52
|
+
- `src/bean` defines the global shorthand surface; classes that should not appear in `IBeanRecordGlobal` should move to `src/lib` or `src/service` rather than being filtered by `@Virtual()`.
|
|
53
|
+
- When backend code references `this.bean.xxx`, `ctx.bean.xxx`, or `app.bean.xxx`, use `IBeanRecordGlobal` and module `src/.metadata/index.ts` as the first static lookup surface; use `IBeanRecordGeneral` or `src/service` only when the target is not a global shorthand.
|
|
54
|
+
|
|
55
|
+
## Verification expectations
|
|
56
|
+
|
|
57
|
+
- For docs changes: run the docs build and verify links/navigation where practical.
|
|
58
|
+
- For code-generation or workflow guidance changes: verify that the referenced scripts and command families still exist.
|
|
59
|
+
- For code changes: prefer the narrowest meaningful verification first, then use shared root scripts when broader confidence is needed.
|
package/README.md
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Cabloy
|
|
2
|
+
|
|
3
|
+
[](https://github.com/cabloy/cabloy/blob/main/LICENSE)
|
|
4
|
+
[](https://www.npmjs.com/package/cabloy)
|
|
5
|
+
[](https://www.npmjs.com/package/cabloy)
|
|
6
|
+
[](https://docs.cabloy.com)
|
|
7
|
+
[](https://cabloy.com)
|
|
8
|
+
|
|
9
|
+
Cabloy is a Node.js fullstack framework for AI vibe coding.
|
|
10
|
+
|
|
11
|
+
Use one fullstack framework instead of stitching together separate backend and frontend stacks.
|
|
12
|
+
|
|
13
|
+
With Vona, Zova, suite-based modules, and CLI-first workflows, Cabloy turns common scaffolding, metadata, refactors, and verification into explicit commands for faster, more accurate AI vibe coding.
|
|
14
|
+
|
|
15
|
+
[Documentation](https://docs.cabloy.com) · [npm](https://www.npmjs.com/package/cabloy) · [Web Demo](https://cabloy.com) · [Admin Demo](https://cabloy.com/admin) · [GitHub](https://github.com/cabloy/cabloy)
|
|
16
|
+
|
|
17
|
+
## Get Started
|
|
18
|
+
|
|
19
|
+
### Prerequisites
|
|
20
|
+
|
|
21
|
+
Before creating a new Cabloy project, make sure your environment has:
|
|
22
|
+
|
|
23
|
+
| Name | Version |
|
|
24
|
+
| ---------- | ----------- |
|
|
25
|
+
| pnpm | `>=10.19.0` |
|
|
26
|
+
| Node.js | `>=24.4.0` |
|
|
27
|
+
| Redis | `>=7.2.6` |
|
|
28
|
+
| SQLite3 | `Built-in` |
|
|
29
|
+
| MySQL | `>=8` |
|
|
30
|
+
| PostgreSQL | `>=16` |
|
|
31
|
+
|
|
32
|
+
- `Redis`: powers queue, schedule, startup, broadcast, caching, two-layer cache, and redlock
|
|
33
|
+
- `SQLite3`: if you use `better-sqlite3`, set up `node-gyp` before installing dependencies
|
|
34
|
+
|
|
35
|
+
Create a new Cabloy project:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm create cabloy
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The generated project already includes `CLAUDE.md` and the `.claude/` workspace assets. This path creates a Cabloy Basic project baseline. Open this project in Claude Code and start coding immediately with project-specific guidance.
|
|
42
|
+
|
|
43
|
+
For **Cabloy Start**, purchase access to the licensed private repository, clone `git@github.com:cabloy/cabloy-start.git`, and run `npm run init`. For the complete Start onboarding flow, read the [Cabloy Start](https://docs.cabloy.com/editions/cabloy-start) page.
|
|
44
|
+
|
|
45
|
+
Then continue with the framework docs:
|
|
46
|
+
|
|
47
|
+
- [Fullstack Quickstart](https://docs.cabloy.com/fullstack/quickstart)
|
|
48
|
+
- [Documentation](https://docs.cabloy.com)
|
|
49
|
+
- [Fullstack Introduction](https://docs.cabloy.com/fullstack/introduction)
|
|
50
|
+
- [Backend Introduction](https://docs.cabloy.com/backend/introduction)
|
|
51
|
+
- [Frontend Introduction](https://docs.cabloy.com/frontend/introduction)
|
|
52
|
+
- [Editions Overview](https://docs.cabloy.com/editions/overview)
|
|
53
|
+
- [Choosing Between Cabloy Basic and Cabloy Start](https://docs.cabloy.com/editions/choosing-between-basic-and-start)
|
|
54
|
+
|
|
55
|
+
To upgrade an existing Cabloy project:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npm run upgrade
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Highlights
|
|
62
|
+
|
|
63
|
+
- **One framework system** — build backend and frontend in one fullstack architecture
|
|
64
|
+
- **Vona + Zova** — use aligned backend and frontend frameworks for code sharing, workflow reuse, and cross-stack consistency
|
|
65
|
+
- **Suite-based modular system** — organize capabilities as suites and modules so services, features, metadata, and tooling evolve in composable units
|
|
66
|
+
- **Multiple delivery modes** — deliver SSR, SPA, Web, and Admin applications with shared conventions across the stack
|
|
67
|
+
- **CLI-first workflows for AI vibe coding** — turn common scaffolding, metadata, refactors, and verification into explicit commands for faster, more accurate AI vibe coding
|
|
68
|
+
- **Monorepo-native development** — keep framework source, docs, and tooling aligned in one monorepo workflow
|
|
69
|
+
|
|
70
|
+
## Technology Stack
|
|
71
|
+
|
|
72
|
+
### General
|
|
73
|
+
|
|
74
|
+
| Package | Version |
|
|
75
|
+
| ---------- | -------- |
|
|
76
|
+
| TypeScript | `^5.9.3` |
|
|
77
|
+
| Zod | `^4.3.6` |
|
|
78
|
+
|
|
79
|
+
### Backend (Vona)
|
|
80
|
+
|
|
81
|
+
| Package | Version |
|
|
82
|
+
| -------------------------------- | --------- |
|
|
83
|
+
| Koa | `^3.2.0` |
|
|
84
|
+
| Knex | `^3.2.9` |
|
|
85
|
+
| Redis Client (`ioredis`) | `^5.10.1` |
|
|
86
|
+
| SQLite Driver (`better-sqlite3`) | `^12.9.0` |
|
|
87
|
+
|
|
88
|
+
### Frontend (Zova)
|
|
89
|
+
|
|
90
|
+
| Package | Version |
|
|
91
|
+
| -------------- | ----------- |
|
|
92
|
+
| Vue | `^3.5.32` |
|
|
93
|
+
| Vite | `^8.0.14` |
|
|
94
|
+
| Quasar | `^2.19.3` |
|
|
95
|
+
| TanStack Query | `^5.100.10` |
|
|
96
|
+
| TanStack Form | `^1.32.0` |
|
|
97
|
+
| TanStack Table | `^8.21.3` |
|
|
98
|
+
|
|
99
|
+
### Shared Frontend Engineering Layer
|
|
100
|
+
|
|
101
|
+
- Vue
|
|
102
|
+
- Vite
|
|
103
|
+
- Quasar tooling such as `quasar dev` and `quasar build`
|
|
104
|
+
- TanStack libraries where applicable
|
|
105
|
+
|
|
106
|
+
Quasar is used here for engineering tooling rather than as the edition UI component library.
|
|
107
|
+
|
|
108
|
+
### Edition-specific UI Layer
|
|
109
|
+
|
|
110
|
+
- **Cabloy Basic**: DaisyUI + Tailwind CSS
|
|
111
|
+
- **Cabloy Start**: Vuetify
|
|
112
|
+
|
|
113
|
+
## Contributing
|
|
114
|
+
|
|
115
|
+
Contributions to the Cabloy framework, docs, and tooling are welcome.
|
|
116
|
+
|
|
117
|
+
Use the root [package.json](https://github.com/cabloy/cabloy/blob/main/package.json) as the shared workflow entrypoint:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
npm run init
|
|
121
|
+
npm run dev
|
|
122
|
+
npm run tsc
|
|
123
|
+
npm run test
|
|
124
|
+
npm run build
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
For more details, see:
|
|
128
|
+
|
|
129
|
+
- [Editions Overview](https://docs.cabloy.com/editions/overview)
|
|
130
|
+
- [Choosing Between Cabloy Basic and Cabloy Start](https://docs.cabloy.com/editions/choosing-between-basic-and-start)
|
|
131
|
+
- [Repo Scripts](https://docs.cabloy.com/reference/repo-scripts)
|
|
132
|
+
- [Package Map](https://docs.cabloy.com/reference/package-map)
|
|
133
|
+
- [AI Development Introduction](https://docs.cabloy.com/ai/introduction)
|
|
134
|
+
|
|
135
|
+
Contribution guidelines:
|
|
136
|
+
|
|
137
|
+
- prefer CLI-backed workflows with `npm run vona` and `npm run zova`
|
|
138
|
+
- put user-facing and agent-facing guidance in [docs.cabloy.com](https://docs.cabloy.com)
|
|
139
|
+
- put maintainer rationale, architecture notes, and ADRs in [.docs-internal/](https://github.com/cabloy/cabloy/tree/main/.docs-internal)
|
|
140
|
+
- verify framework changes with the narrowest meaningful checks first, then shared root scripts when broader confidence is needed
|
|
141
|
+
|
|
142
|
+
To report bugs or propose changes, use [GitHub Issues](https://github.com/cabloy/cabloy/issues) or open a pull request in [github.com/cabloy/cabloy](https://github.com/cabloy/cabloy).
|
|
143
|
+
|
|
144
|
+
## Community
|
|
145
|
+
|
|
146
|
+
- [GitHub Issues](https://github.com/cabloy/cabloy/issues)
|
|
147
|
+
- [X / Twitter](https://x.com/zhennann2024)
|
|
148
|
+
- [Bilibili](https://space.bilibili.com/454737998)
|
|
149
|
+
|
|
150
|
+
## License
|
|
151
|
+
|
|
152
|
+
[MIT](https://github.com/cabloy/cabloy/blob/main/LICENSE)
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { defineConfig } from 'vitepress';
|
|
2
|
+
|
|
3
|
+
const editionsItems = [
|
|
4
|
+
{ text: 'Overview', link: '/editions/overview' },
|
|
5
|
+
{
|
|
6
|
+
text: 'Choosing Basic vs Start',
|
|
7
|
+
link: '/editions/choosing-between-basic-and-start',
|
|
8
|
+
},
|
|
9
|
+
{ text: 'Cabloy Basic', link: '/editions/cabloy-basic' },
|
|
10
|
+
{ text: 'Cabloy Start', link: '/editions/cabloy-start' },
|
|
11
|
+
{ text: 'Edition Detection', link: '/editions/detection' },
|
|
12
|
+
];
|
|
13
|
+
|
|
14
|
+
const aiItems = [
|
|
15
|
+
{ text: 'Introduction', link: '/ai/introduction' },
|
|
16
|
+
{ text: 'Repo Guidance', link: '/ai/repo-guidance' },
|
|
17
|
+
{ text: 'Skills', link: '/ai/skills' },
|
|
18
|
+
{ text: 'Class Placement Rule', link: '/ai/class-placement-rule' },
|
|
19
|
+
{ text: 'Global Bean Lookup', link: '/ai/global-bean-lookup' },
|
|
20
|
+
{ text: 'Docs / Skills Mapping', link: '/ai/docs-skills-rules-mapping' },
|
|
21
|
+
{ text: 'CLI to Skill Map', link: '/ai/cli-to-skill-map' },
|
|
22
|
+
{ text: 'Future Skill Roadmap', link: '/ai/future-skill-roadmap' },
|
|
23
|
+
{ text: 'Playbook: Backend Module', link: '/ai/playbook-backend-module' },
|
|
24
|
+
{ text: 'Playbook: Frontend Page', link: '/ai/playbook-frontend-page' },
|
|
25
|
+
{ text: 'Playbook: Contract Regeneration', link: '/ai/playbook-contract-regeneration' },
|
|
26
|
+
{ text: 'Playbook: Metadata Refresh', link: '/ai/playbook-metadata-refresh' },
|
|
27
|
+
{ text: 'CLI for Agents', link: '/ai/cli-for-agents' },
|
|
28
|
+
{ text: 'Rules and Config', link: '/ai/rules-and-config' },
|
|
29
|
+
{ text: 'Edition Detection', link: '/ai/edition-detection' },
|
|
30
|
+
{ text: 'Edition Consistency Checklist', link: '/ai/edition-consistency-checklist' },
|
|
31
|
+
{ text: 'Verification', link: '/ai/verification' },
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
const referenceItems = [
|
|
35
|
+
{ text: 'Repo Scripts', link: '/reference/repo-scripts' },
|
|
36
|
+
{ text: 'CLI Reference', link: '/reference/cli-reference' },
|
|
37
|
+
{ text: 'Package Map', link: '/reference/package-map' },
|
|
38
|
+
{ text: 'Backend Directory Structure', link: '/reference/backend-directory-structure' },
|
|
39
|
+
{ text: 'Glossary', link: '/reference/glossary' },
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
const GA_MEASUREMENT_ID = process.env.GA_MEASUREMENT_ID;
|
|
43
|
+
const gaHead = GA_MEASUREMENT_ID
|
|
44
|
+
? [
|
|
45
|
+
[
|
|
46
|
+
'script',
|
|
47
|
+
{
|
|
48
|
+
async: '',
|
|
49
|
+
src: `https://www.googletagmanager.com/gtag/js?id=${GA_MEASUREMENT_ID}`,
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
[
|
|
53
|
+
'script',
|
|
54
|
+
{},
|
|
55
|
+
`window.dataLayer = window.dataLayer || [];
|
|
56
|
+
function gtag(){dataLayer.push(arguments);}
|
|
57
|
+
gtag('js', new Date());
|
|
58
|
+
gtag('config', '${GA_MEASUREMENT_ID}');`,
|
|
59
|
+
],
|
|
60
|
+
]
|
|
61
|
+
: [];
|
|
62
|
+
|
|
63
|
+
export default defineConfig({
|
|
64
|
+
title: 'Cabloy',
|
|
65
|
+
description: 'Unified fullstack and AI-development documentation for the Cabloy monorepo',
|
|
66
|
+
lang: 'en-US',
|
|
67
|
+
base: '/',
|
|
68
|
+
ignoreDeadLinks: [/^https?:\/\/localhost/],
|
|
69
|
+
head: gaHead,
|
|
70
|
+
markdown: {
|
|
71
|
+
lineNumbers: true,
|
|
72
|
+
},
|
|
73
|
+
themeConfig: {
|
|
74
|
+
nav: [
|
|
75
|
+
{ text: 'Home', link: '/' },
|
|
76
|
+
{ text: 'Fullstack', link: '/fullstack/introduction', activeMatch: '^/fullstack/' },
|
|
77
|
+
{ text: 'Backend', link: '/backend/introduction', activeMatch: '^/backend/' },
|
|
78
|
+
{ text: 'Frontend', link: '/frontend/introduction', activeMatch: '^/frontend/' },
|
|
79
|
+
{ text: 'Editions', link: '/editions/overview', activeMatch: '^/editions/' },
|
|
80
|
+
{ text: 'AI Development', link: '/ai/introduction', activeMatch: '^/ai/' },
|
|
81
|
+
{ text: 'Reference', link: '/reference/repo-scripts', activeMatch: '^/reference/' },
|
|
82
|
+
],
|
|
83
|
+
sidebar: {
|
|
84
|
+
'/fullstack/': [
|
|
85
|
+
{
|
|
86
|
+
text: 'Fullstack',
|
|
87
|
+
items: [
|
|
88
|
+
{ text: 'Introduction', link: '/fullstack/introduction' },
|
|
89
|
+
{
|
|
90
|
+
text: 'Comparison with Other Frameworks',
|
|
91
|
+
link: '/fullstack/comparison-with-other-frameworks',
|
|
92
|
+
},
|
|
93
|
+
{ text: 'Quickstart', link: '/fullstack/quickstart' },
|
|
94
|
+
{ text: 'CLI', link: '/fullstack/cli' },
|
|
95
|
+
{ text: 'VS Code Extensions', link: '/fullstack/vscode-extensions' },
|
|
96
|
+
{ text: 'Vona + Zova Integration', link: '/fullstack/vona-zova-integration' },
|
|
97
|
+
{ text: 'Backend OpenAPI to Frontend SDK', link: '/fullstack/openapi-to-sdk' },
|
|
98
|
+
{
|
|
99
|
+
text: 'Frontend Metadata Back to Backend',
|
|
100
|
+
link: '/fullstack/frontend-metadata-to-backend',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
text: 'Edition Collaboration Differences',
|
|
104
|
+
link: '/fullstack/edition-collaboration-differences',
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
'/backend/': [
|
|
110
|
+
{
|
|
111
|
+
text: 'Backend (Vona)',
|
|
112
|
+
items: [
|
|
113
|
+
{ text: 'Introduction', link: '/backend/introduction' },
|
|
114
|
+
{ text: 'Foundation', link: '/backend/foundation' },
|
|
115
|
+
{ text: 'Backend Essentials', link: '/backend/backend-essentials' },
|
|
116
|
+
{ text: 'Quickstart', link: '/backend/quickstart' },
|
|
117
|
+
{ text: 'CLI', link: '/backend/cli' },
|
|
118
|
+
{ text: 'Scripts', link: '/backend/scripts' },
|
|
119
|
+
{ text: 'Runtime and Flavors', link: '/backend/runtime-and-flavors' },
|
|
120
|
+
{ text: 'Config Guide', link: '/backend/config-guide' },
|
|
121
|
+
{ text: 'Backend Startup Guide', link: '/backend/startup-guide' },
|
|
122
|
+
{
|
|
123
|
+
text: 'Multi-Instance and Instance Resolution',
|
|
124
|
+
link: '/backend/multi-instance-and-instance-resolution',
|
|
125
|
+
},
|
|
126
|
+
{ text: 'Auth Guide', link: '/backend/auth-guide' },
|
|
127
|
+
{ text: 'Captcha Guide', link: '/backend/captcha-guide' },
|
|
128
|
+
{ text: 'User Access Guide', link: '/backend/user-access-guide' },
|
|
129
|
+
{ text: 'Menu Guide', link: '/backend/menu-guide' },
|
|
130
|
+
{ text: 'I18n Guide', link: '/backend/i18n-guide' },
|
|
131
|
+
{ text: 'Error Guide', link: '/backend/error-guide' },
|
|
132
|
+
{ text: 'JWT Guide', link: '/backend/jwt-guide' },
|
|
133
|
+
{ text: 'Event Guide', link: '/backend/event-guide' },
|
|
134
|
+
{ text: 'Logger Guide', link: '/backend/logger-guide' },
|
|
135
|
+
{ text: 'Upload Guide', link: '/backend/upload-guide' },
|
|
136
|
+
{ text: 'Mail Guide', link: '/backend/mail-guide' },
|
|
137
|
+
{ text: 'Serialization Guide', link: '/backend/serialization-guide' },
|
|
138
|
+
{ text: 'AOP Overview', link: '/backend/aop-overview' },
|
|
139
|
+
{ text: 'Controller Guide', link: '/backend/controller-guide' },
|
|
140
|
+
{ text: 'Controller AOP Guide', link: '/backend/controller-aop-guide' },
|
|
141
|
+
{ text: 'Internal AOP Guide', link: '/backend/internal-aop-guide' },
|
|
142
|
+
{ text: 'External AOP Guide', link: '/backend/external-aop-guide' },
|
|
143
|
+
{ text: 'Service Guide', link: '/backend/service-guide' },
|
|
144
|
+
{ text: 'Model Guide', link: '/backend/model-guide' },
|
|
145
|
+
{ text: 'Entity Guide', link: '/backend/entity-guide' },
|
|
146
|
+
{ text: 'DTO Guide', link: '/backend/dto-guide' },
|
|
147
|
+
{ text: 'CRUD Workflow', link: '/backend/crud-workflow' },
|
|
148
|
+
{ text: 'Migration and Changes', link: '/backend/migration-and-changes' },
|
|
149
|
+
{ text: 'Field Indexes', link: '/backend/field-indexes' },
|
|
150
|
+
{ text: 'Unit Testing', link: '/backend/unit-testing' },
|
|
151
|
+
{ text: 'ORM Guide', link: '/backend/orm-guide' },
|
|
152
|
+
{ text: 'ORM Configuration Guide', link: '/backend/orm-configuration-guide' },
|
|
153
|
+
{ text: 'ORM Select Guide', link: '/backend/orm-select-guide' },
|
|
154
|
+
{ text: 'ORM Mutation Guide', link: '/backend/orm-mutation-guide' },
|
|
155
|
+
{ text: 'ORM Aggregate and Group Guide', link: '/backend/orm-aggregate-group-guide' },
|
|
156
|
+
{ text: 'Relations Guide', link: '/backend/relations-guide' },
|
|
157
|
+
{ text: 'Transaction Guide', link: '/backend/transaction-guide' },
|
|
158
|
+
{ text: 'Cache Guide', link: '/backend/cache-guide' },
|
|
159
|
+
{
|
|
160
|
+
text: 'Multi-Database and Datasource Guide',
|
|
161
|
+
link: '/backend/multi-database-datasource',
|
|
162
|
+
},
|
|
163
|
+
{ text: 'Sharding Guide', link: '/backend/sharding-guide' },
|
|
164
|
+
{ text: 'Dynamic Datasource Guide', link: '/backend/dynamic-datasource-guide' },
|
|
165
|
+
{ text: 'Redis Guide', link: '/backend/redis-guide' },
|
|
166
|
+
{ text: 'Queue Guide', link: '/backend/queue-guide' },
|
|
167
|
+
{ text: 'Election Guide', link: '/backend/election-guide' },
|
|
168
|
+
{ text: 'Schedule Guide', link: '/backend/schedule-guide' },
|
|
169
|
+
{ text: 'Worker Guide', link: '/backend/worker-guide' },
|
|
170
|
+
{ text: 'Broadcast Guide', link: '/backend/broadcast-guide' },
|
|
171
|
+
{ text: 'Redlock Guide', link: '/backend/redlock-guide' },
|
|
172
|
+
{ text: 'Validation Guide', link: '/backend/validation-guide' },
|
|
173
|
+
{ text: 'OpenAPI Guide', link: '/backend/openapi-guide' },
|
|
174
|
+
{ text: 'DTO Infer and Generation', link: '/backend/dto-infer-generation' },
|
|
175
|
+
],
|
|
176
|
+
},
|
|
177
|
+
],
|
|
178
|
+
'/frontend/': [
|
|
179
|
+
{
|
|
180
|
+
text: 'Frontend (Zova)',
|
|
181
|
+
items: [
|
|
182
|
+
{ text: 'Introduction', link: '/frontend/introduction' },
|
|
183
|
+
{ text: 'Quickstart', link: '/frontend/quickstart' },
|
|
184
|
+
{ text: 'Foundation', link: '/frontend/foundation' },
|
|
185
|
+
{ text: 'IoC and Beans', link: '/frontend/ioc-and-beans' },
|
|
186
|
+
{ text: 'Modules and Suites', link: '/frontend/modules-and-suites' },
|
|
187
|
+
{ text: 'Module Scope', link: '/frontend/module-scope' },
|
|
188
|
+
{ text: 'Environment and Config Guide', link: '/frontend/environment-config-guide' },
|
|
189
|
+
{ text: 'App Startup Guide', link: '/frontend/app-startup-guide' },
|
|
190
|
+
{ text: 'System Startup Guide', link: '/frontend/system-startup-guide' },
|
|
191
|
+
{ text: 'Page Guide', link: '/frontend/page-guide' },
|
|
192
|
+
{ text: 'Page Query Guide', link: '/frontend/page-query-guide' },
|
|
193
|
+
{ text: 'Page Params Guide', link: '/frontend/page-params-guide' },
|
|
194
|
+
{ text: 'Page Route Guide', link: '/frontend/page-route-guide' },
|
|
195
|
+
{ text: 'Zod Guide', link: '/frontend/zod-guide' },
|
|
196
|
+
{ text: 'Route Alias Guide', link: '/frontend/route-alias-guide' },
|
|
197
|
+
{ text: 'Navigation Guards Guide', link: '/frontend/navigation-guards-guide' },
|
|
198
|
+
{ text: 'Component Guide', link: '/frontend/component-guide' },
|
|
199
|
+
{ text: 'Component Props Guide', link: '/frontend/component-props-guide' },
|
|
200
|
+
{ text: 'Component v-model Guide', link: '/frontend/component-v-model-guide' },
|
|
201
|
+
{ text: 'Generic Component Guide', link: '/frontend/generic-component-guide' },
|
|
202
|
+
{ text: 'CLI', link: '/frontend/cli' },
|
|
203
|
+
{ text: 'Scripts', link: '/frontend/scripts' },
|
|
204
|
+
{ text: 'Mock Guide', link: '/frontend/mock-guide' },
|
|
205
|
+
{ text: 'CSS-in-JS Guide', link: '/frontend/css-in-js-guide' },
|
|
206
|
+
{ text: 'Theme Guide', link: '/frontend/theme-guide' },
|
|
207
|
+
{ text: 'Icon Engine Guide', link: '/frontend/icon-engine-guide' },
|
|
208
|
+
{ text: 'Server Data', link: '/frontend/server-data' },
|
|
209
|
+
{ text: 'API Guide', link: '/frontend/api-guide' },
|
|
210
|
+
{ text: 'Model Architecture', link: '/frontend/model-architecture' },
|
|
211
|
+
{ text: 'Model State Guide', link: '/frontend/model-state-guide' },
|
|
212
|
+
{ text: 'OpenAPI SDK Guide', link: '/frontend/openapi-sdk-guide' },
|
|
213
|
+
{ text: 'API Schema Guide', link: '/frontend/api-schema-guide' },
|
|
214
|
+
{ text: 'SDK Guide', link: '/frontend/sdk-guide' },
|
|
215
|
+
{ text: 'SSR Overview', link: '/frontend/ssr-overview' },
|
|
216
|
+
{ text: 'SSR Init Data', link: '/frontend/ssr-init-data' },
|
|
217
|
+
{ text: 'SSR ClientOnly', link: '/frontend/ssr-client-only' },
|
|
218
|
+
{ text: 'SSR SEO Meta', link: '/frontend/ssr-seo-meta' },
|
|
219
|
+
{ text: 'SSR Env', link: '/frontend/ssr-env' },
|
|
220
|
+
{ text: 'Design Principles', link: '/frontend/design-principles' },
|
|
221
|
+
],
|
|
222
|
+
},
|
|
223
|
+
],
|
|
224
|
+
'/editions/': [
|
|
225
|
+
{
|
|
226
|
+
text: 'Editions',
|
|
227
|
+
items: editionsItems,
|
|
228
|
+
},
|
|
229
|
+
],
|
|
230
|
+
'/ai/': [
|
|
231
|
+
{
|
|
232
|
+
text: 'AI Development',
|
|
233
|
+
items: aiItems,
|
|
234
|
+
},
|
|
235
|
+
],
|
|
236
|
+
'/reference/': [
|
|
237
|
+
{
|
|
238
|
+
text: 'Reference',
|
|
239
|
+
items: referenceItems,
|
|
240
|
+
},
|
|
241
|
+
],
|
|
242
|
+
},
|
|
243
|
+
socialLinks: [{ icon: 'github', link: 'https://github.com/cabloy/cabloy' }],
|
|
244
|
+
search: {
|
|
245
|
+
provider: 'local',
|
|
246
|
+
},
|
|
247
|
+
editLink: {
|
|
248
|
+
pattern: 'https://github.com/cabloy/cabloy/edit/main/cabloy-docs/:path',
|
|
249
|
+
},
|
|
250
|
+
footer: {
|
|
251
|
+
message: 'Released under the MIT License.',
|
|
252
|
+
copyright: 'Copyright © 2016-present Cabloy',
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
docs.cabloy.com
|