apifox-mock-generator 1.4.5 → 2.0.0
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/CHANGELOG.md +125 -0
- package/README.md +12 -10
- package/dist/package.json +22 -4
- package/dist/src/application/use-cases/fetch-apifox-data.use-case.d.ts +19 -0
- package/dist/src/application/use-cases/fetch-apifox-data.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/fetch-apifox-data.use-case.js +29 -0
- package/dist/src/application/use-cases/fetch-apifox-data.use-case.js.map +1 -0
- package/dist/src/application/use-cases/generate-mock.use-case.d.ts +22 -0
- package/dist/src/application/use-cases/generate-mock.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/generate-mock.use-case.js +42 -0
- package/dist/src/application/use-cases/generate-mock.use-case.js.map +1 -0
- package/dist/src/application/use-cases/generate-types.use-case.d.ts +22 -0
- package/dist/src/application/use-cases/generate-types.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/generate-types.use-case.js +42 -0
- package/dist/src/application/use-cases/generate-types.use-case.js.map +1 -0
- package/dist/src/application/use-cases/index.d.ts +8 -0
- package/dist/src/application/use-cases/index.d.ts.map +1 -0
- package/dist/src/application/use-cases/index.js +8 -0
- package/dist/src/application/use-cases/index.js.map +1 -0
- package/dist/src/application/use-cases/serve-mock.use-case.d.ts +26 -0
- package/dist/src/application/use-cases/serve-mock.use-case.d.ts.map +1 -0
- package/dist/src/application/use-cases/serve-mock.use-case.js +103 -0
- package/dist/src/application/use-cases/serve-mock.use-case.js.map +1 -0
- package/dist/src/core/apifox-client.d.ts +5 -1
- package/dist/src/core/apifox-client.d.ts.map +1 -1
- package/dist/src/core/apifox-client.js +8 -101
- package/dist/src/core/apifox-client.js.map +1 -1
- package/dist/src/core/config-loader.d.ts.map +1 -1
- package/dist/src/core/config-loader.js +17 -5
- package/dist/src/core/config-loader.js.map +1 -1
- package/dist/src/core/container-setup.d.ts +9 -0
- package/dist/src/core/container-setup.d.ts.map +1 -0
- package/dist/src/core/container-setup.js +64 -0
- package/dist/src/core/container-setup.js.map +1 -0
- package/dist/src/core/container.d.ts +42 -0
- package/dist/src/core/container.d.ts.map +1 -0
- package/dist/src/core/container.js +70 -0
- package/dist/src/core/container.js.map +1 -0
- package/dist/src/core/endpoint-filter.d.ts +10 -0
- package/dist/src/core/endpoint-filter.d.ts.map +1 -1
- package/dist/src/core/endpoint-filter.js +22 -95
- package/dist/src/core/endpoint-filter.js.map +1 -1
- package/dist/src/core/error-codes.d.ts +22 -0
- package/dist/src/core/error-codes.d.ts.map +1 -0
- package/dist/src/core/error-codes.js +31 -0
- package/dist/src/core/error-codes.js.map +1 -0
- package/dist/src/core/error-handler.d.ts +8 -0
- package/dist/src/core/error-handler.d.ts.map +1 -0
- package/dist/src/core/error-handler.js +45 -0
- package/dist/src/core/error-handler.js.map +1 -0
- package/dist/src/core/errors.d.ts +49 -0
- package/dist/src/core/errors.d.ts.map +1 -0
- package/dist/src/core/errors.js +70 -0
- package/dist/src/core/errors.js.map +1 -0
- package/dist/src/core/mock-config-loader.d.ts +1 -0
- package/dist/src/core/mock-config-loader.d.ts.map +1 -1
- package/dist/src/core/mock-config-loader.js +24 -7
- package/dist/src/core/mock-config-loader.js.map +1 -1
- package/dist/src/core/openapi-converter.d.ts +5 -1
- package/dist/src/core/openapi-converter.d.ts.map +1 -1
- package/dist/src/core/openapi-converter.js +11 -34
- package/dist/src/core/openapi-converter.js.map +1 -1
- package/dist/src/core/service-keys.d.ts +39 -0
- package/dist/src/core/service-keys.d.ts.map +1 -0
- package/dist/src/core/service-keys.js +43 -0
- package/dist/src/core/service-keys.js.map +1 -0
- package/dist/src/domain/entities/api-endpoint.entity.d.ts +57 -0
- package/dist/src/domain/entities/api-endpoint.entity.d.ts.map +1 -0
- package/dist/src/domain/entities/api-endpoint.entity.js +87 -0
- package/dist/src/domain/entities/api-endpoint.entity.js.map +1 -0
- package/dist/src/domain/entities/index.d.ts +6 -0
- package/dist/src/domain/entities/index.d.ts.map +1 -0
- package/dist/src/domain/entities/index.js +6 -0
- package/dist/src/domain/entities/index.js.map +1 -0
- package/dist/src/domain/entities/mock-route.entity.d.ts +41 -0
- package/dist/src/domain/entities/mock-route.entity.d.ts.map +1 -0
- package/dist/src/domain/entities/mock-route.entity.js +82 -0
- package/dist/src/domain/entities/mock-route.entity.js.map +1 -0
- package/dist/src/domain/interfaces/apifox-client.interface.d.ts +14 -0
- package/dist/src/domain/interfaces/apifox-client.interface.d.ts.map +1 -0
- package/dist/src/domain/interfaces/apifox-client.interface.js +2 -0
- package/dist/src/domain/interfaces/apifox-client.interface.js.map +1 -0
- package/dist/src/domain/interfaces/file-system.interface.d.ts +46 -0
- package/dist/src/domain/interfaces/file-system.interface.d.ts.map +1 -0
- package/dist/src/domain/interfaces/file-system.interface.js +2 -0
- package/dist/src/domain/interfaces/file-system.interface.js.map +1 -0
- package/dist/src/domain/interfaces/generator.interface.d.ts +24 -0
- package/dist/src/domain/interfaces/generator.interface.d.ts.map +1 -0
- package/dist/src/domain/interfaces/generator.interface.js +2 -0
- package/dist/src/domain/interfaces/generator.interface.js.map +1 -0
- package/dist/src/domain/interfaces/http-client.interface.d.ts +54 -0
- package/dist/src/domain/interfaces/http-client.interface.d.ts.map +1 -0
- package/dist/src/domain/interfaces/http-client.interface.js +2 -0
- package/dist/src/domain/interfaces/http-client.interface.js.map +1 -0
- package/dist/src/domain/interfaces/index.d.ts +11 -0
- package/dist/src/domain/interfaces/index.d.ts.map +1 -0
- package/dist/src/domain/interfaces/index.js +11 -0
- package/dist/src/domain/interfaces/index.js.map +1 -0
- package/dist/src/domain/interfaces/logger.interface.d.ts +36 -0
- package/dist/src/domain/interfaces/logger.interface.d.ts.map +1 -0
- package/dist/src/domain/interfaces/logger.interface.js +2 -0
- package/dist/src/domain/interfaces/logger.interface.js.map +1 -0
- package/dist/src/domain/interfaces/remote-proxy.interface.d.ts +26 -0
- package/dist/src/domain/interfaces/remote-proxy.interface.d.ts.map +1 -0
- package/dist/src/domain/interfaces/remote-proxy.interface.js +2 -0
- package/dist/src/domain/interfaces/remote-proxy.interface.js.map +1 -0
- package/dist/src/domain/interfaces/route-manager.interface.d.ts +34 -0
- package/dist/src/domain/interfaces/route-manager.interface.d.ts.map +1 -0
- package/dist/src/domain/interfaces/route-manager.interface.js +2 -0
- package/dist/src/domain/interfaces/route-manager.interface.js.map +1 -0
- package/dist/src/domain/interfaces.d.ts +239 -0
- package/dist/src/domain/interfaces.d.ts.map +1 -0
- package/dist/src/domain/interfaces.js +2 -0
- package/dist/src/domain/interfaces.js.map +1 -0
- package/dist/src/domain/services/endpoint-filter.service.d.ts +52 -0
- package/dist/src/domain/services/endpoint-filter.service.d.ts.map +1 -0
- package/dist/src/domain/services/endpoint-filter.service.js +150 -0
- package/dist/src/domain/services/endpoint-filter.service.js.map +1 -0
- package/dist/src/domain/services/index.d.ts +7 -0
- package/dist/src/domain/services/index.d.ts.map +1 -0
- package/dist/src/domain/services/index.js +7 -0
- package/dist/src/domain/services/index.js.map +1 -0
- package/dist/src/domain/services/openapi-converter.service.d.ts +15 -0
- package/dist/src/domain/services/openapi-converter.service.d.ts.map +1 -0
- package/dist/src/domain/services/openapi-converter.service.js +74 -0
- package/dist/src/domain/services/openapi-converter.service.js.map +1 -0
- package/dist/src/domain/services/route-matcher.service.d.ts +38 -0
- package/dist/src/domain/services/route-matcher.service.d.ts.map +1 -0
- package/dist/src/domain/services/route-matcher.service.js +61 -0
- package/dist/src/domain/services/route-matcher.service.js.map +1 -0
- package/dist/src/generators/mock-generator.d.ts +2 -1
- package/dist/src/generators/mock-generator.d.ts.map +1 -1
- package/dist/src/generators/mock-generator.js +13 -8
- package/dist/src/generators/mock-generator.js.map +1 -1
- package/dist/src/generators/templates/type-template.d.ts +2 -1
- package/dist/src/generators/templates/type-template.d.ts.map +1 -1
- package/dist/src/generators/templates/type-template.js +72 -48
- package/dist/src/generators/templates/type-template.js.map +1 -1
- package/dist/src/generators/type-generator.d.ts +2 -1
- package/dist/src/generators/type-generator.d.ts.map +1 -1
- package/dist/src/generators/type-generator.js +1 -1
- package/dist/src/generators/type-generator.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/infrastructure/apifox/apifox-client.impl.d.ts +22 -0
- package/dist/src/infrastructure/apifox/apifox-client.impl.d.ts.map +1 -0
- package/dist/src/infrastructure/apifox/apifox-client.impl.js +135 -0
- package/dist/src/infrastructure/apifox/apifox-client.impl.js.map +1 -0
- package/dist/src/infrastructure/file-system/file-system.impl.d.ts +15 -0
- package/dist/src/infrastructure/file-system/file-system.impl.d.ts.map +1 -0
- package/dist/src/infrastructure/file-system/file-system.impl.js +45 -0
- package/dist/src/infrastructure/file-system/file-system.impl.js.map +1 -0
- package/dist/src/infrastructure/http/axios-client.impl.d.ts +19 -0
- package/dist/src/infrastructure/http/axios-client.impl.d.ts.map +1 -0
- package/dist/src/infrastructure/http/axios-client.impl.js +59 -0
- package/dist/src/infrastructure/http/axios-client.impl.js.map +1 -0
- package/dist/src/infrastructure/logger/console-logger.impl.d.ts +15 -0
- package/dist/src/infrastructure/logger/console-logger.impl.d.ts.map +1 -0
- package/dist/src/infrastructure/logger/console-logger.impl.js +30 -0
- package/dist/src/infrastructure/logger/console-logger.impl.js.map +1 -0
- package/dist/src/infrastructure/route-manager/route-manager.impl.d.ts +14 -0
- package/dist/src/infrastructure/route-manager/route-manager.impl.d.ts.map +1 -0
- package/dist/src/infrastructure/route-manager/route-manager.impl.js +25 -0
- package/dist/src/infrastructure/route-manager/route-manager.impl.js.map +1 -0
- package/dist/src/infrastructure/server/hot-reload.d.ts +8 -0
- package/dist/src/infrastructure/server/hot-reload.d.ts.map +1 -0
- package/dist/src/infrastructure/server/hot-reload.js +132 -0
- package/dist/src/infrastructure/server/hot-reload.js.map +1 -0
- package/dist/src/infrastructure/server/remote-proxy.d.ts +22 -0
- package/dist/src/infrastructure/server/remote-proxy.d.ts.map +1 -0
- package/dist/src/infrastructure/server/remote-proxy.js +82 -0
- package/dist/src/infrastructure/server/remote-proxy.js.map +1 -0
- package/dist/src/infrastructure/server/route-loader.d.ts +18 -0
- package/dist/src/infrastructure/server/route-loader.d.ts.map +1 -0
- package/dist/src/infrastructure/server/route-loader.js +256 -0
- package/dist/src/infrastructure/server/route-loader.js.map +1 -0
- package/dist/src/presentation/http/express-server.d.ts +8 -0
- package/dist/src/presentation/http/express-server.d.ts.map +1 -0
- package/dist/src/presentation/http/express-server.js +65 -0
- package/dist/src/presentation/http/express-server.js.map +1 -0
- package/dist/src/presentation/http/middleware/error-handler.middleware.d.ts +9 -0
- package/dist/src/presentation/http/middleware/error-handler.middleware.d.ts.map +1 -0
- package/dist/src/presentation/http/middleware/error-handler.middleware.js +31 -0
- package/dist/src/presentation/http/middleware/error-handler.middleware.js.map +1 -0
- package/dist/src/presentation/http/route-handler.d.ts +38 -0
- package/dist/src/presentation/http/route-handler.d.ts.map +1 -0
- package/dist/src/presentation/http/route-handler.js +237 -0
- package/dist/src/presentation/http/route-handler.js.map +1 -0
- package/dist/src/presentation/http/validation.d.ts +25 -0
- package/dist/src/presentation/http/validation.d.ts.map +1 -0
- package/dist/src/presentation/http/validation.js +131 -0
- package/dist/src/presentation/http/validation.js.map +1 -0
- package/dist/src/scripts/cli.js +1 -1
- package/dist/src/scripts/cli.js.map +1 -1
- package/dist/src/scripts/generate-mock.js +15 -35
- package/dist/src/scripts/generate-mock.js.map +1 -1
- package/dist/src/scripts/serve-mock.js +9 -74
- package/dist/src/scripts/serve-mock.js.map +1 -1
- package/dist/src/server/express-server.d.ts +2 -2
- package/dist/src/server/express-server.d.ts.map +1 -1
- package/dist/src/server/express-server.js +16 -1
- package/dist/src/server/express-server.js.map +1 -1
- package/dist/src/server/hot-reload.d.ts +2 -2
- package/dist/src/server/hot-reload.d.ts.map +1 -1
- package/dist/src/server/hot-reload.js +26 -20
- package/dist/src/server/hot-reload.js.map +1 -1
- package/dist/src/server/remote-proxy.d.ts +6 -1
- package/dist/src/server/remote-proxy.d.ts.map +1 -1
- package/dist/src/server/remote-proxy.js +38 -7
- package/dist/src/server/remote-proxy.js.map +1 -1
- package/dist/src/server/route-handler.d.ts +9 -3
- package/dist/src/server/route-handler.d.ts.map +1 -1
- package/dist/src/server/route-handler.js +82 -20
- package/dist/src/server/route-handler.js.map +1 -1
- package/dist/src/server/route-loader.d.ts +2 -2
- package/dist/src/server/route-loader.d.ts.map +1 -1
- package/dist/src/server/route-loader.js +80 -42
- package/dist/src/server/route-loader.js.map +1 -1
- package/dist/src/server/route-matcher.d.ts.map +1 -1
- package/dist/src/server/route-matcher.js +3 -1
- package/dist/src/server/route-matcher.js.map +1 -1
- package/dist/src/server/validation.d.ts +20 -1
- package/dist/src/server/validation.d.ts.map +1 -1
- package/dist/src/server/validation.js +25 -13
- package/dist/src/server/validation.js.map +1 -1
- package/dist/src/types/index.d.ts +23 -6
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/mock/arithmetic/alarmPush.d.ts +26 -0
- package/dist/src/types/mock/arithmetic/alarmPush.d.ts.map +1 -0
- package/dist/src/types/mock/arithmetic/alarmPush.js +4 -0
- package/dist/src/types/mock/arithmetic/alarmPush.js.map +1 -0
- package/dist/src/types/mock/arithmetic/list.d.ts +33 -0
- package/dist/src/types/mock/arithmetic/list.d.ts.map +1 -0
- package/dist/src/types/mock/arithmetic/list.js +4 -0
- package/dist/src/types/mock/arithmetic/list.js.map +1 -0
- package/dist/src/types/mock/captchaImage.d.ts +19 -0
- package/dist/src/types/mock/captchaImage.d.ts.map +1 -0
- package/dist/src/types/mock/captchaImage.js +4 -0
- package/dist/src/types/mock/captchaImage.js.map +1 -0
- package/dist/src/types/mock/intern/agents/configs.d.ts +31 -0
- package/dist/src/types/mock/intern/agents/configs.d.ts.map +1 -0
- package/dist/src/types/mock/intern/agents/configs.js +4 -0
- package/dist/src/types/mock/intern/agents/configs.js.map +1 -0
- package/dist/src/types/mock/internal/agents/devices/auth.d.ts +27 -0
- package/dist/src/types/mock/internal/agents/devices/auth.d.ts.map +1 -0
- package/dist/src/types/mock/internal/agents/devices/auth.js +4 -0
- package/dist/src/types/mock/internal/agents/devices/auth.js.map +1 -0
- package/dist/src/types/mock/list.d.ts +13 -0
- package/dist/src/types/mock/list.d.ts.map +1 -0
- package/dist/src/types/mock/list.js +4 -0
- package/dist/src/types/mock/list.js.map +1 -0
- package/dist/src/types/mock/login.d.ts +21 -0
- package/dist/src/types/mock/login.d.ts.map +1 -0
- package/dist/src/types/mock/login.js +4 -0
- package/dist/src/types/mock/login.js.map +1 -0
- package/dist/src/types/mock/logout.d.ts +16 -0
- package/dist/src/types/mock/logout.d.ts.map +1 -0
- package/dist/src/types/mock/logout.js +4 -0
- package/dist/src/types/mock/logout.js.map +1 -0
- package/dist/src/types/mock/v1/agents/batch.d.ts +22 -0
- package/dist/src/types/mock/v1/agents/batch.d.ts.map +1 -0
- package/dist/src/types/mock/v1/agents/batch.js +4 -0
- package/dist/src/types/mock/v1/agents/batch.js.map +1 -0
- package/dist/src/types/mock/v1/agents/devices/auth.d.ts +25 -0
- package/dist/src/types/mock/v1/agents/devices/auth.d.ts.map +1 -0
- package/dist/src/types/mock/v1/agents/devices/auth.js +4 -0
- package/dist/src/types/mock/v1/agents/devices/auth.js.map +1 -0
- package/dist/src/types/mock/v1/agents/devices/batch.d.ts +25 -0
- package/dist/src/types/mock/v1/agents/devices/batch.d.ts.map +1 -0
- package/dist/src/types/mock/v1/agents/devices/batch.js +4 -0
- package/dist/src/types/mock/v1/agents/devices/batch.js.map +1 -0
- package/dist/src/types/mock/v1/agents/devices.d.ts +128 -0
- package/dist/src/types/mock/v1/agents/devices.d.ts.map +1 -0
- package/dist/src/types/mock/v1/agents/devices.js +4 -0
- package/dist/src/types/mock/v1/agents/devices.js.map +1 -0
- package/dist/src/types/mock/v1/agents/roles/reset.d.ts +34 -0
- package/dist/src/types/mock/v1/agents/roles/reset.d.ts.map +1 -0
- package/dist/src/types/mock/v1/agents/roles/reset.js +4 -0
- package/dist/src/types/mock/v1/agents/roles/reset.js.map +1 -0
- package/dist/src/types/mock/v1/agents/roles/template.d.ts +12 -0
- package/dist/src/types/mock/v1/agents/roles/template.d.ts.map +1 -0
- package/dist/src/types/mock/v1/agents/roles/template.js +4 -0
- package/dist/src/types/mock/v1/agents/roles/template.js.map +1 -0
- package/dist/src/types/mock/v1/agents/roles.d.ts +94 -0
- package/dist/src/types/mock/v1/agents/roles.d.ts.map +1 -0
- package/dist/src/types/mock/v1/agents/roles.js +4 -0
- package/dist/src/types/mock/v1/agents/roles.js.map +1 -0
- package/dist/src/types/mock/v1/agents.d.ts +130 -0
- package/dist/src/types/mock/v1/agents.d.ts.map +1 -0
- package/dist/src/types/mock/v1/agents.js +4 -0
- package/dist/src/types/mock/v1/agents.js.map +1 -0
- package/dist/src/types/mock/v1/algo/pose-detect/delete.d.ts +25 -0
- package/dist/src/types/mock/v1/algo/pose-detect/delete.d.ts.map +1 -0
- package/dist/src/types/mock/v1/algo/pose-detect/delete.js +4 -0
- package/dist/src/types/mock/v1/algo/pose-detect/delete.js.map +1 -0
- package/dist/src/types/mock/v1/algos/pose-detect/target.d.ts +41 -0
- package/dist/src/types/mock/v1/algos/pose-detect/target.d.ts.map +1 -0
- package/dist/src/types/mock/v1/algos/pose-detect/target.js +4 -0
- package/dist/src/types/mock/v1/algos/pose-detect/target.js.map +1 -0
- package/dist/src/types/mock/v1/algos/pose-detect.d.ts +28 -0
- package/dist/src/types/mock/v1/algos/pose-detect.d.ts.map +1 -0
- package/dist/src/types/mock/v1/algos/pose-detect.js +4 -0
- package/dist/src/types/mock/v1/algos/pose-detect.js.map +1 -0
- package/dist/src/types/mock/v1/auth/login/username.d.ts +1 -1
- package/dist/src/types/mock/v1/auth/login/username.d.ts.map +1 -1
- package/dist/src/types/mock/v1/business/tenant/pagedList.d.ts +8 -0
- package/dist/src/types/mock/v1/business/tenant/pagedList.d.ts.map +1 -1
- package/dist/src/types/mock/v1/business/tenant/pagedList.js.map +1 -1
- package/dist/src/types/mock/v1/business/tenant/user/link.d.ts +24 -0
- package/dist/src/types/mock/v1/business/tenant/user/link.d.ts.map +1 -1
- package/dist/src/types/mock/v1/business/tenant/user/link.js +1 -1
- package/dist/src/types/mock/v1/business/tenant/user/link.js.map +1 -1
- package/dist/src/types/mock/v1/business/tenant.d.ts +2 -20
- package/dist/src/types/mock/v1/business/tenant.d.ts.map +1 -1
- package/dist/src/types/mock/v1/business/tenant.js.map +1 -1
- package/dist/src/types/mock/v1/business/user/disabled.d.ts +1 -1
- package/dist/src/types/mock/v1/business/user/disabled.d.ts.map +1 -1
- package/dist/src/types/mock/v1/business/user/pagedList.d.ts +10 -0
- package/dist/src/types/mock/v1/business/user/pagedList.d.ts.map +1 -1
- package/dist/src/types/mock/v1/business/user/pagedList.js.map +1 -1
- package/dist/src/types/mock/v1/business/user/unlock.d.ts +23 -0
- package/dist/src/types/mock/v1/business/user/unlock.d.ts.map +1 -0
- package/dist/src/types/mock/v1/business/user/unlock.js +4 -0
- package/dist/src/types/mock/v1/business/user/unlock.js.map +1 -0
- package/dist/src/types/mock/v1/business/user.d.ts +15 -14
- package/dist/src/types/mock/v1/business/user.d.ts.map +1 -1
- package/dist/src/types/mock/v1/business/user.js.map +1 -1
- package/dist/src/types/mock/v1/dict/data/default.d.ts +25 -0
- package/dist/src/types/mock/v1/dict/data/default.d.ts.map +1 -0
- package/dist/src/types/mock/v1/dict/data/default.js +4 -0
- package/dist/src/types/mock/v1/dict/data/default.js.map +1 -0
- package/dist/src/types/mock/v1/dict/data/order.d.ts +25 -0
- package/dist/src/types/mock/v1/dict/data/order.d.ts.map +1 -0
- package/dist/src/types/mock/v1/dict/data/order.js +4 -0
- package/dist/src/types/mock/v1/dict/data/order.js.map +1 -0
- package/dist/src/types/mock/v1/dict/data/pagedList.d.ts +62 -0
- package/dist/src/types/mock/v1/dict/data/pagedList.d.ts.map +1 -0
- package/dist/src/types/mock/v1/dict/data/pagedList.js +4 -0
- package/dist/src/types/mock/v1/dict/data/pagedList.js.map +1 -0
- package/dist/src/types/mock/v1/dict/data.d.ts +82 -0
- package/dist/src/types/mock/v1/dict/data.d.ts.map +1 -0
- package/dist/src/types/mock/v1/dict/data.js +4 -0
- package/dist/src/types/mock/v1/dict/data.js.map +1 -0
- package/dist/src/types/mock/v1/dict/pagedList.d.ts +54 -0
- package/dist/src/types/mock/v1/dict/pagedList.d.ts.map +1 -0
- package/dist/src/types/mock/v1/dict/pagedList.js +4 -0
- package/dist/src/types/mock/v1/dict/pagedList.js.map +1 -0
- package/dist/src/types/mock/v1/dict.d.ts +80 -0
- package/dist/src/types/mock/v1/dict.d.ts.map +1 -0
- package/dist/src/types/mock/v1/dict.js +4 -0
- package/dist/src/types/mock/v1/dict.js.map +1 -0
- package/dist/src/types/mock/v1/file/download.d.ts +23 -0
- package/dist/src/types/mock/v1/file/download.d.ts.map +1 -0
- package/dist/src/types/mock/v1/file/download.js +4 -0
- package/dist/src/types/mock/v1/file/download.js.map +1 -0
- package/dist/src/types/mock/v1/file/pagedList.d.ts +62 -0
- package/dist/src/types/mock/v1/file/pagedList.d.ts.map +1 -0
- package/dist/src/types/mock/v1/file/pagedList.js +4 -0
- package/dist/src/types/mock/v1/file/pagedList.js.map +1 -0
- package/dist/src/types/mock/v1/file.d.ts +56 -0
- package/dist/src/types/mock/v1/file.d.ts.map +1 -0
- package/dist/src/types/mock/v1/file.js +4 -0
- package/dist/src/types/mock/v1/file.js.map +1 -0
- package/dist/src/types/mock/v1/inspection/alarm-lists.d.ts +28 -0
- package/dist/src/types/mock/v1/inspection/alarm-lists.d.ts.map +1 -0
- package/dist/src/types/mock/v1/inspection/alarm-lists.js +4 -0
- package/dist/src/types/mock/v1/inspection/alarm-lists.js.map +1 -0
- package/dist/src/types/mock/v1/inspection.d.ts +11 -0
- package/dist/src/types/mock/v1/inspection.d.ts.map +1 -0
- package/dist/src/types/mock/v1/inspection.js +4 -0
- package/dist/src/types/mock/v1/inspection.js.map +1 -0
- package/dist/src/types/mock/v1/internal/getToken.d.ts +32 -0
- package/dist/src/types/mock/v1/internal/getToken.d.ts.map +1 -0
- package/dist/src/types/mock/v1/internal/getToken.js +4 -0
- package/dist/src/types/mock/v1/internal/getToken.js.map +1 -0
- package/dist/src/types/mock/v1/internal/user/unlock.d.ts +23 -0
- package/dist/src/types/mock/v1/internal/user/unlock.d.ts.map +1 -0
- package/dist/src/types/mock/v1/internal/user/unlock.js +4 -0
- package/dist/src/types/mock/v1/internal/user/unlock.js.map +1 -0
- package/dist/src/types/mock/v1/log/login/pagedList.d.ts +15 -0
- package/dist/src/types/mock/v1/log/login/pagedList.d.ts.map +1 -1
- package/dist/src/types/mock/v1/log/login/pagedList.js.map +1 -1
- package/dist/src/types/mock/v1/log/oper/pagedList.d.ts +29 -2
- package/dist/src/types/mock/v1/log/oper/pagedList.d.ts.map +1 -1
- package/dist/src/types/mock/v1/log/oper/pagedList.js.map +1 -1
- package/dist/src/types/mock/v1/models/asr/config.d.ts +39 -0
- package/dist/src/types/mock/v1/models/asr/config.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/asr/config.js +4 -0
- package/dist/src/types/mock/v1/models/asr/config.js.map +1 -0
- package/dist/src/types/mock/v1/models/asr/create.d.ts +35 -0
- package/dist/src/types/mock/v1/models/asr/create.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/asr/create.js +4 -0
- package/dist/src/types/mock/v1/models/asr/create.js.map +1 -0
- package/dist/src/types/mock/v1/models/asr/default.d.ts +27 -0
- package/dist/src/types/mock/v1/models/asr/default.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/asr/default.js +4 -0
- package/dist/src/types/mock/v1/models/asr/default.js.map +1 -0
- package/dist/src/types/mock/v1/models/asr/delete-select.d.ts +24 -0
- package/dist/src/types/mock/v1/models/asr/delete-select.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/asr/delete-select.js +4 -0
- package/dist/src/types/mock/v1/models/asr/delete-select.js.map +1 -0
- package/dist/src/types/mock/v1/models/asr/delete.d.ts +25 -0
- package/dist/src/types/mock/v1/models/asr/delete.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/asr/delete.js +4 -0
- package/dist/src/types/mock/v1/models/asr/delete.js.map +1 -0
- package/dist/src/types/mock/v1/models/asr/search.d.ts +35 -0
- package/dist/src/types/mock/v1/models/asr/search.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/asr/search.js +4 -0
- package/dist/src/types/mock/v1/models/asr/search.js.map +1 -0
- package/dist/src/types/mock/v1/models/asr/status.d.ts +27 -0
- package/dist/src/types/mock/v1/models/asr/status.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/asr/status.js +4 -0
- package/dist/src/types/mock/v1/models/asr/status.js.map +1 -0
- package/dist/src/types/mock/v1/models/asr/update-config.d.ts +35 -0
- package/dist/src/types/mock/v1/models/asr/update-config.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/asr/update-config.js +4 -0
- package/dist/src/types/mock/v1/models/asr/update-config.js.map +1 -0
- package/dist/src/types/mock/v1/models/kb/default.d.ts +27 -0
- package/dist/src/types/mock/v1/models/kb/default.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/kb/default.js +4 -0
- package/dist/src/types/mock/v1/models/kb/default.js.map +1 -0
- package/dist/src/types/mock/v1/models/kb/delete-select.d.ts +24 -0
- package/dist/src/types/mock/v1/models/kb/delete-select.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/kb/delete-select.js +4 -0
- package/dist/src/types/mock/v1/models/kb/delete-select.js.map +1 -0
- package/dist/src/types/mock/v1/models/kb/delete.d.ts +25 -0
- package/dist/src/types/mock/v1/models/kb/delete.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/kb/delete.js +4 -0
- package/dist/src/types/mock/v1/models/kb/delete.js.map +1 -0
- package/dist/src/types/mock/v1/models/kb/search.d.ts +34 -0
- package/dist/src/types/mock/v1/models/kb/search.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/kb/search.js +4 -0
- package/dist/src/types/mock/v1/models/kb/search.js.map +1 -0
- package/dist/src/types/mock/v1/models/kb/status.d.ts +27 -0
- package/dist/src/types/mock/v1/models/kb/status.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/kb/status.js +4 -0
- package/dist/src/types/mock/v1/models/kb/status.js.map +1 -0
- package/dist/src/types/mock/v1/models/kb/update-config.d.ts +39 -0
- package/dist/src/types/mock/v1/models/kb/update-config.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/kb/update-config.js +4 -0
- package/dist/src/types/mock/v1/models/kb/update-config.js.map +1 -0
- package/dist/src/types/mock/v1/models/kb.d.ts +33 -0
- package/dist/src/types/mock/v1/models/kb.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/kb.js +4 -0
- package/dist/src/types/mock/v1/models/kb.js.map +1 -0
- package/dist/src/types/mock/v1/models/llm/config.d.ts +55 -0
- package/dist/src/types/mock/v1/models/llm/config.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/llm/config.js +4 -0
- package/dist/src/types/mock/v1/models/llm/config.js.map +1 -0
- package/dist/src/types/mock/v1/models/llm/default.d.ts +27 -0
- package/dist/src/types/mock/v1/models/llm/default.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/llm/default.js +4 -0
- package/dist/src/types/mock/v1/models/llm/default.js.map +1 -0
- package/dist/src/types/mock/v1/models/llm/delete-select.d.ts +24 -0
- package/dist/src/types/mock/v1/models/llm/delete-select.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/llm/delete-select.js +4 -0
- package/dist/src/types/mock/v1/models/llm/delete-select.js.map +1 -0
- package/dist/src/types/mock/v1/models/llm/delete.d.ts +25 -0
- package/dist/src/types/mock/v1/models/llm/delete.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/llm/delete.js +4 -0
- package/dist/src/types/mock/v1/models/llm/delete.js.map +1 -0
- package/dist/src/types/mock/v1/models/llm/search.d.ts +34 -0
- package/dist/src/types/mock/v1/models/llm/search.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/llm/search.js +4 -0
- package/dist/src/types/mock/v1/models/llm/search.js.map +1 -0
- package/dist/src/types/mock/v1/models/llm/status.d.ts +27 -0
- package/dist/src/types/mock/v1/models/llm/status.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/llm/status.js +4 -0
- package/dist/src/types/mock/v1/models/llm/status.js.map +1 -0
- package/dist/src/types/mock/v1/models/llm/update-config.d.ts +51 -0
- package/dist/src/types/mock/v1/models/llm/update-config.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/llm/update-config.js +4 -0
- package/dist/src/types/mock/v1/models/llm/update-config.js.map +1 -0
- package/dist/src/types/mock/v1/models/llm.d.ts +33 -0
- package/dist/src/types/mock/v1/models/llm.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/llm.js +4 -0
- package/dist/src/types/mock/v1/models/llm.js.map +1 -0
- package/dist/src/types/mock/v1/models/modelManagement/actionList.d.ts +14 -0
- package/dist/src/types/mock/v1/models/modelManagement/actionList.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/modelManagement/actionList.js +4 -0
- package/dist/src/types/mock/v1/models/modelManagement/actionList.js.map +1 -0
- package/dist/src/types/mock/v1/models/modelManagement/batchDelete.d.ts +26 -0
- package/dist/src/types/mock/v1/models/modelManagement/batchDelete.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/modelManagement/batchDelete.js +4 -0
- package/dist/src/types/mock/v1/models/modelManagement/batchDelete.js.map +1 -0
- package/dist/src/types/mock/v1/models/modelManagement/delete.d.ts +26 -0
- package/dist/src/types/mock/v1/models/modelManagement/delete.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/modelManagement/delete.js +4 -0
- package/dist/src/types/mock/v1/models/modelManagement/delete.js.map +1 -0
- package/dist/src/types/mock/v1/models/modelManagement/list.d.ts +40 -0
- package/dist/src/types/mock/v1/models/modelManagement/list.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/modelManagement/list.js +4 -0
- package/dist/src/types/mock/v1/models/modelManagement/list.js.map +1 -0
- package/dist/src/types/mock/v1/models/modelManagement/selectDefault.d.ts +29 -0
- package/dist/src/types/mock/v1/models/modelManagement/selectDefault.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/modelManagement/selectDefault.js +4 -0
- package/dist/src/types/mock/v1/models/modelManagement/selectDefault.js.map +1 -0
- package/dist/src/types/mock/v1/models/modelManagement/start.d.ts +27 -0
- package/dist/src/types/mock/v1/models/modelManagement/start.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/modelManagement/start.js +4 -0
- package/dist/src/types/mock/v1/models/modelManagement/start.js.map +1 -0
- package/dist/src/types/mock/v1/models/modelManagement/update.d.ts +61 -0
- package/dist/src/types/mock/v1/models/modelManagement/update.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/modelManagement/update.js +4 -0
- package/dist/src/types/mock/v1/models/modelManagement/update.js.map +1 -0
- package/dist/src/types/mock/v1/models/modelManagement.d.ts +111 -0
- package/dist/src/types/mock/v1/models/modelManagement.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/modelManagement.js +4 -0
- package/dist/src/types/mock/v1/models/modelManagement.js.map +1 -0
- package/dist/src/types/mock/v1/models/tts/config.d.ts +35 -0
- package/dist/src/types/mock/v1/models/tts/config.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/tts/config.js +4 -0
- package/dist/src/types/mock/v1/models/tts/config.js.map +1 -0
- package/dist/src/types/mock/v1/models/tts/create.d.ts +33 -0
- package/dist/src/types/mock/v1/models/tts/create.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/tts/create.js +4 -0
- package/dist/src/types/mock/v1/models/tts/create.js.map +1 -0
- package/dist/src/types/mock/v1/models/tts/default.d.ts +27 -0
- package/dist/src/types/mock/v1/models/tts/default.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/tts/default.js +4 -0
- package/dist/src/types/mock/v1/models/tts/default.js.map +1 -0
- package/dist/src/types/mock/v1/models/tts/delete-select.d.ts +24 -0
- package/dist/src/types/mock/v1/models/tts/delete-select.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/tts/delete-select.js +4 -0
- package/dist/src/types/mock/v1/models/tts/delete-select.js.map +1 -0
- package/dist/src/types/mock/v1/models/tts/delete.d.ts +25 -0
- package/dist/src/types/mock/v1/models/tts/delete.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/tts/delete.js +4 -0
- package/dist/src/types/mock/v1/models/tts/delete.js.map +1 -0
- package/dist/src/types/mock/v1/models/tts/search.d.ts +35 -0
- package/dist/src/types/mock/v1/models/tts/search.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/tts/search.js +4 -0
- package/dist/src/types/mock/v1/models/tts/search.js.map +1 -0
- package/dist/src/types/mock/v1/models/tts/sound/batch.d.ts +20 -0
- package/dist/src/types/mock/v1/models/tts/sound/batch.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/tts/sound/batch.js +4 -0
- package/dist/src/types/mock/v1/models/tts/sound/batch.js.map +1 -0
- package/dist/src/types/mock/v1/models/tts/sound/list.d.ts +33 -0
- package/dist/src/types/mock/v1/models/tts/sound/list.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/tts/sound/list.js +4 -0
- package/dist/src/types/mock/v1/models/tts/sound/list.js.map +1 -0
- package/dist/src/types/mock/v1/models/tts/sound.d.ts +75 -0
- package/dist/src/types/mock/v1/models/tts/sound.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/tts/sound.js +4 -0
- package/dist/src/types/mock/v1/models/tts/sound.js.map +1 -0
- package/dist/src/types/mock/v1/models/tts/status.d.ts +27 -0
- package/dist/src/types/mock/v1/models/tts/status.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/tts/status.js +4 -0
- package/dist/src/types/mock/v1/models/tts/status.js.map +1 -0
- package/dist/src/types/mock/v1/models/tts/update-config.d.ts +33 -0
- package/dist/src/types/mock/v1/models/tts/update-config.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/tts/update-config.js +4 -0
- package/dist/src/types/mock/v1/models/tts/update-config.js.map +1 -0
- package/dist/src/types/mock/v1/models/tts.d.ts +33 -0
- package/dist/src/types/mock/v1/models/tts.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/tts.js +4 -0
- package/dist/src/types/mock/v1/models/tts.js.map +1 -0
- package/dist/src/types/mock/v1/models/vad/config.d.ts +37 -0
- package/dist/src/types/mock/v1/models/vad/config.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/vad/config.js +4 -0
- package/dist/src/types/mock/v1/models/vad/config.js.map +1 -0
- package/dist/src/types/mock/v1/models/vad/create.d.ts +35 -0
- package/dist/src/types/mock/v1/models/vad/create.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/vad/create.js +4 -0
- package/dist/src/types/mock/v1/models/vad/create.js.map +1 -0
- package/dist/src/types/mock/v1/models/vad/default.d.ts +27 -0
- package/dist/src/types/mock/v1/models/vad/default.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/vad/default.js +4 -0
- package/dist/src/types/mock/v1/models/vad/default.js.map +1 -0
- package/dist/src/types/mock/v1/models/vad/delete-select.d.ts +24 -0
- package/dist/src/types/mock/v1/models/vad/delete-select.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/vad/delete-select.js +4 -0
- package/dist/src/types/mock/v1/models/vad/delete-select.js.map +1 -0
- package/dist/src/types/mock/v1/models/vad/delete.d.ts +25 -0
- package/dist/src/types/mock/v1/models/vad/delete.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/vad/delete.js +4 -0
- package/dist/src/types/mock/v1/models/vad/delete.js.map +1 -0
- package/dist/src/types/mock/v1/models/vad/status.d.ts +27 -0
- package/dist/src/types/mock/v1/models/vad/status.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/vad/status.js +4 -0
- package/dist/src/types/mock/v1/models/vad/status.js.map +1 -0
- package/dist/src/types/mock/v1/models/vad/update-config.d.ts +35 -0
- package/dist/src/types/mock/v1/models/vad/update-config.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/vad/update-config.js +4 -0
- package/dist/src/types/mock/v1/models/vad/update-config.js.map +1 -0
- package/dist/src/types/mock/v1/models/vad.d.ts +33 -0
- package/dist/src/types/mock/v1/models/vad.d.ts.map +1 -0
- package/dist/src/types/mock/v1/models/vad.js +4 -0
- package/dist/src/types/mock/v1/models/vad.js.map +1 -0
- package/dist/src/types/mock/v1/pnc/NavigationCommands.d.ts +46 -0
- package/dist/src/types/mock/v1/pnc/NavigationCommands.d.ts.map +1 -0
- package/dist/src/types/mock/v1/pnc/NavigationCommands.js +4 -0
- package/dist/src/types/mock/v1/pnc/NavigationCommands.js.map +1 -0
- package/dist/src/types/mock/v1/pnc/NavigationStates.d.ts +12 -0
- package/dist/src/types/mock/v1/pnc/NavigationStates.d.ts.map +1 -0
- package/dist/src/types/mock/v1/pnc/NavigationStates.js +4 -0
- package/dist/src/types/mock/v1/pnc/NavigationStates.js.map +1 -0
- package/dist/src/types/mock/v1/pnc/NavigationTasks.d.ts +32 -0
- package/dist/src/types/mock/v1/pnc/NavigationTasks.d.ts.map +1 -0
- package/dist/src/types/mock/v1/pnc/NavigationTasks.js +4 -0
- package/dist/src/types/mock/v1/pnc/NavigationTasks.js.map +1 -0
- package/dist/src/types/mock/v1/role/disabled.d.ts +25 -0
- package/dist/src/types/mock/v1/role/disabled.d.ts.map +1 -0
- package/dist/src/types/mock/v1/role/disabled.js +4 -0
- package/dist/src/types/mock/v1/role/disabled.js.map +1 -0
- package/dist/src/types/mock/v1/role/pagedList.d.ts +4 -2
- package/dist/src/types/mock/v1/role/pagedList.d.ts.map +1 -1
- package/dist/src/types/mock/v1/role/pagedList.js.map +1 -1
- package/dist/src/types/mock/v1/role.d.ts +31 -29
- package/dist/src/types/mock/v1/role.d.ts.map +1 -1
- package/dist/src/types/mock/v1/role.js.map +1 -1
- package/dist/src/types/mock/v1/sync/to-cloud.d.ts +69 -0
- package/dist/src/types/mock/v1/sync/to-cloud.d.ts.map +1 -0
- package/dist/src/types/mock/v1/sync/to-cloud.js +4 -0
- package/dist/src/types/mock/v1/sync/to-cloud.js.map +1 -0
- package/dist/src/types/mock/v1/tenant/permission/tree.d.ts +2 -2
- package/dist/src/types/mock/v1/tenant/permission/tree.d.ts.map +1 -1
- package/dist/src/types/mock/v1/tenant/user/link.d.ts +23 -0
- package/dist/src/types/mock/v1/tenant/user/link.d.ts.map +1 -0
- package/dist/src/types/mock/v1/tenant/user/link.js +4 -0
- package/dist/src/types/mock/v1/tenant/user/link.js.map +1 -0
- package/dist/src/types/mock/v1/tenant/user/pagedList.d.ts +8 -0
- package/dist/src/types/mock/v1/tenant/user/pagedList.d.ts.map +1 -1
- package/dist/src/types/mock/v1/tenant/user/pagedList.js.map +1 -1
- package/dist/src/types/mock/v1/tenant/user.d.ts +19 -0
- package/dist/src/types/mock/v1/tenant/user.d.ts.map +1 -1
- package/dist/src/types/mock/v1/tenant/user.js.map +1 -1
- package/dist/src/types/mock/v1/user/exportData.d.ts +25 -0
- package/dist/src/types/mock/v1/user/exportData.d.ts.map +1 -0
- package/dist/src/types/mock/v1/user/exportData.js +4 -0
- package/dist/src/types/mock/v1/user/exportData.js.map +1 -0
- package/dist/src/types/mock/v1/user/importData.d.ts +13 -0
- package/dist/src/types/mock/v1/user/importData.d.ts.map +1 -0
- package/dist/src/types/mock/v1/user/importData.js +4 -0
- package/dist/src/types/mock/v1/user/importData.js.map +1 -0
- package/dist/src/types/mock/v1/user/info.d.ts +0 -30
- package/dist/src/types/mock/v1/user/info.d.ts.map +1 -1
- package/dist/src/types/mock/v1/user/info.js.map +1 -1
- package/dist/src/types/mock/v1/user/pagedList.d.ts +63 -0
- package/dist/src/types/mock/v1/user/pagedList.d.ts.map +1 -0
- package/dist/src/types/mock/v1/user/pagedList.js +4 -0
- package/dist/src/types/mock/v1/user/pagedList.js.map +1 -0
- package/dist/src/types/mock/v1/user/permission/tree.d.ts +4 -2
- package/dist/src/types/mock/v1/user/permission/tree.d.ts.map +1 -1
- package/dist/src/types/mock/v1/user/permission/tree.js.map +1 -1
- package/dist/src/types/mock/v1/user/unlock.d.ts +23 -0
- package/dist/src/types/mock/v1/user/unlock.d.ts.map +1 -0
- package/dist/src/types/mock/v1/user/unlock.js +4 -0
- package/dist/src/types/mock/v1/user/unlock.js.map +1 -0
- package/dist/src/types/mock/v1/user.d.ts +0 -106
- package/dist/src/types/mock/v1/user.d.ts.map +1 -1
- package/dist/src/types/mock/v1/user.js +1 -1
- package/dist/src/types/mock/v1/user.js.map +1 -1
- package/dist/src/types/mock/v1/users/batch.d.ts +31 -0
- package/dist/src/types/mock/v1/users/batch.d.ts.map +1 -0
- package/dist/src/types/mock/v1/users/batch.js +4 -0
- package/dist/src/types/mock/v1/users/batch.js.map +1 -0
- package/dist/src/types/mock/v1/users/password.d.ts +18 -0
- package/dist/src/types/mock/v1/users/password.d.ts.map +1 -0
- package/dist/src/types/mock/v1/users/password.js +4 -0
- package/dist/src/types/mock/v1/users/password.js.map +1 -0
- package/dist/src/types/mock/v1/users/single.d.ts +22 -0
- package/dist/src/types/mock/v1/users/single.d.ts.map +1 -0
- package/dist/src/types/mock/v1/users/single.js +4 -0
- package/dist/src/types/mock/v1/users/single.js.map +1 -0
- package/dist/src/types/mock/v1/users/status.d.ts +22 -0
- package/dist/src/types/mock/v1/users/status.d.ts.map +1 -0
- package/dist/src/types/mock/v1/users/status.js +4 -0
- package/dist/src/types/mock/v1/users/status.js.map +1 -0
- package/dist/src/types/mock/v1/users.d.ts +153 -0
- package/dist/src/types/mock/v1/users.d.ts.map +1 -0
- package/dist/src/types/mock/v1/users.js +4 -0
- package/dist/src/types/mock/v1/users.js.map +1 -0
- package/dist/src/types/mock/v2/models/kb/create.d.ts +39 -0
- package/dist/src/types/mock/v2/models/kb/create.d.ts.map +1 -0
- package/dist/src/types/mock/v2/models/kb/create.js +4 -0
- package/dist/src/types/mock/v2/models/kb/create.js.map +1 -0
- package/dist/src/types/mock/v2/models/llm/create.d.ts +51 -0
- package/dist/src/types/mock/v2/models/llm/create.d.ts.map +1 -0
- package/dist/src/types/mock/v2/models/llm/create.js +4 -0
- package/dist/src/types/mock/v2/models/llm/create.js.map +1 -0
- package/dist/src/types/openapi.d.ts +426 -0
- package/dist/src/types/openapi.d.ts.map +1 -0
- package/dist/src/types/openapi.js +23 -0
- package/dist/src/types/openapi.js.map +1 -0
- package/dist/src/utils/block-updater.d.ts.map +1 -1
- package/dist/src/utils/block-updater.js +5 -4
- package/dist/src/utils/block-updater.js.map +1 -1
- package/dist/src/utils/code-formatter.d.ts.map +1 -1
- package/dist/src/utils/code-formatter.js +2 -0
- package/dist/src/utils/code-formatter.js.map +1 -1
- package/dist/src/utils/file-helper.d.ts +7 -7
- package/dist/src/utils/file-helper.d.ts.map +1 -1
- package/dist/src/utils/file-helper.js +11 -8
- package/dist/src/utils/file-helper.js.map +1 -1
- package/dist/src/utils/file-operations.d.ts +1 -1
- package/dist/src/utils/file-operations.d.ts.map +1 -1
- package/dist/src/utils/file-operations.js.map +1 -1
- package/dist/src/utils/file-utils.d.ts +3 -2
- package/dist/src/utils/file-utils.d.ts.map +1 -1
- package/dist/src/utils/file-utils.js +1 -1
- package/dist/src/utils/file-utils.js.map +1 -1
- package/dist/src/utils/path-utils.js.map +1 -1
- package/dist/src/utils/type-mapping.d.ts +9 -2
- package/dist/src/utils/type-mapping.d.ts.map +1 -1
- package/dist/src/utils/type-mapping.js +42 -35
- package/dist/src/utils/type-mapping.js.map +1 -1
- package/package.json +22 -4
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type express from 'express';
|
|
2
|
+
import type { ILogger } from '../../../domain/interfaces.js';
|
|
3
|
+
/**
|
|
4
|
+
* 创建错误处理中间件
|
|
5
|
+
* @param logger 日志接口
|
|
6
|
+
* @returns Express 错误处理中间件
|
|
7
|
+
*/
|
|
8
|
+
export declare function createErrorHandler(logger: ILogger): (err: Error, req: express.Request, res: express.Response, next: express.NextFunction) => void;
|
|
9
|
+
//# sourceMappingURL=error-handler.middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.middleware.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/http/middleware/error-handler.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAI7D;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,IAE9C,KAAK,KAAK,EACV,KAAK,OAAO,CAAC,OAAO,EACpB,KAAK,OAAO,CAAC,QAAQ,EACrB,MAAM,OAAO,CAAC,YAAY,KACzB,IAAI,CAuBR"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ApifoxError } from '../../../core/errors.js';
|
|
2
|
+
import { ERROR_TO_HTTP_STATUS } from '../../../core/error-codes.js';
|
|
3
|
+
/**
|
|
4
|
+
* 创建错误处理中间件
|
|
5
|
+
* @param logger 日志接口
|
|
6
|
+
* @returns Express 错误处理中间件
|
|
7
|
+
*/
|
|
8
|
+
export function createErrorHandler(logger) {
|
|
9
|
+
return (err, req, res, next) => {
|
|
10
|
+
// 如果是 ApifoxError,使用统一的错误响应格式
|
|
11
|
+
if (err instanceof ApifoxError) {
|
|
12
|
+
const statusCode = ERROR_TO_HTTP_STATUS[err.code] || 500;
|
|
13
|
+
logger.error(`[${err.code}] ${err.message}`);
|
|
14
|
+
res.status(statusCode).json({
|
|
15
|
+
code: statusCode,
|
|
16
|
+
errorCode: err.code,
|
|
17
|
+
message: err.message,
|
|
18
|
+
details: err.details
|
|
19
|
+
});
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
// 其他类型的错误
|
|
23
|
+
logger.error(`服务器错误: ${err.message}`);
|
|
24
|
+
res.status(500).json({
|
|
25
|
+
code: 500,
|
|
26
|
+
message: 'Internal server error',
|
|
27
|
+
error: err.message
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=error-handler.middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.middleware.js","sourceRoot":"","sources":["../../../../../src/presentation/http/middleware/error-handler.middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,OAAO,CACL,GAAU,EACV,GAAoB,EACpB,GAAqB,EACrB,IAA0B,EACpB,EAAE;QACR,8BAA8B;QAC9B,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;YACzD,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAE7C,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;gBAC1B,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,GAAG,CAAC,IAAI;gBACnB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,UAAU;QACV,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACtC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,uBAAuB;YAChC,KAAK,EAAE,GAAG,CAAC,OAAO;SACnB,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type express from 'express';
|
|
2
|
+
import type { MockConfig } from '../../core/mock-config-loader.js';
|
|
3
|
+
import type { IRouteManager } from '../../domain/interfaces.js';
|
|
4
|
+
/**
|
|
5
|
+
* 路由处理器 - 根据工作模式处理请求
|
|
6
|
+
*/
|
|
7
|
+
export declare class RouteHandler {
|
|
8
|
+
private config;
|
|
9
|
+
private routeManager;
|
|
10
|
+
private routeMatcher;
|
|
11
|
+
private remoteProxy;
|
|
12
|
+
constructor(config: MockConfig, routeManager: IRouteManager);
|
|
13
|
+
/**
|
|
14
|
+
* 处理请求
|
|
15
|
+
*/
|
|
16
|
+
handleRequest(req: express.Request, res: express.Response): Promise<boolean>;
|
|
17
|
+
/**
|
|
18
|
+
* 处理代理请求(纯代理模式)
|
|
19
|
+
*/
|
|
20
|
+
private handleProxyRequest;
|
|
21
|
+
/**
|
|
22
|
+
* 处理 Mock 请求(纯 Mock 模式)
|
|
23
|
+
*/
|
|
24
|
+
private handleMockRequest;
|
|
25
|
+
/**
|
|
26
|
+
* 路由匹配:精确匹配 path 或 "METHOD path"
|
|
27
|
+
*/
|
|
28
|
+
private pickModeByRoutes;
|
|
29
|
+
/**
|
|
30
|
+
* 执行 Mock 路由
|
|
31
|
+
*/
|
|
32
|
+
private executeMockRoute;
|
|
33
|
+
/**
|
|
34
|
+
* 标准化请求路径:若配置了 pathPrefixes(单个前缀为主),尝试去掉该前缀以兼容无前缀的路由
|
|
35
|
+
*/
|
|
36
|
+
private normalizePath;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=route-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-handler.d.ts","sourceRoot":"","sources":["../../../../src/presentation/http/route-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAQhE;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,WAAW,CAAc;gBAErB,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa;IAO3D;;OAEG;IACG,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAiDlF;;OAEG;YACW,kBAAkB;IAsEhC;;OAEG;YACW,iBAAiB;IAmB/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;OAEG;YACW,gBAAgB;IAuD9B;;OAEG;IACH,OAAO,CAAC,aAAa;CA0BtB"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { MockRoute as MockRouteEntity } from '../../domain/entities/mock-route.entity.js';
|
|
2
|
+
import { RemoteProxy } from '../../infrastructure/server/remote-proxy.js';
|
|
3
|
+
import { RouteMatcherService } from '../../domain/services/route-matcher.service.js';
|
|
4
|
+
import { validateRequest } from './validation.js';
|
|
5
|
+
import { logger } from '../../infrastructure/logger/console-logger.impl.js';
|
|
6
|
+
/**
|
|
7
|
+
* 路由处理器 - 根据工作模式处理请求
|
|
8
|
+
*/
|
|
9
|
+
export class RouteHandler {
|
|
10
|
+
constructor(config, routeManager) {
|
|
11
|
+
this.config = config;
|
|
12
|
+
this.routeManager = routeManager;
|
|
13
|
+
this.routeMatcher = new RouteMatcherService();
|
|
14
|
+
this.remoteProxy = new RemoteProxy(config);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 处理请求
|
|
18
|
+
*/
|
|
19
|
+
async handleRequest(req, res) {
|
|
20
|
+
try {
|
|
21
|
+
const { normalizedPath } = this.normalizePath(req.path);
|
|
22
|
+
// 1) remote 参数:从页面 Referer 中解析 ?remote
|
|
23
|
+
let remoteOverride;
|
|
24
|
+
if (this.config.remoteTarget) {
|
|
25
|
+
const referer = req.headers?.referer || req.headers?.referrer;
|
|
26
|
+
if (referer && typeof referer === 'string') {
|
|
27
|
+
try {
|
|
28
|
+
const u = new URL(referer);
|
|
29
|
+
const remoteVal = u.searchParams.get('remote');
|
|
30
|
+
if (remoteVal) {
|
|
31
|
+
const val = remoteVal.trim();
|
|
32
|
+
if (val.toLowerCase() === 'mock') {
|
|
33
|
+
remoteOverride = { mode: 'mock' };
|
|
34
|
+
}
|
|
35
|
+
else if (val.toLowerCase() === 'proxy') {
|
|
36
|
+
remoteOverride = { mode: 'proxy' };
|
|
37
|
+
}
|
|
38
|
+
else if (/^https?:\/\//i.test(val)) {
|
|
39
|
+
remoteOverride = { mode: 'proxy', target: val };
|
|
40
|
+
}
|
|
41
|
+
// 如果 remote 值不是 mock/proxy/URL,则忽略,使用配置的 model
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch { }
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// 2) mockRoutes/proxyRoutes(按接口粒度)
|
|
48
|
+
const ruleMode = this.pickModeByRoutes(req.method, req.path, normalizedPath);
|
|
49
|
+
// 3) 计算最终模式:remote > mockRoutes/proxyRoutes > config.model
|
|
50
|
+
const finalMode = remoteOverride?.mode || ruleMode || this.config.model;
|
|
51
|
+
// 5) 处理
|
|
52
|
+
if (finalMode === 'proxy') {
|
|
53
|
+
// 将覆盖的 target 放到 req 上, 供 RemoteProxy 使用
|
|
54
|
+
if (remoteOverride?.target) {
|
|
55
|
+
req.__overrideTarget = remoteOverride.target;
|
|
56
|
+
}
|
|
57
|
+
return await this.handleProxyRequest(req, res);
|
|
58
|
+
}
|
|
59
|
+
return await this.handleMockRequest(req, res, normalizedPath);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
logger.error(`请求处理失败: ${error instanceof Error ? error.message : '未知错误'}`);
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 处理代理请求(纯代理模式)
|
|
68
|
+
*/
|
|
69
|
+
async handleProxyRequest(req, res) {
|
|
70
|
+
try {
|
|
71
|
+
const proxyResponse = await this.remoteProxy.proxyRequest(req);
|
|
72
|
+
// 原样返回远程服务器的状态码
|
|
73
|
+
res.status(proxyResponse.status);
|
|
74
|
+
// 复制远程服务器的所有响应头(只排除连接层头部,这些不应该转发给客户端)
|
|
75
|
+
const headersToSkip = new Set([
|
|
76
|
+
'content-length', // Express 会自动计算,避免长度不匹配
|
|
77
|
+
'transfer-encoding', // HTTP/1.1 传输层特性,不应转发
|
|
78
|
+
'connection', // 连接管理,描述的是代理和远程服务器之间的连接
|
|
79
|
+
'keep-alive' // 连接保持,描述的是代理和远程服务器之间的连接
|
|
80
|
+
]);
|
|
81
|
+
for (const [key, value] of Object.entries(proxyResponse.headers)) {
|
|
82
|
+
const lowerKey = key.toLowerCase();
|
|
83
|
+
if (!headersToSkip.has(lowerKey)) {
|
|
84
|
+
// 保留所有其他响应头,包括 content-type, content-encoding 等
|
|
85
|
+
res.setHeader(key, value);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// 原样返回响应体,不做任何处理
|
|
89
|
+
// 使用 send() 而不是 json(),这样可以发送原始数据,不会强制设置 Content-Type
|
|
90
|
+
res.send(proxyResponse.data);
|
|
91
|
+
// 记录实际返回的状态码(用于调试)
|
|
92
|
+
logger.info(`📤 代理返回状态码: ${proxyResponse.status}`);
|
|
93
|
+
// 根据业务 code 记录不同的日志级别(仅用于日志,不影响返回)
|
|
94
|
+
const successCodes = [0, 200, 100200];
|
|
95
|
+
if (proxyResponse.data &&
|
|
96
|
+
typeof proxyResponse.data === 'object' &&
|
|
97
|
+
'code' in proxyResponse.data &&
|
|
98
|
+
typeof proxyResponse.data.code === 'number') {
|
|
99
|
+
const code = proxyResponse.data.code;
|
|
100
|
+
if (successCodes.includes(code)) {
|
|
101
|
+
logger.success(`${req.method} ${req.path} -> code:${code} (远程服务器)`);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
logger.warn(`${req.method} ${req.path} -> code:${code} (远程服务器业务错误)`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
logger.success(`${req.method} ${req.path} -> ${proxyResponse.status} (远程服务器)`);
|
|
109
|
+
}
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
const errorMessage = error instanceof Error ? error.message : '未知错误';
|
|
114
|
+
logger.error(`代理请求失败: ${errorMessage}`);
|
|
115
|
+
res.status(500).json({
|
|
116
|
+
code: 500,
|
|
117
|
+
message: '代理服务器错误',
|
|
118
|
+
error: `代理请求失败: ${errorMessage}`,
|
|
119
|
+
details: {
|
|
120
|
+
target: this.config.target,
|
|
121
|
+
path: req.path,
|
|
122
|
+
method: req.method
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* 处理 Mock 请求(纯 Mock 模式)
|
|
130
|
+
*/
|
|
131
|
+
async handleMockRequest(req, res, normalizedPath) {
|
|
132
|
+
let matchedPath = req.path;
|
|
133
|
+
// 转换为实体类型以使用服务
|
|
134
|
+
const routes = this.routeManager.getAllRoutes().map(r => new MockRouteEntity(r));
|
|
135
|
+
let route = this.routeMatcher.findMatchingRoute(routes, req.method, req.path);
|
|
136
|
+
if (!route && normalizedPath && normalizedPath !== req.path) {
|
|
137
|
+
route = this.routeMatcher.findMatchingRoute(routes, req.method, normalizedPath);
|
|
138
|
+
matchedPath = normalizedPath;
|
|
139
|
+
}
|
|
140
|
+
if (!route) {
|
|
141
|
+
logger.warn(`Mock 模式:未找到路由 ${req.method} ${normalizedPath}`);
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
return await this.executeMockRoute(route, req, res, matchedPath);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* 路由匹配:精确匹配 path 或 "METHOD path"
|
|
148
|
+
*/
|
|
149
|
+
pickModeByRoutes(method, path, normalizedPath) {
|
|
150
|
+
const paths = [path];
|
|
151
|
+
if (normalizedPath && normalizedPath !== path) {
|
|
152
|
+
paths.push(normalizedPath);
|
|
153
|
+
}
|
|
154
|
+
const candidateKeys = paths.flatMap(p => [p, `${method.toUpperCase()} ${p}`]);
|
|
155
|
+
const match = (routes) => {
|
|
156
|
+
if (!routes || routes.length === 0)
|
|
157
|
+
return false;
|
|
158
|
+
return candidateKeys.some(key => routes.includes(key));
|
|
159
|
+
};
|
|
160
|
+
if (match(this.config.proxyRoutes))
|
|
161
|
+
return 'proxy';
|
|
162
|
+
if (match(this.config.mockRoutes))
|
|
163
|
+
return 'mock';
|
|
164
|
+
return undefined;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* 执行 Mock 路由
|
|
168
|
+
*/
|
|
169
|
+
async executeMockRoute(route, req, res, normalizedPath) {
|
|
170
|
+
try {
|
|
171
|
+
// 提取路径参数
|
|
172
|
+
const params = this.routeMatcher.extractPathParams(route.path, normalizedPath);
|
|
173
|
+
req.params = params;
|
|
174
|
+
// 参数校验
|
|
175
|
+
if (route.validation) {
|
|
176
|
+
const validationError = validateRequest(req, route.validation);
|
|
177
|
+
if (validationError) {
|
|
178
|
+
res.status(400).json({
|
|
179
|
+
code: 400,
|
|
180
|
+
message: '参数校验失败',
|
|
181
|
+
error: validationError
|
|
182
|
+
});
|
|
183
|
+
logger.error(`${route.method} ${route.path} -> 400 (参数校验失败: ${validationError})`);
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// 判断 response 是函数还是静态数据
|
|
188
|
+
let responseData = typeof route.response === 'function'
|
|
189
|
+
? route.response(req) // 动态生成数据
|
|
190
|
+
: route.response; // 静态数据
|
|
191
|
+
// 处理 Promise
|
|
192
|
+
if (responseData && typeof responseData.then === 'function') {
|
|
193
|
+
responseData = await responseData;
|
|
194
|
+
}
|
|
195
|
+
// 返回 Mock 数据
|
|
196
|
+
res.status(route.status || 200).json(responseData);
|
|
197
|
+
// Mock 模式下,数据来源都是本地Mock
|
|
198
|
+
logger.success(`${route.method} ${route.path} -> ${route.status || 200} (本地Mock)`);
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
logger.error(`${route.method} ${route.path} -> 500 (${error instanceof Error ? error.message : '未知错误'})`);
|
|
203
|
+
res.status(500).json({
|
|
204
|
+
code: 500,
|
|
205
|
+
message: 'Internal server error',
|
|
206
|
+
error: error instanceof Error ? error.message : '未知错误'
|
|
207
|
+
});
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* 标准化请求路径:若配置了 pathPrefixes(单个前缀为主),尝试去掉该前缀以兼容无前缀的路由
|
|
213
|
+
*/
|
|
214
|
+
normalizePath(path) {
|
|
215
|
+
const prefixes = this.config.pathPrefixes
|
|
216
|
+
? Array.isArray(this.config.pathPrefixes)
|
|
217
|
+
? this.config.pathPrefixes
|
|
218
|
+
: [this.config.pathPrefixes]
|
|
219
|
+
: [];
|
|
220
|
+
if (prefixes.length === 0) {
|
|
221
|
+
return { normalizedPath: path };
|
|
222
|
+
}
|
|
223
|
+
for (const rawPrefix of prefixes) {
|
|
224
|
+
if (!rawPrefix)
|
|
225
|
+
continue;
|
|
226
|
+
// 规范化:确保有前导斜杠,移除末尾斜杠
|
|
227
|
+
const prefix = rawPrefix.startsWith('/') ? rawPrefix : `/${rawPrefix}`;
|
|
228
|
+
const normalizedPrefix = prefix.replace(/\/+$/, '');
|
|
229
|
+
if (normalizedPrefix && normalizedPrefix !== '/' && path.startsWith(normalizedPrefix)) {
|
|
230
|
+
const normalizedPath = path === normalizedPrefix ? '/' : path.slice(normalizedPrefix.length) || '/';
|
|
231
|
+
return { normalizedPath, matchedPrefix: normalizedPrefix };
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return { normalizedPath: path };
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=route-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-handler.js","sourceRoot":"","sources":["../../../../src/presentation/http/route-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type express from 'express';
|
|
2
|
+
import type { OpenAPISchema, OpenAPISchemaReference } from '../../types/openapi.js';
|
|
3
|
+
/**
|
|
4
|
+
* 验证配置类型
|
|
5
|
+
*/
|
|
6
|
+
interface ValidationConfig {
|
|
7
|
+
params?: Record<string, {
|
|
8
|
+
required?: boolean;
|
|
9
|
+
type: string;
|
|
10
|
+
}>;
|
|
11
|
+
query?: Record<string, {
|
|
12
|
+
required?: boolean;
|
|
13
|
+
type: string;
|
|
14
|
+
}>;
|
|
15
|
+
body?: {
|
|
16
|
+
required?: boolean;
|
|
17
|
+
schema?: OpenAPISchema | OpenAPISchemaReference;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 校验请求参数
|
|
22
|
+
*/
|
|
23
|
+
export declare function validateRequest(req: express.Request, validation: ValidationConfig): string | null;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/presentation/http/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEpF;;GAEG;AACH,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,MAAM,CAAC,EAAE,aAAa,GAAG,sBAAsB,CAAC;KACjD,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CA0CjG"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 校验请求参数
|
|
3
|
+
*/
|
|
4
|
+
export function validateRequest(req, validation) {
|
|
5
|
+
// 校验路径参数
|
|
6
|
+
if (validation.params && Object.keys(validation.params).length > 0) {
|
|
7
|
+
for (const [key, config] of Object.entries(validation.params)) {
|
|
8
|
+
const paramConfig = config;
|
|
9
|
+
if (paramConfig.required && !req.params[key]) {
|
|
10
|
+
return `路径参数 '${key}' 是必填的`;
|
|
11
|
+
}
|
|
12
|
+
if (req.params[key] && !validateType(req.params[key], paramConfig.type)) {
|
|
13
|
+
return `路径参数 '${key}' 类型错误,期望 ${paramConfig.type}`;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
// 校验查询参数
|
|
18
|
+
if (validation.query && Object.keys(validation.query).length > 0) {
|
|
19
|
+
for (const [key, config] of Object.entries(validation.query)) {
|
|
20
|
+
const queryConfig = config;
|
|
21
|
+
if (queryConfig.required && !req.query[key]) {
|
|
22
|
+
return `查询参数 '${key}' 是必填的`;
|
|
23
|
+
}
|
|
24
|
+
if (req.query[key] && !validateType(req.query[key], queryConfig.type)) {
|
|
25
|
+
return `查询参数 '${key}' 类型错误,期望 ${queryConfig.type}`;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// 校验请求体
|
|
30
|
+
if (validation.body) {
|
|
31
|
+
if (validation.body.required && (!req.body || Object.keys(req.body).length === 0)) {
|
|
32
|
+
return '请求体不能为空';
|
|
33
|
+
}
|
|
34
|
+
if (validation.body.schema && req.body) {
|
|
35
|
+
const bodyError = validateSchema(req.body, validation.body.schema);
|
|
36
|
+
if (bodyError) {
|
|
37
|
+
return bodyError;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 校验数据类型
|
|
45
|
+
*/
|
|
46
|
+
function validateType(value, expectedType) {
|
|
47
|
+
switch (expectedType) {
|
|
48
|
+
case 'string':
|
|
49
|
+
return typeof value === 'string';
|
|
50
|
+
case 'number':
|
|
51
|
+
case 'integer':
|
|
52
|
+
return !isNaN(Number(value));
|
|
53
|
+
case 'boolean':
|
|
54
|
+
return value === 'true' || value === 'false' || typeof value === 'boolean';
|
|
55
|
+
default:
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* 校验请求体 schema
|
|
61
|
+
*/
|
|
62
|
+
function validateSchema(data, schema, path = '') {
|
|
63
|
+
if (!schema)
|
|
64
|
+
return null;
|
|
65
|
+
// 如果是引用,跳过验证(实际应该解析引用)
|
|
66
|
+
if ('$ref' in schema) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
const concreteSchema = schema;
|
|
70
|
+
// 对象类型
|
|
71
|
+
if (concreteSchema.type === 'object' && concreteSchema.properties) {
|
|
72
|
+
const required = concreteSchema.required || [];
|
|
73
|
+
// 检查必填字段
|
|
74
|
+
for (const field of required) {
|
|
75
|
+
if (typeof data === 'object' &&
|
|
76
|
+
data !== null &&
|
|
77
|
+
!Array.isArray(data) &&
|
|
78
|
+
data[field] === undefined &&
|
|
79
|
+
data[field] === null) {
|
|
80
|
+
return `字段 '${path}${field}' 是必填的`;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// 递归校验每个属性
|
|
84
|
+
if (typeof data === 'object' && data !== null && !Array.isArray(data)) {
|
|
85
|
+
const dataObj = data;
|
|
86
|
+
for (const [key, propSchema] of Object.entries(concreteSchema.properties)) {
|
|
87
|
+
if (dataObj[key] !== undefined) {
|
|
88
|
+
const error = validateSchema(dataObj[key], propSchema, `${path}${key}.`);
|
|
89
|
+
if (error)
|
|
90
|
+
return error;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// 数组类型
|
|
96
|
+
if (concreteSchema.type === 'array' && Array.isArray(data)) {
|
|
97
|
+
if (concreteSchema.items) {
|
|
98
|
+
for (let i = 0; i < data.length; i++) {
|
|
99
|
+
const error = validateSchema(data[i], concreteSchema.items, `${path}[${i}].`);
|
|
100
|
+
if (error)
|
|
101
|
+
return error;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// 基础类型校验
|
|
106
|
+
if (concreteSchema.type && !validateBasicType(data, concreteSchema.type)) {
|
|
107
|
+
return `字段 '${path.slice(0, -1)}' 类型错误,期望 ${concreteSchema.type}`;
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* 校验基础类型
|
|
113
|
+
*/
|
|
114
|
+
function validateBasicType(value, type) {
|
|
115
|
+
switch (type) {
|
|
116
|
+
case 'string':
|
|
117
|
+
return typeof value === 'string';
|
|
118
|
+
case 'number':
|
|
119
|
+
case 'integer':
|
|
120
|
+
return typeof value === 'number' && !isNaN(value);
|
|
121
|
+
case 'boolean':
|
|
122
|
+
return typeof value === 'boolean';
|
|
123
|
+
case 'object':
|
|
124
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
125
|
+
case 'array':
|
|
126
|
+
return Array.isArray(value);
|
|
127
|
+
default:
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/presentation/http/validation.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAoB,EAAE,UAA4B;IAChF,SAAS;IACT,IAAI,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnE,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9D,MAAM,WAAW,GAAG,MAAM,CAAC;YAC3B,IAAI,WAAW,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7C,OAAO,SAAS,GAAG,QAAQ,CAAC;YAC9B,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxE,OAAO,SAAS,GAAG,aAAa,WAAW,CAAC,IAAI,EAAE,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS;IACT,IAAI,UAAU,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjE,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,MAAM,WAAW,GAAG,MAAM,CAAC;YAC3B,IAAI,WAAW,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5C,OAAO,SAAS,GAAG,QAAQ,CAAC;YAC9B,CAAC;YACD,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtE,OAAO,SAAS,GAAG,aAAa,WAAW,CAAC,IAAI,EAAE,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC;IAED,QAAQ;IACR,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAClF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnE,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,KAAc,EAAE,YAAoB;IACxD,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;QACnC,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/B,KAAK,SAAS;YACZ,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,IAAI,OAAO,KAAK,KAAK,SAAS,CAAC;QAC7E;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CACrB,IAAa,EACb,MAA8C,EAC9C,OAAe,EAAE;IAEjB,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,uBAAuB;IACvB,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,cAAc,GAAG,MAAuB,CAAC;IAE/C,OAAO;IACP,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,IAAI,cAAc,CAAC,UAAU,EAAE,CAAC;QAClE,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,IAAI,EAAE,CAAC;QAE/C,SAAS;QACT,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,IACE,OAAO,IAAI,KAAK,QAAQ;gBACxB,IAAI,KAAK,IAAI;gBACb,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACnB,IAAgC,CAAC,KAAK,CAAC,KAAK,SAAS;gBACrD,IAAgC,CAAC,KAAK,CAAC,KAAK,IAAI,EACjD,CAAC;gBACD,OAAO,OAAO,IAAI,GAAG,KAAK,QAAQ,CAAC;YACrC,CAAC;QACH,CAAC;QAED,WAAW;QACX,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACtE,MAAM,OAAO,GAAG,IAA+B,CAAC;YAChD,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1E,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;oBAC/B,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;oBACzE,IAAI,KAAK;wBAAE,OAAO,KAAK,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;IACP,IAAI,cAAc,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9E,IAAI,KAAK;oBAAE,OAAO,KAAK,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS;IACT,IAAI,cAAc,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,OAAO,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,cAAc,CAAC,IAAI,EAAE,CAAC;IACpE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,KAAc,EAAE,IAAY;IACrD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;QACnC,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpD,KAAK,SAAS;YACZ,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9E,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC"}
|
package/dist/src/scripts/cli.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/scripts/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/scripts/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,iDAAiD,CAAC;AAEzE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,QAAQ,OAAO,EAAE,CAAC;IAChB,KAAK,UAAU;QACb,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACnC,MAAM;IACR,KAAK,OAAO;QACV,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAChC,MAAM;IACR,KAAK,KAAK;QACR,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzB,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACnC,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAChC,MAAM;IACR;QACE,OAAO,CAAC,GAAG,CAAC;;;;;;;;CAQf,CAAC,CAAC;QACC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -1,46 +1,32 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { setupContainer } from '../core/container-setup.js';
|
|
2
|
+
import { SERVICE_KEYS } from '../core/service-keys.js';
|
|
2
3
|
import { loadConfig } from '../core/config-loader.js';
|
|
3
|
-
import {
|
|
4
|
-
import { convertOpenAPIToEndpoints } from '../core/openapi-converter.js';
|
|
5
|
-
import { filterEndpoints } from '../core/endpoint-filter.js';
|
|
6
|
-
import { generateMockFiles } from '../generators/mock-generator.js';
|
|
7
|
-
import { generateTypeFiles } from '../generators/type-generator.js';
|
|
4
|
+
import { handleError } from '../core/error-handler.js';
|
|
8
5
|
/**
|
|
9
6
|
* 主函数
|
|
10
7
|
*/
|
|
11
8
|
async function main() {
|
|
9
|
+
const container = setupContainer();
|
|
10
|
+
const logger = container.resolve(SERVICE_KEYS.LOGGER);
|
|
12
11
|
try {
|
|
13
12
|
logger.title('🚀 开始生成 Mock/类型文件...');
|
|
14
13
|
const config = await loadConfig();
|
|
15
|
-
//
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
const allEndpoints = convertOpenAPIToEndpoints(openapi);
|
|
19
|
-
logger.success(`✓ 解析到 ${allEndpoints.length} 个 API 接口`);
|
|
20
|
-
// 应用客户端筛选
|
|
21
|
-
const endpoints = filterEndpoints(allEndpoints, config.apiFilter);
|
|
22
|
-
if (config.apiFilter) {
|
|
23
|
-
const filteredCount = allEndpoints.length - endpoints.length;
|
|
24
|
-
if (filteredCount > 0) {
|
|
25
|
-
logger.info(` 应用客户端筛选规则,过滤掉 ${filteredCount} 个接口`);
|
|
26
|
-
}
|
|
27
|
-
logger.success(`✓ 保留 ${endpoints.length} 个接口用于生成`);
|
|
28
|
-
}
|
|
29
|
-
if (endpoints.length === 0) {
|
|
30
|
-
logger.warn('没有匹配的 API 接口,请检查筛选规则配置');
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
14
|
+
// 获取 OpenAPI 数据
|
|
15
|
+
const fetchUseCase = container.resolve(SERVICE_KEYS.FETCH_APIFOX_DATA_USE_CASE);
|
|
16
|
+
const openapi = await fetchUseCase.execute(config);
|
|
33
17
|
const mode = config.generate ?? 'all';
|
|
18
|
+
// 生成 Mock 文件
|
|
34
19
|
if (mode === 'all' || mode === 'mock') {
|
|
35
|
-
|
|
36
|
-
|
|
20
|
+
const generateMockUseCase = container.resolve(SERVICE_KEYS.GENERATE_MOCK_USE_CASE);
|
|
21
|
+
await generateMockUseCase.execute(config, openapi);
|
|
37
22
|
}
|
|
38
23
|
else {
|
|
39
24
|
logger.info('跳过 Mock 文件生成');
|
|
40
25
|
}
|
|
26
|
+
// 生成类型文件
|
|
41
27
|
if (mode === 'all' || mode === 'types') {
|
|
42
|
-
|
|
43
|
-
|
|
28
|
+
const generateTypesUseCase = container.resolve(SERVICE_KEYS.GENERATE_TYPES_USE_CASE);
|
|
29
|
+
await generateTypesUseCase.execute(config, openapi);
|
|
44
30
|
}
|
|
45
31
|
else {
|
|
46
32
|
logger.info('跳过 TypeScript 类型文件生成');
|
|
@@ -48,13 +34,7 @@ async function main() {
|
|
|
48
34
|
logger.success('\n✨ 所有文件生成完成!');
|
|
49
35
|
}
|
|
50
36
|
catch (error) {
|
|
51
|
-
|
|
52
|
-
if (error instanceof Error &&
|
|
53
|
-
!error.message.includes('网络连接失败') &&
|
|
54
|
-
!error.message.includes('API 请求失败')) {
|
|
55
|
-
logger.error('生成失败');
|
|
56
|
-
console.error(error);
|
|
57
|
-
}
|
|
37
|
+
handleError(error, logger);
|
|
58
38
|
process.exit(1);
|
|
59
39
|
}
|
|
60
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-mock.js","sourceRoot":"","sources":["../../../src/scripts/generate-mock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"generate-mock.js","sourceRoot":"","sources":["../../../src/scripts/generate-mock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAMvD;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAU,YAAY,CAAC,MAAM,CAAC,CAAC;IAE/D,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAErC,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAElC,gBAAgB;QAChB,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CACpC,YAAY,CAAC,0BAA0B,CACxC,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC;QAEtC,aAAa;QACb,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACtC,MAAM,mBAAmB,GAAG,SAAS,CAAC,OAAO,CAC3C,YAAY,CAAC,sBAAsB,CACpC,CAAC;YACF,MAAM,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9B,CAAC;QAED,SAAS;QACT,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACvC,MAAM,oBAAoB,GAAG,SAAS,CAAC,OAAO,CAC5C,YAAY,CAAC,uBAAuB,CACrC,CAAC;YACF,MAAM,oBAAoB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|