@azure-tools/typespec-ts 0.11.0 → 0.12.0-alpha.20230501.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.rush/temp/package-deps_build.json +265 -152
- package/.rush/temp/shrinkwrap-deps.json +58 -54
- package/CHANGELOG.md +4 -0
- package/CONTRIBUTING.md +5 -2
- package/README.md +3 -3
- package/dist/src/casingUtils.d.ts +4 -0
- package/dist/src/casingUtils.d.ts.map +1 -0
- package/dist/src/casingUtils.js +39 -0
- package/dist/src/casingUtils.js.map +1 -0
- package/dist/src/emitUtil.js +7 -1
- package/dist/src/emitUtil.js.map +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +41 -9
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +2 -1
- package/dist/src/lib.js.map +1 -1
- package/dist/src/modelUtils.d.ts +22 -1
- package/dist/src/modelUtils.d.ts.map +1 -1
- package/dist/src/modelUtils.js +105 -13
- package/dist/src/modelUtils.js.map +1 -1
- package/dist/src/modular/buildApiIndex.d.ts +3 -0
- package/dist/src/modular/buildApiIndex.d.ts.map +1 -0
- package/dist/src/modular/buildApiIndex.js +12 -0
- package/dist/src/modular/buildApiIndex.js.map +1 -0
- package/dist/src/modular/buildClassicalClient.d.ts +4 -0
- package/dist/src/modular/buildClassicalClient.d.ts.map +1 -0
- package/dist/src/modular/buildClassicalClient.js +112 -0
- package/dist/src/modular/buildClassicalClient.js.map +1 -0
- package/dist/src/modular/buildClientContext.d.ts +7 -0
- package/dist/src/modular/buildClientContext.d.ts.map +1 -0
- package/dist/src/modular/buildClientContext.js +72 -0
- package/dist/src/modular/buildClientContext.js.map +1 -0
- package/dist/src/modular/buildCodeModel.d.ts +14 -0
- package/dist/src/modular/buildCodeModel.d.ts.map +1 -0
- package/dist/src/modular/buildCodeModel.js +1110 -0
- package/dist/src/modular/buildCodeModel.js.map +1 -0
- package/dist/src/modular/buildOperations.d.ts +13 -0
- package/dist/src/modular/buildOperations.d.ts.map +1 -0
- package/dist/src/modular/buildOperations.js +70 -0
- package/dist/src/modular/buildOperations.js.map +1 -0
- package/dist/src/modular/buildProjectFiles.d.ts +5 -0
- package/dist/src/modular/buildProjectFiles.d.ts.map +1 -0
- package/dist/src/modular/buildProjectFiles.js +182 -0
- package/dist/src/modular/buildProjectFiles.js.map +1 -0
- package/dist/src/modular/buildRootIndex.d.ts +4 -0
- package/dist/src/modular/buildRootIndex.d.ts.map +1 -0
- package/dist/src/modular/buildRootIndex.js +66 -0
- package/dist/src/modular/buildRootIndex.js.map +1 -0
- package/dist/src/modular/buildSharedTypes.d.ts +6 -0
- package/dist/src/modular/buildSharedTypes.d.ts.map +1 -0
- package/dist/src/modular/buildSharedTypes.js +33 -0
- package/dist/src/modular/buildSharedTypes.js.map +1 -0
- package/dist/src/modular/emitModels.d.ts +7 -0
- package/dist/src/modular/emitModels.d.ts.map +1 -0
- package/dist/src/modular/emitModels.js +63 -0
- package/dist/src/modular/emitModels.js.map +1 -0
- package/dist/src/modular/helpers/clientHelpers.d.ts +4 -0
- package/dist/src/modular/helpers/clientHelpers.d.ts.map +1 -0
- package/dist/src/modular/helpers/clientHelpers.js +31 -0
- package/dist/src/modular/helpers/clientHelpers.js.map +1 -0
- package/dist/src/modular/helpers/credentialHelpers.d.ts +7 -0
- package/dist/src/modular/helpers/credentialHelpers.d.ts.map +1 -0
- package/dist/src/modular/helpers/credentialHelpers.js +32 -0
- package/dist/src/modular/helpers/credentialHelpers.js.map +1 -0
- package/dist/src/modular/helpers/namingHelpers.d.ts +3 -0
- package/dist/src/modular/helpers/namingHelpers.d.ts.map +1 -0
- package/dist/src/modular/helpers/namingHelpers.js +4 -0
- package/dist/src/modular/helpers/namingHelpers.js.map +1 -0
- package/dist/src/modular/helpers/operationHelpers.d.ts +8 -0
- package/dist/src/modular/helpers/operationHelpers.d.ts.map +1 -0
- package/dist/src/modular/helpers/operationHelpers.js +274 -0
- package/dist/src/modular/helpers/operationHelpers.js.map +1 -0
- package/dist/src/modular/helpers/parameterHelpers.d.ts +3 -0
- package/dist/src/modular/helpers/parameterHelpers.d.ts.map +1 -0
- package/dist/src/modular/helpers/parameterHelpers.js +16 -0
- package/dist/src/modular/helpers/parameterHelpers.js.map +1 -0
- package/dist/src/modular/helpers/typeHelpers.d.ts +16 -0
- package/dist/src/modular/helpers/typeHelpers.d.ts.map +1 -0
- package/dist/src/modular/helpers/typeHelpers.js +92 -0
- package/dist/src/modular/helpers/typeHelpers.js.map +1 -0
- package/dist/src/modular/interfaces.d.ts +10 -0
- package/dist/src/modular/interfaces.d.ts.map +1 -0
- package/dist/src/modular/interfaces.js +2 -0
- package/dist/src/modular/interfaces.js.map +1 -0
- package/dist/src/modular/modularCodeModel.d.ts +121 -0
- package/dist/src/modular/modularCodeModel.d.ts.map +1 -0
- package/dist/src/modular/modularCodeModel.js +2 -0
- package/dist/src/modular/modularCodeModel.js.map +1 -0
- package/dist/src/operationUtil.d.ts +30 -4
- package/dist/src/operationUtil.d.ts.map +1 -1
- package/dist/src/operationUtil.js +77 -18
- package/dist/src/operationUtil.js.map +1 -1
- package/dist/src/transform/transform.d.ts +4 -6
- package/dist/src/transform/transform.d.ts.map +1 -1
- package/dist/src/transform/transform.js +17 -58
- package/dist/src/transform/transform.js.map +1 -1
- package/dist/src/transform/transformApiVersionInfo.d.ts +5 -0
- package/dist/src/transform/transformApiVersionInfo.d.ts.map +1 -0
- package/dist/src/transform/transformApiVersionInfo.js +64 -0
- package/dist/src/transform/transformApiVersionInfo.js.map +1 -0
- package/dist/src/transform/transformHelperFunctionDetails.d.ts +6 -0
- package/dist/src/transform/transformHelperFunctionDetails.d.ts.map +1 -0
- package/dist/src/transform/{transformAnnotationDetails.js → transformHelperFunctionDetails.js} +2 -2
- package/dist/src/transform/transformHelperFunctionDetails.js.map +1 -0
- package/dist/src/transform/transformParameters.d.ts +2 -2
- package/dist/src/transform/transformParameters.d.ts.map +1 -1
- package/dist/src/transform/transformParameters.js +20 -7
- package/dist/src/transform/transformParameters.js.map +1 -1
- package/dist/src/transform/transformPaths.d.ts +2 -2
- package/dist/src/transform/transformPaths.d.ts.map +1 -1
- package/dist/src/transform/transformPaths.js +15 -7
- package/dist/src/transform/transformPaths.js.map +1 -1
- package/dist/src/transform/transformResponses.d.ts +2 -2
- package/dist/src/transform/transformResponses.d.ts.map +1 -1
- package/dist/src/transform/transformResponses.js +23 -2
- package/dist/src/transform/transformResponses.js.map +1 -1
- package/dist/src/transform/transformSchemas.d.ts +2 -2
- package/dist/src/transform/transformSchemas.d.ts.map +1 -1
- package/dist/src/transform/transformSchemas.js +10 -22
- package/dist/src/transform/transformSchemas.js.map +1 -1
- package/dist/src/transform/transfromRLCOptions.d.ts +2 -2
- package/dist/src/transform/transfromRLCOptions.js +1 -1
- package/dist/src/transform/transfromRLCOptions.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +27 -19
- package/src/casingUtils.ts +48 -0
- package/src/emitUtil.ts +9 -4
- package/src/index.ts +53 -10
- package/src/lib.ts +2 -1
- package/src/modelUtils.ts +137 -14
- package/src/modular/buildApiIndex.ts +13 -0
- package/src/modular/buildClassicalClient.ts +147 -0
- package/src/modular/buildClientContext.ts +104 -0
- package/src/modular/buildCodeModel.ts +1449 -0
- package/src/modular/buildOperations.ts +95 -0
- package/src/modular/buildProjectFiles.ts +219 -0
- package/src/modular/buildRootIndex.ts +94 -0
- package/src/modular/buildSharedTypes.ts +40 -0
- package/src/modular/emitModels.ts +72 -0
- package/src/modular/helpers/clientHelpers.ts +38 -0
- package/src/modular/helpers/credentialHelpers.ts +40 -0
- package/src/modular/helpers/namingHelpers.ts +5 -0
- package/src/modular/helpers/operationHelpers.ts +418 -0
- package/src/modular/helpers/parameterHelpers.ts +17 -0
- package/src/modular/helpers/typeHelpers.ts +106 -0
- package/src/modular/interfaces.ts +10 -0
- package/src/modular/modularCodeModel.ts +151 -0
- package/src/modular/static/karma.conf.cjs +120 -0
- package/src/modular/static/rollup.test.config.js +67 -0
- package/src/modular/static/scripts/renameOutput.mjs +17 -0
- package/src/operationUtil.ts +119 -31
- package/src/transform/transform.ts +33 -96
- package/src/transform/transformApiVersionInfo.ts +108 -0
- package/src/transform/{transformAnnotationDetails.ts → transformHelperFunctionDetails.ts} +11 -11
- package/src/transform/transformParameters.ts +30 -14
- package/src/transform/transformPaths.ts +29 -19
- package/src/transform/transformResponses.ts +50 -8
- package/src/transform/transformSchemas.ts +20 -28
- package/src/transform/transfromRLCOptions.ts +3 -3
- package/test/commands/cadl-ranch-list.ts +53 -20
- package/test/commands/gen-cadl-ranch.ts +6 -2
- package/test/commands/run.ts +3 -13
- package/test/integration/arrayItemTypes.spec.ts +6 -3
- package/test/integration/azurecore.spec.ts +130 -0
- package/test/integration/collectionFormat.spec.ts +118 -0
- package/test/integration/dictionary.spec.ts +6 -2
- package/test/integration/extensibleEnums.spec.ts +8 -8
- package/test/integration/fixedEnums.spec.ts +7 -7
- package/test/integration/generated/arrays/itemTypes/src/clientDefinitions.ts +33 -18
- package/test/integration/generated/arrays/itemTypes/src/parameters.ts +8 -0
- package/test/integration/generated/arrays/itemTypes/src/responses.ts +11 -0
- package/test/integration/generated/arrays/itemTypes/tspconfig.yaml +5 -2
- package/test/integration/generated/authentication/apiKey/package.json +2 -2
- package/test/integration/generated/authentication/apiKey/tspconfig.yaml +5 -2
- package/test/integration/generated/authentication/oauth2/tspconfig.yaml +5 -2
- package/test/integration/generated/authentication/union/tspconfig.yaml +5 -2
- package/test/integration/generated/{resiliency/devDriven → azure/core}/README.md +7 -7
- package/test/integration/generated/{lro/lroBasic → azure/core}/api-extractor.json +1 -1
- package/test/integration/generated/{resiliency/devDriven → azure/core}/package.json +6 -6
- package/test/integration/generated/azure/core/src/azureCoreClient.ts +31 -0
- package/test/integration/generated/azure/core/src/clientDefinitions.ts +108 -0
- package/test/integration/generated/{resiliency/devDriven → azure/core}/src/index.ts +4 -3
- package/test/integration/generated/azure/core/src/isUnexpected.ts +178 -0
- package/test/integration/generated/azure/core/src/models.ts +18 -0
- package/test/integration/generated/azure/core/src/outputModels.ts +32 -0
- package/test/integration/generated/{resiliency/devDriven → azure/core}/src/paginateHelper.ts +55 -5
- package/test/integration/generated/azure/core/src/parameters.ts +68 -0
- package/test/integration/generated/azure/core/src/responses.ts +158 -0
- package/test/integration/generated/azure/core/src/serializeHelper.ts +16 -0
- package/test/integration/generated/azure/core/tspconfig.yaml +15 -0
- package/test/integration/generated/azure/core-traits/README.md +56 -0
- package/test/integration/generated/azure/core-traits/api-extractor.json +18 -0
- package/test/integration/generated/azure/core-traits/package.json +80 -0
- package/test/integration/generated/azure/core-traits/src/azureCoreTraitsClient.ts +31 -0
- package/test/integration/generated/azure/core-traits/src/clientDefinitions.ts +22 -0
- package/test/integration/generated/azure/core-traits/src/index.ts +13 -0
- package/test/integration/generated/{resiliency/devDriven → azure/core-traits}/src/isUnexpected.ts +6 -26
- package/test/integration/generated/azure/core-traits/src/outputModels.ts +10 -0
- package/test/integration/generated/azure/core-traits/src/parameters.ts +26 -0
- package/test/integration/generated/azure/core-traits/src/responses.ts +32 -0
- package/test/integration/generated/azure/core-traits/tspconfig.yaml +15 -0
- package/test/integration/generated/dictionary/package.json +2 -2
- package/test/integration/generated/dictionary/src/clientDefinitions.ts +35 -20
- package/test/integration/generated/dictionary/src/parameters.ts +8 -0
- package/test/integration/generated/dictionary/src/responses.ts +11 -0
- package/test/integration/generated/dictionary/tspconfig.yaml +5 -2
- package/test/integration/generated/enums/extensible/README.md +3 -3
- package/test/integration/generated/enums/extensible/package.json +2 -2
- package/test/integration/generated/enums/extensible/src/clientDefinitions.ts +5 -5
- package/test/integration/generated/enums/extensible/src/index.ts +3 -3
- package/test/integration/generated/enums/extensible/src/{enumsExtensible.ts → typeEnumExtensible.ts} +4 -4
- package/test/integration/generated/enums/extensible/tspconfig.yaml +5 -2
- package/test/integration/generated/enums/fixed/README.md +3 -3
- package/test/integration/generated/enums/fixed/package.json +2 -2
- package/test/integration/generated/enums/fixed/src/clientDefinitions.ts +5 -5
- package/test/integration/generated/enums/fixed/src/index.ts +3 -3
- package/test/integration/generated/enums/fixed/src/{enumsFixed.ts → typeEnumFixed.ts} +4 -4
- package/test/integration/generated/enums/fixed/tspconfig.yaml +5 -2
- package/test/integration/generated/hello/package.json +2 -2
- package/test/integration/generated/hello/tspconfig.yaml +5 -2
- package/test/integration/generated/internal/src/clientDefinitions.ts +27 -0
- package/test/integration/generated/internal/src/index.ts +13 -0
- package/test/integration/generated/{lro/lroBasic/src/azureLro.ts → internal/src/internalClient.ts} +5 -5
- package/test/integration/generated/internal/src/models.ts +8 -0
- package/test/integration/generated/internal/src/outputModels.ts +13 -0
- package/test/integration/generated/internal/src/parameters.ts +21 -0
- package/test/integration/generated/internal/src/responses.ts +20 -0
- package/test/integration/generated/internal/tspconfig.yaml +14 -0
- package/test/integration/generated/lro/lroCore/.eslintrc.json +11 -0
- package/test/integration/generated/lro/lroCore/README.md +56 -0
- package/test/integration/generated/{resiliency/devDriven → lro/lroCore}/api-extractor.json +1 -1
- package/test/integration/generated/lro/{lroBasic → lroCore}/package.json +6 -6
- package/test/integration/generated/lro/lroCore/rollup.config.js +118 -0
- package/test/integration/generated/lro/lroCore/src/clientDefinitions.ts +54 -0
- package/test/integration/generated/lro/lroCore/src/index.ts +15 -0
- package/test/integration/generated/lro/lroCore/src/isUnexpected.ts +135 -0
- package/test/integration/generated/lro/lroCore/src/models.ts +8 -0
- package/test/integration/generated/lro/lroCore/src/outputModels.ts +50 -0
- package/test/integration/generated/lro/lroCore/src/parameters.ts +25 -0
- package/test/integration/generated/lro/{lroBasic → lroCore}/src/pollingHelper.ts +38 -0
- package/test/integration/generated/lro/lroCore/src/responses.ts +109 -0
- package/test/integration/generated/lro/lroCore/src/specsAzureCoreLroStandard.ts +31 -0
- package/test/integration/generated/lro/lroCore/tsconfig.json +25 -0
- package/test/integration/generated/lro/lroCore/tspconfig.yaml +14 -0
- package/test/integration/generated/lro/lroRPC/.eslintrc.json +11 -0
- package/test/integration/generated/lro/{lroBasic → lroRPC}/README.md +7 -7
- package/test/integration/generated/lro/lroRPC/api-extractor.json +18 -0
- package/test/integration/generated/lro/lroRPC/package.json +82 -0
- package/test/integration/generated/lro/lroRPC/rollup.config.js +118 -0
- package/test/integration/generated/lro/lroRPC/src/clientDefinitions.ts +79 -0
- package/test/integration/generated/lro/lroRPC/src/index.ts +15 -0
- package/test/integration/generated/lro/lroRPC/src/isUnexpected.ts +153 -0
- package/test/integration/generated/lro/lroRPC/src/models.ts +8 -0
- package/test/integration/generated/lro/lroRPC/src/outputModels.ts +40 -0
- package/test/integration/generated/lro/lroRPC/src/parameters.ts +20 -0
- package/test/integration/generated/lro/lroRPC/src/pollingHelper.ts +127 -0
- package/test/integration/generated/lro/lroRPC/src/responses.ts +124 -0
- package/test/integration/generated/lro/lroRPC/src/specsAzureCoreLroRpc.ts +31 -0
- package/test/integration/generated/lro/lroRPC/tsconfig.json +25 -0
- package/test/integration/generated/lro/lroRPC/tspconfig.yaml +14 -0
- package/test/integration/generated/models/inheritance/README.md +3 -3
- package/test/integration/generated/models/inheritance/package.json +2 -2
- package/test/integration/generated/models/inheritance/src/clientDefinitions.ts +13 -11
- package/test/integration/generated/models/inheritance/src/index.ts +3 -3
- package/test/integration/generated/models/inheritance/src/{modelsInheritance.ts → typeModelInheritance.ts} +4 -4
- package/test/integration/generated/models/inheritance/tspconfig.yaml +5 -2
- package/test/integration/generated/models/propertyNullable/.eslintrc.json +11 -0
- package/test/integration/generated/models/propertyNullable/README.md +56 -0
- package/test/integration/generated/models/propertyNullable/api-extractor.json +18 -0
- package/test/integration/generated/models/propertyNullable/package.json +80 -0
- package/test/integration/generated/models/propertyNullable/rollup.config.js +118 -0
- package/test/integration/generated/models/propertyNullable/src/clientDefinitions.ts +227 -0
- package/test/integration/generated/models/propertyNullable/src/index.ts +13 -0
- package/test/integration/generated/models/propertyNullable/src/models.ts +56 -0
- package/test/integration/generated/models/propertyNullable/src/outputModels.ts +56 -0
- package/test/integration/generated/models/propertyNullable/src/parameters.ts +197 -0
- package/test/integration/generated/models/propertyNullable/src/responses.ts +144 -0
- package/test/integration/generated/{resiliency/devDriven/src/resiliencyDevDriven.ts → models/propertyNullable/src/typePropertyNullable.ts} +5 -5
- package/test/integration/generated/models/propertyNullable/tsconfig.json +25 -0
- package/test/integration/generated/models/propertyNullable/tspconfig.yaml +14 -0
- package/test/integration/generated/models/propertyOptional/README.md +3 -3
- package/test/integration/generated/models/propertyOptional/package.json +2 -2
- package/test/integration/generated/models/propertyOptional/src/clientDefinitions.ts +47 -47
- package/test/integration/generated/models/propertyOptional/src/index.ts +3 -3
- package/test/integration/generated/models/propertyOptional/src/parameters.ts +7 -6
- package/test/integration/generated/models/propertyOptional/src/responses.ts +4 -4
- package/test/integration/generated/models/propertyOptional/src/{modelsPropertyOptional.ts → typePropertyOptional.ts} +4 -4
- package/test/integration/generated/models/propertyOptional/tspconfig.yaml +5 -2
- package/test/integration/generated/models/propertyTypes/README.md +3 -3
- package/test/integration/generated/models/propertyTypes/package.json +2 -2
- package/test/integration/generated/models/propertyTypes/src/clientDefinitions.ts +55 -47
- package/test/integration/generated/models/propertyTypes/src/index.ts +3 -3
- package/test/integration/generated/models/propertyTypes/src/parameters.ts +8 -6
- package/test/integration/generated/models/propertyTypes/src/responses.ts +4 -4
- package/test/integration/generated/models/propertyTypes/src/{modelsPropertyTypes.ts → typePropertyValueTypes.ts} +4 -4
- package/test/integration/generated/models/propertyTypes/tspconfig.yaml +5 -2
- package/test/integration/generated/models/usage/README.md +3 -3
- package/test/integration/generated/models/usage/package.json +2 -2
- package/test/integration/generated/models/usage/src/clientDefinitions.ts +7 -7
- package/test/integration/generated/models/usage/src/index.ts +3 -3
- package/test/integration/generated/models/usage/src/{modelsUsage.ts → typeModelUsage.ts} +4 -4
- package/test/integration/generated/models/usage/tspconfig.yaml +5 -2
- package/test/integration/generated/models/visibility/README.md +3 -3
- package/test/integration/generated/models/visibility/package.json +2 -2
- package/test/integration/generated/models/visibility/src/clientDefinitions.ts +3 -3
- package/test/integration/generated/models/visibility/src/index.ts +3 -3
- package/test/integration/generated/models/visibility/src/{modelsVisibilityAutomatic.ts → typeModelVisibility.ts} +4 -4
- package/test/integration/generated/models/visibility/tspconfig.yaml +5 -2
- package/test/integration/generated/parameters/collection-format/src/clientDefinitions.ts +63 -0
- package/test/integration/generated/parameters/collection-format/src/collectionFormatClient.ts +31 -0
- package/test/integration/generated/parameters/collection-format/src/index.ts +12 -0
- package/test/integration/generated/parameters/collection-format/src/parameters.ts +71 -0
- package/test/integration/generated/parameters/collection-format/src/responses.ts +34 -0
- package/test/integration/generated/parameters/collection-format/src/serializeHelper.ts +28 -0
- package/test/integration/generated/parameters/collection-format/tspconfig.yaml +14 -0
- package/test/integration/generated/parameters/spread/src/clientDefinitions.ts +61 -0
- package/test/integration/generated/{lro/lroBasic → parameters/spread}/src/index.ts +4 -4
- package/test/integration/generated/parameters/spread/src/models.ts +7 -0
- package/test/integration/generated/parameters/spread/src/parameters.ts +61 -0
- package/test/integration/generated/parameters/spread/src/parametersSpread.ts +31 -0
- package/test/integration/generated/parameters/spread/src/responses.ts +25 -0
- package/test/integration/generated/parameters/spread/tspconfig.yaml +12 -0
- package/test/integration/generated/projection/src/clientDefinitions.ts +71 -0
- package/test/integration/generated/projection/src/index.ts +12 -0
- package/test/integration/generated/projection/src/models.ts +22 -0
- package/test/integration/generated/projection/src/parameters.ts +48 -0
- package/test/integration/generated/projection/src/projectionClient.ts +31 -0
- package/test/integration/generated/projection/src/responses.ts +34 -0
- package/test/integration/generated/projection/tspconfig.yaml +14 -0
- package/test/integration/generated/resiliency/srvDriven1/README.md +4 -4
- package/test/integration/generated/resiliency/srvDriven1/package.json +2 -2
- package/test/integration/generated/resiliency/srvDriven1/src/clientDefinitions.ts +25 -49
- package/test/integration/generated/resiliency/srvDriven1/src/index.ts +3 -5
- package/test/integration/generated/resiliency/srvDriven1/src/parameters.ts +11 -32
- package/test/integration/generated/resiliency/srvDriven1/src/responses.ts +9 -24
- package/test/integration/generated/resiliency/srvDriven1/src/serviceDrivenOldClient.ts +39 -0
- package/test/integration/generated/resiliency/srvDriven1/tspconfig.yaml +6 -2
- package/test/integration/generated/resiliency/srvDriven2/README.md +13 -4
- package/test/integration/generated/resiliency/srvDriven2/package.json +2 -2
- package/test/integration/generated/resiliency/srvDriven2/src/clientDefinitions.ts +32 -68
- package/test/integration/generated/resiliency/srvDriven2/src/index.ts +3 -5
- package/test/integration/generated/resiliency/srvDriven2/src/parameters.ts +19 -42
- package/test/integration/generated/resiliency/srvDriven2/src/responses.ts +10 -31
- package/test/integration/generated/resiliency/srvDriven2/src/serviceDrivenNewClient.ts +39 -0
- package/test/integration/generated/resiliency/srvDriven2/tspconfig.yaml +6 -2
- package/test/integration/generated/server/path/multiple/src/clientDefinitions.ts +35 -0
- package/test/integration/generated/server/path/multiple/src/index.ts +11 -0
- package/test/integration/generated/server/path/multiple/src/multipleParamInServerPathClient.ts +39 -0
- package/test/integration/generated/server/path/multiple/src/parameters.ts +7 -0
- package/test/integration/generated/server/path/multiple/src/responses.ts +14 -0
- package/test/integration/generated/server/path/multiple/tspconfig.yaml +14 -0
- package/test/integration/generated/server/path/single/src/clientDefinitions.ts +19 -0
- package/test/integration/generated/server/path/single/src/index.ts +11 -0
- package/test/integration/generated/server/path/single/src/parameters.ts +6 -0
- package/test/integration/generated/server/path/single/src/responses.ts +9 -0
- package/test/integration/generated/server/path/single/src/singleParamInServerPathClient.ts +34 -0
- package/test/integration/generated/server/path/single/tspconfig.yaml +14 -0
- package/test/integration/generated/specialWords/tspconfig.yaml +5 -2
- package/test/integration/generated/unions/src/clientDefinitions.ts +8 -8
- package/test/integration/generated/unions/tspconfig.yaml +5 -2
- package/test/integration/internal.spec.ts +43 -0
- package/test/integration/lroCore.spec.ts +89 -0
- package/test/integration/modelInheritance.spec.ts +13 -13
- package/test/integration/modelPropertyNullable.spec.ts +115 -0
- package/test/integration/modelPropertyOptional.spec.ts +32 -32
- package/test/integration/modelPropertyType.spec.ts +6 -6
- package/test/integration/modelUsage.spec.ts +7 -7
- package/test/integration/projection.spec.ts +102 -0
- package/test/integration/resiliencyDpgCustomization.spec.ts +69 -35
- package/test/integration/server.spec.ts +59 -0
- package/test/integration/spreadParameters.spec.ts +82 -0
- package/test/integration/unions.spec.ts +4 -4
- package/test/unit/apiVersion.spec.ts +388 -0
- package/test/unit/clientFactoryGenerator.spec.ts +0 -131
- package/test/unit/modelsGenerator.spec.ts +2 -2
- package/test/unit/parametersGenerator.spec.ts +1 -1
- package/test/unit/responsesGenerator.spec.ts +1 -1
- package/test/unit/util/emitUtil.ts +6 -5
- package/test/unit/util/testUtil.ts +3 -3
- package/dist/src/transform/transformAnnotationDetails.d.ts +0 -6
- package/dist/src/transform/transformAnnotationDetails.d.ts.map +0 -1
- package/dist/src/transform/transformAnnotationDetails.js.map +0 -1
- package/dist/src/transform/transformApiVersionParam.d.ts +0 -5
- package/dist/src/transform/transformApiVersionParam.d.ts.map +0 -1
- package/dist/src/transform/transformApiVersionParam.js +0 -76
- package/dist/src/transform/transformApiVersionParam.js.map +0 -1
- package/src/transform/transformApiVersionParam.ts +0 -104
- package/test/integration/generated/lro/lroBasic/src/clientDefinitions.ts +0 -37
- package/test/integration/generated/lro/lroBasic/src/parameters.ts +0 -8
- package/test/integration/generated/lro/lroBasic/src/responses.ts +0 -22
- package/test/integration/generated/lro/lroBasic/tspconfig.yaml +0 -11
- package/test/integration/generated/resiliency/devDriven/src/clientDefinitions.ts +0 -75
- package/test/integration/generated/resiliency/devDriven/src/models.ts +0 -8
- package/test/integration/generated/resiliency/devDriven/src/outputModels.ts +0 -25
- package/test/integration/generated/resiliency/devDriven/src/parameters.ts +0 -17
- package/test/integration/generated/resiliency/devDriven/src/responses.ts +0 -62
- package/test/integration/generated/resiliency/devDriven/tspconfig.yaml +0 -11
- package/test/integration/generated/resiliency/srvDriven1/src/models.ts +0 -6
- package/test/integration/generated/resiliency/srvDriven1/src/outputModels.ts +0 -6
- package/test/integration/generated/resiliency/srvDriven1/src/resiliencyServiceDriven1.ts +0 -31
- package/test/integration/generated/resiliency/srvDriven2/src/models.ts +0 -6
- package/test/integration/generated/resiliency/srvDriven2/src/outputModels.ts +0 -6
- package/test/integration/generated/resiliency/srvDriven2/src/resiliencyServiceDriven2.ts +0 -31
- package/test/integration/helloWorld.spec.ts +0 -20
- package/test/integration/lroBasic.spec.ts +0 -25
- /package/test/integration/generated/{resiliency/devDriven → azure/core}/.eslintrc.json +0 -0
- /package/test/integration/generated/{resiliency/devDriven → azure/core}/rollup.config.js +0 -0
- /package/test/integration/generated/{resiliency/devDriven → azure/core}/tsconfig.json +0 -0
- /package/test/integration/generated/{lro/lroBasic → azure/core-traits}/.eslintrc.json +0 -0
- /package/test/integration/generated/{lro/lroBasic → azure/core-traits}/rollup.config.js +0 -0
- /package/test/integration/generated/{lro/lroBasic → azure/core-traits}/tsconfig.json +0 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import ParametersSpreadClientFactory, {
|
|
2
|
+
ParametersSpreadClient
|
|
3
|
+
} from "./generated/parameters/spread/src/index.js";
|
|
4
|
+
import { assert } from "chai";
|
|
5
|
+
describe("HelloClient Rest Client", () => {
|
|
6
|
+
let client: ParametersSpreadClient;
|
|
7
|
+
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
client = ParametersSpreadClientFactory({ allowInsecureConnection: true });
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it("should spread named model", async () => {
|
|
13
|
+
try {
|
|
14
|
+
const result = await client
|
|
15
|
+
.path("/parameters/spread/model/request-body")
|
|
16
|
+
.put({
|
|
17
|
+
body: {
|
|
18
|
+
name: "foo"
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
assert.strictEqual(result.status, "204");
|
|
22
|
+
} catch (err) {
|
|
23
|
+
assert.fail(err as string);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it("should spread alias with only body param", async () => {
|
|
28
|
+
try {
|
|
29
|
+
const result = await client
|
|
30
|
+
.path("/parameters/spread/alias/request-body")
|
|
31
|
+
.put({
|
|
32
|
+
body: {
|
|
33
|
+
name: "foo"
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
assert.strictEqual(result.status, "204");
|
|
37
|
+
} catch (err) {
|
|
38
|
+
assert.fail(err as string);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it("should spread alias with mixed params", async () => {
|
|
43
|
+
try {
|
|
44
|
+
const result = await client
|
|
45
|
+
.path("/parameters/spread/alias/request-parameter/{id}", "1")
|
|
46
|
+
.put({
|
|
47
|
+
body: {
|
|
48
|
+
name: "foo"
|
|
49
|
+
},
|
|
50
|
+
headers: {
|
|
51
|
+
"x-ms-test-header": "bar"
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
assert.strictEqual(result.status, "204");
|
|
55
|
+
} catch (err) {
|
|
56
|
+
assert.fail(err as string);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it("should spread alias with more than 5 params", async () => {
|
|
61
|
+
try {
|
|
62
|
+
const result = await client
|
|
63
|
+
.path("/parameters/spread/alias/multiple-parameters/{id}", "1")
|
|
64
|
+
.put({
|
|
65
|
+
body: {
|
|
66
|
+
prop1: "foo1",
|
|
67
|
+
prop2: "foo2",
|
|
68
|
+
prop3: "foo3",
|
|
69
|
+
prop4: "foo4",
|
|
70
|
+
prop5: "foo5",
|
|
71
|
+
prop6: "foo6"
|
|
72
|
+
},
|
|
73
|
+
headers: {
|
|
74
|
+
"x-ms-test-header": "bar"
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
assert.strictEqual(result.status, "204");
|
|
78
|
+
} catch (err) {
|
|
79
|
+
assert.fail(err as string);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
});
|
|
@@ -11,7 +11,7 @@ describe("UnionsClient Rest Client", () => {
|
|
|
11
11
|
|
|
12
12
|
it("should post input simple number union", async () => {
|
|
13
13
|
try {
|
|
14
|
-
const result = await client.path("/
|
|
14
|
+
const result = await client.path("/type/union/int").post({
|
|
15
15
|
body: {
|
|
16
16
|
simpleUnion: 1
|
|
17
17
|
}
|
|
@@ -24,7 +24,7 @@ describe("UnionsClient Rest Client", () => {
|
|
|
24
24
|
|
|
25
25
|
it("should post simple number array union", async () => {
|
|
26
26
|
try {
|
|
27
|
-
const result = await client.path("/
|
|
27
|
+
const result = await client.path("/type/union/int-array").post({
|
|
28
28
|
body: {
|
|
29
29
|
simpleUnion: [1, 2]
|
|
30
30
|
}
|
|
@@ -37,7 +37,7 @@ describe("UnionsClient Rest Client", () => {
|
|
|
37
37
|
|
|
38
38
|
it("should post named union model1", async () => {
|
|
39
39
|
try {
|
|
40
|
-
const result = await client.path("/
|
|
40
|
+
const result = await client.path("/type/union/model1").post({
|
|
41
41
|
body: {
|
|
42
42
|
namedUnion: {
|
|
43
43
|
name: "model1",
|
|
@@ -53,7 +53,7 @@ describe("UnionsClient Rest Client", () => {
|
|
|
53
53
|
|
|
54
54
|
it("should post named union model2", async () => {
|
|
55
55
|
try {
|
|
56
|
-
const result = await client.path("/
|
|
56
|
+
const result = await client.path("/type/union/model2").post({
|
|
57
57
|
body: {
|
|
58
58
|
namedUnion: {
|
|
59
59
|
name: "model2",
|
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
import { assert } from "chai";
|
|
2
|
+
import { emitClientFactoryFromCadl } from "./util/emitUtil.js";
|
|
3
|
+
import { assertEqualContent } from "./util/testUtil.js";
|
|
4
|
+
|
|
5
|
+
interface DefinitionOptions {
|
|
6
|
+
"@service"?: boolean;
|
|
7
|
+
"@versioned"?: boolean;
|
|
8
|
+
crossVersion?: boolean;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const buildDefaultDefinition = (options: DefinitionOptions) => {
|
|
12
|
+
const serviceDefault = !options["@service"]
|
|
13
|
+
? ``
|
|
14
|
+
: `version: "2022-05-15-preview"`;
|
|
15
|
+
const versionDef = !options["@versioned"]
|
|
16
|
+
? ``
|
|
17
|
+
: `
|
|
18
|
+
@versioned(Versions)`;
|
|
19
|
+
return `
|
|
20
|
+
${versionDef}
|
|
21
|
+
@server(
|
|
22
|
+
"{Endpoint}/language",
|
|
23
|
+
"Language Service",
|
|
24
|
+
{
|
|
25
|
+
Endpoint: Endpoint
|
|
26
|
+
}
|
|
27
|
+
)
|
|
28
|
+
@service({
|
|
29
|
+
title: "PetStoreClient",
|
|
30
|
+
${serviceDefault}
|
|
31
|
+
})
|
|
32
|
+
namespace PetStore;
|
|
33
|
+
@doc("The endpoint to use.")
|
|
34
|
+
scalar Endpoint extends string;
|
|
35
|
+
|
|
36
|
+
enum Versions {
|
|
37
|
+
v2022_05_15_preview: "2022-05-15-preview"
|
|
38
|
+
}
|
|
39
|
+
`;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const buildQueryDefinition = (options: DefinitionOptions) => {
|
|
43
|
+
const crossVersionDef = options.crossVersion
|
|
44
|
+
? `
|
|
45
|
+
enum VersionEnum {
|
|
46
|
+
v1,
|
|
47
|
+
v2,
|
|
48
|
+
}
|
|
49
|
+
model ApiVersion3Parameter {
|
|
50
|
+
@query
|
|
51
|
+
"api-version": VersionEnum;
|
|
52
|
+
}
|
|
53
|
+
@route("/baz")
|
|
54
|
+
op baz(...ApiVersion3Parameter): string;
|
|
55
|
+
|
|
56
|
+
model ApiVersion2Parameter {
|
|
57
|
+
@query
|
|
58
|
+
"api-version": "v1.1";
|
|
59
|
+
}
|
|
60
|
+
@route("/bar")
|
|
61
|
+
op bar(...ApiVersion2Parameter): string;`
|
|
62
|
+
: ``;
|
|
63
|
+
return `${buildDefaultDefinition(options)}
|
|
64
|
+
model ApiVersionParameter {
|
|
65
|
+
@query
|
|
66
|
+
"api-version": string;
|
|
67
|
+
}
|
|
68
|
+
@route("/foo")
|
|
69
|
+
op foo(...ApiVersionParameter): string;
|
|
70
|
+
${crossVersionDef}
|
|
71
|
+
`;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
const buildPathDefinition = (options: DefinitionOptions) => {
|
|
75
|
+
const serviceDefault = !options["@service"]
|
|
76
|
+
? ``
|
|
77
|
+
: `version: "2022-05-15-preview"`;
|
|
78
|
+
const versionDef = !options["@versioned"]
|
|
79
|
+
? ``
|
|
80
|
+
: `
|
|
81
|
+
@versioned(Versions)`;
|
|
82
|
+
return `
|
|
83
|
+
${versionDef}
|
|
84
|
+
@server(
|
|
85
|
+
"{Endpoint}/anomalydetector/{apiVersion}",
|
|
86
|
+
"Language Service",
|
|
87
|
+
{
|
|
88
|
+
Endpoint: Endpoint,
|
|
89
|
+
@doc("Api Version")
|
|
90
|
+
@path
|
|
91
|
+
apiVersion: Versions,
|
|
92
|
+
}
|
|
93
|
+
)
|
|
94
|
+
@service({
|
|
95
|
+
title: "PetStoreClient",
|
|
96
|
+
${serviceDefault}
|
|
97
|
+
})
|
|
98
|
+
namespace PetStore;
|
|
99
|
+
@doc("The endpoint to use.")
|
|
100
|
+
scalar Endpoint extends string;
|
|
101
|
+
|
|
102
|
+
enum Versions {
|
|
103
|
+
v2022_05_15_preview: "2022-05-15-preview"
|
|
104
|
+
}
|
|
105
|
+
`;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
const buildMixedDefinition = (options: DefinitionOptions) => {
|
|
109
|
+
const crossVersionDef = options.crossVersion
|
|
110
|
+
? `
|
|
111
|
+
model ApiVersion2Parameter {
|
|
112
|
+
@query
|
|
113
|
+
"api-version": "v1.1";
|
|
114
|
+
}
|
|
115
|
+
op foo(...ApiVersion2Parameter): string;`
|
|
116
|
+
: ``;
|
|
117
|
+
return `${buildPathDefinition(options)}
|
|
118
|
+
model ApiVersionParameter {
|
|
119
|
+
@query
|
|
120
|
+
"api-version": string;
|
|
121
|
+
}
|
|
122
|
+
op test(...ApiVersionParameter): string;
|
|
123
|
+
${crossVersionDef}
|
|
124
|
+
`;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
const buildDefaultReturn = (hasDefault: boolean) => {
|
|
128
|
+
const defaultDef = !hasDefault
|
|
129
|
+
? ``
|
|
130
|
+
: `options.apiVersion = options.apiVersion ?? "2022-05-15-preview";`;
|
|
131
|
+
return `
|
|
132
|
+
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
133
|
+
import { testClient } from "./clientDefinitions";
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Initialize a new instance of \`testClient\`
|
|
137
|
+
* @param endpoint type: string, The endpoint to use.
|
|
138
|
+
* @param options type: ClientOptions, the parameter for all optional parameters
|
|
139
|
+
*/
|
|
140
|
+
export default function createClient(
|
|
141
|
+
endpoint: string,
|
|
142
|
+
options: ClientOptions = {}
|
|
143
|
+
): testClient {
|
|
144
|
+
const baseUrl = options.baseUrl ?? \`\${endpoint}/language\`;
|
|
145
|
+
${defaultDef}
|
|
146
|
+
|
|
147
|
+
const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
|
|
148
|
+
const userAgentPrefix =
|
|
149
|
+
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
|
|
150
|
+
? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
|
|
151
|
+
: \`\${userAgentInfo}\`;
|
|
152
|
+
options = {
|
|
153
|
+
...options,
|
|
154
|
+
userAgentOptions: {
|
|
155
|
+
userAgentPrefix,
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
const client = getClient(baseUrl, options) as testClient;
|
|
160
|
+
|
|
161
|
+
return client;
|
|
162
|
+
}`;
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
const buildPathReturn_WithDefault = () => {
|
|
166
|
+
return `
|
|
167
|
+
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
168
|
+
import { testClient } from "./clientDefinitions";
|
|
169
|
+
|
|
170
|
+
export interface testClientOptions extends ClientOptions {
|
|
171
|
+
apiVersion?: string;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Initialize a new instance of \`testClient\`
|
|
176
|
+
* @param endpoint type: string, The endpoint to use.
|
|
177
|
+
* @param options type: testClientOptions, the parameter for all optional parameters
|
|
178
|
+
*/
|
|
179
|
+
export default function createClient(
|
|
180
|
+
endpoint: string,
|
|
181
|
+
options: testClientOptions = {}
|
|
182
|
+
): testClient {
|
|
183
|
+
const apiVersion = options.apiVersion ?? "2022-05-15-preview";
|
|
184
|
+
const baseUrl = options.baseUrl ?? \`\${endpoint}/anomalydetector/\${apiVersion}\`;
|
|
185
|
+
|
|
186
|
+
const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
|
|
187
|
+
const userAgentPrefix =
|
|
188
|
+
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
|
|
189
|
+
? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
|
|
190
|
+
: \`\${userAgentInfo}\`;
|
|
191
|
+
options = {
|
|
192
|
+
...options,
|
|
193
|
+
userAgentOptions: {
|
|
194
|
+
userAgentPrefix,
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
const client = getClient(baseUrl, options) as testClient;
|
|
199
|
+
|
|
200
|
+
return client;
|
|
201
|
+
}`;
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
const buildPathReturn_WithoutDefault = () => {
|
|
205
|
+
return `
|
|
206
|
+
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
207
|
+
import { testClient } from "./clientDefinitions";
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Initialize a new instance of \`testClient\`
|
|
211
|
+
* @param endpoint type: string, The endpoint to use.
|
|
212
|
+
* @param apiVersion type: string, Api Version Possible values: 2022-05-15-preview
|
|
213
|
+
* @param options type: ClientOptions, the parameter for all optional parameters
|
|
214
|
+
*/
|
|
215
|
+
export default function createClient(
|
|
216
|
+
endpoint: string,
|
|
217
|
+
apiVersion: string,
|
|
218
|
+
options: ClientOptions = {}
|
|
219
|
+
): testClient {
|
|
220
|
+
const baseUrl = options.baseUrl ?? \`\${endpoint}/anomalydetector/\${apiVersion}\`;
|
|
221
|
+
|
|
222
|
+
const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
|
|
223
|
+
const userAgentPrefix =
|
|
224
|
+
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
|
|
225
|
+
? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
|
|
226
|
+
: \`\${userAgentInfo}\`;
|
|
227
|
+
options = {
|
|
228
|
+
...options,
|
|
229
|
+
userAgentOptions: {
|
|
230
|
+
userAgentPrefix,
|
|
231
|
+
},
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
const client = getClient(baseUrl, options) as testClient;
|
|
235
|
+
|
|
236
|
+
return client;
|
|
237
|
+
}`;
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
describe("api-version", () => {
|
|
241
|
+
describe("defined in query position", () => {
|
|
242
|
+
describe("with default value", () => {
|
|
243
|
+
it("in @serivce", async () => {
|
|
244
|
+
const def = buildQueryDefinition({
|
|
245
|
+
"@service": true
|
|
246
|
+
});
|
|
247
|
+
const expectedRes = buildDefaultReturn(true);
|
|
248
|
+
const models = await emitClientFactoryFromCadl(def);
|
|
249
|
+
assert.ok(models);
|
|
250
|
+
assertEqualContent(models!.content, expectedRes);
|
|
251
|
+
});
|
|
252
|
+
it("in @versioned", async () => {
|
|
253
|
+
const def = buildQueryDefinition({
|
|
254
|
+
"@versioned": true
|
|
255
|
+
});
|
|
256
|
+
const expectedRes = buildDefaultReturn(true);
|
|
257
|
+
const models = await emitClientFactoryFromCadl(def);
|
|
258
|
+
assert.ok(models);
|
|
259
|
+
assertEqualContent(models!.content, expectedRes);
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
describe("without default value", () => {
|
|
263
|
+
it("due to cross version", async () => {
|
|
264
|
+
const def = buildQueryDefinition({
|
|
265
|
+
"@service": true,
|
|
266
|
+
"@versioned": false,
|
|
267
|
+
crossVersion: true
|
|
268
|
+
});
|
|
269
|
+
const expectedRes = buildDefaultReturn(false);
|
|
270
|
+
const models = await emitClientFactoryFromCadl(def);
|
|
271
|
+
assert.ok(models);
|
|
272
|
+
assertEqualContent(models!.content, expectedRes);
|
|
273
|
+
});
|
|
274
|
+
it("no @service or @versioned", async () => {
|
|
275
|
+
const def = buildQueryDefinition({
|
|
276
|
+
"@service": false,
|
|
277
|
+
"@versioned": false
|
|
278
|
+
});
|
|
279
|
+
const expectedRes = buildDefaultReturn(false);
|
|
280
|
+
const models = await emitClientFactoryFromCadl(def);
|
|
281
|
+
assert.ok(models);
|
|
282
|
+
assertEqualContent(models!.content, expectedRes);
|
|
283
|
+
});
|
|
284
|
+
});
|
|
285
|
+
});
|
|
286
|
+
describe("defined in url path", () => {
|
|
287
|
+
describe("with default value", () => {
|
|
288
|
+
it("in @serivce", async () => {
|
|
289
|
+
const def = buildPathDefinition({
|
|
290
|
+
"@service": true
|
|
291
|
+
});
|
|
292
|
+
const expectedRes = buildPathReturn_WithDefault();
|
|
293
|
+
const models = await emitClientFactoryFromCadl(def);
|
|
294
|
+
assert.ok(models);
|
|
295
|
+
assertEqualContent(models!.content, expectedRes);
|
|
296
|
+
});
|
|
297
|
+
it("in @versioned", async () => {
|
|
298
|
+
const def = buildPathDefinition({
|
|
299
|
+
"@versioned": true
|
|
300
|
+
});
|
|
301
|
+
const expectedRes = buildPathReturn_WithDefault();
|
|
302
|
+
const models = await emitClientFactoryFromCadl(def);
|
|
303
|
+
assert.ok(models);
|
|
304
|
+
assertEqualContent(models!.content, expectedRes);
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
describe("without default value", () => {
|
|
308
|
+
it("no @service or @versioned", async () => {
|
|
309
|
+
const def = buildPathDefinition({
|
|
310
|
+
"@service": false,
|
|
311
|
+
"@versioned": false
|
|
312
|
+
});
|
|
313
|
+
const expectedRes = buildPathReturn_WithoutDefault();
|
|
314
|
+
const models = await emitClientFactoryFromCadl(def);
|
|
315
|
+
assert.ok(models);
|
|
316
|
+
assertEqualContent(models!.content, expectedRes);
|
|
317
|
+
});
|
|
318
|
+
});
|
|
319
|
+
});
|
|
320
|
+
describe("defined in both positions[path preferred]", () => {
|
|
321
|
+
describe("with default value", () => {
|
|
322
|
+
it("in @serivce", async () => {
|
|
323
|
+
const def = buildMixedDefinition({
|
|
324
|
+
"@service": true
|
|
325
|
+
});
|
|
326
|
+
const expectedRes = buildPathReturn_WithDefault();
|
|
327
|
+
const models = await emitClientFactoryFromCadl(def);
|
|
328
|
+
assert.ok(models);
|
|
329
|
+
assertEqualContent(models!.content, expectedRes);
|
|
330
|
+
});
|
|
331
|
+
it("in @versioned", async () => {
|
|
332
|
+
const def = buildMixedDefinition({
|
|
333
|
+
"@versioned": true
|
|
334
|
+
});
|
|
335
|
+
const expectedRes = buildPathReturn_WithDefault();
|
|
336
|
+
const models = await emitClientFactoryFromCadl(def);
|
|
337
|
+
assert.ok(models);
|
|
338
|
+
assertEqualContent(models!.content, expectedRes);
|
|
339
|
+
});
|
|
340
|
+
});
|
|
341
|
+
describe("without default value", () => {
|
|
342
|
+
it("no @service or @versioned", async () => {
|
|
343
|
+
const def = buildMixedDefinition({
|
|
344
|
+
"@service": false,
|
|
345
|
+
"@versioned": false
|
|
346
|
+
});
|
|
347
|
+
const expectedRes = buildPathReturn_WithoutDefault();
|
|
348
|
+
const models = await emitClientFactoryFromCadl(def);
|
|
349
|
+
assert.ok(models);
|
|
350
|
+
assertEqualContent(models!.content, expectedRes);
|
|
351
|
+
});
|
|
352
|
+
});
|
|
353
|
+
});
|
|
354
|
+
describe("without definition", () => {
|
|
355
|
+
describe("with default value", () => {
|
|
356
|
+
it("in @serivce", async () => {
|
|
357
|
+
const def = buildDefaultDefinition({
|
|
358
|
+
"@service": true
|
|
359
|
+
});
|
|
360
|
+
const expectedRes = buildDefaultReturn(true);
|
|
361
|
+
const models = await emitClientFactoryFromCadl(def);
|
|
362
|
+
assert.ok(models);
|
|
363
|
+
assertEqualContent(models!.content, expectedRes);
|
|
364
|
+
});
|
|
365
|
+
it("in @versioned", async () => {
|
|
366
|
+
const def = buildDefaultDefinition({
|
|
367
|
+
"@versioned": true
|
|
368
|
+
});
|
|
369
|
+
const expectedRes = buildDefaultReturn(true);
|
|
370
|
+
const models = await emitClientFactoryFromCadl(def);
|
|
371
|
+
assert.ok(models);
|
|
372
|
+
assertEqualContent(models!.content, expectedRes);
|
|
373
|
+
});
|
|
374
|
+
});
|
|
375
|
+
describe("without default value", () => {
|
|
376
|
+
it("no @service or @versioned", async () => {
|
|
377
|
+
const def = buildDefaultDefinition({
|
|
378
|
+
"@service": false,
|
|
379
|
+
"@versioned": false
|
|
380
|
+
});
|
|
381
|
+
const expectedRes = buildDefaultReturn(false);
|
|
382
|
+
const models = await emitClientFactoryFromCadl(def);
|
|
383
|
+
assert.ok(models);
|
|
384
|
+
assertEqualContent(models!.content, expectedRes);
|
|
385
|
+
});
|
|
386
|
+
});
|
|
387
|
+
});
|
|
388
|
+
});
|
|
@@ -227,137 +227,6 @@ describe("Client Factory generation", () => {
|
|
|
227
227
|
});
|
|
228
228
|
});
|
|
229
229
|
|
|
230
|
-
describe("should handle apiVersion correctly", () => {
|
|
231
|
-
describe("apiVersion as query parameter", () => {
|
|
232
|
-
it("should set the default value in options", async () => {
|
|
233
|
-
const models = await emitClientFactoryFromCadl(`
|
|
234
|
-
@server(
|
|
235
|
-
"{Endpoint}/language",
|
|
236
|
-
"Language Service",
|
|
237
|
-
{
|
|
238
|
-
Endpoint: Endpoint
|
|
239
|
-
}
|
|
240
|
-
)
|
|
241
|
-
@service({
|
|
242
|
-
title: "PetStoreClient",
|
|
243
|
-
version: "2022-05-15-preview",
|
|
244
|
-
})
|
|
245
|
-
namespace PetStore;
|
|
246
|
-
@doc("The endpoint to use.")
|
|
247
|
-
scalar Endpoint extends string;
|
|
248
|
-
`);
|
|
249
|
-
assert.ok(models);
|
|
250
|
-
assertEqualContent(
|
|
251
|
-
models!.content,
|
|
252
|
-
`
|
|
253
|
-
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
254
|
-
import { testClient } from "./clientDefinitions";
|
|
255
|
-
|
|
256
|
-
/**
|
|
257
|
-
* Initialize a new instance of \`testClient\`
|
|
258
|
-
* @param endpoint type: string, The endpoint to use.
|
|
259
|
-
* @param options type: ClientOptions, the parameter for all optional parameters
|
|
260
|
-
*/
|
|
261
|
-
export default function createClient(
|
|
262
|
-
endpoint: string,
|
|
263
|
-
options: ClientOptions = {}
|
|
264
|
-
): testClient {
|
|
265
|
-
const baseUrl = options.baseUrl ?? \`\${endpoint}/language\`;
|
|
266
|
-
options.apiVersion = options.apiVersion ?? "2022-05-15-preview";
|
|
267
|
-
|
|
268
|
-
const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
|
|
269
|
-
const userAgentPrefix =
|
|
270
|
-
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
|
|
271
|
-
? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
|
|
272
|
-
: \`\${userAgentInfo}\`;
|
|
273
|
-
options = {
|
|
274
|
-
...options,
|
|
275
|
-
userAgentOptions: {
|
|
276
|
-
userAgentPrefix,
|
|
277
|
-
},
|
|
278
|
-
};
|
|
279
|
-
|
|
280
|
-
const client = getClient(baseUrl, options) as testClient;
|
|
281
|
-
|
|
282
|
-
return client;
|
|
283
|
-
}
|
|
284
|
-
`
|
|
285
|
-
);
|
|
286
|
-
});
|
|
287
|
-
});
|
|
288
|
-
describe("apiVersion as path parameter", () => {
|
|
289
|
-
it("should set the default value in customized options", async () => {
|
|
290
|
-
const models = await emitClientFactoryFromCadl(`
|
|
291
|
-
@versioned(Versions)
|
|
292
|
-
@server(
|
|
293
|
-
"{Endpoint}/anomalydetector/{ApiVersion}",
|
|
294
|
-
"Language Service",
|
|
295
|
-
{
|
|
296
|
-
Endpoint: Endpoint,
|
|
297
|
-
@doc("Api Version")
|
|
298
|
-
@path
|
|
299
|
-
ApiVersion: APIVersion,
|
|
300
|
-
}
|
|
301
|
-
)
|
|
302
|
-
@service({
|
|
303
|
-
title: "PetStoreClient"
|
|
304
|
-
})
|
|
305
|
-
namespace PetStore;
|
|
306
|
-
@doc("The endpoint to use.")
|
|
307
|
-
scalar Endpoint extends string;
|
|
308
|
-
|
|
309
|
-
enum Versions {
|
|
310
|
-
v1_1: "v1.1",
|
|
311
|
-
}
|
|
312
|
-
@knownValues(Versions)
|
|
313
|
-
scalar APIVersion extends string;
|
|
314
|
-
`);
|
|
315
|
-
assert.ok(models);
|
|
316
|
-
assertEqualContent(
|
|
317
|
-
models!.content,
|
|
318
|
-
`
|
|
319
|
-
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
320
|
-
import { testClient } from "./clientDefinitions";
|
|
321
|
-
|
|
322
|
-
export interface testClientOptions extends ClientOptions {
|
|
323
|
-
apiVersion?: string;
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
/**
|
|
327
|
-
* Initialize a new instance of \`testClient\`
|
|
328
|
-
* @param endpoint type: string, The endpoint to use.
|
|
329
|
-
* @param options type: testClientOptions, the parameter for all optional parameters
|
|
330
|
-
*/
|
|
331
|
-
export default function createClient(
|
|
332
|
-
endpoint: string,
|
|
333
|
-
options: testClientOptions = {}
|
|
334
|
-
): testClient {
|
|
335
|
-
const apiVersion = options.apiVersion ?? "v1.1";
|
|
336
|
-
const baseUrl = options.baseUrl ?? \`\${endpoint}/anomalydetector/\${apiVersion}\`;
|
|
337
|
-
|
|
338
|
-
const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
|
|
339
|
-
const userAgentPrefix =
|
|
340
|
-
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
|
|
341
|
-
? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
|
|
342
|
-
: \`\${userAgentInfo}\`;
|
|
343
|
-
options = {
|
|
344
|
-
...options,
|
|
345
|
-
userAgentOptions: {
|
|
346
|
-
userAgentPrefix,
|
|
347
|
-
},
|
|
348
|
-
};
|
|
349
|
-
|
|
350
|
-
const client = getClient(baseUrl, options) as testClient;
|
|
351
|
-
|
|
352
|
-
return client;
|
|
353
|
-
}
|
|
354
|
-
`
|
|
355
|
-
);
|
|
356
|
-
});
|
|
357
|
-
});
|
|
358
|
-
describe("mixed apiVersion in path & query parameter", () => {});
|
|
359
|
-
});
|
|
360
|
-
|
|
361
230
|
describe("should handle no @server definition", () => {
|
|
362
231
|
it("should set default endpoint parameter when no @server", async () => {
|
|
363
232
|
const models = await emitClientFactoryFromCadl(`
|
|
@@ -737,10 +737,10 @@ describe("Input/output model type", () => {
|
|
|
737
737
|
outputType
|
|
738
738
|
});
|
|
739
739
|
});
|
|
740
|
-
it("should handle
|
|
740
|
+
it("should handle utcDateTime -> string in output model & `Date | string` in input model", async () => {
|
|
741
741
|
const inputType = "Date | string";
|
|
742
742
|
const outputType = "string";
|
|
743
|
-
await verifyPropertyType("
|
|
743
|
+
await verifyPropertyType("utcDateTime", inputType, {
|
|
744
744
|
outputType
|
|
745
745
|
});
|
|
746
746
|
});
|
|
@@ -448,7 +448,7 @@ describe("Parameters.ts", () => {
|
|
|
448
448
|
|
|
449
449
|
it("datetime array request generation", async () => {
|
|
450
450
|
const parameters = await emitParameterFromCadl(`
|
|
451
|
-
@post op read(@body body:
|
|
451
|
+
@post op read(@body body: utcDateTime[]): void;
|
|
452
452
|
`);
|
|
453
453
|
assert.ok(parameters);
|
|
454
454
|
assertEqualContent(
|
|
@@ -375,7 +375,7 @@ describe("Responses.ts", () => {
|
|
|
375
375
|
|
|
376
376
|
it("verify datetime array from responses", async () => {
|
|
377
377
|
const responses = await emitResponsesFromCadl(`
|
|
378
|
-
@get op read():
|
|
378
|
+
@get op read(): utcDateTime[];
|
|
379
379
|
`);
|
|
380
380
|
assert.ok(responses);
|
|
381
381
|
assertEqualContent(
|