@nocobase/app-server 0.11.1-alpha.5 → 2.0.0-beta.1
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/README.md +295 -0
- package/dist/application/index.d.ts +128 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +386 -0
- package/dist/application/index.js.map +1 -0
- package/dist/caching/config.d.ts +2 -0
- package/dist/caching/config.d.ts.map +1 -0
- package/dist/caching/config.js +2 -0
- package/dist/caching/config.js.map +1 -0
- package/dist/caching/index.d.ts +5 -0
- package/dist/caching/index.d.ts.map +1 -0
- package/dist/caching/index.js +4 -0
- package/dist/caching/index.js.map +1 -0
- package/dist/caching/provider.d.ts +8 -0
- package/dist/caching/provider.d.ts.map +1 -0
- package/dist/caching/provider.js +14 -0
- package/dist/caching/provider.js.map +1 -0
- package/dist/caching/token.d.ts +4 -0
- package/dist/caching/token.d.ts.map +1 -0
- package/dist/caching/token.js +3 -0
- package/dist/caching/token.js.map +1 -0
- package/dist/config/app-config-types.d.ts +44 -0
- package/dist/config/app-config-types.d.ts.map +1 -0
- package/dist/config/app-config-types.js +2 -0
- package/dist/config/app-config-types.js.map +1 -0
- package/dist/config/app-config.d.ts +60 -0
- package/dist/config/app-config.d.ts.map +1 -0
- package/dist/config/app-config.js +247 -0
- package/dist/config/app-config.js.map +1 -0
- package/dist/config/context.d.ts +3 -0
- package/dist/config/context.d.ts.map +1 -0
- package/dist/config/context.js +7 -0
- package/dist/config/context.js.map +1 -0
- package/dist/config/define-app-config.d.ts +71 -0
- package/dist/config/define-app-config.d.ts.map +1 -0
- package/dist/config/define-app-config.js +48 -0
- package/dist/config/define-app-config.js.map +1 -0
- package/dist/config/index.d.ts +13 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +11 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/not-configured.d.ts +23 -0
- package/dist/config/not-configured.d.ts.map +1 -0
- package/dist/config/not-configured.js +31 -0
- package/dist/config/not-configured.js.map +1 -0
- package/dist/config/paths.d.ts +27 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +27 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/placeholder-secret.d.ts +19 -0
- package/dist/config/placeholder-secret.d.ts.map +1 -0
- package/dist/config/placeholder-secret.js +26 -0
- package/dist/config/placeholder-secret.js.map +1 -0
- package/dist/config/runtime-environment.d.ts +11 -0
- package/dist/config/runtime-environment.d.ts.map +1 -0
- package/dist/config/runtime-environment.js +20 -0
- package/dist/config/runtime-environment.js.map +1 -0
- package/dist/config/types.d.ts +12 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/validation.d.ts +36 -0
- package/dist/config/validation.d.ts.map +1 -0
- package/dist/config/validation.js +186 -0
- package/dist/config/validation.js.map +1 -0
- package/dist/config/variables.d.ts +57 -0
- package/dist/config/variables.d.ts.map +1 -0
- package/dist/config/variables.js +89 -0
- package/dist/config/variables.js.map +1 -0
- package/dist/database/collections-artifact.d.ts +99 -0
- package/dist/database/collections-artifact.d.ts.map +1 -0
- package/dist/database/collections-artifact.js +397 -0
- package/dist/database/collections-artifact.js.map +1 -0
- package/dist/database/collections-directory.d.ts +36 -0
- package/dist/database/collections-directory.d.ts.map +1 -0
- package/dist/database/collections-directory.js +115 -0
- package/dist/database/collections-directory.js.map +1 -0
- package/dist/database/collections-doctor.d.ts +43 -0
- package/dist/database/collections-doctor.d.ts.map +1 -0
- package/dist/database/collections-doctor.js +88 -0
- package/dist/database/collections-doctor.js.map +1 -0
- package/dist/database/connection-check.d.ts +25 -0
- package/dist/database/connection-check.d.ts.map +1 -0
- package/dist/database/connection-check.js +65 -0
- package/dist/database/connection-check.js.map +1 -0
- package/dist/database/connection-selection.d.ts +16 -0
- package/dist/database/connection-selection.d.ts.map +1 -0
- package/dist/database/connection-selection.js +30 -0
- package/dist/database/connection-selection.js.map +1 -0
- package/dist/database/define-app-database-config.d.ts +49 -0
- package/dist/database/define-app-database-config.d.ts.map +1 -0
- package/dist/database/define-app-database-config.js +73 -0
- package/dist/database/define-app-database-config.js.map +1 -0
- package/dist/database/environment.d.ts +11 -0
- package/dist/database/environment.d.ts.map +1 -0
- package/dist/database/environment.js +49 -0
- package/dist/database/environment.js.map +1 -0
- package/dist/database/index.d.ts +17 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +16 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/manager.d.ts +16 -0
- package/dist/database/manager.d.ts.map +1 -0
- package/dist/database/manager.js +83 -0
- package/dist/database/manager.js.map +1 -0
- package/dist/database/migrator.d.ts +88 -0
- package/dist/database/migrator.d.ts.map +1 -0
- package/dist/database/migrator.js +143 -0
- package/dist/database/migrator.js.map +1 -0
- package/dist/database/ownership.d.ts +6 -0
- package/dist/database/ownership.d.ts.map +1 -0
- package/dist/database/ownership.js +50 -0
- package/dist/database/ownership.js.map +1 -0
- package/dist/database/plan.d.ts +36 -0
- package/dist/database/plan.d.ts.map +1 -0
- package/dist/database/plan.js +136 -0
- package/dist/database/plan.js.map +1 -0
- package/dist/database/provider.d.ts +43 -0
- package/dist/database/provider.d.ts.map +1 -0
- package/dist/database/provider.js +171 -0
- package/dist/database/provider.js.map +1 -0
- package/dist/database/resolve-config.d.ts +42 -0
- package/dist/database/resolve-config.d.ts.map +1 -0
- package/dist/database/resolve-config.js +118 -0
- package/dist/database/resolve-config.js.map +1 -0
- package/dist/database/seeder.d.ts +50 -0
- package/dist/database/seeder.d.ts.map +1 -0
- package/dist/database/seeder.js +117 -0
- package/dist/database/seeder.js.map +1 -0
- package/dist/database/storage.d.ts +10 -0
- package/dist/database/storage.d.ts.map +1 -0
- package/dist/database/storage.js +37 -0
- package/dist/database/storage.js.map +1 -0
- package/dist/database/task-config.d.ts +7 -0
- package/dist/database/task-config.d.ts.map +1 -0
- package/dist/database/task-config.js +19 -0
- package/dist/database/task-config.js.map +1 -0
- package/dist/database/task-container.d.ts +3 -0
- package/dist/database/task-container.d.ts.map +1 -0
- package/dist/database/task-container.js +34 -0
- package/dist/database/task-container.js.map +1 -0
- package/dist/database/tasks.d.ts +104 -0
- package/dist/database/tasks.d.ts.map +1 -0
- package/dist/database/tasks.js +350 -0
- package/dist/database/tasks.js.map +1 -0
- package/dist/database/types.d.ts +92 -0
- package/dist/database/types.d.ts.map +1 -0
- package/dist/database/types.js +2 -0
- package/dist/database/types.js.map +1 -0
- package/dist/drive/config.d.ts +2 -0
- package/dist/drive/config.d.ts.map +1 -0
- package/dist/drive/config.js +2 -0
- package/dist/drive/config.js.map +1 -0
- package/dist/drive/index.d.ts +5 -0
- package/dist/drive/index.d.ts.map +1 -0
- package/dist/drive/index.js +4 -0
- package/dist/drive/index.js.map +1 -0
- package/dist/drive/provider.d.ts +9 -0
- package/dist/drive/provider.d.ts.map +1 -0
- package/dist/drive/provider.js +22 -0
- package/dist/drive/provider.js.map +1 -0
- package/dist/drive/token.d.ts +4 -0
- package/dist/drive/token.d.ts.map +1 -0
- package/dist/drive/token.js +3 -0
- package/dist/drive/token.js.map +1 -0
- package/dist/i18n/index.d.ts +37 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +44 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/id-generator/config.d.ts +2 -0
- package/dist/id-generator/config.d.ts.map +1 -0
- package/dist/id-generator/config.js +2 -0
- package/dist/id-generator/config.js.map +1 -0
- package/dist/id-generator/index.d.ts +5 -0
- package/dist/id-generator/index.d.ts.map +1 -0
- package/dist/id-generator/index.js +4 -0
- package/dist/id-generator/index.js.map +1 -0
- package/dist/id-generator/provider.d.ts +7 -0
- package/dist/id-generator/provider.d.ts.map +1 -0
- package/dist/id-generator/provider.js +11 -0
- package/dist/id-generator/provider.js.map +1 -0
- package/dist/id-generator/token.d.ts +4 -0
- package/dist/id-generator/token.d.ts.map +1 -0
- package/dist/id-generator/token.js +3 -0
- package/dist/id-generator/token.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/jobs/config.d.ts +2 -0
- package/dist/jobs/config.d.ts.map +1 -0
- package/dist/jobs/config.js +2 -0
- package/dist/jobs/config.js.map +1 -0
- package/dist/jobs/index.d.ts +4 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +4 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/jobs/provider.d.ts +23 -0
- package/dist/jobs/provider.d.ts.map +1 -0
- package/dist/jobs/provider.js +55 -0
- package/dist/jobs/provider.js.map +1 -0
- package/dist/jobs/token.d.ts +8 -0
- package/dist/jobs/token.d.ts.map +1 -0
- package/dist/jobs/token.js +7 -0
- package/dist/jobs/token.js.map +1 -0
- package/dist/logging/config.d.ts +16 -0
- package/dist/logging/config.d.ts.map +1 -0
- package/dist/logging/config.js +26 -0
- package/dist/logging/config.js.map +1 -0
- package/dist/logging/index.d.ts +5 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +5 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/middleware.d.ts +13 -0
- package/dist/logging/middleware.d.ts.map +1 -0
- package/dist/logging/middleware.js +128 -0
- package/dist/logging/middleware.js.map +1 -0
- package/dist/logging/provider.d.ts +9 -0
- package/dist/logging/provider.d.ts.map +1 -0
- package/dist/logging/provider.js +95 -0
- package/dist/logging/provider.js.map +1 -0
- package/dist/logging/token.d.ts +4 -0
- package/dist/logging/token.d.ts.map +1 -0
- package/dist/logging/token.js +3 -0
- package/dist/logging/token.js.map +1 -0
- package/dist/node/config.d.ts +6 -0
- package/dist/node/config.d.ts.map +1 -0
- package/dist/node/config.js +2 -0
- package/dist/node/config.js.map +1 -0
- package/dist/node/index.d.ts +6 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +6 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/not-configured-message.d.ts +10 -0
- package/dist/node/not-configured-message.d.ts.map +1 -0
- package/dist/node/not-configured-message.js +24 -0
- package/dist/node/not-configured-message.js.map +1 -0
- package/dist/node/proxy.d.ts +25 -0
- package/dist/node/proxy.d.ts.map +1 -0
- package/dist/node/proxy.js +229 -0
- package/dist/node/proxy.js.map +1 -0
- package/dist/node/runtime.d.ts +45 -0
- package/dist/node/runtime.d.ts.map +1 -0
- package/dist/node/runtime.js +176 -0
- package/dist/node/runtime.js.map +1 -0
- package/dist/node/scope.d.ts +55 -0
- package/dist/node/scope.d.ts.map +1 -0
- package/dist/node/scope.js +115 -0
- package/dist/node/scope.js.map +1 -0
- package/dist/node/server.d.ts +80 -0
- package/dist/node/server.d.ts.map +1 -0
- package/dist/node/server.js +283 -0
- package/dist/node/server.js.map +1 -0
- package/dist/plugins/define.d.ts +4 -0
- package/dist/plugins/define.d.ts.map +1 -0
- package/dist/plugins/define.js +45 -0
- package/dist/plugins/define.js.map +1 -0
- package/dist/plugins/index.d.ts +27 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +4 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/inspect.d.ts +79 -0
- package/dist/plugins/inspect.d.ts.map +1 -0
- package/dist/plugins/inspect.js +142 -0
- package/dist/plugins/inspect.js.map +1 -0
- package/dist/plugins/resolve.d.ts +14 -0
- package/dist/plugins/resolve.d.ts.map +1 -0
- package/dist/plugins/resolve.js +101 -0
- package/dist/plugins/resolve.js.map +1 -0
- package/dist/plugins/types.d.ts +91 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/proxy/http-proxy.d.ts +8 -0
- package/dist/proxy/http-proxy.d.ts.map +1 -0
- package/dist/proxy/http-proxy.js +59 -0
- package/dist/proxy/http-proxy.js.map +1 -0
- package/dist/proxy/index.d.ts +3 -0
- package/dist/proxy/index.d.ts.map +1 -0
- package/dist/proxy/index.js +3 -0
- package/dist/proxy/index.js.map +1 -0
- package/dist/proxy/origin.d.ts +12 -0
- package/dist/proxy/origin.d.ts.map +1 -0
- package/dist/proxy/origin.js +61 -0
- package/dist/proxy/origin.js.map +1 -0
- package/dist/queue/config.d.ts +4 -0
- package/dist/queue/config.d.ts.map +1 -0
- package/dist/queue/config.js +2 -0
- package/dist/queue/config.js.map +1 -0
- package/dist/queue/index.d.ts +4 -0
- package/dist/queue/index.d.ts.map +1 -0
- package/dist/queue/index.js +4 -0
- package/dist/queue/index.js.map +1 -0
- package/dist/queue/provider.d.ts +24 -0
- package/dist/queue/provider.d.ts.map +1 -0
- package/dist/queue/provider.js +57 -0
- package/dist/queue/provider.js.map +1 -0
- package/dist/queue/token.d.ts +9 -0
- package/dist/queue/token.d.ts.map +1 -0
- package/dist/queue/token.js +8 -0
- package/dist/queue/token.js.map +1 -0
- package/dist/realtime/index.d.ts +6 -0
- package/dist/realtime/index.d.ts.map +1 -0
- package/dist/realtime/index.js +6 -0
- package/dist/realtime/index.js.map +1 -0
- package/dist/realtime/provider.d.ts +10 -0
- package/dist/realtime/provider.d.ts.map +1 -0
- package/dist/realtime/provider.js +19 -0
- package/dist/realtime/provider.js.map +1 -0
- package/dist/realtime/service.d.ts +9 -0
- package/dist/realtime/service.d.ts.map +1 -0
- package/dist/realtime/service.js +347 -0
- package/dist/realtime/service.js.map +1 -0
- package/dist/realtime/types.d.ts +74 -0
- package/dist/realtime/types.d.ts.map +1 -0
- package/dist/realtime/types.js +4 -0
- package/dist/realtime/types.js.map +1 -0
- package/dist/realtime/websocket.d.ts +7 -0
- package/dist/realtime/websocket.d.ts.map +1 -0
- package/dist/realtime/websocket.js +57 -0
- package/dist/realtime/websocket.js.map +1 -0
- package/dist/router/api-error.d.ts +171 -0
- package/dist/router/api-error.d.ts.map +1 -0
- package/dist/router/api-error.js +291 -0
- package/dist/router/api-error.js.map +1 -0
- package/dist/router/api-limits.d.ts +80 -0
- package/dist/router/api-limits.d.ts.map +1 -0
- package/dist/router/api-limits.js +281 -0
- package/dist/router/api-limits.js.map +1 -0
- package/dist/router/cli/derive.d.ts +32 -0
- package/dist/router/cli/derive.d.ts.map +1 -0
- package/dist/router/cli/derive.js +548 -0
- package/dist/router/cli/derive.js.map +1 -0
- package/dist/router/cli/index.d.ts +6 -0
- package/dist/router/cli/index.d.ts.map +1 -0
- package/dist/router/cli/index.js +6 -0
- package/dist/router/cli/index.js.map +1 -0
- package/dist/router/cli/reference.d.ts +9 -0
- package/dist/router/cli/reference.d.ts.map +1 -0
- package/dist/router/cli/reference.js +64 -0
- package/dist/router/cli/reference.js.map +1 -0
- package/dist/router/cli/routes.d.ts +9 -0
- package/dist/router/cli/routes.d.ts.map +1 -0
- package/dist/router/cli/routes.js +228 -0
- package/dist/router/cli/routes.js.map +1 -0
- package/dist/router/cli/service.d.ts +50 -0
- package/dist/router/cli/service.d.ts.map +1 -0
- package/dist/router/cli/service.js +104 -0
- package/dist/router/cli/service.js.map +1 -0
- package/dist/router/cli/types.d.ts +278 -0
- package/dist/router/cli/types.d.ts.map +1 -0
- package/dist/router/cli/types.js +18 -0
- package/dist/router/cli/types.js.map +1 -0
- package/dist/router/duplicate-routes.d.ts +25 -0
- package/dist/router/duplicate-routes.d.ts.map +1 -0
- package/dist/router/duplicate-routes.js +51 -0
- package/dist/router/duplicate-routes.js.map +1 -0
- package/dist/router/health.d.ts +7 -0
- package/dist/router/health.d.ts.map +1 -0
- package/dist/router/health.js +48 -0
- package/dist/router/health.js.map +1 -0
- package/dist/router/index.d.ts +26 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +29 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/openapi/components.d.ts +24 -0
- package/dist/router/openapi/components.d.ts.map +1 -0
- package/dist/router/openapi/components.js +128 -0
- package/dist/router/openapi/components.js.map +1 -0
- package/dist/router/openapi/declared.d.ts +19 -0
- package/dist/router/openapi/declared.d.ts.map +1 -0
- package/dist/router/openapi/declared.js +46 -0
- package/dist/router/openapi/declared.js.map +1 -0
- package/dist/router/openapi/describe.d.ts +82 -0
- package/dist/router/openapi/describe.d.ts.map +1 -0
- package/dist/router/openapi/describe.js +207 -0
- package/dist/router/openapi/describe.js.map +1 -0
- package/dist/router/openapi/docs-routes.d.ts +10 -0
- package/dist/router/openapi/docs-routes.d.ts.map +1 -0
- package/dist/router/openapi/docs-routes.js +157 -0
- package/dist/router/openapi/docs-routes.js.map +1 -0
- package/dist/router/openapi/document.d.ts +151 -0
- package/dist/router/openapi/document.d.ts.map +1 -0
- package/dist/router/openapi/document.js +471 -0
- package/dist/router/openapi/document.js.map +1 -0
- package/dist/router/openapi/index.d.ts +7 -0
- package/dist/router/openapi/index.d.ts.map +1 -0
- package/dist/router/openapi/index.js +7 -0
- package/dist/router/openapi/index.js.map +1 -0
- package/dist/router/openapi/repository-document.d.ts +30 -0
- package/dist/router/openapi/repository-document.d.ts.map +1 -0
- package/dist/router/openapi/repository-document.js +812 -0
- package/dist/router/openapi/repository-document.js.map +1 -0
- package/dist/router/openapi/schema.d.ts +30 -0
- package/dist/router/openapi/schema.d.ts.map +1 -0
- package/dist/router/openapi/schema.js +301 -0
- package/dist/router/openapi/schema.js.map +1 -0
- package/dist/router/openapi/service.d.ts +101 -0
- package/dist/router/openapi/service.d.ts.map +1 -0
- package/dist/router/openapi/service.js +162 -0
- package/dist/router/openapi/service.js.map +1 -0
- package/dist/router/repository-constraints.d.ts +15 -0
- package/dist/router/repository-constraints.d.ts.map +1 -0
- package/dist/router/repository-constraints.js +14 -0
- package/dist/router/repository-constraints.js.map +1 -0
- package/dist/router/repository-routes.d.ts +90 -0
- package/dist/router/repository-routes.d.ts.map +1 -0
- package/dist/router/repository-routes.js +452 -0
- package/dist/router/repository-routes.js.map +1 -0
- package/dist/router/routes.d.ts +24 -0
- package/dist/router/routes.d.ts.map +1 -0
- package/dist/router/routes.js +19 -0
- package/dist/router/routes.js.map +1 -0
- package/dist/runtime/application.d.ts +8 -0
- package/dist/runtime/application.d.ts.map +1 -0
- package/dist/runtime/application.js +22 -0
- package/dist/runtime/application.js.map +1 -0
- package/dist/runtime/definition.d.ts +50 -0
- package/dist/runtime/definition.d.ts.map +1 -0
- package/dist/runtime/definition.js +82 -0
- package/dist/runtime/definition.js.map +1 -0
- package/dist/runtime/index.d.ts +8 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +7 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/lifecycle.d.ts +29 -0
- package/dist/runtime/lifecycle.d.ts.map +1 -0
- package/dist/runtime/lifecycle.js +104 -0
- package/dist/runtime/lifecycle.js.map +1 -0
- package/dist/runtime/mount.d.ts +4 -0
- package/dist/runtime/mount.d.ts.map +1 -0
- package/dist/runtime/mount.js +47 -0
- package/dist/runtime/mount.js.map +1 -0
- package/dist/runtime/scope.d.ts +29 -0
- package/dist/runtime/scope.d.ts.map +1 -0
- package/dist/runtime/scope.js +48 -0
- package/dist/runtime/scope.js.map +1 -0
- package/dist/runtime/types.d.ts +55 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +2 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/sample-data/index.d.ts +3 -0
- package/dist/sample-data/index.d.ts.map +1 -0
- package/dist/sample-data/index.js +3 -0
- package/dist/sample-data/index.js.map +1 -0
- package/dist/sample-data/registry.d.ts +4 -0
- package/dist/sample-data/registry.d.ts.map +1 -0
- package/dist/sample-data/registry.js +74 -0
- package/dist/sample-data/registry.js.map +1 -0
- package/dist/sample-data/token.d.ts +64 -0
- package/dist/sample-data/token.d.ts.map +1 -0
- package/dist/sample-data/token.js +7 -0
- package/dist/sample-data/token.js.map +1 -0
- package/dist/secrets/config.d.ts +15 -0
- package/dist/secrets/config.d.ts.map +1 -0
- package/dist/secrets/config.js +43 -0
- package/dist/secrets/config.js.map +1 -0
- package/dist/secrets/index.d.ts +6 -0
- package/dist/secrets/index.d.ts.map +1 -0
- package/dist/secrets/index.js +6 -0
- package/dist/secrets/index.js.map +1 -0
- package/dist/secrets/provider.d.ts +7 -0
- package/dist/secrets/provider.d.ts.map +1 -0
- package/dist/secrets/provider.js +10 -0
- package/dist/secrets/provider.js.map +1 -0
- package/dist/secrets/service.d.ts +64 -0
- package/dist/secrets/service.d.ts.map +1 -0
- package/dist/secrets/service.js +47 -0
- package/dist/secrets/service.js.map +1 -0
- package/dist/secrets/table-store.d.ts +34 -0
- package/dist/secrets/table-store.d.ts.map +1 -0
- package/dist/secrets/table-store.js +118 -0
- package/dist/secrets/table-store.js.map +1 -0
- package/dist/secrets/token.d.ts +4 -0
- package/dist/secrets/token.d.ts.map +1 -0
- package/dist/secrets/token.js +3 -0
- package/dist/secrets/token.js.map +1 -0
- package/dist/session/config.d.ts +10 -0
- package/dist/session/config.d.ts.map +1 -0
- package/dist/session/config.js +2 -0
- package/dist/session/config.js.map +1 -0
- package/dist/session/index.d.ts +4 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +4 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/provider.d.ts +26 -0
- package/dist/session/provider.d.ts.map +1 -0
- package/dist/session/provider.js +69 -0
- package/dist/session/provider.js.map +1 -0
- package/dist/session/token.d.ts +4 -0
- package/dist/session/token.d.ts.map +1 -0
- package/dist/session/token.js +3 -0
- package/dist/session/token.js.map +1 -0
- package/dist/spa/config.d.ts +5 -0
- package/dist/spa/config.d.ts.map +1 -0
- package/dist/spa/config.js +2 -0
- package/dist/spa/config.js.map +1 -0
- package/dist/spa/content-types.d.ts +2 -0
- package/dist/spa/content-types.d.ts.map +1 -0
- package/dist/spa/content-types.js +25 -0
- package/dist/spa/content-types.js.map +1 -0
- package/dist/spa/index.d.ts +9 -0
- package/dist/spa/index.d.ts.map +1 -0
- package/dist/spa/index.js +9 -0
- package/dist/spa/index.js.map +1 -0
- package/dist/spa/provider.d.ts +13 -0
- package/dist/spa/provider.d.ts.map +1 -0
- package/dist/spa/provider.js +90 -0
- package/dist/spa/provider.js.map +1 -0
- package/dist/spa/routes.d.ts +4 -0
- package/dist/spa/routes.d.ts.map +1 -0
- package/dist/spa/routes.js +58 -0
- package/dist/spa/routes.js.map +1 -0
- package/dist/spa/runtime-html.d.ts +14 -0
- package/dist/spa/runtime-html.d.ts.map +1 -0
- package/dist/spa/runtime-html.js +85 -0
- package/dist/spa/runtime-html.js.map +1 -0
- package/dist/spa/serve-index.d.ts +9 -0
- package/dist/spa/serve-index.d.ts.map +1 -0
- package/dist/spa/serve-index.js +12 -0
- package/dist/spa/serve-index.js.map +1 -0
- package/dist/spa/static-assets.d.ts +7 -0
- package/dist/spa/static-assets.d.ts.map +1 -0
- package/dist/spa/static-assets.js +90 -0
- package/dist/spa/static-assets.js.map +1 -0
- package/dist/spa/types.d.ts +23 -0
- package/dist/spa/types.d.ts.map +1 -0
- package/dist/spa/types.js +2 -0
- package/dist/spa/types.js.map +1 -0
- package/dist/support/index.d.ts +4 -0
- package/dist/support/index.d.ts.map +1 -0
- package/dist/support/index.js +4 -0
- package/dist/support/index.js.map +1 -0
- package/dist/support/paths.d.ts +10 -0
- package/dist/support/paths.d.ts.map +1 -0
- package/dist/support/paths.js +25 -0
- package/dist/support/paths.js.map +1 -0
- package/dist/support/redirects.d.ts +3 -0
- package/dist/support/redirects.d.ts.map +1 -0
- package/dist/support/redirects.js +48 -0
- package/dist/support/redirects.js.map +1 -0
- package/dist/support/requests.d.ts +2 -0
- package/dist/support/requests.d.ts.map +1 -0
- package/dist/support/requests.js +13 -0
- package/dist/support/requests.js.map +1 -0
- package/dist/swagger-ui/LICENSE +202 -0
- package/dist/swagger-ui/NOTICE +2 -0
- package/dist/swagger-ui/favicon-16x16.png +0 -0
- package/dist/swagger-ui/favicon-32x32.png +0 -0
- package/dist/swagger-ui/swagger-ui-bundle.js +2 -0
- package/dist/swagger-ui/swagger-ui-bundle.js.LICENSE.txt +129 -0
- package/dist/swagger-ui/swagger-ui.css +3 -0
- package/dist/websocket.d.ts +61 -0
- package/dist/websocket.d.ts.map +1 -0
- package/dist/websocket.js +371 -0
- package/dist/websocket.js.map +1 -0
- package/package.json +193 -12
- package/LICENSE +0 -661
- package/lib/config/cache.d.ts +0 -2
- package/lib/config/cache.js +0 -16
- package/lib/config/database.d.ts +0 -3
- package/lib/config/database.js +0 -25
- package/lib/config/index.d.ts +0 -10
- package/lib/config/index.js +0 -20
- package/lib/config/logger.d.ts +0 -3
- package/lib/config/logger.js +0 -11
- package/lib/config/plugins.d.ts +0 -3
- package/lib/config/plugins.js +0 -8
- package/lib/config/resourcer.d.ts +0 -4
- package/lib/config/resourcer.js +0 -10
- package/lib/index.d.ts +0 -3
- package/lib/index.js +0 -21
- package/src/config/cache.ts +0 -5
- package/src/config/database.ts +0 -21
- package/src/config/index.ts +0 -13
- package/src/config/logger.ts +0 -6
- package/src/config/plugins.ts +0 -3
- package/src/config/resourcer.ts +0 -3
- package/src/index.ts +0 -10
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { createServiceToken, } from '@nocobase/service-provider';
|
|
2
|
+
import { generateApiDocument, } from './document.js';
|
|
3
|
+
/**
|
|
4
|
+
* The application's API documentation: who may read it, what plugins add to it, and the cached document itself.
|
|
5
|
+
*
|
|
6
|
+
* - Access: `GET /api/swagger` and `GET /api/swagger/docs` are served only once at least one access check is
|
|
7
|
+
* registered, and only to a request one of them allows. With none registered the routes answer `404
|
|
8
|
+
* ROUTE_NOT_FOUND`, exactly like a path that does not exist: an application that has no way to tell who is asking
|
|
9
|
+
* does not publish its API. With checks registered and none allowing, they answer `401 UNAUTHENTICATED`.
|
|
10
|
+
* - Forwarded routes: a plugin that serves routes through a runtime dispatcher — one catch-all on `/api` that hands
|
|
11
|
+
* each request to a router at request time — registers each router with `addApiRouter()`, and each forwarded
|
|
12
|
+
* target it cannot see into with `addUndeclaredApiRoute()`. The document and `inspectApiRoutes(app)` treat the
|
|
13
|
+
* routers' routes exactly like routes mounted on `/api`; an undeclared route is reported and never documented.
|
|
14
|
+
* - Fragments: paths, components, tags and security schemes a plugin documents itself, merged after the declared
|
|
15
|
+
* routes.
|
|
16
|
+
* - Cache: the document is generated on the first request and kept until `invalidate()`, which anything that changes
|
|
17
|
+
* what the document describes calls — a Collection's metadata changing changes its data endpoints' schemas.
|
|
18
|
+
*/
|
|
19
|
+
export class ApiDocsService {
|
|
20
|
+
accessChecks = [];
|
|
21
|
+
fragments = [];
|
|
22
|
+
transforms = [];
|
|
23
|
+
forwardedRouters = [];
|
|
24
|
+
undeclaredRoutes = [];
|
|
25
|
+
target;
|
|
26
|
+
cached;
|
|
27
|
+
/** Allow the requests `access.check` accepts to read the documentation. Returns a function that removes it. */
|
|
28
|
+
addAccess(access) {
|
|
29
|
+
this.accessChecks.push(access);
|
|
30
|
+
return () => {
|
|
31
|
+
const index = this.accessChecks.indexOf(access);
|
|
32
|
+
if (index >= 0)
|
|
33
|
+
this.accessChecks.splice(index, 1);
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/** Merge `fragment` into the document. Returns a function that removes it. */
|
|
37
|
+
addFragment(fragment) {
|
|
38
|
+
this.fragments.push(fragment);
|
|
39
|
+
this.invalidate();
|
|
40
|
+
return () => {
|
|
41
|
+
const index = this.fragments.indexOf(fragment);
|
|
42
|
+
if (index >= 0)
|
|
43
|
+
this.fragments.splice(index, 1);
|
|
44
|
+
this.invalidate();
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/** Apply `transform` to every generated document, in the order added. Returns a function that removes it. */
|
|
48
|
+
addTransform(transform) {
|
|
49
|
+
return this.track(this.transforms, transform);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Requests under `prefix` are forwarded to `router` at request time, by a dispatcher the `/api` router sees only as a
|
|
53
|
+
* catch-all. Its routes are documented and inspected at `prefix` followed by the router's own paths, exactly like
|
|
54
|
+
* routes mounted on `/api`: each declares `describeRoute({...})` or `describeRoute({ hide: true })`. With `scope`,
|
|
55
|
+
* only routes at `prefix` + `scope` or below it are documented; one outside it is never reached, is left out of the
|
|
56
|
+
* document and the duplicate-route check, and is reported as undeclared. Registered
|
|
57
|
+
* before the application registers its routes, they also take part in the duplicate-route check at start. Returns a
|
|
58
|
+
* function that removes the registration.
|
|
59
|
+
*/
|
|
60
|
+
addApiRouter(registration) {
|
|
61
|
+
const { prefix } = registration;
|
|
62
|
+
if (prefix !== '/api' && !prefix.startsWith('/api/'))
|
|
63
|
+
throw new Error(`${registration.owner}: a forwarded API router's prefix must be /api or a path below it, not ${prefix}.`);
|
|
64
|
+
const { scope } = registration;
|
|
65
|
+
if (scope !== undefined && !scope.startsWith('/'))
|
|
66
|
+
throw new Error(`${registration.owner}: a forwarded API router's scope must start with /, not ${scope}.`);
|
|
67
|
+
const entry = {
|
|
68
|
+
...registration,
|
|
69
|
+
prefix: prefix.replace(/\/+$/, ''),
|
|
70
|
+
...(scope === undefined ? {} : { scope: scope.replace(/\/+$/, '') }),
|
|
71
|
+
};
|
|
72
|
+
return this.track(this.forwardedRouters, entry);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* A forwarded target the framework cannot see into, such as a plain function a dispatcher calls: it always counts as
|
|
76
|
+
* undeclared in `findUndeclaredApiRoutes(app)`, so the API document check fails, and it never appears in the
|
|
77
|
+
* document. Returns a function that removes the registration.
|
|
78
|
+
*/
|
|
79
|
+
addUndeclaredApiRoute(route) {
|
|
80
|
+
return this.track(this.undeclaredRoutes, { ...route });
|
|
81
|
+
}
|
|
82
|
+
/** What the registered dispatchers forward to, as `inspectApiRoutes()` and the document read it. */
|
|
83
|
+
get forwardedApiRoutes() {
|
|
84
|
+
return {
|
|
85
|
+
routers: [...this.forwardedRouters],
|
|
86
|
+
undeclared: [...this.undeclaredRoutes],
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
track(list, entry) {
|
|
90
|
+
list.push(entry);
|
|
91
|
+
this.invalidate();
|
|
92
|
+
return () => {
|
|
93
|
+
const index = list.indexOf(entry);
|
|
94
|
+
if (index >= 0)
|
|
95
|
+
list.splice(index, 1);
|
|
96
|
+
this.invalidate();
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/** Whether any access check is registered, which decides whether the documentation is served at all. */
|
|
100
|
+
hasAccessChecks() {
|
|
101
|
+
return this.accessChecks.length > 0;
|
|
102
|
+
}
|
|
103
|
+
/** Whether one of the registered checks allows `context` to read the documentation. */
|
|
104
|
+
async canRead(context) {
|
|
105
|
+
for (const access of [...this.accessChecks]) {
|
|
106
|
+
if (await access.check(context))
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
/** Called by the application once its `/api` router is assembled. */
|
|
112
|
+
attach(target) {
|
|
113
|
+
this.target = target;
|
|
114
|
+
this.invalidate();
|
|
115
|
+
}
|
|
116
|
+
/** The `/api` router the document is generated from, once the application has registered its routes. */
|
|
117
|
+
get apiRouter() {
|
|
118
|
+
return this.target?.api;
|
|
119
|
+
}
|
|
120
|
+
/** The document, generated on first use and cached until `invalidate()`. */
|
|
121
|
+
getDocument() {
|
|
122
|
+
const target = this.target;
|
|
123
|
+
if (!target) {
|
|
124
|
+
return Promise.reject(new Error('The API document is not available before the application registers its routes.'));
|
|
125
|
+
}
|
|
126
|
+
if (!this.cached) {
|
|
127
|
+
const generation = this.generate(target);
|
|
128
|
+
this.cached = generation;
|
|
129
|
+
// A failed generation is not cached, so the next request tries again.
|
|
130
|
+
generation.catch(() => {
|
|
131
|
+
if (this.cached === generation)
|
|
132
|
+
this.cached = undefined;
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
return this.cached;
|
|
136
|
+
}
|
|
137
|
+
/** Drop the cached document; the next read generates it again. */
|
|
138
|
+
invalidate() {
|
|
139
|
+
this.cached = undefined;
|
|
140
|
+
}
|
|
141
|
+
async generate(target) {
|
|
142
|
+
const fragments = [];
|
|
143
|
+
for (const source of this.fragments) {
|
|
144
|
+
fragments.push(typeof source === 'function' ? await source() : source);
|
|
145
|
+
}
|
|
146
|
+
const document = await generateApiDocument(target.api, {
|
|
147
|
+
...(await target.describe()),
|
|
148
|
+
forwarded: this.forwardedApiRoutes,
|
|
149
|
+
fragments,
|
|
150
|
+
...(target.onWarning ? { onWarning: target.onWarning } : {}),
|
|
151
|
+
});
|
|
152
|
+
for (const transform of [...this.transforms])
|
|
153
|
+
await transform(document);
|
|
154
|
+
return document;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* The application's `ApiDocsService`. A plugin resolves it in its service provider's `register()` or `boot()` to add
|
|
159
|
+
* an access check or a fragment, or to invalidate the cached document.
|
|
160
|
+
*/
|
|
161
|
+
export const apiDocsToken = createServiceToken('@nocobase/app/api-docs');
|
|
162
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/router/openapi/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Context } from 'hono';
|
|
2
|
+
import { type RepositoryPolicy } from '@nocobase/db';
|
|
3
|
+
import type { RepositoryApiAction } from './repository-routes.js';
|
|
4
|
+
/** Trusted middleware may only narrow the policy of the matching endpoint. */
|
|
5
|
+
export interface RepositoryRequestConstraint {
|
|
6
|
+
readonly repository: string;
|
|
7
|
+
readonly action: RepositoryApiAction;
|
|
8
|
+
readonly collection: string;
|
|
9
|
+
readonly connection?: string;
|
|
10
|
+
readonly policy: RepositoryPolicy;
|
|
11
|
+
}
|
|
12
|
+
export declare function addRepositoryRequestConstraint(context: Context, constraint: RepositoryRequestConstraint): void;
|
|
13
|
+
/** Server-owned request state, never populated from a request body. */
|
|
14
|
+
export declare function getRepositoryRequestConstraints(context: Context): readonly RepositoryRequestConstraint[];
|
|
15
|
+
//# sourceMappingURL=repository-constraints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository-constraints.d.ts","sourceRoot":"","sources":["../../src/router/repository-constraints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAA6B,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAIlE,8EAA8E;AAC9E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,2BAA2B,GACtC,IAAI,CAMN;AAED,uEAAuE;AACvE,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,OAAO,GACf,SAAS,2BAA2B,EAAE,CAKxC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { normalizeRepositoryPolicy } from '@nocobase/db';
|
|
2
|
+
const constraintsKey = '@nocobase/app-server/repository-constraints';
|
|
3
|
+
export function addRepositoryRequestConstraint(context, constraint) {
|
|
4
|
+
const previous = getRepositoryRequestConstraints(context);
|
|
5
|
+
context.set(constraintsKey, [
|
|
6
|
+
...previous,
|
|
7
|
+
{ ...constraint, policy: normalizeRepositoryPolicy(constraint.policy) },
|
|
8
|
+
]);
|
|
9
|
+
}
|
|
10
|
+
/** Server-owned request state, never populated from a request body. */
|
|
11
|
+
export function getRepositoryRequestConstraints(context) {
|
|
12
|
+
return (context.get(constraintsKey) ?? []);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=repository-constraints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository-constraints.js","sourceRoot":"","sources":["../../src/router/repository-constraints.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAyB,MAAM,cAAc,CAAC;AAGhF,MAAM,cAAc,GAAG,6CAA6C,CAAC;AAWrE,MAAM,UAAU,8BAA8B,CAC5C,OAAgB,EAChB,UAAuC;IAEvC,MAAM,QAAQ,GAAG,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE;QAC1B,GAAG,QAAQ;QACX,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,yBAAyB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;KACxE,CAAC,CAAC;AACL,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,+BAA+B,CAC7C,OAAgB;IAEhB,OAAO,CACJ,OAAO,CAAC,GAAG,CAAC,cAAc,CAC0B,IAAI,EAAE,CAC5D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { type RepositoryPolicy } from '@nocobase/db';
|
|
2
|
+
import type { ServiceContainer } from '@nocobase/service-provider';
|
|
3
|
+
import { type Context } from 'hono';
|
|
4
|
+
import { type AppApiRouteContribution } from './routes.js';
|
|
5
|
+
import type { ApiSchema } from './openapi/describe.js';
|
|
6
|
+
export type RepositoryApiAction = 'findMany' | 'findOne' | 'count' | 'aggregate' | 'groupBy' | 'exists' | 'createOne' | 'updateOne' | 'deleteOne';
|
|
7
|
+
/**
|
|
8
|
+
* Options an action accepts. An action decides whether an endpoint exists;
|
|
9
|
+
* what it may do is the exposure's Policy, which every action shares.
|
|
10
|
+
*/
|
|
11
|
+
export type RepositoryApiActionOptions = Readonly<Record<string, never>>;
|
|
12
|
+
export type RepositoryApiEmptyActionOptions = RepositoryApiActionOptions;
|
|
13
|
+
export interface RepositoryApiFindManyOptions {
|
|
14
|
+
/** Default and maximum limit. Defaults to 100. */
|
|
15
|
+
readonly maxLimit?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface RepositoryApiActions {
|
|
18
|
+
readonly findMany?: RepositoryApiFindManyOptions;
|
|
19
|
+
readonly findOne?: RepositoryApiEmptyActionOptions;
|
|
20
|
+
readonly count?: RepositoryApiEmptyActionOptions;
|
|
21
|
+
readonly exists?: RepositoryApiEmptyActionOptions;
|
|
22
|
+
readonly aggregate?: RepositoryApiEmptyActionOptions;
|
|
23
|
+
readonly groupBy?: RepositoryApiEmptyActionOptions;
|
|
24
|
+
readonly createOne?: RepositoryApiEmptyActionOptions;
|
|
25
|
+
readonly updateOne?: RepositoryApiEmptyActionOptions;
|
|
26
|
+
readonly deleteOne?: RepositoryApiEmptyActionOptions;
|
|
27
|
+
}
|
|
28
|
+
export interface RepositoryApiExposure<P = unknown> {
|
|
29
|
+
/**
|
|
30
|
+
* The name passed to api.repository(name), and the first segment of every
|
|
31
|
+
* endpoint, `POST /api/{name}/{action}`. camelCase, such as `salesOrders`.
|
|
32
|
+
*/
|
|
33
|
+
readonly name: string;
|
|
34
|
+
/** Logical Collection name; defaults to name. */
|
|
35
|
+
readonly collection?: string;
|
|
36
|
+
/** Database connection name; defaults to the application's default connection. */
|
|
37
|
+
readonly connection?: string;
|
|
38
|
+
/**
|
|
39
|
+
* The Policy every action of this exposure runs under. Required: an exposure
|
|
40
|
+
* without one would accept anything, and a missing declaration is the one
|
|
41
|
+
* mistake that reads exactly like a deliberate one.
|
|
42
|
+
*
|
|
43
|
+
* A function receives the principal resolved for the request, which is what
|
|
44
|
+
* lets a scope name the caller. It is server-owned either way — a request
|
|
45
|
+
* body naming `policy` or `scope` is refused, because the per-action
|
|
46
|
+
* allowlist below enumerates what an action reads from the body and neither
|
|
47
|
+
* is on it.
|
|
48
|
+
*/
|
|
49
|
+
readonly policy: RepositoryPolicy | ((principal: P) => RepositoryPolicy);
|
|
50
|
+
readonly actions: RepositoryApiActions;
|
|
51
|
+
/**
|
|
52
|
+
* Fields the exposure adds to every record it returns that are not fields of the Collection, such as a URL derived
|
|
53
|
+
* from a record's columns, each described by a Standard Schema (such as a zod schema) or an OpenAPI schema.
|
|
54
|
+
*
|
|
55
|
+
* Documentation only: the router does not compute them. Whatever adds them to a response, such as a middleware on
|
|
56
|
+
* the exposure's paths, declares them here so the API document lists them, read-only, in the exposure's record
|
|
57
|
+
* schema wherever a record is returned. They never appear in `values`, `filter` or `sort`. A name that is also a
|
|
58
|
+
* field of the Collection fails when the routes are created.
|
|
59
|
+
*/
|
|
60
|
+
readonly computedFields?: Readonly<Record<string, ApiSchema>>;
|
|
61
|
+
}
|
|
62
|
+
export interface DefineRepositoryApiRoutesOptions<P = unknown> {
|
|
63
|
+
readonly repositories: readonly RepositoryApiExposure<P>[];
|
|
64
|
+
/**
|
|
65
|
+
* Resolve the principal a Policy function receives. Required as soon as one
|
|
66
|
+
* exposure declares a Policy function, and never called otherwise.
|
|
67
|
+
*
|
|
68
|
+
* The application owns this: `app-server` does not know how a request is
|
|
69
|
+
* authenticated. Returning `undefined` or `null` refuses the request with
|
|
70
|
+
* 403 rather than binding a Policy built from a principal that is not there,
|
|
71
|
+
* which is why the return type admits both.
|
|
72
|
+
*/
|
|
73
|
+
readonly principal?: (context: Context) => P | undefined | null | Promise<P | undefined | null>;
|
|
74
|
+
}
|
|
75
|
+
export interface RepositoryApiRoutesApplication {
|
|
76
|
+
readonly container: ServiceContainer;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Exposes only configured Repository endpoints using `POST /{name}/{action}`,
|
|
80
|
+
* mounted under `/api`. Every path is literal — a name and an action, no
|
|
81
|
+
* parameters — so the endpoints of one exposure cannot shadow each other. An
|
|
82
|
+
* exposure name shares the first segment with plugin namespaces, so it must not
|
|
83
|
+
* equal one: name an exposure after its Collection, such as `salesOrders`,
|
|
84
|
+
* rather than after a plugin.
|
|
85
|
+
*
|
|
86
|
+
* This basic adapter does not install authentication or authorization. Database
|
|
87
|
+
* services are resolved only when the application creates the router.
|
|
88
|
+
*/
|
|
89
|
+
export declare function defineRepositoryApiRoutes<P = unknown>(options: DefineRepositoryApiRoutesOptions<P>): AppApiRouteContribution<RepositoryApiRoutesApplication>;
|
|
90
|
+
//# sourceMappingURL=repository-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository-routes.d.ts","sourceRoot":"","sources":["../../src/router/repository-routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,gBAAgB,EAUtB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAU1C,OAAO,EAAmB,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGvD,MAAM,MAAM,mBAAmB,GAC3B,UAAU,GACV,SAAS,GACT,OAAO,GACP,WAAW,GACX,SAAS,GACT,QAAQ,GACR,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB;;;GAGG;AACH,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACzE,MAAM,MAAM,+BAA+B,GAAG,0BAA0B,CAAC;AACzE,MAAM,WAAW,4BAA4B;IAC3C,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AACD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,4BAA4B,CAAC;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,+BAA+B,CAAC;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,+BAA+B,CAAC;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,+BAA+B,CAAC;IAClD,QAAQ,CAAC,SAAS,CAAC,EAAE,+BAA+B,CAAC;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,+BAA+B,CAAC;IACnD,QAAQ,CAAC,SAAS,CAAC,EAAE,+BAA+B,CAAC;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,+BAA+B,CAAC;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,+BAA+B,CAAC;CACtD;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,GAAG,OAAO;IAChD;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,kFAAkF;IAClF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK,gBAAgB,CAAC,CAAC;IACzE,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC;;;;;;;;OAQG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,gCAAgC,CAAC,CAAC,GAAG,OAAO;IAC3D,QAAQ,CAAC,YAAY,EAAE,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D;;;;;;;;OAQG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CACnB,OAAO,EAAE,OAAO,KACb,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;CACtC;AAuDD;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,GAAG,OAAO,EACnD,OAAO,EAAE,gCAAgC,CAAC,CAAC,CAAC,GAC3C,uBAAuB,CAAC,8BAA8B,CAAC,CA2NzD"}
|