@nocobase/app-server 0.11.1-alpha.5 → 2.0.0-beta.2
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 +96 -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,452 @@
|
|
|
1
|
+
import { databaseManagerToken, normalizeRepositoryPolicy, } from '@nocobase/db';
|
|
2
|
+
import { Hono } from 'hono';
|
|
3
|
+
import { bodyLimit } from 'hono/body-limit';
|
|
4
|
+
import { stream } from 'hono/streaming';
|
|
5
|
+
import { ApiError, appErrorDomain, apiErrorHandler, toApiError, } from './api-error.js';
|
|
6
|
+
import { defineApiRoutes } from './routes.js';
|
|
7
|
+
import { getRepositoryRequestConstraints } from './repository-constraints.js';
|
|
8
|
+
import { describeRepositoryEndpoint } from './openapi/repository-document.js';
|
|
9
|
+
const allowedOptions = {
|
|
10
|
+
findMany: [
|
|
11
|
+
'filter',
|
|
12
|
+
'select',
|
|
13
|
+
'sort',
|
|
14
|
+
'distinct',
|
|
15
|
+
'limit',
|
|
16
|
+
'offset',
|
|
17
|
+
'cursor',
|
|
18
|
+
'direction',
|
|
19
|
+
],
|
|
20
|
+
findOne: ['filter', 'select', 'sort'],
|
|
21
|
+
count: ['filter'],
|
|
22
|
+
aggregate: ['filter', 'aggregate'],
|
|
23
|
+
groupBy: ['by', 'filter', 'aggregate', 'having', 'sort'],
|
|
24
|
+
exists: ['filter'],
|
|
25
|
+
createOne: ['values', 'select'],
|
|
26
|
+
updateOne: ['filter', 'values', 'select', 'ifVersion'],
|
|
27
|
+
deleteOne: ['filter', 'select', 'ifVersion'],
|
|
28
|
+
};
|
|
29
|
+
const repositoryStreamMediaType = 'application/x-ndjson';
|
|
30
|
+
/**
|
|
31
|
+
* An exposure name is the first path segment of its endpoints, `POST
|
|
32
|
+
* /api/{name}/{action}`, so it follows the HTTP API rule for path segments:
|
|
33
|
+
* camelCase, starting with a lowercase letter. That also keeps it free of `/`,
|
|
34
|
+
* `:` and anything else that would need encoding.
|
|
35
|
+
*/
|
|
36
|
+
const exposureNamePattern = /^[a-z][a-zA-Z0-9]*$/;
|
|
37
|
+
/**
|
|
38
|
+
* First segments the application itself answers under `/api`. An exposure with
|
|
39
|
+
* one of these names would sit beside, or behind, a route that is not a
|
|
40
|
+
* Repository endpoint.
|
|
41
|
+
*/
|
|
42
|
+
const reservedExposureNames = new Set([
|
|
43
|
+
'auth',
|
|
44
|
+
'healthz',
|
|
45
|
+
'swagger',
|
|
46
|
+
]);
|
|
47
|
+
function assertExposureName(name) {
|
|
48
|
+
if (typeof name !== 'string' || !exposureNamePattern.test(name))
|
|
49
|
+
throw new Error(`Repository API exposure name ${JSON.stringify(name)} is invalid. Exposure names are camelCase path segments matching /^[a-z][a-zA-Z0-9]*$/, such as "salesOrders".`);
|
|
50
|
+
if (reservedExposureNames.has(name))
|
|
51
|
+
throw new Error(`Repository API exposure name "${name}" is reserved for /api/${name}. Choose another name.`);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Exposes only configured Repository endpoints using `POST /{name}/{action}`,
|
|
55
|
+
* mounted under `/api`. Every path is literal — a name and an action, no
|
|
56
|
+
* parameters — so the endpoints of one exposure cannot shadow each other. An
|
|
57
|
+
* exposure name shares the first segment with plugin namespaces, so it must not
|
|
58
|
+
* equal one: name an exposure after its Collection, such as `salesOrders`,
|
|
59
|
+
* rather than after a plugin.
|
|
60
|
+
*
|
|
61
|
+
* This basic adapter does not install authentication or authorization. Database
|
|
62
|
+
* services are resolved only when the application creates the router.
|
|
63
|
+
*/
|
|
64
|
+
export function defineRepositoryApiRoutes(options) {
|
|
65
|
+
assertConfig(options, ['repositories', 'principal'], 'Repository API configuration');
|
|
66
|
+
if (options.principal !== undefined &&
|
|
67
|
+
typeof options.principal !== 'function')
|
|
68
|
+
throw new Error('Repository API principal must be a function.');
|
|
69
|
+
if (!Array.isArray(options.repositories))
|
|
70
|
+
throw new Error('repositories must be an array.');
|
|
71
|
+
const names = new Set();
|
|
72
|
+
const repositories = options.repositories.map((entry) => {
|
|
73
|
+
assertConfig(entry, [
|
|
74
|
+
'name',
|
|
75
|
+
'collection',
|
|
76
|
+
'connection',
|
|
77
|
+
'policy',
|
|
78
|
+
'actions',
|
|
79
|
+
'computedFields',
|
|
80
|
+
], 'Repository API exposure');
|
|
81
|
+
assertExposureName(entry.name);
|
|
82
|
+
if (names.has(entry.name))
|
|
83
|
+
throw new Error(`Repository API exposure name "${entry.name}" is declared more than once. Each exposure needs a unique name.`);
|
|
84
|
+
names.add(entry.name);
|
|
85
|
+
const collection = entry.collection ?? entry.name;
|
|
86
|
+
if (typeof collection !== 'string' || !collection)
|
|
87
|
+
throw new Error('Repository API collection must not be empty.');
|
|
88
|
+
if (entry.connection !== undefined &&
|
|
89
|
+
(typeof entry.connection !== 'string' || !entry.connection))
|
|
90
|
+
throw new Error('Repository API connection must not be empty.');
|
|
91
|
+
assertConfig(entry.actions, Object.keys(allowedOptions), 'Repository API actions');
|
|
92
|
+
const policyInput = entry.policy;
|
|
93
|
+
if (policyInput === undefined)
|
|
94
|
+
throw new Error(`Repository API exposure "${entry.name}" requires a policy. Declare one for every exposure; an exposure without a Policy restricts nothing.`);
|
|
95
|
+
if (typeof policyInput === 'function' && options.principal === undefined)
|
|
96
|
+
throw new Error(`Repository API exposure "${entry.name}" declares a policy function, which needs a principal resolver. Pass one as principal(context).`);
|
|
97
|
+
// A Policy that does not depend on the principal is normalized once, here,
|
|
98
|
+
// so a malformed one fails where it is written. A function cannot be:
|
|
99
|
+
// it is evaluated per request, and so is its validation.
|
|
100
|
+
const policy = typeof policyInput === 'function'
|
|
101
|
+
? policyInput
|
|
102
|
+
: assertBindablePolicy(normalizeRepositoryPolicy(policyInput));
|
|
103
|
+
const actions = Object.entries(entry.actions).map(([key, config]) => {
|
|
104
|
+
const action = key;
|
|
105
|
+
assertConfig(config, action === 'findMany' ? ['maxLimit'] : [], `Repository API action ${action}`);
|
|
106
|
+
const maxLimit = action === 'findMany' && config.maxLimit !== undefined
|
|
107
|
+
? config.maxLimit
|
|
108
|
+
: 100;
|
|
109
|
+
if (typeof maxLimit !== 'number' ||
|
|
110
|
+
!Number.isSafeInteger(maxLimit) ||
|
|
111
|
+
maxLimit <= 0)
|
|
112
|
+
throw new Error('Repository API maxLimit must be a positive safe integer.');
|
|
113
|
+
return { action, maxLimit };
|
|
114
|
+
});
|
|
115
|
+
return {
|
|
116
|
+
name: entry.name,
|
|
117
|
+
collection,
|
|
118
|
+
connection: entry.connection,
|
|
119
|
+
policy,
|
|
120
|
+
actions,
|
|
121
|
+
computedFields: assertComputedFields(entry.name, entry.computedFields),
|
|
122
|
+
};
|
|
123
|
+
});
|
|
124
|
+
return defineApiRoutes((app) => {
|
|
125
|
+
const declaring = repositories.filter((entry) => Object.keys(entry.computedFields).length > 0);
|
|
126
|
+
// Only an exposure that declares computed fields reads its Collection here, so the others create their router
|
|
127
|
+
// without touching the database, as they always have.
|
|
128
|
+
if (declaring.length === 0)
|
|
129
|
+
return createRouter(app);
|
|
130
|
+
return Promise.all(declaring.map((entry) => assertComputedFieldsFree(entry, app.container
|
|
131
|
+
.resolve(databaseManagerToken)
|
|
132
|
+
.collections(entry.connection)
|
|
133
|
+
.get(entry.collection)))).then(() => createRouter(app));
|
|
134
|
+
});
|
|
135
|
+
function createRouter(app) {
|
|
136
|
+
const router = new Hono();
|
|
137
|
+
router.onError(apiErrorHandler);
|
|
138
|
+
for (const entry of repositories) {
|
|
139
|
+
if (entry.actions.length === 0)
|
|
140
|
+
continue;
|
|
141
|
+
const repository = app.container
|
|
142
|
+
.resolve(databaseManagerToken)
|
|
143
|
+
.repository(entry.collection, entry.connection);
|
|
144
|
+
// A Policy that does not read the principal binds once, here. One that
|
|
145
|
+
// does cannot: it is built per request, and so is the Repository it
|
|
146
|
+
// binds to — `withPolicy` returns a new instance and leaves this one
|
|
147
|
+
// unbound for the next request.
|
|
148
|
+
const bound = typeof entry.policy === 'function'
|
|
149
|
+
? undefined
|
|
150
|
+
: repository.withPolicy(entry.policy);
|
|
151
|
+
const buildPolicy = entry.policy;
|
|
152
|
+
for (const { action, maxLimit } of entry.actions) {
|
|
153
|
+
router.post(`/${entry.name}/${action}`,
|
|
154
|
+
// Documented from the Collection when the API document is generated, not declared by hand.
|
|
155
|
+
describeRepositoryEndpoint({
|
|
156
|
+
exposure: entry.name,
|
|
157
|
+
collection: entry.collection,
|
|
158
|
+
connection: entry.connection,
|
|
159
|
+
action,
|
|
160
|
+
maxLimit,
|
|
161
|
+
policy: typeof entry.policy === 'function' ? undefined : entry.policy,
|
|
162
|
+
computedFields: entry.computedFields,
|
|
163
|
+
loadCollection: () => app.container
|
|
164
|
+
.resolve(databaseManagerToken)
|
|
165
|
+
.collections(entry.connection)
|
|
166
|
+
.get(entry.collection),
|
|
167
|
+
}), bodyLimit({
|
|
168
|
+
maxSize: 1024 * 1024,
|
|
169
|
+
onError: (context) => apiErrorHandler(new ApiError({
|
|
170
|
+
status: 'INVALID_ARGUMENT',
|
|
171
|
+
reason: 'BODY_TOO_LARGE',
|
|
172
|
+
domain: appErrorDomain,
|
|
173
|
+
message: 'Repository request exceeds 1 MiB.',
|
|
174
|
+
httpStatus: 413,
|
|
175
|
+
}), context),
|
|
176
|
+
}), async (context) => {
|
|
177
|
+
let scoped = bound ??
|
|
178
|
+
repository.withPolicy(
|
|
179
|
+
// Normalized before binding so the reference check runs on
|
|
180
|
+
// this Policy too; `withPolicy` normalizes again, which is
|
|
181
|
+
// idempotent.
|
|
182
|
+
assertBindablePolicy(normalizeRepositoryPolicy(buildPolicy(await resolvePrincipal(context, options.principal)))));
|
|
183
|
+
for (const constraint of getRepositoryRequestConstraints(context)) {
|
|
184
|
+
if (constraint.repository !== entry.name ||
|
|
185
|
+
constraint.action !== action ||
|
|
186
|
+
constraint.collection !== entry.collection ||
|
|
187
|
+
constraint.connection !== entry.connection) {
|
|
188
|
+
fail(403, 'AUTHORIZATION_TARGET_MISMATCH', 'Repository authorization target mismatch.');
|
|
189
|
+
}
|
|
190
|
+
scoped = scoped.narrow(constraint.policy);
|
|
191
|
+
}
|
|
192
|
+
const input = await readInput(context, action, maxLimit);
|
|
193
|
+
if (action === 'findMany' && acceptsRepositoryStream(context)) {
|
|
194
|
+
return streamFindMany(context, scoped, input);
|
|
195
|
+
}
|
|
196
|
+
const data = await execute(scoped, action, input);
|
|
197
|
+
if (action === 'aggregate' || action === 'groupBy') {
|
|
198
|
+
return context.body(JSON.stringify({ data }, (_key, value) => typeof value === 'bigint' ? value.toString() : value), 200, { 'Content-Type': 'application/json; charset=UTF-8' });
|
|
199
|
+
}
|
|
200
|
+
return context.json({ data });
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return router;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/** Validate an exposure's `computedFields` declaration, returning it frozen, or an empty record when absent. */
|
|
208
|
+
function assertComputedFields(exposure, value) {
|
|
209
|
+
if (value === undefined)
|
|
210
|
+
return Object.freeze({});
|
|
211
|
+
if (!isObject(value) ||
|
|
212
|
+
(Object.getPrototypeOf(value) !== Object.prototype &&
|
|
213
|
+
Object.getPrototypeOf(value) !== null))
|
|
214
|
+
throw new Error(`Repository API exposure "${exposure}": computedFields must be a plain object mapping field names to schemas.`);
|
|
215
|
+
for (const [name, schema] of Object.entries(value)) {
|
|
216
|
+
if (!name)
|
|
217
|
+
throw new Error(`Repository API exposure "${exposure}": a computed field name must not be empty.`);
|
|
218
|
+
if (typeof schema !== 'object' || schema === null || Array.isArray(schema))
|
|
219
|
+
throw new Error(`Repository API exposure "${exposure}": computed field "${name}" must be described by a Standard Schema or an OpenAPI schema object.`);
|
|
220
|
+
}
|
|
221
|
+
return Object.freeze({ ...value });
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Refuse a computed field that shares its name with a field of the Collection: the record schema could not tell which
|
|
225
|
+
* of the two a response carries, and whatever adds the computed one would overwrite the stored value.
|
|
226
|
+
*/
|
|
227
|
+
async function assertComputedFieldsFree(entry, loading) {
|
|
228
|
+
const collection = await loading;
|
|
229
|
+
const fields = new Set((collection?.fields ?? []).map((field) => field.name));
|
|
230
|
+
const clashes = Object.keys(entry.computedFields).filter((name) => fields.has(name));
|
|
231
|
+
if (clashes.length > 0)
|
|
232
|
+
throw new Error(`Repository API exposure "${entry.name}" declares computed field${clashes.length > 1 ? 's' : ''} ${clashes.map((name) => `"${name}"`).join(', ')}, which ${clashes.length > 1 ? 'are' : 'is'} also ${clashes.length > 1 ? 'fields' : 'a field'} of the Collection "${entry.collection}". A computed field is one the Collection does not have; rename it, or drop it from computedFields.`);
|
|
233
|
+
}
|
|
234
|
+
async function streamFindMany(context, repository, input) {
|
|
235
|
+
const iterator = repository.findMany(input)[Symbol.asyncIterator]();
|
|
236
|
+
let first;
|
|
237
|
+
try {
|
|
238
|
+
first = await iterator.next();
|
|
239
|
+
}
|
|
240
|
+
catch (error) {
|
|
241
|
+
await iterator.return?.();
|
|
242
|
+
throw error;
|
|
243
|
+
}
|
|
244
|
+
const firstFrame = first.done ? undefined : recordFrame(first.value);
|
|
245
|
+
let closePromise;
|
|
246
|
+
const closeIterator = () => {
|
|
247
|
+
closePromise ??= Promise.resolve(iterator.return?.()).then(() => undefined);
|
|
248
|
+
return closePromise;
|
|
249
|
+
};
|
|
250
|
+
context.header('Content-Type', `${repositoryStreamMediaType}; charset=utf-8`);
|
|
251
|
+
context.header('Cache-Control', 'no-store');
|
|
252
|
+
context.header('X-Content-Type-Options', 'nosniff');
|
|
253
|
+
context.header('Vary', 'Accept', { append: true });
|
|
254
|
+
return stream(context, async (output) => {
|
|
255
|
+
output.onAbort(closeIterator);
|
|
256
|
+
try {
|
|
257
|
+
if (firstFrame !== undefined)
|
|
258
|
+
await output.writeln(firstFrame);
|
|
259
|
+
while (!output.aborted) {
|
|
260
|
+
const result = await iterator.next();
|
|
261
|
+
if (result.done)
|
|
262
|
+
break;
|
|
263
|
+
await output.writeln(recordFrame(result.value));
|
|
264
|
+
}
|
|
265
|
+
if (!output.aborted)
|
|
266
|
+
await output.writeln('{"type":"end"}');
|
|
267
|
+
}
|
|
268
|
+
finally {
|
|
269
|
+
await closeIterator();
|
|
270
|
+
}
|
|
271
|
+
}, async (error, output) => {
|
|
272
|
+
if (!output.aborted)
|
|
273
|
+
await output.writeln(errorFrame(error));
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
function acceptsRepositoryStream(context) {
|
|
277
|
+
return (context.req.header('accept') ?? '')
|
|
278
|
+
.split(',')
|
|
279
|
+
.some((value) => value.split(';', 1)[0]?.trim().toLowerCase() ===
|
|
280
|
+
repositoryStreamMediaType);
|
|
281
|
+
}
|
|
282
|
+
function recordFrame(record) {
|
|
283
|
+
return JSON.stringify({ type: 'record', data: record });
|
|
284
|
+
}
|
|
285
|
+
function errorFrame(error) {
|
|
286
|
+
return JSON.stringify({
|
|
287
|
+
type: 'error',
|
|
288
|
+
error: toApiError(error).toPayload(),
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
async function readInput(context, action, maxLimit) {
|
|
292
|
+
const contentType = context.req
|
|
293
|
+
.header('content-type')
|
|
294
|
+
?.split(';')[0]
|
|
295
|
+
?.trim()
|
|
296
|
+
.toLowerCase();
|
|
297
|
+
if (contentType !== 'application/json') {
|
|
298
|
+
fail(415, 'UNSUPPORTED_MEDIA_TYPE', 'Repository requests require application/json.');
|
|
299
|
+
}
|
|
300
|
+
let input;
|
|
301
|
+
try {
|
|
302
|
+
input = await context.req.json();
|
|
303
|
+
}
|
|
304
|
+
catch {
|
|
305
|
+
fail(400, 'INVALID_JSON', 'Request body must contain valid JSON.');
|
|
306
|
+
}
|
|
307
|
+
if (!isObject(input))
|
|
308
|
+
fail(400, 'INVALID_REPOSITORY_INPUT', 'Request body must be an object.');
|
|
309
|
+
if (Object.hasOwn(input, 'idempotencyKey')) {
|
|
310
|
+
fail(400, 'UNSUPPORTED_REPOSITORY_OPTION', 'idempotencyKey is not supported by this adapter.');
|
|
311
|
+
}
|
|
312
|
+
for (const key of Object.keys(input)) {
|
|
313
|
+
if (!allowedOptions[action].includes(key)) {
|
|
314
|
+
fail(400, 'UNSUPPORTED_REPOSITORY_OPTION', `Unsupported Repository option: ${key}.`);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
for (const key of [
|
|
318
|
+
'filter',
|
|
319
|
+
'values',
|
|
320
|
+
'select',
|
|
321
|
+
'sort',
|
|
322
|
+
'cursor',
|
|
323
|
+
'aggregate',
|
|
324
|
+
'having',
|
|
325
|
+
]) {
|
|
326
|
+
if (Object.hasOwn(input, key) && !isObject(input[key])) {
|
|
327
|
+
fail(400, 'INVALID_REPOSITORY_INPUT', `${key} must be an object.`);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
if (['findOne', 'updateOne', 'deleteOne'].includes(action) &&
|
|
331
|
+
!isObject(input.filter)) {
|
|
332
|
+
fail(400, 'INVALID_REPOSITORY_INPUT', 'filter is required.');
|
|
333
|
+
}
|
|
334
|
+
if (['createOne', 'updateOne'].includes(action) && !isObject(input.values)) {
|
|
335
|
+
fail(400, 'INVALID_REPOSITORY_INPUT', 'values is required.');
|
|
336
|
+
}
|
|
337
|
+
if (action === 'aggregate' || action === 'groupBy') {
|
|
338
|
+
if (!isObject(input.aggregate))
|
|
339
|
+
fail(400, 'INVALID_REPOSITORY_INPUT', 'aggregate is required.');
|
|
340
|
+
}
|
|
341
|
+
if (action === 'groupBy' &&
|
|
342
|
+
(!Array.isArray(input.by) ||
|
|
343
|
+
input.by.length === 0 ||
|
|
344
|
+
input.by.some((field) => typeof field !== 'string' || !field))) {
|
|
345
|
+
fail(400, 'INVALID_REPOSITORY_INPUT', 'by must be a non-empty array of field names.');
|
|
346
|
+
}
|
|
347
|
+
if (action === 'findMany') {
|
|
348
|
+
const limit = input.limit === undefined ? maxLimit : input.limit;
|
|
349
|
+
if (typeof limit !== 'number' ||
|
|
350
|
+
!Number.isSafeInteger(limit) ||
|
|
351
|
+
limit < 0 ||
|
|
352
|
+
limit > maxLimit) {
|
|
353
|
+
fail(400, 'INVALID_PAGINATION', `limit must be an integer between 0 and ${maxLimit}.`);
|
|
354
|
+
}
|
|
355
|
+
input.limit = limit;
|
|
356
|
+
}
|
|
357
|
+
return input;
|
|
358
|
+
}
|
|
359
|
+
async function execute(repository, action, input) {
|
|
360
|
+
// HTTP validates the envelope; Repository validates ASTs, fields, and mutations.
|
|
361
|
+
const read = input;
|
|
362
|
+
const filter = input.filter;
|
|
363
|
+
const values = input.values;
|
|
364
|
+
const ifVersion = input.ifVersion;
|
|
365
|
+
switch (action) {
|
|
366
|
+
case 'findMany':
|
|
367
|
+
return await repository.findMany(input);
|
|
368
|
+
case 'findOne':
|
|
369
|
+
return (await repository.findOne({ ...read, filter })) ?? null;
|
|
370
|
+
case 'aggregate':
|
|
371
|
+
return repository.aggregate(input);
|
|
372
|
+
case 'groupBy':
|
|
373
|
+
return repository.groupBy(input);
|
|
374
|
+
case 'count':
|
|
375
|
+
return repository.count(input);
|
|
376
|
+
case 'exists':
|
|
377
|
+
return repository.exists(input);
|
|
378
|
+
case 'createOne':
|
|
379
|
+
return repository.createOne({
|
|
380
|
+
select: read.select,
|
|
381
|
+
values,
|
|
382
|
+
});
|
|
383
|
+
case 'updateOne':
|
|
384
|
+
return repository.updateOne({
|
|
385
|
+
select: read.select,
|
|
386
|
+
filter,
|
|
387
|
+
values: input.values,
|
|
388
|
+
ifVersion,
|
|
389
|
+
});
|
|
390
|
+
case 'deleteOne':
|
|
391
|
+
return repository.deleteOne({ select: read.select, filter, ifVersion });
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
function isObject(value) {
|
|
395
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
396
|
+
}
|
|
397
|
+
function fail(status, reason, message) {
|
|
398
|
+
throw new ApiError({
|
|
399
|
+
status: status === 403 ? 'PERMISSION_DENIED' : 'INVALID_ARGUMENT',
|
|
400
|
+
reason,
|
|
401
|
+
domain: appErrorDomain,
|
|
402
|
+
message,
|
|
403
|
+
...(status === 415 ? { httpStatus: 415 } : {}),
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Resolve the principal a Policy function is built from.
|
|
408
|
+
*
|
|
409
|
+
* No principal means no Policy, and no Policy would mean an unrestricted
|
|
410
|
+
* Repository, so the request is refused here rather than bound to a Policy
|
|
411
|
+
* whose scope names a principal that is not there. 403 rather than 401: this
|
|
412
|
+
* router installs no authentication and has no challenge to issue.
|
|
413
|
+
*/
|
|
414
|
+
async function resolvePrincipal(context, resolve) {
|
|
415
|
+
const principal = await resolve?.(context);
|
|
416
|
+
if (principal === undefined || principal === null) {
|
|
417
|
+
fail(403, 'PRINCIPAL_REQUIRED', 'This endpoint requires a principal and none was resolved.');
|
|
418
|
+
}
|
|
419
|
+
return principal;
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Refuse a Policy reference, which this router cannot expand.
|
|
423
|
+
*
|
|
424
|
+
* A `ref()` resolves against a `withPolicies` map, and these routes bind one
|
|
425
|
+
* Policy per exposure. An unexpanded reference is not inert — it reaches a
|
|
426
|
+
* request as RELATION_READ_FORBIDDEN on a relation the Policy appears to
|
|
427
|
+
* grant, so it is rejected before it can be bound. For a fixed Policy that is
|
|
428
|
+
* when the routes are defined; for one built from a principal it is the first
|
|
429
|
+
* request that reaches it, which is as early as that Policy exists.
|
|
430
|
+
*/
|
|
431
|
+
function assertBindablePolicy(policy) {
|
|
432
|
+
const walk = (node, path) => {
|
|
433
|
+
if ('kind' in node) {
|
|
434
|
+
throw new Error(`Repository API policy at ${path.join('.')} uses ref("${node.target}"), which these routes cannot expand. Write the relation's rules out, or bind the Policies with connection.withPolicies().`);
|
|
435
|
+
}
|
|
436
|
+
for (const [name, child] of Object.entries(node.relations))
|
|
437
|
+
walk(child, [...path, 'relations', name]);
|
|
438
|
+
};
|
|
439
|
+
if (policy.read !== true && policy.read !== false)
|
|
440
|
+
walk(policy.read, ['read']);
|
|
441
|
+
return policy;
|
|
442
|
+
}
|
|
443
|
+
function assertConfig(value, keys, label) {
|
|
444
|
+
if (!isObject(value) ||
|
|
445
|
+
(Object.getPrototypeOf(value) !== Object.prototype &&
|
|
446
|
+
Object.getPrototypeOf(value) !== null))
|
|
447
|
+
throw new Error(`${label} must be a plain configuration object.`);
|
|
448
|
+
for (const key of Object.keys(value))
|
|
449
|
+
if (!keys.includes(key))
|
|
450
|
+
throw new Error(`${label}: unsupported option ${key}.`);
|
|
451
|
+
}
|
|
452
|
+
//# sourceMappingURL=repository-routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository-routes.js","sourceRoot":"","sources":["../../src/router/repository-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Hono } from 'hono';
|
|
2
|
+
export type AppRouterFactory<TApplication> = (app: TApplication) => Hono | Promise<Hono>;
|
|
3
|
+
export type AppHttpMiddlewareRegister<TApplication> = (router: Hono, app: TApplication) => void | Promise<void>;
|
|
4
|
+
export interface AppHttpMiddleware<TApplication> {
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly register: AppHttpMiddlewareRegister<TApplication>;
|
|
7
|
+
}
|
|
8
|
+
export interface AppApiRouteContribution<TApplication> {
|
|
9
|
+
readonly scope: 'api';
|
|
10
|
+
readonly createRouter: AppRouterFactory<TApplication>;
|
|
11
|
+
}
|
|
12
|
+
export interface AppRootRouteContribution<TApplication> {
|
|
13
|
+
readonly scope: 'root';
|
|
14
|
+
readonly createRouter: AppRouterFactory<TApplication>;
|
|
15
|
+
}
|
|
16
|
+
export type AppRouteContribution<TApplication> = AppApiRouteContribution<TApplication> | AppRootRouteContribution<TApplication>;
|
|
17
|
+
export interface DefineHttpMiddlewareOptions<TApplication> {
|
|
18
|
+
readonly name: string;
|
|
19
|
+
readonly register: AppHttpMiddlewareRegister<TApplication>;
|
|
20
|
+
}
|
|
21
|
+
export declare function defineHttpMiddleware<TApplication>(options: DefineHttpMiddlewareOptions<TApplication>): AppHttpMiddleware<TApplication>;
|
|
22
|
+
export declare function defineApiRoutes<TApplication>(createRouter: AppRouterFactory<TApplication>): AppApiRouteContribution<TApplication>;
|
|
23
|
+
export declare function defineRootRoutes<TApplication>(createRouter: AppRouterFactory<TApplication>): AppRootRouteContribution<TApplication>;
|
|
24
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/router/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,MAAM,gBAAgB,CAAC,YAAY,IAAI,CAC3C,GAAG,EAAE,YAAY,KACd,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,MAAM,yBAAyB,CAAC,YAAY,IAAI,CACpD,MAAM,EAAE,IAAI,EACZ,GAAG,EAAE,YAAY,KACd,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,WAAW,iBAAiB,CAAC,YAAY;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC,YAAY,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,uBAAuB,CAAC,YAAY;IACnD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,wBAAwB,CAAC,YAAY;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;CACvD;AAED,MAAM,MAAM,oBAAoB,CAAC,YAAY,IACzC,uBAAuB,CAAC,YAAY,CAAC,GACrC,wBAAwB,CAAC,YAAY,CAAC,CAAC;AAE3C,MAAM,WAAW,2BAA2B,CAAC,YAAY;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC,YAAY,CAAC,CAAC;CAC5D;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAC/C,OAAO,EAAE,2BAA2B,CAAC,YAAY,CAAC,GACjD,iBAAiB,CAAC,YAAY,CAAC,CAKjC;AAED,wBAAgB,eAAe,CAAC,YAAY,EAC1C,YAAY,EAAE,gBAAgB,CAAC,YAAY,CAAC,GAC3C,uBAAuB,CAAC,YAAY,CAAC,CAKvC;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAC3C,YAAY,EAAE,gBAAgB,CAAC,YAAY,CAAC,GAC3C,wBAAwB,CAAC,YAAY,CAAC,CAKxC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export function defineHttpMiddleware(options) {
|
|
2
|
+
return Object.freeze({
|
|
3
|
+
name: options.name,
|
|
4
|
+
register: options.register,
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
export function defineApiRoutes(createRouter) {
|
|
8
|
+
return Object.freeze({
|
|
9
|
+
scope: 'api',
|
|
10
|
+
createRouter,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
export function defineRootRoutes(createRouter) {
|
|
14
|
+
return Object.freeze({
|
|
15
|
+
scope: 'root',
|
|
16
|
+
createRouter,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/router/routes.ts"],"names":[],"mappings":"AAmCA,MAAM,UAAU,oBAAoB,CAClC,OAAkD;IAElD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,YAA4C;IAE5C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,KAAK;QACZ,YAAY;KACb,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,YAA4C;IAE5C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM;QACb,YAAY;KACb,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AppRuntimeContext } from './definition.js';
|
|
2
|
+
import { Application } from '../application/index.js';
|
|
3
|
+
import type { AppLifecycle } from './types.js';
|
|
4
|
+
/** Starts an application and binds its shutdown to the host-owned scope. */
|
|
5
|
+
export declare function startApplicationInScope(scope: AppLifecycle, app: Application): Promise<Application>;
|
|
6
|
+
/** Create the application without starting services or registering contributions. */
|
|
7
|
+
export declare function createAppFromRuntime(runtime: AppRuntimeContext): Application;
|
|
8
|
+
//# sourceMappingURL=application.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/runtime/application.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,WAAW,EAA0B,MAAM,yBAAyB,CAAC;AAE9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,4EAA4E;AAC5E,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,WAAW,CAAC,CAOtB;AAED,qFAAqF;AACrF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,WAAW,CAW5E"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Application } from '../application/index.js';
|
|
2
|
+
import { onceAsync } from './lifecycle.js';
|
|
3
|
+
/** Starts an application and binds its shutdown to the host-owned scope. */
|
|
4
|
+
export async function startApplicationInScope(scope, app) {
|
|
5
|
+
scope.registerDisposer('application', onceAsync(() => app.shutdown()));
|
|
6
|
+
await app.start();
|
|
7
|
+
return app;
|
|
8
|
+
}
|
|
9
|
+
/** Create the application without starting services or registering contributions. */
|
|
10
|
+
export function createAppFromRuntime(runtime) {
|
|
11
|
+
const app = new Application({
|
|
12
|
+
config: runtime.config,
|
|
13
|
+
mode: runtime.mode,
|
|
14
|
+
strictStartup: runtime.env.NOCOBASE_STRICT_STARTUP === 'true',
|
|
15
|
+
paths: runtime.paths,
|
|
16
|
+
runtimeLogging: runtime.scope.logging,
|
|
17
|
+
consoleLogStream: runtime.scope.consoleLogStream,
|
|
18
|
+
});
|
|
19
|
+
runtime.app = app;
|
|
20
|
+
return app;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=application.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/runtime/application.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAA0B,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAmB,EACnB,GAAgB;IAEhB,KAAK,CAAC,gBAAgB,CACpB,aAAa,EACb,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAChC,CAAC;IACF,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;IAClB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,oBAAoB,CAAC,OAA0B;IAC7D,MAAM,GAAG,GAAG,IAAI,WAAW,CAAoB;QAC7C,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,MAAM;QAC7D,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO;QACrC,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,gBAAgB;KACjD,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IAClB,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { AppConfigFactory } from '../config/index.js';
|
|
2
|
+
import type { ConfigMap } from '@nocobase/config';
|
|
3
|
+
import { AppConfig } from '../config/index.js';
|
|
4
|
+
import type { Application, ApplicationServiceProviderConstructor } from '../application/index.js';
|
|
5
|
+
import { type ConfigContext, type AppPaths } from '../config/index.js';
|
|
6
|
+
import { type AppServerPluginLocales, type AppServerPlugins, type ResolvedAppServerPlugins } from '../plugins/index.js';
|
|
7
|
+
import type { AppRouteContribution } from '../router/index.js';
|
|
8
|
+
import { type ResolvedAppScopeRuntime } from './scope.js';
|
|
9
|
+
import type { AppPathOptions, AppScope } from './types.js';
|
|
10
|
+
export type AppRuntimeConfig = object;
|
|
11
|
+
export interface AppRuntimeConfigContext extends ConfigContext {
|
|
12
|
+
readonly mode?: 'standalone' | 'embedded';
|
|
13
|
+
readonly routing?: ResolvedAppScopeRuntime['routing'];
|
|
14
|
+
readonly plugins?: ResolvedAppServerPlugins;
|
|
15
|
+
readonly appPackageName?: string;
|
|
16
|
+
readonly configPath?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ResolvedAppRuntimeConfigContext extends AppRuntimeConfigContext {
|
|
19
|
+
readonly mode: 'standalone' | 'embedded';
|
|
20
|
+
readonly routing: ResolvedAppScopeRuntime['routing'];
|
|
21
|
+
readonly plugins: ResolvedAppServerPlugins;
|
|
22
|
+
readonly appPackageName: string;
|
|
23
|
+
readonly configPath: string | undefined;
|
|
24
|
+
}
|
|
25
|
+
export interface AppRuntimeDefinition {
|
|
26
|
+
/** Standalone deployment root, absolute or relative to the code root; shared by server and CLI. */
|
|
27
|
+
readonly deploymentRootDir?: string;
|
|
28
|
+
/** Application-owned paths, applied consistently to server and CLI resolution. */
|
|
29
|
+
readonly resolvePaths?: (runtime: ResolvedAppScopeRuntime) => AppPathOptions;
|
|
30
|
+
readonly defaultConfigs?: AppConfigFactory<ConfigMap>;
|
|
31
|
+
readonly createAppConfig: (context: ResolvedAppRuntimeConfigContext) => AppConfig;
|
|
32
|
+
readonly plugins: AppServerPlugins;
|
|
33
|
+
readonly serviceProviders: readonly ApplicationServiceProviderConstructor[];
|
|
34
|
+
readonly routes: readonly AppRouteContribution<Application>[];
|
|
35
|
+
readonly locales?: AppServerPluginLocales;
|
|
36
|
+
}
|
|
37
|
+
export interface AppRuntimeContext extends ResolvedAppScopeRuntime {
|
|
38
|
+
app?: Application;
|
|
39
|
+
readonly scope: AppScope;
|
|
40
|
+
readonly paths: AppPaths;
|
|
41
|
+
readonly plugins: ResolvedAppServerPlugins;
|
|
42
|
+
readonly serviceProviders: readonly ApplicationServiceProviderConstructor[];
|
|
43
|
+
readonly routes: readonly AppRouteContribution<Application>[];
|
|
44
|
+
readonly config: AppConfig;
|
|
45
|
+
readonly locales?: AppServerPluginLocales;
|
|
46
|
+
}
|
|
47
|
+
export type ResolvedAppRuntime = AppRuntimeContext;
|
|
48
|
+
export declare function defineAppRuntime(definition: AppRuntimeDefinition): AppRuntimeDefinition;
|
|
49
|
+
export declare function resolveAppRuntime(definition: AppRuntimeDefinition, scope: AppScope): Promise<ResolvedAppRuntime>;
|
|
50
|
+
//# sourceMappingURL=definition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/runtime/definition.ts"],"names":[],"mappings":"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"}
|