@nestia/sdk 14.0.0 → 14.0.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 +1 -1
- package/assets/bundle/distribute/build-sdk.cjs +28 -0
- package/assets/bundle/distribute/package.json +7 -3
- package/assets/bundle/distribute/tsconfig.json +15 -105
- package/lib/INestiaConfig.d.ts +74 -34
- package/lib/NestiaSdkApplication.d.ts +60 -0
- package/lib/NestiaSdkApplication.js +121 -32
- package/lib/NestiaSdkApplication.js.map +1 -1
- package/lib/NestiaSwaggerComposer.d.ts +21 -0
- package/lib/NestiaSwaggerComposer.js +32 -13
- package/lib/NestiaSwaggerComposer.js.map +1 -1
- package/lib/analyses/AccessorAnalyzer.d.ts +26 -0
- package/lib/analyses/AccessorAnalyzer.js +26 -0
- package/lib/analyses/AccessorAnalyzer.js.map +1 -1
- package/lib/analyses/ConfigAnalyzer.d.ts +41 -0
- package/lib/analyses/ConfigAnalyzer.js +52 -77
- package/lib/analyses/ConfigAnalyzer.js.map +1 -1
- package/lib/analyses/ImportAnalyzer.d.ts +25 -0
- package/lib/analyses/ImportAnalyzer.js +25 -0
- package/lib/analyses/ImportAnalyzer.js.map +1 -1
- package/lib/analyses/ParameterNameAnalyzer.d.ts +44 -0
- package/lib/analyses/ParameterNameAnalyzer.js +63 -0
- package/lib/analyses/ParameterNameAnalyzer.js.map +1 -0
- package/lib/analyses/PathAnalyzer.d.ts +93 -1
- package/lib/analyses/PathAnalyzer.js +160 -23
- package/lib/analyses/PathAnalyzer.js.map +1 -1
- package/lib/analyses/ReflectControllerAnalyzer.d.ts +32 -0
- package/lib/analyses/ReflectControllerAnalyzer.js +24 -1
- package/lib/analyses/ReflectControllerAnalyzer.js.map +1 -1
- package/lib/analyses/ReflectHttpOperationAnalyzer.d.ts +29 -0
- package/lib/analyses/ReflectHttpOperationAnalyzer.js +35 -24
- package/lib/analyses/ReflectHttpOperationAnalyzer.js.map +1 -1
- package/lib/analyses/ReflectHttpOperationExceptionAnalyzer.d.ts +31 -0
- package/lib/analyses/ReflectHttpOperationExceptionAnalyzer.js +21 -0
- package/lib/analyses/ReflectHttpOperationExceptionAnalyzer.js.map +1 -1
- package/lib/analyses/ReflectHttpOperationParameterAnalyzer.d.ts +31 -0
- package/lib/analyses/ReflectHttpOperationParameterAnalyzer.js +143 -23
- package/lib/analyses/ReflectHttpOperationParameterAnalyzer.js.map +1 -1
- package/lib/analyses/ReflectHttpOperationResponseAnalyzer.d.ts +32 -0
- package/lib/analyses/ReflectHttpOperationResponseAnalyzer.js +27 -2
- package/lib/analyses/ReflectHttpOperationResponseAnalyzer.js.map +1 -1
- package/lib/analyses/ReflectMcpOperationAnalyzer.d.ts +29 -0
- package/lib/analyses/ReflectMcpOperationAnalyzer.js +35 -11
- package/lib/analyses/ReflectMcpOperationAnalyzer.js.map +1 -1
- package/lib/analyses/ReflectMetadataAnalyzer.d.ts +47 -0
- package/lib/analyses/ReflectMetadataAnalyzer.js +47 -0
- package/lib/analyses/ReflectMetadataAnalyzer.js.map +1 -1
- package/lib/analyses/ReflectWebSocketOperationAnalyzer.d.ts +29 -0
- package/lib/analyses/ReflectWebSocketOperationAnalyzer.js +27 -5
- package/lib/analyses/ReflectWebSocketOperationAnalyzer.js.map +1 -1
- package/lib/analyses/SecurityAnalyzer.d.ts +25 -0
- package/lib/analyses/SecurityAnalyzer.js +39 -19
- package/lib/analyses/SecurityAnalyzer.js.map +1 -1
- package/lib/analyses/SwaggerExampleAnalyzer.d.ts +31 -0
- package/lib/analyses/SwaggerExampleAnalyzer.js +36 -0
- package/lib/analyses/SwaggerExampleAnalyzer.js.map +1 -0
- package/lib/analyses/TypedHttpRouteAnalyzer.d.ts +41 -3
- package/lib/analyses/TypedHttpRouteAnalyzer.js +196 -172
- package/lib/analyses/TypedHttpRouteAnalyzer.js.map +1 -1
- package/lib/analyses/TypedMcpRouteAnalyzer.d.ts +29 -0
- package/lib/analyses/TypedMcpRouteAnalyzer.js +152 -20
- package/lib/analyses/TypedMcpRouteAnalyzer.js.map +1 -1
- package/lib/analyses/TypedWebSocketRouteAnalyzer.d.ts +19 -0
- package/lib/analyses/TypedWebSocketRouteAnalyzer.js +20 -1
- package/lib/analyses/TypedWebSocketRouteAnalyzer.js.map +1 -1
- package/lib/decorators/OperationMetadata.d.ts +6 -0
- package/lib/decorators/OperationMetadata.js +6 -0
- package/lib/decorators/OperationMetadata.js.map +1 -1
- package/lib/executable/internal/CommandParser.d.ts +19 -0
- package/lib/executable/internal/CommandParser.js +19 -0
- package/lib/executable/internal/CommandParser.js.map +1 -1
- package/lib/executable/internal/NestiaConfigLoader.d.ts +56 -0
- package/lib/executable/internal/NestiaConfigLoader.js +48 -42
- package/lib/executable/internal/NestiaConfigLoader.js.map +1 -1
- package/lib/executable/internal/NestiaSdkCommand.d.ts +60 -0
- package/lib/executable/internal/NestiaSdkCommand.js +95 -3
- package/lib/executable/internal/NestiaSdkCommand.js.map +1 -1
- package/lib/executable/internal/NestiaSdkWatcher.d.ts +81 -0
- package/lib/executable/internal/NestiaSdkWatcher.js +125 -41
- package/lib/executable/internal/NestiaSdkWatcher.js.map +1 -1
- package/lib/executable/internal/NestiaSwaggerWatch.d.ts +80 -0
- package/lib/executable/internal/NestiaSwaggerWatch.js +308 -0
- package/lib/executable/internal/NestiaSwaggerWatch.js.map +1 -0
- package/lib/executable/sdk.js +16 -1
- package/lib/executable/sdk.js.map +1 -1
- package/lib/factories/ExpressionFactory.d.ts +18 -0
- package/lib/factories/ExpressionFactory.js +21 -2
- package/lib/factories/ExpressionFactory.js.map +1 -1
- package/lib/factories/IdentifierFactory.d.ts +24 -0
- package/lib/factories/IdentifierFactory.js +24 -0
- package/lib/factories/IdentifierFactory.js.map +1 -1
- package/lib/factories/LiteralFactory.d.ts +22 -4
- package/lib/factories/LiteralFactory.js +33 -11
- package/lib/factories/LiteralFactory.js.map +1 -1
- package/lib/factories/StatementFactory.d.ts +28 -1
- package/lib/factories/StatementFactory.js +28 -1
- package/lib/factories/StatementFactory.js.map +1 -1
- package/lib/factories/TypeFactory.d.ts +24 -0
- package/lib/factories/TypeFactory.js +15 -0
- package/lib/factories/TypeFactory.js.map +1 -1
- package/lib/generates/CloneGenerator.d.ts +22 -0
- package/lib/generates/CloneGenerator.js +26 -5
- package/lib/generates/CloneGenerator.js.map +1 -1
- package/lib/generates/E2eGenerator.d.ts +19 -0
- package/lib/generates/E2eGenerator.js +19 -0
- package/lib/generates/E2eGenerator.js.map +1 -1
- package/lib/generates/SdkGenerator.d.ts +38 -0
- package/lib/generates/SdkGenerator.js +43 -5
- package/lib/generates/SdkGenerator.js.map +1 -1
- package/lib/generates/SwaggerGenerator.d.ts +36 -6
- package/lib/generates/SwaggerGenerator.js +190 -40
- package/lib/generates/SwaggerGenerator.js.map +1 -1
- package/lib/generates/internal/E2eFileProgrammer.d.ts +19 -0
- package/lib/generates/internal/E2eFileProgrammer.js +20 -1
- package/lib/generates/internal/E2eFileProgrammer.js.map +1 -1
- package/lib/generates/internal/FilePrinter.d.ts +57 -0
- package/lib/generates/internal/FilePrinter.js +74 -0
- package/lib/generates/internal/FilePrinter.js.map +1 -1
- package/lib/generates/internal/ImportDictionary.d.ts +93 -1
- package/lib/generates/internal/ImportDictionary.js +103 -2
- package/lib/generates/internal/ImportDictionary.js.map +1 -1
- package/lib/generates/internal/SdkAliasCollection.d.ts +121 -1
- package/lib/generates/internal/SdkAliasCollection.js +132 -11
- package/lib/generates/internal/SdkAliasCollection.js.map +1 -1
- package/lib/generates/internal/SdkDistributionComposer.d.ts +19 -0
- package/lib/generates/internal/SdkDistributionComposer.js +149 -52
- package/lib/generates/internal/SdkDistributionComposer.js.map +1 -1
- package/lib/generates/internal/SdkFileProgrammer.d.ts +18 -0
- package/lib/generates/internal/SdkFileProgrammer.js +101 -12
- package/lib/generates/internal/SdkFileProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkHttpCloneProgrammer.d.ts +29 -0
- package/lib/generates/internal/SdkHttpCloneProgrammer.js +33 -0
- package/lib/generates/internal/SdkHttpCloneProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkHttpCloneReferencer.d.ts +19 -0
- package/lib/generates/internal/SdkHttpCloneReferencer.js +78 -25
- package/lib/generates/internal/SdkHttpCloneReferencer.js.map +1 -1
- package/lib/generates/internal/SdkHttpFunctionProgrammer.d.ts +19 -0
- package/lib/generates/internal/SdkHttpFunctionProgrammer.js +40 -23
- package/lib/generates/internal/SdkHttpFunctionProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkHttpNamespaceProgrammer.d.ts +19 -0
- package/lib/generates/internal/SdkHttpNamespaceProgrammer.js +46 -34
- package/lib/generates/internal/SdkHttpNamespaceProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkHttpParameterProgrammer.d.ts +142 -1
- package/lib/generates/internal/SdkHttpParameterProgrammer.js +175 -6
- package/lib/generates/internal/SdkHttpParameterProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkHttpRouteProgrammer.d.ts +20 -0
- package/lib/generates/internal/SdkHttpRouteProgrammer.js +36 -32
- package/lib/generates/internal/SdkHttpRouteProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkHttpSimulationProgrammer.d.ts +38 -0
- package/lib/generates/internal/SdkHttpSimulationProgrammer.js +66 -18
- package/lib/generates/internal/SdkHttpSimulationProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkImportWizard.d.ts +63 -0
- package/lib/generates/internal/SdkImportWizard.js +63 -0
- package/lib/generates/internal/SdkImportWizard.js.map +1 -1
- package/lib/generates/internal/SdkMcpRouteProgrammer.d.ts +17 -2
- package/lib/generates/internal/SdkMcpRouteProgrammer.js +72 -24
- package/lib/generates/internal/SdkMcpRouteProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkPathTemplate.d.ts +36 -0
- package/lib/generates/internal/SdkPathTemplate.js +65 -0
- package/lib/generates/internal/SdkPathTemplate.js.map +1 -0
- package/lib/generates/internal/SdkRouteDirectory.d.ts +10 -0
- package/lib/generates/internal/SdkRouteDirectory.js +10 -0
- package/lib/generates/internal/SdkRouteDirectory.js.map +1 -1
- package/lib/generates/internal/SdkTypeProgrammer.d.ts +54 -1
- package/lib/generates/internal/SdkTypeProgrammer.js +111 -27
- package/lib/generates/internal/SdkTypeProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkTypeTagProgrammer.d.ts +53 -1
- package/lib/generates/internal/SdkTypeTagProgrammer.js +407 -67
- package/lib/generates/internal/SdkTypeTagProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkWebSocketCloneProgrammer.d.ts +40 -0
- package/lib/generates/internal/SdkWebSocketCloneProgrammer.js +149 -142
- package/lib/generates/internal/SdkWebSocketCloneProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.d.ts +19 -0
- package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.js +46 -36
- package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkWebSocketParameterProgrammer.d.ts +114 -1
- package/lib/generates/internal/SdkWebSocketParameterProgrammer.js +120 -5
- package/lib/generates/internal/SdkWebSocketParameterProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkWebSocketRouteProgrammer.d.ts +18 -0
- package/lib/generates/internal/SdkWebSocketRouteProgrammer.js +75 -33
- package/lib/generates/internal/SdkWebSocketRouteProgrammer.js.map +1 -1
- package/lib/generates/internal/SwaggerDescriptionComposer.d.ts +42 -0
- package/lib/generates/internal/SwaggerDescriptionComposer.js +44 -1
- package/lib/generates/internal/SwaggerDescriptionComposer.js.map +1 -1
- package/lib/generates/internal/SwaggerOperationComposer.d.ts +18 -0
- package/lib/generates/internal/SwaggerOperationComposer.js +37 -8
- package/lib/generates/internal/SwaggerOperationComposer.js.map +1 -1
- package/lib/generates/internal/SwaggerOperationParameterComposer.d.ts +40 -1
- package/lib/generates/internal/SwaggerOperationParameterComposer.js +230 -25
- package/lib/generates/internal/SwaggerOperationParameterComposer.js.map +1 -1
- package/lib/generates/internal/SwaggerOperationResponseComposer.d.ts +21 -0
- package/lib/generates/internal/SwaggerOperationResponseComposer.js +58 -7
- package/lib/generates/internal/SwaggerOperationResponseComposer.js.map +1 -1
- package/lib/internal/legacy.d.ts +342 -31
- package/lib/internal/legacy.js +207 -31
- package/lib/internal/legacy.js.map +1 -1
- package/lib/structures/INestiaProject.d.ts +10 -0
- package/lib/structures/INestiaSdkInput.d.ts +30 -0
- package/lib/structures/IOperationMetadata.d.ts +77 -0
- package/lib/structures/IReflectController.d.ts +10 -0
- package/lib/structures/IReflectHttpOperation.d.ts +10 -0
- package/lib/structures/IReflectHttpOperationException.d.ts +13 -2
- package/lib/structures/IReflectHttpOperationParameter.d.ts +55 -3
- package/lib/structures/IReflectHttpOperationSuccess.d.ts +15 -3
- package/lib/structures/IReflectImport.d.ts +10 -0
- package/lib/structures/IReflectMcpOperation.d.ts +19 -0
- package/lib/structures/IReflectMcpOperationParameter.d.ts +9 -0
- package/lib/structures/IReflectOperationError.d.ts +28 -0
- package/lib/structures/IReflectOperationError.js +22 -2
- package/lib/structures/IReflectOperationError.js.map +1 -1
- package/lib/structures/IReflectType.d.ts +9 -0
- package/lib/structures/IReflectWebSocketOperation.d.ts +10 -0
- package/lib/structures/IReflectWebSocketOperationParameter.d.ts +55 -0
- package/lib/structures/ITypedApplication.d.ts +10 -0
- package/lib/structures/ITypedHttpRoute.d.ts +18 -0
- package/lib/structures/ITypedHttpRouteException.d.ts +13 -1
- package/lib/structures/ITypedHttpRouteParameter.d.ts +48 -1
- package/lib/structures/ITypedHttpRouteSuccess.d.ts +13 -1
- package/lib/structures/ITypedMcpRoute.d.ts +11 -0
- package/lib/structures/ITypedWebSocketRoute.d.ts +18 -0
- package/lib/transform.d.ts +6 -0
- package/lib/transform.js +6 -0
- package/lib/transform.js.map +1 -1
- package/lib/utils/ArrayUtil.d.ts +31 -1
- package/lib/utils/ArrayUtil.js +32 -11
- package/lib/utils/ArrayUtil.js.map +1 -1
- package/lib/utils/EmittedJavaScriptPatcher.d.ts +20 -0
- package/lib/utils/EmittedJavaScriptPatcher.js +65 -46
- package/lib/utils/EmittedJavaScriptPatcher.js.map +1 -1
- package/lib/utils/FileRetriever.d.ts +29 -0
- package/lib/utils/FileRetriever.js +29 -0
- package/lib/utils/FileRetriever.js.map +1 -1
- package/lib/utils/HttpResponseContentTypeUtil.d.ts +41 -0
- package/lib/utils/HttpResponseContentTypeUtil.js +31 -0
- package/lib/utils/HttpResponseContentTypeUtil.js.map +1 -1
- package/lib/utils/MapUtil.d.ts +64 -1
- package/lib/utils/MapUtil.js +24 -3
- package/lib/utils/MapUtil.js.map +1 -1
- package/lib/utils/PathUtil.d.ts +31 -0
- package/lib/utils/PathUtil.js +38 -0
- package/lib/utils/PathUtil.js.map +1 -1
- package/lib/utils/SdkBundlePath.d.ts +2 -0
- package/lib/utils/SdkBundlePath.js +10 -0
- package/lib/utils/SdkBundlePath.js.map +1 -0
- package/lib/utils/SdkInputFilter.d.ts +31 -0
- package/lib/utils/SdkInputFilter.js +115 -0
- package/lib/utils/SdkInputFilter.js.map +1 -0
- package/lib/utils/SourceFinder.d.ts +45 -0
- package/lib/utils/SourceFinder.js +74 -16
- package/lib/utils/SourceFinder.js.map +1 -1
- package/lib/utils/StringUtil.d.ts +77 -2
- package/lib/utils/StringUtil.js +166 -4
- package/lib/utils/StringUtil.js.map +1 -1
- package/lib/utils/TemporaryDirectory.d.ts +60 -0
- package/lib/utils/TemporaryDirectory.js +112 -0
- package/lib/utils/TemporaryDirectory.js.map +1 -0
- package/lib/utils/TsConfigReader.d.ts +42 -0
- package/lib/utils/TsConfigReader.js +98 -14
- package/lib/utils/TsConfigReader.js.map +1 -1
- package/lib/utils/TtscExecutor.d.ts +23 -1
- package/lib/utils/TtscExecutor.js +22 -0
- package/lib/utils/TtscExecutor.js.map +1 -1
- package/lib/utils/VersioningStrategy.d.ts +39 -2
- package/lib/utils/VersioningStrategy.js +46 -13
- package/lib/utils/VersioningStrategy.js.map +1 -1
- package/lib/validators/TextPlainValidator.d.ts +19 -0
- package/lib/validators/TextPlainValidator.js +19 -0
- package/lib/validators/TextPlainValidator.js.map +1 -1
- package/native/go.mod +1 -1
- package/native/go.sum +2 -2
- package/native/sdk/register.go +12 -2
- package/native/sdk/sdk_http_rules.go +210 -0
- package/native/sdk/sdk_metadata_json.go +79 -4
- package/native/sdk/sdk_transform.go +1157 -414
- package/package.json +8 -6
- package/src/INestiaConfig.ts +74 -34
- package/src/NestiaSdkApplication.ts +129 -41
- package/src/NestiaSwaggerComposer.ts +32 -14
- package/src/analyses/AccessorAnalyzer.ts +26 -0
- package/src/analyses/ConfigAnalyzer.ts +52 -90
- package/src/analyses/ImportAnalyzer.ts +25 -0
- package/src/analyses/ParameterNameAnalyzer.ts +75 -0
- package/src/analyses/PathAnalyzer.ts +167 -23
- package/src/analyses/ReflectControllerAnalyzer.ts +34 -1
- package/src/analyses/ReflectHttpOperationAnalyzer.ts +36 -14
- package/src/analyses/ReflectHttpOperationExceptionAnalyzer.ts +31 -0
- package/src/analyses/ReflectHttpOperationParameterAnalyzer.ts +153 -39
- package/src/analyses/ReflectHttpOperationResponseAnalyzer.ts +38 -7
- package/src/analyses/ReflectMcpOperationAnalyzer.ts +38 -3
- package/src/analyses/ReflectMetadataAnalyzer.ts +47 -0
- package/src/analyses/ReflectWebSocketOperationAnalyzer.ts +40 -7
- package/src/analyses/SecurityAnalyzer.ts +45 -20
- package/src/analyses/SwaggerExampleAnalyzer.ts +39 -0
- package/src/analyses/TypedHttpRouteAnalyzer.ts +263 -198
- package/src/analyses/TypedMcpRouteAnalyzer.ts +180 -20
- package/src/analyses/TypedWebSocketRouteAnalyzer.ts +20 -0
- package/src/decorators/OperationMetadata.ts +6 -0
- package/src/executable/internal/CommandParser.ts +19 -0
- package/src/executable/internal/NestiaConfigLoader.ts +66 -50
- package/src/executable/internal/NestiaSdkCommand.ts +96 -3
- package/src/executable/internal/NestiaSdkWatcher.ts +172 -44
- package/src/executable/internal/NestiaSwaggerWatch.ts +359 -0
- package/src/executable/sdk.ts +24 -1
- package/src/factories/ExpressionFactory.ts +23 -2
- package/src/factories/IdentifierFactory.ts +24 -0
- package/src/factories/LiteralFactory.ts +51 -13
- package/src/factories/StatementFactory.ts +28 -1
- package/src/factories/TypeFactory.ts +24 -0
- package/src/generates/CloneGenerator.ts +26 -5
- package/src/generates/E2eGenerator.ts +19 -0
- package/src/generates/SdkGenerator.ts +43 -12
- package/src/generates/SwaggerGenerator.ts +229 -46
- package/src/generates/internal/E2eFileProgrammer.ts +20 -0
- package/src/generates/internal/FilePrinter.ts +71 -0
- package/src/generates/internal/ImportDictionary.ts +120 -2
- package/src/generates/internal/SdkAliasCollection.ts +144 -15
- package/src/generates/internal/SdkDistributionComposer.ts +181 -56
- package/src/generates/internal/SdkFileProgrammer.ts +126 -16
- package/src/generates/internal/SdkHttpCloneProgrammer.ts +55 -0
- package/src/generates/internal/SdkHttpCloneReferencer.ts +97 -23
- package/src/generates/internal/SdkHttpFunctionProgrammer.ts +47 -30
- package/src/generates/internal/SdkHttpNamespaceProgrammer.ts +53 -64
- package/src/generates/internal/SdkHttpParameterProgrammer.ts +295 -13
- package/src/generates/internal/SdkHttpRouteProgrammer.ts +37 -31
- package/src/generates/internal/SdkHttpSimulationProgrammer.ts +122 -18
- package/src/generates/internal/SdkImportWizard.ts +63 -0
- package/src/generates/internal/SdkMcpRouteProgrammer.ts +150 -33
- package/src/generates/internal/SdkPathTemplate.ts +88 -0
- package/src/generates/internal/SdkRouteDirectory.ts +10 -0
- package/src/generates/internal/SdkTypeProgrammer.ts +137 -36
- package/src/generates/internal/SdkTypeTagProgrammer.ts +536 -78
- package/src/generates/internal/SdkWebSocketCloneProgrammer.ts +185 -142
- package/src/generates/internal/SdkWebSocketNamespaceProgrammer.ts +62 -68
- package/src/generates/internal/SdkWebSocketParameterProgrammer.ts +205 -5
- package/src/generates/internal/SdkWebSocketRouteProgrammer.ts +89 -48
- package/src/generates/internal/SwaggerDescriptionComposer.ts +47 -1
- package/src/generates/internal/SwaggerOperationComposer.ts +38 -6
- package/src/generates/internal/SwaggerOperationParameterComposer.ts +318 -36
- package/src/generates/internal/SwaggerOperationResponseComposer.ts +74 -11
- package/src/internal/legacy-augmentation.d.ts +16 -0
- package/src/internal/legacy.ts +407 -49
- package/src/structures/INestiaProject.ts +10 -0
- package/src/structures/INestiaSdkInput.ts +30 -0
- package/src/structures/IOperationMetadata.ts +83 -0
- package/src/structures/IReflectController.ts +10 -0
- package/src/structures/IReflectHttpOperation.ts +10 -0
- package/src/structures/IReflectHttpOperationException.ts +17 -2
- package/src/structures/IReflectHttpOperationParameter.ts +56 -2
- package/src/structures/IReflectHttpOperationSuccess.ts +19 -3
- package/src/structures/IReflectImport.ts +10 -0
- package/src/structures/IReflectMcpOperation.ts +19 -0
- package/src/structures/IReflectMcpOperationParameter.ts +9 -0
- package/src/structures/IReflectOperationError.ts +31 -2
- package/src/structures/IReflectType.ts +9 -0
- package/src/structures/IReflectWebSocketOperation.ts +10 -0
- package/src/structures/IReflectWebSocketOperationParameter.ts +55 -0
- package/src/structures/ITypedApplication.ts +10 -0
- package/src/structures/ITypedHttpRoute.ts +18 -0
- package/src/structures/ITypedHttpRouteException.ts +14 -1
- package/src/structures/ITypedHttpRouteParameter.ts +48 -1
- package/src/structures/ITypedHttpRouteSuccess.ts +14 -1
- package/src/structures/ITypedMcpRoute.ts +12 -0
- package/src/structures/ITypedWebSocketRoute.ts +18 -0
- package/src/transform.ts +6 -0
- package/src/utils/ArrayUtil.ts +32 -13
- package/src/utils/EmittedJavaScriptPatcher.ts +70 -47
- package/src/utils/FileRetriever.ts +29 -0
- package/src/utils/HttpResponseContentTypeUtil.ts +41 -0
- package/src/utils/MapUtil.ts +68 -3
- package/src/utils/PathUtil.ts +38 -0
- package/src/utils/SdkBundlePath.ts +11 -0
- package/src/utils/SdkInputFilter.ts +108 -0
- package/src/utils/SourceFinder.ts +76 -18
- package/src/utils/StringUtil.ts +182 -5
- package/src/utils/TemporaryDirectory.ts +108 -0
- package/src/utils/TsConfigReader.ts +124 -26
- package/src/utils/TtscExecutor.ts +23 -1
- package/src/utils/VersioningStrategy.ts +51 -16
- package/src/validators/TextPlainValidator.ts +19 -0
- package/lib/generates/internal/SwaggerReadonlyArrayEmender.d.ts +0 -9
- package/lib/generates/internal/SwaggerReadonlyArrayEmender.js +0 -178
- package/lib/generates/internal/SwaggerReadonlyArrayEmender.js.map +0 -1
- package/lib/validators/HttpHeadersValidator.d.ts +0 -11
- package/lib/validators/HttpHeadersValidator.js +0 -15
- package/lib/validators/HttpHeadersValidator.js.map +0 -1
- package/lib/validators/HttpQueryValidator.d.ts +0 -10
- package/lib/validators/HttpQueryValidator.js +0 -14
- package/lib/validators/HttpQueryValidator.js.map +0 -1
- package/src/generates/internal/SwaggerReadonlyArrayEmender.ts +0 -264
- package/src/validators/HttpHeadersValidator.ts +0 -12
- package/src/validators/HttpQueryValidator.ts +0 -11
|
@@ -2,7 +2,26 @@ import { IOperationMetadata } from "../structures/IOperationMetadata";
|
|
|
2
2
|
import { IReflectController } from "../structures/IReflectController";
|
|
3
3
|
import { IReflectHttpOperationParameter } from "../structures/IReflectHttpOperationParameter";
|
|
4
4
|
import { IReflectOperationError } from "../structures/IReflectOperationError";
|
|
5
|
+
/**
|
|
6
|
+
* Reflects the parameters of a route method.
|
|
7
|
+
*
|
|
8
|
+
* @evidence contracts/common.md#principled-implementation Nest's route argument metadata gives each parameter's category and position, the nestia decorators are recognized by the name of their factory function, the metadata of the transform gives the type, and the wire rules of the HTTP input are checked against it.
|
|
9
|
+
* @evidence contracts/common.md#clear-and-simple-design One public function with private classification and duplicate checks.
|
|
10
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts The recognition by factory name couples this package to the function names of `@nestia/core`, a contract between the two packages.
|
|
11
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states its purpose.
|
|
12
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation ReflectHttpOperationParameterAnalyzer analyzes reflected route metadata; it does not resolve native file identity or launch a process. Source resolution and file emission belong to their filesystem owners.
|
|
13
|
+
*/
|
|
5
14
|
export declare namespace ReflectHttpOperationParameterAnalyzer {
|
|
15
|
+
/**
|
|
16
|
+
* The input of the parameter analysis: the controller, the method, its name,
|
|
17
|
+
* the HTTP method, the metadata, and the error list.
|
|
18
|
+
*
|
|
19
|
+
* @evidence contracts/common.md#principled-implementation The record holds what the analysis needs.
|
|
20
|
+
* @evidence contracts/common.md#clear-and-simple-design A flat record with no behavior.
|
|
21
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
|
|
22
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states what the type describes and the meaning of its members.
|
|
23
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation ReflectHttpOperationParameterAnalyzer.IContext analyzes reflected route metadata; it does not resolve native file identity or launch a process. Source resolution and file emission belong to their filesystem owners.
|
|
24
|
+
*/
|
|
6
25
|
interface IContext {
|
|
7
26
|
controller: IReflectController;
|
|
8
27
|
function: Function;
|
|
@@ -11,5 +30,17 @@ export declare namespace ReflectHttpOperationParameterAnalyzer {
|
|
|
11
30
|
metadata: IOperationMetadata;
|
|
12
31
|
errors: IReflectOperationError[];
|
|
13
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Returns the parameters of a route method in position order.
|
|
35
|
+
*
|
|
36
|
+
* Contradictions, such as a body on GET, duplicated bodies or fields,
|
|
37
|
+
* unreadable types, and types the HTTP input cannot carry, are errors.
|
|
38
|
+
*
|
|
39
|
+
* @evidence contracts/common.md#principled-implementation Contradictions are collected first, each parameter is composed with the schema that matches its content type, its wire rules are checked, unnamed parameters are named, and duplicate keys between field parameters and objects are reported.
|
|
40
|
+
* @evidence contracts/common.md#clear-and-simple-design One function that gathers every error before returning.
|
|
41
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts Every rule follows the HTTP or NestJS contract, and a parameter that cannot be sent is an error, not silently dropped.
|
|
42
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states the errors.
|
|
43
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation ReflectHttpOperationParameterAnalyzer.analyze analyzes reflected route metadata; it does not resolve native file identity or launch a process. Source resolution and file emission belong to their filesystem owners.
|
|
44
|
+
*/
|
|
14
45
|
const analyze: (ctx: IContext) => IReflectHttpOperationParameter[];
|
|
15
46
|
}
|
|
@@ -1,14 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
2
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
14
|
exports.ReflectHttpOperationParameterAnalyzer = void 0;
|
|
4
15
|
const constants_1 = require("@nestjs/common/constants");
|
|
5
16
|
const route_paramtypes_enum_1 = require("@nestjs/common/enums/route-paramtypes.enum");
|
|
6
17
|
const legacy_1 = require("../internal/legacy");
|
|
7
|
-
const HttpHeadersValidator_1 = require("../validators/HttpHeadersValidator");
|
|
8
|
-
const HttpQueryValidator_1 = require("../validators/HttpQueryValidator");
|
|
9
18
|
const TextPlainValidator_1 = require("../validators/TextPlainValidator");
|
|
19
|
+
const ParameterNameAnalyzer_1 = require("./ParameterNameAnalyzer");
|
|
20
|
+
const SwaggerExampleAnalyzer_1 = require("./SwaggerExampleAnalyzer");
|
|
21
|
+
/**
|
|
22
|
+
* Reflects the parameters of a route method.
|
|
23
|
+
*
|
|
24
|
+
* @evidence contracts/common.md#principled-implementation Nest's route argument metadata gives each parameter's category and position, the nestia decorators are recognized by the name of their factory function, the metadata of the transform gives the type, and the wire rules of the HTTP input are checked against it.
|
|
25
|
+
* @evidence contracts/common.md#clear-and-simple-design One public function with private classification and duplicate checks.
|
|
26
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts The recognition by factory name couples this package to the function names of `@nestia/core`, a contract between the two packages.
|
|
27
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states its purpose.
|
|
28
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation ReflectHttpOperationParameterAnalyzer analyzes reflected route metadata; it does not resolve native file identity or launch a process. Source resolution and file emission belong to their filesystem owners.
|
|
29
|
+
*/
|
|
10
30
|
var ReflectHttpOperationParameterAnalyzer;
|
|
11
31
|
(function (ReflectHttpOperationParameterAnalyzer) {
|
|
32
|
+
/**
|
|
33
|
+
* Returns the parameters of a route method in position order.
|
|
34
|
+
*
|
|
35
|
+
* Contradictions, such as a body on GET, duplicated bodies or fields,
|
|
36
|
+
* unreadable types, and types the HTTP input cannot carry, are errors.
|
|
37
|
+
*
|
|
38
|
+
* @evidence contracts/common.md#principled-implementation Contradictions are collected first, each parameter is composed with the schema that matches its content type, its wire rules are checked, unnamed parameters are named, and duplicate keys between field parameters and objects are reported.
|
|
39
|
+
* @evidence contracts/common.md#clear-and-simple-design One function that gathers every error before returning.
|
|
40
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts Every rule follows the HTTP or NestJS contract, and a parameter that cannot be sent is an error, not silently dropped.
|
|
41
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states the errors.
|
|
42
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation ReflectHttpOperationParameterAnalyzer.analyze analyzes reflected route metadata; it does not resolve native file identity or launch a process. Source resolution and file emission belong to their filesystem owners.
|
|
43
|
+
*/
|
|
12
44
|
ReflectHttpOperationParameterAnalyzer.analyze = (ctx) => {
|
|
13
45
|
const preconfigured = analyzePreconfigured(ctx);
|
|
14
46
|
const errors = [];
|
|
@@ -44,7 +76,9 @@ var ReflectHttpOperationParameterAnalyzer;
|
|
|
44
76
|
if (isUnique(preconfigured
|
|
45
77
|
.filter((x) => x.category === "headers")
|
|
46
78
|
.map((x) => x.field)
|
|
47
|
-
.filter((field) => field !== undefined)
|
|
79
|
+
.filter((field) => field !== undefined)
|
|
80
|
+
// NestJS reads `req.headers[name.toLowerCase()]`
|
|
81
|
+
.map((field) => field.toLowerCase())) === false)
|
|
48
82
|
contradict(`Duplicated field names of headers are not allowed.`);
|
|
49
83
|
if (contradictErrors.length)
|
|
50
84
|
errors.push({
|
|
@@ -57,9 +91,10 @@ var ReflectHttpOperationParameterAnalyzer;
|
|
|
57
91
|
//----
|
|
58
92
|
// COMPOSE PARAMETERS
|
|
59
93
|
//----
|
|
60
|
-
const
|
|
94
|
+
const declared = preconfigured
|
|
61
95
|
.map((p) => {
|
|
62
|
-
var _a
|
|
96
|
+
var _a;
|
|
97
|
+
var _b, _c, _d, _e;
|
|
63
98
|
// METADATA INFO
|
|
64
99
|
const pErrorContents = [];
|
|
65
100
|
const matched = ctx.metadata.parameters.find((x) => x.index === p.index);
|
|
@@ -68,7 +103,8 @@ var ReflectHttpOperationParameterAnalyzer;
|
|
|
68
103
|
file: ctx.controller.file,
|
|
69
104
|
class: ctx.controller.class.name,
|
|
70
105
|
function: ctx.functionName,
|
|
71
|
-
|
|
106
|
+
// a destructured parameter has no name to report
|
|
107
|
+
from: `parameter ${(matched === null || matched === void 0 ? void 0 : matched.name) ? JSON.stringify(matched.name) : `of ${p.index} th`}`,
|
|
72
108
|
contents: pErrorContents,
|
|
73
109
|
});
|
|
74
110
|
return null;
|
|
@@ -79,55 +115,138 @@ var ReflectHttpOperationParameterAnalyzer;
|
|
|
79
115
|
else if (matched.type === null)
|
|
80
116
|
pErrorContents.push(`Failed to get the type info.`);
|
|
81
117
|
// CONSIDER KIND
|
|
82
|
-
const
|
|
118
|
+
const pipe = (() => {
|
|
83
119
|
if (matched === undefined)
|
|
84
120
|
return null;
|
|
85
|
-
|
|
121
|
+
return p.category === "body" &&
|
|
86
122
|
(p.contentType === "application/json" || p.encrypted === true)
|
|
87
123
|
? matched.primitive
|
|
88
124
|
: matched.resolved;
|
|
89
|
-
return result.success ? result.data : null;
|
|
90
125
|
})();
|
|
126
|
+
const schema = (pipe === null || pipe === void 0 ? void 0 : pipe.success) === true ? pipe.data : null;
|
|
127
|
+
// A type the metadata analysis could not read has no SDK or Swagger
|
|
128
|
+
// form; dropping the parameter would leave a function that cannot
|
|
129
|
+
// send what the route requires.
|
|
130
|
+
if ((pipe === null || pipe === void 0 ? void 0 : pipe.success) === false)
|
|
131
|
+
pErrorContents.push(...pipe.errors);
|
|
91
132
|
if (p.category === "body" && p.field !== undefined)
|
|
92
133
|
pErrorContents.push(`@Body() must not have a field name.`);
|
|
93
134
|
else if (p.category === "param" && p.field === undefined)
|
|
94
135
|
pErrorContents.push(`@Param() must have a field name.`);
|
|
136
|
+
// The wire rules of the parameter's HTTP input: a type they reject
|
|
137
|
+
// cannot be carried as a query string, headers, a path segment, or a
|
|
138
|
+
// form, so the SDK would send garbage and the document would lie.
|
|
139
|
+
const rule = httpRuleOf(p);
|
|
140
|
+
if (rule !== null && schema !== null)
|
|
141
|
+
pErrorContents.push(...((_b = (_a = schema.http) === null || _a === void 0 ? void 0 : _a[rule]) !== null && _b !== void 0 ? _b : []));
|
|
95
142
|
if (pErrorContents.length)
|
|
96
143
|
return report();
|
|
97
144
|
else if (matched === undefined ||
|
|
98
145
|
matched.type === null ||
|
|
99
146
|
schema === null)
|
|
100
147
|
return null; // unreachable
|
|
101
|
-
const
|
|
148
|
+
const { http: _http } = schema, shape = __rest(schema, ["http"]);
|
|
149
|
+
const example = ((_c = Reflect.getMetadata("nestia/SwaggerExample/Parameters", ctx.controller.class.prototype, ctx.functionName)) !== null && _c !== void 0 ? _c : []).find((x) => x.index === matched.index);
|
|
102
150
|
// COMPOSITION
|
|
103
151
|
if (p.category === "param")
|
|
104
|
-
return Object.assign({ category: p.category, index: p.index, field: p.field, name: matched.name, type: matched.type,
|
|
152
|
+
return Object.assign({ category: p.category, index: p.index, field: p.field, name: matched.name, type: matched.type, description: matched.description, jsDocTags: matched.jsDocTags, example: example === null || example === void 0 ? void 0 : example.example, examples: SwaggerExampleAnalyzer_1.SwaggerExampleAnalyzer.examples(example) }, shape);
|
|
105
153
|
else if (p.category === "query")
|
|
106
|
-
return Object.assign({ category: p.category, index: p.index, field: (
|
|
107
|
-
? HttpQueryValidator_1.HttpQueryValidator.validate
|
|
108
|
-
: legacy_1.HttpQueryProgrammer.validate, description: matched.description, jsDocTags: matched.jsDocTags, example: example === null || example === void 0 ? void 0 : example.example, examples: example === null || example === void 0 ? void 0 : example.examples }, schema);
|
|
154
|
+
return Object.assign({ category: p.category, index: p.index, field: (_d = p.field) !== null && _d !== void 0 ? _d : null, name: matched.name, type: matched.type, description: matched.description, jsDocTags: matched.jsDocTags, example: example === null || example === void 0 ? void 0 : example.example, examples: SwaggerExampleAnalyzer_1.SwaggerExampleAnalyzer.examples(example) }, shape);
|
|
109
155
|
else if (p.category === "headers")
|
|
110
|
-
return Object.assign({ category: p.category, index: p.index, field: (
|
|
111
|
-
? HttpHeadersValidator_1.HttpHeadersValidator.validate
|
|
112
|
-
: legacy_1.HttpHeadersProgrammer.validate, description: matched.description, jsDocTags: matched.jsDocTags, example: example === null || example === void 0 ? void 0 : example.example, examples: example === null || example === void 0 ? void 0 : example.examples }, schema);
|
|
156
|
+
return Object.assign({ category: p.category, index: p.index, field: (_e = p.field) !== null && _e !== void 0 ? _e : null, name: matched.name, type: matched.type, description: matched.description, jsDocTags: matched.jsDocTags, example: example === null || example === void 0 ? void 0 : example.example, examples: SwaggerExampleAnalyzer_1.SwaggerExampleAnalyzer.examples(example) }, shape);
|
|
113
157
|
else if (p.category === "body")
|
|
114
158
|
return Object.assign({ category: p.category, index: p.index, encrypted: !!p.encrypted, contentType: p.contentType, name: matched.name, type: matched.type, validate: p.contentType === "application/json" || p.encrypted === true
|
|
115
159
|
? legacy_1.JsonMetadataFactory.validate
|
|
116
|
-
: p.contentType === "
|
|
117
|
-
?
|
|
118
|
-
:
|
|
119
|
-
? legacy_1.HttpFormDataProgrammer.validate
|
|
120
|
-
: TextPlainValidator_1.TextPlainValidator.validate, description: matched.description, jsDocTags: matched.jsDocTags, example: example === null || example === void 0 ? void 0 : example.example, examples: example === null || example === void 0 ? void 0 : example.examples }, schema);
|
|
160
|
+
: p.contentType === "text/plain"
|
|
161
|
+
? TextPlainValidator_1.TextPlainValidator.validate
|
|
162
|
+
: undefined, description: matched.description, jsDocTags: matched.jsDocTags, example: example === null || example === void 0 ? void 0 : example.example, examples: SwaggerExampleAnalyzer_1.SwaggerExampleAnalyzer.examples(example) }, shape);
|
|
121
163
|
else {
|
|
122
164
|
pErrorContents.push(`Unknown kind of the parameter.`);
|
|
123
165
|
return report();
|
|
124
166
|
}
|
|
125
167
|
})
|
|
126
168
|
.filter((x) => x !== null);
|
|
169
|
+
// a destructured parameter declares no name, so it is given one
|
|
170
|
+
const parameters = ParameterNameAnalyzer_1.ParameterNameAnalyzer.name(declared);
|
|
171
|
+
const duplicated = findDuplicatedKeys(parameters);
|
|
172
|
+
if (duplicated.length)
|
|
173
|
+
errors.push({
|
|
174
|
+
file: ctx.controller.file,
|
|
175
|
+
class: ctx.controller.class.name,
|
|
176
|
+
function: ctx.functionName,
|
|
177
|
+
from: "",
|
|
178
|
+
contents: duplicated,
|
|
179
|
+
});
|
|
127
180
|
if (errors.length)
|
|
128
181
|
ctx.errors.push(...errors);
|
|
129
182
|
return parameters;
|
|
130
183
|
};
|
|
184
|
+
/**
|
|
185
|
+
* The HTTP input rules a parameter's type must satisfy, or `null` for a JSON
|
|
186
|
+
* or text body, whose policies are checked on the TypeScript side.
|
|
187
|
+
*
|
|
188
|
+
* The rules are typia's, baked per parameter by the SDK transform (see
|
|
189
|
+
* `nestiaSDKHttpRules`), because only this analyzer knows the decorator. A
|
|
190
|
+
* typed decorator was already held to them by the core transform, so the
|
|
191
|
+
* verdict is only news for a vanilla `@Query()`, `@Headers()`, or `@Param()`,
|
|
192
|
+
* which no transform touches.
|
|
193
|
+
*/
|
|
194
|
+
const httpRuleOf = (p) => {
|
|
195
|
+
if (p.category === "param")
|
|
196
|
+
return "param";
|
|
197
|
+
else if (p.category === "query")
|
|
198
|
+
return p.field !== undefined ? "field" : "query";
|
|
199
|
+
else if (p.category === "headers")
|
|
200
|
+
return p.field !== undefined ? "field" : "headers";
|
|
201
|
+
else if (p.contentType === "application/x-www-form-urlencoded")
|
|
202
|
+
return "query";
|
|
203
|
+
else if (p.contentType === "multipart/form-data")
|
|
204
|
+
return "formData";
|
|
205
|
+
return null;
|
|
206
|
+
};
|
|
207
|
+
/**
|
|
208
|
+
* Reports a query key or header both a field parameter and the object
|
|
209
|
+
* parameter of its category declare.
|
|
210
|
+
*
|
|
211
|
+
* On the wire they are one key: NestJS hands both parameters the same
|
|
212
|
+
* `req.query.keyword`, and header names match case-insensitively, as NestJS
|
|
213
|
+
* lowercases the name a `@Headers("X-Tenant")` reads. Documenting both lists
|
|
214
|
+
* one `name` + `in` pair twice, which OpenAPI forbids, and the SDK would ask
|
|
215
|
+
* its caller for the same key twice and send one of the two values. Like two
|
|
216
|
+
* field parameters of the same name, the declaration is contradictory.
|
|
217
|
+
*/
|
|
218
|
+
const findDuplicatedKeys = (parameters) => {
|
|
219
|
+
const messages = [];
|
|
220
|
+
for (const [category, normalize, noun] of [
|
|
221
|
+
["query", (key) => key, "Query key"],
|
|
222
|
+
["headers", (key) => key.toLowerCase(), "Header"],
|
|
223
|
+
]) {
|
|
224
|
+
const fields = new Map();
|
|
225
|
+
for (const p of parameters)
|
|
226
|
+
if (p.category === category && p.field !== null)
|
|
227
|
+
fields.set(normalize(p.field), p.field);
|
|
228
|
+
for (const p of parameters) {
|
|
229
|
+
if (p.category !== category || p.field !== null)
|
|
230
|
+
continue;
|
|
231
|
+
for (const key of objectKeys(p)) {
|
|
232
|
+
const field = fields.get(normalize(key));
|
|
233
|
+
if (field !== undefined)
|
|
234
|
+
messages.push(`${noun} ${JSON.stringify(field)} is declared both by a field parameter and by the ${category} object.`);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return messages;
|
|
239
|
+
};
|
|
240
|
+
/** Literal property keys of an object parameter's object type. */
|
|
241
|
+
const objectKeys = (p) => {
|
|
242
|
+
var _a;
|
|
243
|
+
var _b;
|
|
244
|
+
const name = (_a = p.metadata.objects[0]) === null || _a === void 0 ? void 0 : _a.name;
|
|
245
|
+
const object = p.components.objects.find((o) => o.name === name);
|
|
246
|
+
return ((_b = object === null || object === void 0 ? void 0 : object.properties) !== null && _b !== void 0 ? _b : [])
|
|
247
|
+
.map((property) => { var _a, _b; return (_b = (_a = property.key.constants[0]) === null || _a === void 0 ? void 0 : _a.values[0]) === null || _b === void 0 ? void 0 : _b.value; })
|
|
248
|
+
.filter((key) => typeof key === "string");
|
|
249
|
+
};
|
|
131
250
|
const analyzePreconfigured = (props) => {
|
|
132
251
|
const dict = Reflect.getMetadata(constants_1.ROUTE_ARGS_METADATA, props.controller.class, props.functionName);
|
|
133
252
|
if (dict === undefined)
|
|
@@ -141,7 +260,8 @@ var ReflectHttpOperationParameterAnalyzer;
|
|
|
141
260
|
const symbol = key.split(":")[0];
|
|
142
261
|
if (symbol.indexOf("__custom") !== -1)
|
|
143
262
|
return analyzeCustomParameter(param);
|
|
144
|
-
|
|
263
|
+
// the whole number: `RAW_BODY` is 12, which the first digit misread as 1
|
|
264
|
+
const category = getNestParamType(Number(symbol));
|
|
145
265
|
if (category === null)
|
|
146
266
|
return null;
|
|
147
267
|
if (category === "body")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReflectHttpOperationParameterAnalyzer.js","sourceRoot":"","sources":["../../src/analyses/ReflectHttpOperationParameterAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ReflectHttpOperationParameterAnalyzer.js","sourceRoot":"","sources":["../../src/analyses/ReflectHttpOperationParameterAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,26 @@ import { IOperationMetadata } from "../structures/IOperationMetadata";
|
|
|
2
2
|
import { IReflectController } from "../structures/IReflectController";
|
|
3
3
|
import { IReflectHttpOperationSuccess } from "../structures/IReflectHttpOperationSuccess";
|
|
4
4
|
import { IReflectOperationError } from "../structures/IReflectOperationError";
|
|
5
|
+
/**
|
|
6
|
+
* Reflects the success response of a route method.
|
|
7
|
+
*
|
|
8
|
+
* @evidence contracts/common.md#principled-implementation The content type comes from the encryption and query interceptors, then the headers metadata, then the produces metadata, then the method default; the status comes from the HTTP code metadata or the method default; binary types skip the schema.
|
|
9
|
+
* @evidence contracts/common.md#clear-and-simple-design One public function with small private helpers.
|
|
10
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts The order follows how NestJS and nestia decorate a route.
|
|
11
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states its purpose.
|
|
12
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation ReflectHttpOperationResponseAnalyzer analyzes reflected route metadata; it does not resolve native file identity or launch a process. Source resolution and file emission belong to their filesystem owners.
|
|
13
|
+
*/
|
|
5
14
|
export declare namespace ReflectHttpOperationResponseAnalyzer {
|
|
15
|
+
/**
|
|
16
|
+
* The input of the response analysis: the controller, the method, its name,
|
|
17
|
+
* the HTTP method, the metadata, and the error list.
|
|
18
|
+
*
|
|
19
|
+
* @evidence contracts/common.md#principled-implementation The record holds what the analysis needs.
|
|
20
|
+
* @evidence contracts/common.md#clear-and-simple-design A flat record with no behavior.
|
|
21
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
|
|
22
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states what the type describes and the meaning of its members.
|
|
23
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation ReflectHttpOperationResponseAnalyzer.IContext analyzes reflected route metadata; it does not resolve native file identity or launch a process. Source resolution and file emission belong to their filesystem owners.
|
|
24
|
+
*/
|
|
6
25
|
interface IContext {
|
|
7
26
|
controller: IReflectController;
|
|
8
27
|
function: Function;
|
|
@@ -11,5 +30,18 @@ export declare namespace ReflectHttpOperationResponseAnalyzer {
|
|
|
11
30
|
metadata: IOperationMetadata;
|
|
12
31
|
errors: IReflectOperationError[];
|
|
13
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Returns the success response of a method, or `null` when it cannot be
|
|
35
|
+
* described; the reasons are pushed to the errors.
|
|
36
|
+
*
|
|
37
|
+
* A HEAD method must have no content type, and an unsupported content type is
|
|
38
|
+
* an error.
|
|
39
|
+
*
|
|
40
|
+
* @evidence contracts/common.md#principled-implementation The schema is the primitive form for JSON and the resolved form for other types, the validator depends on the content type, and the status defaults to 201 for POST and 200 otherwise.
|
|
41
|
+
* @evidence contracts/common.md#clear-and-simple-design One function.
|
|
42
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts The defaults are NestJS's.
|
|
43
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states the null result and the two errors.
|
|
44
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation ReflectHttpOperationResponseAnalyzer.analyze analyzes reflected route metadata; it does not resolve native file identity or launch a process. Source resolution and file emission belong to their filesystem owners.
|
|
45
|
+
*/
|
|
14
46
|
const analyze: (ctx: IContext) => IReflectHttpOperationSuccess | null;
|
|
15
47
|
}
|
|
@@ -5,8 +5,31 @@ const constants_1 = require("@nestjs/common/constants");
|
|
|
5
5
|
const legacy_1 = require("../internal/legacy");
|
|
6
6
|
const HttpResponseContentTypeUtil_1 = require("../utils/HttpResponseContentTypeUtil");
|
|
7
7
|
const TextPlainValidator_1 = require("../validators/TextPlainValidator");
|
|
8
|
+
const SwaggerExampleAnalyzer_1 = require("./SwaggerExampleAnalyzer");
|
|
9
|
+
/**
|
|
10
|
+
* Reflects the success response of a route method.
|
|
11
|
+
*
|
|
12
|
+
* @evidence contracts/common.md#principled-implementation The content type comes from the encryption and query interceptors, then the headers metadata, then the produces metadata, then the method default; the status comes from the HTTP code metadata or the method default; binary types skip the schema.
|
|
13
|
+
* @evidence contracts/common.md#clear-and-simple-design One public function with small private helpers.
|
|
14
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts The order follows how NestJS and nestia decorate a route.
|
|
15
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states its purpose.
|
|
16
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation ReflectHttpOperationResponseAnalyzer analyzes reflected route metadata; it does not resolve native file identity or launch a process. Source resolution and file emission belong to their filesystem owners.
|
|
17
|
+
*/
|
|
8
18
|
var ReflectHttpOperationResponseAnalyzer;
|
|
9
19
|
(function (ReflectHttpOperationResponseAnalyzer) {
|
|
20
|
+
/**
|
|
21
|
+
* Returns the success response of a method, or `null` when it cannot be
|
|
22
|
+
* described; the reasons are pushed to the errors.
|
|
23
|
+
*
|
|
24
|
+
* A HEAD method must have no content type, and an unsupported content type is
|
|
25
|
+
* an error.
|
|
26
|
+
*
|
|
27
|
+
* @evidence contracts/common.md#principled-implementation The schema is the primitive form for JSON and the resolved form for other types, the validator depends on the content type, and the status defaults to 201 for POST and 200 otherwise.
|
|
28
|
+
* @evidence contracts/common.md#clear-and-simple-design One function.
|
|
29
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts The defaults are NestJS's.
|
|
30
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states the null result and the two errors.
|
|
31
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation ReflectHttpOperationResponseAnalyzer.analyze analyzes reflected route metadata; it does not resolve native file identity or launch a process. Source resolution and file emission belong to their filesystem owners.
|
|
32
|
+
*/
|
|
10
33
|
ReflectHttpOperationResponseAnalyzer.analyze = (ctx) => {
|
|
11
34
|
var _a, _b, _c;
|
|
12
35
|
var _d, _e, _f, _g;
|
|
@@ -61,12 +84,14 @@ var ReflectHttpOperationResponseAnalyzer;
|
|
|
61
84
|
: contentType === "application/json" || encrypted === true
|
|
62
85
|
? legacy_1.JsonMetadataFactory.validate
|
|
63
86
|
: contentType === "application/x-www-form-urlencoded"
|
|
64
|
-
?
|
|
87
|
+
? // a typed query response, held to typia's query rules by the
|
|
88
|
+
// core transform
|
|
89
|
+
undefined
|
|
65
90
|
: contentType === "text/plain"
|
|
66
91
|
? TextPlainValidator_1.TextPlainValidator.validate
|
|
67
92
|
: (next) => (0, legacy_1.sizeOf)(next.metadata) !== 0
|
|
68
93
|
? ["HEAD method must not have any return value."]
|
|
69
|
-
: [], example: example === null || example === void 0 ? void 0 : example.example, examples:
|
|
94
|
+
: [], example: example === null || example === void 0 ? void 0 : example.example, examples: SwaggerExampleAnalyzer_1.SwaggerExampleAnalyzer.examples(example) });
|
|
70
95
|
};
|
|
71
96
|
const getStatus = (func) => {
|
|
72
97
|
const text = Reflect.getMetadata(constants_1.HTTP_CODE_METADATA, func);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReflectHttpOperationResponseAnalyzer.js","sourceRoot":"","sources":["../../src/analyses/ReflectHttpOperationResponseAnalyzer.ts"],"names":[],"mappings":";;;AACA,wDAIkC;AAElC,+
|
|
1
|
+
{"version":3,"file":"ReflectHttpOperationResponseAnalyzer.js","sourceRoot":"","sources":["../../src/analyses/ReflectHttpOperationResponseAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,26 @@ import { INestiaProject } from "../structures/INestiaProject";
|
|
|
2
2
|
import { IOperationMetadata } from "../structures/IOperationMetadata";
|
|
3
3
|
import { IReflectController } from "../structures/IReflectController";
|
|
4
4
|
import { IReflectMcpOperation } from "../structures/IReflectMcpOperation";
|
|
5
|
+
/**
|
|
6
|
+
* Reflects an `@McpRoute` method into a tool operation.
|
|
7
|
+
*
|
|
8
|
+
* @evidence contracts/common.md#principled-implementation The tool definition comes from the route metadata, the single params parameter is matched with its compile-time type, and combinations with HTTP or WebSocket decorators and extra parameters are errors.
|
|
9
|
+
* @evidence contracts/common.md#clear-and-simple-design One public function.
|
|
10
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts The rules follow the decorator contract.
|
|
11
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states its purpose.
|
|
12
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation ReflectMcpOperationAnalyzer analyzes reflected route metadata; it does not resolve native file identity or launch a process. Source resolution and file emission belong to their filesystem owners.
|
|
13
|
+
*/
|
|
5
14
|
export declare namespace ReflectMcpOperationAnalyzer {
|
|
15
|
+
/**
|
|
16
|
+
* The input of the MCP operation analysis: the project, the controller, the
|
|
17
|
+
* method, and its metadata.
|
|
18
|
+
*
|
|
19
|
+
* @evidence contracts/common.md#principled-implementation The record holds what the analysis needs.
|
|
20
|
+
* @evidence contracts/common.md#clear-and-simple-design A flat record with no behavior.
|
|
21
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type and adds no runtime behavior.
|
|
22
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states what the type describes and the meaning of its members.
|
|
23
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation ReflectMcpOperationAnalyzer.IProps analyzes reflected route metadata; it does not resolve native file identity or launch a process. Source resolution and file emission belong to their filesystem owners.
|
|
24
|
+
*/
|
|
6
25
|
interface IProps {
|
|
7
26
|
project: Omit<INestiaProject, "config">;
|
|
8
27
|
controller: IReflectController;
|
|
@@ -10,5 +29,15 @@ export declare namespace ReflectMcpOperationAnalyzer {
|
|
|
10
29
|
name: string;
|
|
11
30
|
metadata: IOperationMetadata;
|
|
12
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Returns the tool operation of a method, or `null` when the method is not an
|
|
34
|
+
* MCP route or has errors.
|
|
35
|
+
*
|
|
36
|
+
* @evidence contracts/common.md#principled-implementation The method is an MCP route when it carries the route metadata; at most one params parameter is allowed and the function may have at most one argument; the return type and imports come from the metadata.
|
|
37
|
+
* @evidence contracts/common.md#clear-and-simple-design One function that collects errors once and reports them together.
|
|
38
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts The rules follow the decorator contract.
|
|
39
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states the null result.
|
|
40
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation ReflectMcpOperationAnalyzer.analyze analyzes reflected route metadata; it does not resolve native file identity or launch a process. Source resolution and file emission belong to their filesystem owners.
|
|
41
|
+
*/
|
|
13
42
|
const analyze: (ctx: IProps) => IReflectMcpOperation | null;
|
|
14
43
|
}
|
|
@@ -3,11 +3,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ReflectMcpOperationAnalyzer = void 0;
|
|
4
4
|
const constants_1 = require("@nestjs/common/constants");
|
|
5
5
|
const ImportAnalyzer_1 = require("./ImportAnalyzer");
|
|
6
|
+
const ParameterNameAnalyzer_1 = require("./ParameterNameAnalyzer");
|
|
7
|
+
/**
|
|
8
|
+
* Reflects an `@McpRoute` method into a tool operation.
|
|
9
|
+
*
|
|
10
|
+
* @evidence contracts/common.md#principled-implementation The tool definition comes from the route metadata, the single params parameter is matched with its compile-time type, and combinations with HTTP or WebSocket decorators and extra parameters are errors.
|
|
11
|
+
* @evidence contracts/common.md#clear-and-simple-design One public function.
|
|
12
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts The rules follow the decorator contract.
|
|
13
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states its purpose.
|
|
14
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation ReflectMcpOperationAnalyzer analyzes reflected route metadata; it does not resolve native file identity or launch a process. Source resolution and file emission belong to their filesystem owners.
|
|
15
|
+
*/
|
|
6
16
|
var ReflectMcpOperationAnalyzer;
|
|
7
17
|
(function (ReflectMcpOperationAnalyzer) {
|
|
18
|
+
/**
|
|
19
|
+
* Returns the tool operation of a method, or `null` when the method is not an
|
|
20
|
+
* MCP route or has errors.
|
|
21
|
+
*
|
|
22
|
+
* @evidence contracts/common.md#principled-implementation The method is an MCP route when it carries the route metadata; at most one params parameter is allowed and the function may have at most one argument; the return type and imports come from the metadata.
|
|
23
|
+
* @evidence contracts/common.md#clear-and-simple-design One function that collects errors once and reports them together.
|
|
24
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts The rules follow the decorator contract.
|
|
25
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states the null result.
|
|
26
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation ReflectMcpOperationAnalyzer.analyze analyzes reflected route metadata; it does not resolve native file identity or launch a process. Source resolution and file emission belong to their filesystem owners.
|
|
27
|
+
*/
|
|
8
28
|
ReflectMcpOperationAnalyzer.analyze = (ctx) => {
|
|
9
|
-
var _a, _b, _c;
|
|
10
|
-
var
|
|
29
|
+
var _a, _b, _c, _d;
|
|
30
|
+
var _e, _f, _g, _h, _j, _k, _l;
|
|
11
31
|
const route = Reflect.getMetadata("nestia/McpRoute", ctx.function);
|
|
12
32
|
if (route === undefined)
|
|
13
33
|
return null;
|
|
@@ -17,13 +37,13 @@ var ReflectMcpOperationAnalyzer;
|
|
|
17
37
|
const hasWebSocketRoute = Reflect.getMetadata("nestia/WebSocketRoute", ctx.function) !== undefined;
|
|
18
38
|
if (hasHttpRoute || hasWebSocketRoute)
|
|
19
39
|
errors.push("@McpRoute must not be combined with HTTP or WebSocket route decorators on the same method.");
|
|
20
|
-
const preconfigured = ((
|
|
40
|
+
const preconfigured = ((_e = Reflect.getMetadata("nestia/McpRoute/Parameters", ctx.controller.class.prototype, ctx.name)) !== null && _e !== void 0 ? _e : []).sort((a, b) => a.index - b.index);
|
|
21
41
|
if (preconfigured.length > 1)
|
|
22
42
|
errors.push("@McpRoute tools may declare at most one @McpRoute.Params() parameter.");
|
|
23
43
|
if (ctx.function.length > 1)
|
|
24
44
|
errors.push("@McpRoute tools must have 0 or 1 parameters (the MCP arguments object).");
|
|
25
45
|
const imports = [];
|
|
26
|
-
const
|
|
46
|
+
const declared = preconfigured
|
|
27
47
|
.map((p) => {
|
|
28
48
|
const matched = ctx.metadata.parameters.find((m) => p.index === m.index);
|
|
29
49
|
if (matched === undefined) {
|
|
@@ -31,7 +51,7 @@ var ReflectMcpOperationAnalyzer;
|
|
|
31
51
|
return null;
|
|
32
52
|
}
|
|
33
53
|
if (matched.type === null) {
|
|
34
|
-
errors.push(`Failed to analyze the parameter type of ${JSON.stringify(matched.name)}.`);
|
|
54
|
+
errors.push(`Failed to analyze the parameter type of ${matched.name ? JSON.stringify(matched.name) : `the ${p.index} (th) argument`}.`);
|
|
35
55
|
return null;
|
|
36
56
|
}
|
|
37
57
|
imports.push(...matched.imports);
|
|
@@ -40,12 +60,15 @@ var ReflectMcpOperationAnalyzer;
|
|
|
40
60
|
name: matched.name,
|
|
41
61
|
index: p.index,
|
|
42
62
|
type: matched.type,
|
|
63
|
+
metadata: matched.primitive,
|
|
43
64
|
imports: matched.imports,
|
|
44
65
|
description: matched.description,
|
|
45
66
|
jsDocTags: matched.jsDocTags,
|
|
46
67
|
};
|
|
47
68
|
})
|
|
48
69
|
.filter((p) => !!p);
|
|
70
|
+
// a destructured parameter declares no name, so it is given one
|
|
71
|
+
const parameters = ParameterNameAnalyzer_1.ParameterNameAnalyzer.name(declared);
|
|
49
72
|
if ((_b = (_a = ctx.metadata.success) === null || _a === void 0 ? void 0 : _a.imports) === null || _b === void 0 ? void 0 : _b.length)
|
|
50
73
|
imports.push(...ctx.metadata.success.imports);
|
|
51
74
|
if (errors.length) {
|
|
@@ -62,16 +85,17 @@ var ReflectMcpOperationAnalyzer;
|
|
|
62
85
|
protocol: "mcp",
|
|
63
86
|
name: ctx.name,
|
|
64
87
|
toolName: route.name,
|
|
65
|
-
title: (
|
|
66
|
-
toolDescription: (
|
|
88
|
+
title: (_f = route.title) !== null && _f !== void 0 ? _f : null,
|
|
89
|
+
toolDescription: (_g = route.description) !== null && _g !== void 0 ? _g : null,
|
|
67
90
|
inputSchema: route.inputSchema,
|
|
68
|
-
outputSchema: (
|
|
69
|
-
annotations: (
|
|
91
|
+
outputSchema: (_h = route.outputSchema) !== null && _h !== void 0 ? _h : null,
|
|
92
|
+
annotations: (_j = route.annotations) !== null && _j !== void 0 ? _j : null,
|
|
70
93
|
function: ctx.function,
|
|
71
94
|
parameters,
|
|
72
|
-
returnType: (
|
|
95
|
+
returnType: (_k = (_c = ctx.metadata.success) === null || _c === void 0 ? void 0 : _c.type) !== null && _k !== void 0 ? _k : null,
|
|
96
|
+
returnMetadata: (_d = ctx.metadata.success) === null || _d === void 0 ? void 0 : _d.primitive,
|
|
73
97
|
imports: ImportAnalyzer_1.ImportAnalyzer.merge(imports),
|
|
74
|
-
description: (
|
|
98
|
+
description: (_l = ctx.metadata.description) !== null && _l !== void 0 ? _l : null,
|
|
75
99
|
jsDocTags: ctx.metadata.jsDocTags,
|
|
76
100
|
};
|
|
77
101
|
};
|