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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { TableIdentity } from 'table-identity';
|
|
2
2
|
import type { IDatabaseClientRecord } from 'vona-module-a-orm';
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { ServiceSummerCacheBase, SummerCache } from 'vona-module-a-summer';
|
|
5
5
|
|
|
6
6
|
export type TSummerCacheDatasourceWriteKey = TableIdentity;
|
|
7
7
|
export type TSummerCacheDatasourceWriteData = keyof IDatabaseClientRecord;
|
|
@@ -14,7 +14,7 @@ export type TSummerCacheDatasourceWriteData = keyof IDatabaseClientRecord;
|
|
|
14
14
|
ttl: 3 * 1000, // 3s
|
|
15
15
|
},
|
|
16
16
|
})
|
|
17
|
-
export class SummerCacheDatasourceWrite extends
|
|
17
|
+
export class SummerCacheDatasourceWrite extends ServiceSummerCacheBase<
|
|
18
18
|
TSummerCacheDatasourceWriteKey,
|
|
19
19
|
TSummerCacheDatasourceWriteData
|
|
20
20
|
> {}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// eslint-disable
|
|
2
|
+
import type { TypeControllerOptionsActions } from 'vona-module-a-openapi';
|
|
2
3
|
/** interceptor: begin */
|
|
3
4
|
export * from '../bean/interceptor.ssrRedirect.ts';
|
|
4
5
|
export * from '../bean/interceptor.ssrRender.ts';
|
|
@@ -83,13 +84,60 @@ declare module 'vona-module-a-ssr' {
|
|
|
83
84
|
/** bean: end */
|
|
84
85
|
/** bean: begin */
|
|
85
86
|
import type { BeanSsr } from '../bean/bean.ssr.ts';
|
|
86
|
-
import 'vona';
|
|
87
|
+
import 'vona';
|
|
87
88
|
declare module 'vona' {
|
|
88
89
|
export interface IBeanRecordGlobal {
|
|
89
90
|
'ssr': BeanSsr;
|
|
90
91
|
}
|
|
91
92
|
}
|
|
92
93
|
/** bean: end */
|
|
94
|
+
/** controller: begin */
|
|
95
|
+
export * from '../controller/memoryDiag.ts';
|
|
96
|
+
import type { IControllerOptionsMemoryDiag } from '../controller/memoryDiag.ts';
|
|
97
|
+
import 'vona-module-a-web';
|
|
98
|
+
declare module 'vona-module-a-web' {
|
|
99
|
+
|
|
100
|
+
export interface IControllerRecord {
|
|
101
|
+
'a-ssr:memoryDiag': IControllerOptionsMemoryDiag;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
}
|
|
106
|
+
declare module 'vona-module-a-ssr' {
|
|
107
|
+
|
|
108
|
+
export interface ControllerMemoryDiag {
|
|
109
|
+
/** @internal */
|
|
110
|
+
get scope(): ScopeModuleASsr;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export interface ControllerMemoryDiag {
|
|
114
|
+
get $beanFullName(): 'a-ssr.controller.memoryDiag';
|
|
115
|
+
get $onionName(): 'a-ssr:memoryDiag';
|
|
116
|
+
get $onionOptions(): IControllerOptionsMemoryDiag;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/** controller: end */
|
|
120
|
+
/** controller: begin */
|
|
121
|
+
// @ts-ignore ignore
|
|
122
|
+
import type { ControllerMemoryDiag } from '../controller/memoryDiag.ts';
|
|
123
|
+
declare module 'vona-module-a-ssr' {
|
|
124
|
+
|
|
125
|
+
export interface IControllerOptionsMemoryDiag {
|
|
126
|
+
actions?: TypeControllerOptionsActions<ControllerMemoryDiag>;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
declare module 'vona-module-a-web' {
|
|
130
|
+
export interface IApiPathGetRecord{
|
|
131
|
+
'/ssr/memoryDiag/stats': undefined;
|
|
132
|
+
}
|
|
133
|
+
export interface IApiPathPostRecord{
|
|
134
|
+
'/ssr/memoryDiag/gc': undefined;
|
|
135
|
+
'/ssr/memoryDiag/heapSnapshot': undefined;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/** controller: end */
|
|
93
141
|
/** service: begin */
|
|
94
142
|
export * from '../service/devProxy.ts';
|
|
95
143
|
export * from '../service/ssr.ts';
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { IDecoratorControllerOptions } from 'vona-module-a-web';
|
|
2
|
+
|
|
3
|
+
import inspector from 'node:inspector';
|
|
4
|
+
import v8 from 'node:v8';
|
|
5
|
+
import { BeanBase } from 'vona';
|
|
6
|
+
import { Passport } from 'vona-module-a-user';
|
|
7
|
+
import { Controller, Web } from 'vona-module-a-web';
|
|
8
|
+
|
|
9
|
+
const HEADER_MEMORY_DIAG_TOKEN = 'x-ssr-memory-diag-token';
|
|
10
|
+
const ENV_MEMORY_DIAG_TOKEN = 'SSR_MEMORY_DIAG_TOKEN';
|
|
11
|
+
|
|
12
|
+
export interface IControllerOptionsMemoryDiag extends IDecoratorControllerOptions {}
|
|
13
|
+
|
|
14
|
+
@Controller<IControllerOptionsMemoryDiag>('memoryDiag', {
|
|
15
|
+
exclude: true,
|
|
16
|
+
})
|
|
17
|
+
export class ControllerMemoryDiag extends BeanBase {
|
|
18
|
+
@Web.get('stats')
|
|
19
|
+
@Passport.public()
|
|
20
|
+
async stats() {
|
|
21
|
+
this._checkAccess();
|
|
22
|
+
const mem = process.memoryUsage();
|
|
23
|
+
const heap = v8.getHeapStatistics();
|
|
24
|
+
return {
|
|
25
|
+
pid: process.pid,
|
|
26
|
+
timestamp: Date.now(),
|
|
27
|
+
memoryUsage: {
|
|
28
|
+
rss: mem.rss,
|
|
29
|
+
heapTotal: mem.heapTotal,
|
|
30
|
+
heapUsed: mem.heapUsed,
|
|
31
|
+
external: mem.external,
|
|
32
|
+
arrayBuffers: mem.arrayBuffers,
|
|
33
|
+
},
|
|
34
|
+
heapStatistics: {
|
|
35
|
+
used_heap_size: heap.used_heap_size,
|
|
36
|
+
total_heap_size: heap.total_heap_size,
|
|
37
|
+
total_available_size: heap.total_available_size,
|
|
38
|
+
heap_size_limit: heap.heap_size_limit,
|
|
39
|
+
malloced_memory: heap.malloced_memory,
|
|
40
|
+
number_of_native_contexts: heap.number_of_native_contexts,
|
|
41
|
+
number_of_detached_contexts: heap.number_of_detached_contexts,
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@Web.post('gc')
|
|
47
|
+
@Passport.public()
|
|
48
|
+
async forceGc() {
|
|
49
|
+
this._checkAccess();
|
|
50
|
+
const session = new inspector.Session();
|
|
51
|
+
session.connect();
|
|
52
|
+
try {
|
|
53
|
+
await this._postHeapProfiler(session, 'HeapProfiler.enable');
|
|
54
|
+
await this._postHeapProfiler(session, 'HeapProfiler.collectGarbage');
|
|
55
|
+
} finally {
|
|
56
|
+
session.disconnect();
|
|
57
|
+
}
|
|
58
|
+
return await this.stats();
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@Web.post('heapSnapshot')
|
|
62
|
+
@Passport.public()
|
|
63
|
+
async heapSnapshot() {
|
|
64
|
+
this._checkAccess();
|
|
65
|
+
const fileName = v8.writeHeapSnapshot(
|
|
66
|
+
`/tmp/heapdump-${process.pid}-${Date.now()}.heapsnapshot`,
|
|
67
|
+
);
|
|
68
|
+
return { pid: process.pid, file: fileName };
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
private _postHeapProfiler(session: inspector.Session, method: string): Promise<void> {
|
|
72
|
+
return new Promise<void>(function postHeapProfiler(resolve, reject) {
|
|
73
|
+
session.post(method, function onPost(err) {
|
|
74
|
+
if (err) {
|
|
75
|
+
reject(err);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
resolve();
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
private _checkAccess() {
|
|
84
|
+
const token = process.env[ENV_MEMORY_DIAG_TOKEN];
|
|
85
|
+
if (!token) {
|
|
86
|
+
if (!this.app.meta.isDev && !this.app.meta.isTest) {
|
|
87
|
+
this.app.throw(403);
|
|
88
|
+
}
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const tokenHeader = this.ctx.get(HEADER_MEMORY_DIAG_TOKEN);
|
|
93
|
+
if (tokenHeader !== token) {
|
|
94
|
+
this.app.throw(403);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ServiceCacheRedisBase, CacheRedis } from 'vona-module-a-cache';
|
|
2
2
|
|
|
3
3
|
import type { ICaptchaDataCache } from '../types/captcha.ts';
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@ export type TCacheRedisCaptchaKey = string;
|
|
|
6
6
|
export type TCacheRedisCaptchaData = ICaptchaDataCache;
|
|
7
7
|
|
|
8
8
|
@CacheRedis({ disableTransactionCompensate: true })
|
|
9
|
-
export class CacheRedisCaptcha extends
|
|
9
|
+
export class CacheRedisCaptcha extends ServiceCacheRedisBase<
|
|
10
10
|
TCacheRedisCaptchaKey,
|
|
11
11
|
TCacheRedisCaptchaData
|
|
12
12
|
> {}
|
|
@@ -5,20 +5,19 @@ export default async function (options: IMetadataCustomGenerateOptions): Promise
|
|
|
5
5
|
const contentImports: string[] = [];
|
|
6
6
|
const contentRecordsGlobal: string[] = [];
|
|
7
7
|
for (const globFile of globFiles) {
|
|
8
|
-
const { className, beanName, fileNameJSRelative, isIgnore
|
|
9
|
-
if (isIgnore
|
|
10
|
-
const beanFullName = beanName;
|
|
8
|
+
const { className, beanName, fileNameJSRelative, isIgnore } = globFile;
|
|
9
|
+
if (isIgnore) continue;
|
|
11
10
|
contentImports.push(`import type { ${className} } from '${fileNameJSRelative}';`);
|
|
12
|
-
contentRecordsGlobal.push(`'${
|
|
11
|
+
contentRecordsGlobal.push(` '${beanName}': ${className};`);
|
|
13
12
|
}
|
|
14
13
|
if (contentImports.length === 0) return '';
|
|
15
14
|
// combine
|
|
16
15
|
const content = `/** ${sceneName}: begin */
|
|
17
16
|
${contentImports.join('\n')}
|
|
18
|
-
import 'vona';
|
|
17
|
+
import 'vona';
|
|
19
18
|
declare module 'vona' {
|
|
20
19
|
export interface IBeanRecordGlobal {
|
|
21
|
-
|
|
20
|
+
${contentRecordsGlobal.join('\n')}
|
|
22
21
|
}
|
|
23
22
|
}
|
|
24
23
|
/** ${sceneName}: end */
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ServiceCacheMemBase, CacheMem } from 'vona-module-a-cache';
|
|
2
2
|
|
|
3
3
|
export type TCacheMem<%=argv.beanNameCapitalize%>Key = any;
|
|
4
4
|
export type TCacheMem<%=argv.beanNameCapitalize%>Data = any;
|
|
5
5
|
|
|
6
6
|
@CacheMem()
|
|
7
7
|
export class CacheMem<%=argv.beanNameCapitalize%>
|
|
8
|
-
extends
|
|
8
|
+
extends ServiceCacheMemBase<TCacheMem<%=argv.beanNameCapitalize%>Key, TCacheMem<%=argv.beanNameCapitalize%>Data> {}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ServiceCacheRedisBase, CacheRedis } from 'vona-module-a-cache';
|
|
2
2
|
|
|
3
3
|
export type TCacheRedis<%=argv.beanNameCapitalize%>Key = any;
|
|
4
4
|
export type TCacheRedis<%=argv.beanNameCapitalize%>Data = any;
|
|
5
5
|
|
|
6
6
|
@CacheRedis()
|
|
7
7
|
export class CacheRedis<%=argv.beanNameCapitalize%>
|
|
8
|
-
extends
|
|
8
|
+
extends ServiceCacheRedisBase<TCacheRedis<%=argv.beanNameCapitalize%>Key, TCacheRedis<%=argv.beanNameCapitalize%>Data> {}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
// eslint-disable
|
|
2
2
|
/** bean: begin */
|
|
3
3
|
export * from '../bean/bean.cache.ts';
|
|
4
|
-
export * from '../bean/bean.cacheMemBase.ts';
|
|
5
|
-
export * from '../bean/bean.cacheRedisBase.ts';
|
|
6
4
|
|
|
7
5
|
import 'vona';
|
|
8
6
|
declare module 'vona' {
|
|
@@ -26,6 +24,19 @@ declare module 'vona' {
|
|
|
26
24
|
}
|
|
27
25
|
}
|
|
28
26
|
/** bean: end */
|
|
27
|
+
/** service: begin */
|
|
28
|
+
export * from '../service/cacheMemBase_.ts';
|
|
29
|
+
export * from '../service/cacheRedisBase_.ts';
|
|
30
|
+
|
|
31
|
+
import 'vona-module-a-bean';
|
|
32
|
+
declare module 'vona-module-a-bean' {
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
}
|
|
36
|
+
declare module 'vona-module-a-cache' {
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
/** service: end */
|
|
29
40
|
/** broadcast: begin */
|
|
30
41
|
export * from '../bean/broadcast.memClear.ts';
|
|
31
42
|
export * from '../bean/broadcast.memDel.ts';
|
|
@@ -4,28 +4,27 @@ import { Bean } from 'vona-module-a-bean';
|
|
|
4
4
|
import type { IDecoratorCacheMemOptions } from '../types/cacheMem.ts';
|
|
5
5
|
import type { IDecoratorCacheRedisOptions } from '../types/cacheRedis.ts';
|
|
6
6
|
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
7
|
+
import { ServiceCacheMemBase } from '../service/cacheMemBase_.ts';
|
|
8
|
+
import { ServiceCacheRedisBase } from '../service/cacheRedisBase_.ts';
|
|
10
9
|
@Bean()
|
|
11
10
|
export class BeanCache extends BeanBase {
|
|
12
11
|
mem<KEY, DATA>(
|
|
13
12
|
cacheName: string,
|
|
14
13
|
cacheOptions?: IDecoratorCacheMemOptions,
|
|
15
|
-
):
|
|
14
|
+
): ServiceCacheMemBase<KEY, DATA> {
|
|
16
15
|
if (cacheName.includes('.cacheMem.')) {
|
|
17
16
|
return this.app.bean._getBeanSelector(cacheName as any, undefined, cacheOptions);
|
|
18
17
|
}
|
|
19
|
-
return this.app.bean._getBeanSelector(
|
|
18
|
+
return this.app.bean._getBeanSelector(ServiceCacheMemBase, cacheName, cacheOptions);
|
|
20
19
|
}
|
|
21
20
|
|
|
22
21
|
redis<KEY, DATA>(
|
|
23
22
|
cacheName: string,
|
|
24
23
|
cacheOptions?: IDecoratorCacheRedisOptions,
|
|
25
|
-
):
|
|
24
|
+
): ServiceCacheRedisBase<KEY, DATA> {
|
|
26
25
|
if (cacheName.includes('.cacheRedis.')) {
|
|
27
26
|
return this.app.bean._getBeanSelector(cacheName as any, undefined, cacheOptions);
|
|
28
27
|
}
|
|
29
|
-
return this.app.bean._getBeanSelector(
|
|
28
|
+
return this.app.bean._getBeanSelector(ServiceCacheRedisBase, cacheName, cacheOptions);
|
|
30
29
|
}
|
|
31
30
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LRUCache } from 'lru-cache';
|
|
2
2
|
import { Virtual } from 'vona';
|
|
3
|
-
import {
|
|
3
|
+
import { Service } from 'vona-module-a-bean';
|
|
4
4
|
|
|
5
5
|
import type { ICacheMemGetOptions, ICacheMemSetOptions } from '../types/cache.ts';
|
|
6
6
|
import type { IDecoratorCacheMemOptions } from '../types/cacheMem.ts';
|
|
@@ -8,9 +8,9 @@ import type { IDecoratorCacheMemOptions } from '../types/cacheMem.ts';
|
|
|
8
8
|
import { CacheBase } from '../common/cacheBase.ts';
|
|
9
9
|
import { getCacheMemories } from '../lib/const.ts';
|
|
10
10
|
|
|
11
|
-
@
|
|
11
|
+
@Service()
|
|
12
12
|
@Virtual()
|
|
13
|
-
export class
|
|
13
|
+
export class ServiceCacheMemBase<KEY = any, DATA = any> extends CacheBase<
|
|
14
14
|
IDecoratorCacheMemOptions,
|
|
15
15
|
KEY
|
|
16
16
|
> {
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import type { Redis } from 'ioredis';
|
|
2
2
|
|
|
3
3
|
import { Virtual } from 'vona';
|
|
4
|
-
import {
|
|
4
|
+
import { Service } from 'vona-module-a-bean';
|
|
5
5
|
|
|
6
6
|
import type { ICacheRedisGetOptions, ICacheRedisSetOptions } from '../types/cache.ts';
|
|
7
7
|
import type { IDecoratorCacheRedisOptions } from '../types/cacheRedis.ts';
|
|
8
8
|
|
|
9
9
|
import { CacheBase } from '../common/cacheBase.ts';
|
|
10
10
|
|
|
11
|
-
@
|
|
11
|
+
@Service()
|
|
12
12
|
@Virtual()
|
|
13
|
-
export class
|
|
13
|
+
export class ServiceCacheRedisBase<KEY = any, DATA = any> extends CacheBase<
|
|
14
14
|
IDecoratorCacheRedisOptions,
|
|
15
15
|
KEY
|
|
16
16
|
> {
|
package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.emailConfirm.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { TableIdentity } from 'table-identity';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { ServiceCacheRedisBase, CacheRedis } from 'vona-module-a-cache';
|
|
4
4
|
|
|
5
5
|
export type TCacheRedisEmailConfirmKey = string;
|
|
6
6
|
export interface TCacheRedisEmailConfirmData {
|
|
@@ -11,7 +11,7 @@ export interface TCacheRedisEmailConfirmData {
|
|
|
11
11
|
@CacheRedis({
|
|
12
12
|
ttl: 30 * 60 * 1000, // 30 minutes
|
|
13
13
|
})
|
|
14
|
-
export class CacheRedisEmailConfirm extends
|
|
14
|
+
export class CacheRedisEmailConfirm extends ServiceCacheRedisBase<
|
|
15
15
|
TCacheRedisEmailConfirmKey,
|
|
16
16
|
TCacheRedisEmailConfirmData
|
|
17
17
|
> {}
|
package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/src/bean/cacheRedis.passwordReset.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { TableIdentity } from 'table-identity';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { ServiceCacheRedisBase, CacheRedis } from 'vona-module-a-cache';
|
|
4
4
|
|
|
5
5
|
export type TCacheRedisPasswordResetKey = string;
|
|
6
6
|
export interface TCacheRedisPasswordResetData {
|
|
@@ -10,7 +10,7 @@ export interface TCacheRedisPasswordResetData {
|
|
|
10
10
|
@CacheRedis({
|
|
11
11
|
ttl: 30 * 60 * 1000, // 30 minutes
|
|
12
12
|
})
|
|
13
|
-
export class CacheRedisPasswordReset extends
|
|
13
|
+
export class CacheRedisPasswordReset extends ServiceCacheRedisBase<
|
|
14
14
|
TCacheRedisPasswordResetKey,
|
|
15
15
|
TCacheRedisPasswordResetData
|
|
16
16
|
> {}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { ISummerCacheGet, TSummerCacheActionOptions } from 'vona-module-a-summer';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { ServiceSummerCacheBase, SummerCache } from 'vona-module-a-summer';
|
|
4
4
|
|
|
5
5
|
export type TSummerCacheJsonKey = any;
|
|
6
6
|
export type TSummerCacheJsonData = any;
|
|
7
7
|
|
|
8
8
|
@SummerCache({ preset: 'mem' })
|
|
9
9
|
export class SummerCacheJson
|
|
10
|
-
extends
|
|
10
|
+
extends ServiceSummerCacheBase<TSummerCacheJsonKey, TSummerCacheJsonData>
|
|
11
11
|
implements ISummerCacheGet<TSummerCacheJsonKey, TSummerCacheJsonData>
|
|
12
12
|
{
|
|
13
13
|
async getNative(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { IDecoratorDatabaseDialectOptions } from 'vona-module-a-orm';
|
|
2
|
-
import {
|
|
2
|
+
import { ServiceDatabaseDialectBase, DatabaseDialect } from 'vona-module-a-orm';
|
|
3
3
|
|
|
4
4
|
export interface IDatabaseDialectOptions<%=argv.beanNameCapitalize%> extends IDecoratorDatabaseDialectOptions {}
|
|
5
5
|
|
|
6
6
|
@DatabaseDialect<IDatabaseDialectOptions<%=argv.beanNameCapitalize%>>()
|
|
7
|
-
export class DatabaseDialect<%=argv.beanNameCapitalize%> extends
|
|
7
|
+
export class DatabaseDialect<%=argv.beanNameCapitalize%> extends ServiceDatabaseDialectBase {}
|
|
@@ -27,9 +27,7 @@ declare module 'vona-module-a-orm' {
|
|
|
27
27
|
/** aopMethod: end */
|
|
28
28
|
/** bean: begin */
|
|
29
29
|
export * from '../bean/bean.database.ts';
|
|
30
|
-
export * from '../bean/bean.databaseDialectBase.ts';
|
|
31
30
|
export * from '../bean/bean.model.ts';
|
|
32
|
-
export * from '../bean/bean.modelBase.ts';
|
|
33
31
|
|
|
34
32
|
import 'vona';
|
|
35
33
|
declare module 'vona' {
|
|
@@ -46,10 +44,12 @@ declare module 'vona-module-a-orm' {
|
|
|
46
44
|
/** bean: end */
|
|
47
45
|
/** bean: begin */
|
|
48
46
|
import type { BeanDatabase } from '../bean/bean.database.ts';
|
|
49
|
-
import '
|
|
47
|
+
import type { BeanModel } from '../bean/bean.model.ts';
|
|
48
|
+
import 'vona';
|
|
50
49
|
declare module 'vona' {
|
|
51
50
|
export interface IBeanRecordGlobal {
|
|
52
51
|
'database': BeanDatabase;
|
|
52
|
+
'model': BeanModel;
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
/** bean: end */
|
|
@@ -61,6 +61,7 @@ export * from '../service/columns_.ts';
|
|
|
61
61
|
export * from '../service/database.ts';
|
|
62
62
|
export * from '../service/databaseAsyncLocalStorage_.ts';
|
|
63
63
|
export * from '../service/databaseClient_.ts';
|
|
64
|
+
export * from '../service/databaseDialectBase_.ts';
|
|
64
65
|
export * from '../service/db_.ts';
|
|
65
66
|
export * from '../service/entityResolver_.ts';
|
|
66
67
|
export * from '../service/modelResolver_.ts';
|
|
@@ -9,7 +9,7 @@ import type {
|
|
|
9
9
|
IDatabaseClientRecord,
|
|
10
10
|
IDbInfo,
|
|
11
11
|
} from '../types/database.ts';
|
|
12
|
-
import type {
|
|
12
|
+
import type { ServiceDatabaseDialectBase } from '../service/databaseDialectBase_.ts';
|
|
13
13
|
|
|
14
14
|
import { ServiceDatabaseAsyncLocalStorage } from '../service/databaseAsyncLocalStorage_.ts';
|
|
15
15
|
import { ServiceDatabaseClient } from '../service/databaseClient_.ts';
|
|
@@ -44,13 +44,13 @@ export class BeanDatabase extends BeanBase {
|
|
|
44
44
|
return this.getClient(dbInfoOrClientName, clientConfig).db;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
getDialect(client: keyof IDatabaseClientDialectRecord):
|
|
47
|
+
getDialect(client: keyof IDatabaseClientDialectRecord): ServiceDatabaseDialectBase {
|
|
48
48
|
if (!client) throw new Error('database dialect not specified');
|
|
49
49
|
const beanFullName = beanFullNameFromOnionName(
|
|
50
50
|
this.scope.config.dialects[client],
|
|
51
51
|
'databaseDialect',
|
|
52
52
|
);
|
|
53
|
-
const dialect = this.app.bean._getBean(beanFullName) as
|
|
53
|
+
const dialect = this.app.bean._getBean(beanFullName) as ServiceDatabaseDialectBase;
|
|
54
54
|
if (!dialect) throw new Error(`database dialect not found: ${client}`);
|
|
55
55
|
return dialect;
|
|
56
56
|
}
|
|
@@ -5,7 +5,7 @@ import { BeanBase } from 'vona';
|
|
|
5
5
|
import { Schedule } from 'vona-module-a-schedule';
|
|
6
6
|
|
|
7
7
|
import type { IModelRecord, ISoftDeletionPrune } from '../types/onion/model.ts';
|
|
8
|
-
import type { BeanModelCache } from '
|
|
8
|
+
import type { BeanModelCache } from '../lib/bean.model/bean.model_cache.ts';
|
|
9
9
|
|
|
10
10
|
@Schedule({ repeat: { every: 24 * 3600 * 1000 } })
|
|
11
11
|
export class ScheduleSoftDeletionPrune extends BeanBase implements IScheduleExecute {
|
|
@@ -3,7 +3,7 @@ import type { Constructable } from 'vona';
|
|
|
3
3
|
import { appResource, beanFullNameFromOnionName } from 'vona';
|
|
4
4
|
import { prepareClassType } from 'vona-module-a-openapiutils';
|
|
5
5
|
|
|
6
|
-
import type { BeanModelMeta } from '../
|
|
6
|
+
import type { BeanModelMeta } from '../lib/bean.model/bean.model_meta.ts';
|
|
7
7
|
import type { TypeModelColumn, TypeModelColumns } from '../types/modelWhere.ts';
|
|
8
8
|
import type { IDecoratorModelOptions, IModelClassRecord } from '../types/onion/model.ts';
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ import 'bignumber.js';
|
|
|
3
3
|
export * from './.metadata/index.ts';
|
|
4
4
|
|
|
5
5
|
export * from './.metadata/locales.ts';
|
|
6
|
-
export * from './
|
|
6
|
+
export * from './lib/bean.model/bean.model_meta.ts';
|
|
7
7
|
export * from './common/index.ts';
|
|
8
8
|
export * from './extend/index.ts';
|
|
9
9
|
export * from './lib/index.ts';
|
package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_cache.ts
RENAMED
|
@@ -31,7 +31,7 @@ import type {
|
|
|
31
31
|
TypeModelsClassLikeGeneral,
|
|
32
32
|
TypeModelWhere,
|
|
33
33
|
} from '../../types/index.ts';
|
|
34
|
-
import type { TypeQueueDoubleDeleteJobData } from '
|
|
34
|
+
import type { TypeQueueDoubleDeleteJobData } from '../../bean/queue.doubleDelete.ts';
|
|
35
35
|
|
|
36
36
|
import { getTargetColumnName } from '../../common/utils.ts';
|
|
37
37
|
import { getCacheModelsClear } from '../../lib/const.ts';
|
package/vona/src/suite-vendor/a-vona/modules/a-orm/src/{bean → lib}/bean.model/bean.model_meta.ts
RENAMED
|
@@ -15,7 +15,7 @@ import type {
|
|
|
15
15
|
TypeModelOptionsTable,
|
|
16
16
|
TypeModelRelationOptionsMetaClient,
|
|
17
17
|
} from '../../types/index.ts';
|
|
18
|
-
import type { BeanModel } from '
|
|
18
|
+
import type { BeanModel } from '../../bean/bean.model.ts';
|
|
19
19
|
|
|
20
20
|
import { getTableOrTableAlias, prepareClassModel } from '../../common/utils.ts';
|
|
21
21
|
import { SymbolKeyEntity, SymbolKeyEntityMeta, SymbolKeyModelOptions } from '../../types/index.ts';
|