@azure-tools/typespec-ts 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +23 -0
- package/.prettierignore +1 -0
- package/.prettierrc +7 -0
- package/.rush/temp/package-deps_build.json +303 -0
- package/.rush/temp/shrinkwrap-deps.json +469 -0
- package/CHANGELOG.md +65 -0
- package/CONTRIBUTING.md +134 -0
- package/README.md +150 -0
- package/dist/src/emitUtil.d.ts +6 -0
- package/dist/src/emitUtil.d.ts.map +1 -0
- package/dist/src/emitUtil.js +45 -0
- package/dist/src/emitUtil.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +59 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib.d.ts +159 -0
- package/dist/src/lib.d.ts.map +1 -0
- package/dist/src/lib.js +189 -0
- package/dist/src/lib.js.map +1 -0
- package/dist/src/modelUtils.d.ts +12 -0
- package/dist/src/modelUtils.d.ts.map +1 -0
- package/dist/src/modelUtils.js +812 -0
- package/dist/src/modelUtils.js.map +1 -0
- package/dist/src/operationUtil.d.ts +16 -0
- package/dist/src/operationUtil.d.ts.map +1 -0
- package/dist/src/operationUtil.js +142 -0
- package/dist/src/operationUtil.js.map +1 -0
- package/dist/src/transform/transform.d.ts +8 -0
- package/dist/src/transform/transform.d.ts.map +1 -0
- package/dist/src/transform/transform.js +131 -0
- package/dist/src/transform/transform.js.map +1 -0
- package/dist/src/transform/transformAnnotationDetails.d.ts +6 -0
- package/dist/src/transform/transformAnnotationDetails.d.ts.map +1 -0
- package/dist/src/transform/transformAnnotationDetails.js +188 -0
- package/dist/src/transform/transformAnnotationDetails.js.map +1 -0
- package/dist/src/transform/transformApiVersionParam.d.ts +5 -0
- package/dist/src/transform/transformApiVersionParam.d.ts.map +1 -0
- package/dist/src/transform/transformApiVersionParam.js +76 -0
- package/dist/src/transform/transformApiVersionParam.js.map +1 -0
- package/dist/src/transform/transformParameters.d.ts +14 -0
- package/dist/src/transform/transformParameters.d.ts.map +1 -0
- package/dist/src/transform/transformParameters.js +315 -0
- package/dist/src/transform/transformParameters.js.map +1 -0
- package/dist/src/transform/transformPaths.d.ts +10 -0
- package/dist/src/transform/transformPaths.d.ts.map +1 -0
- package/dist/src/transform/transformPaths.js +124 -0
- package/dist/src/transform/transformPaths.js.map +1 -0
- package/dist/src/transform/transformResponses.d.ts +5 -0
- package/dist/src/transform/transformResponses.d.ts.map +1 -0
- package/dist/src/transform/transformResponses.js +136 -0
- package/dist/src/transform/transformResponses.js.map +1 -0
- package/dist/src/transform/transformSchemas.d.ts +4 -0
- package/dist/src/transform/transformSchemas.d.ts.map +1 -0
- package/dist/src/transform/transformSchemas.js +175 -0
- package/dist/src/transform/transformSchemas.js.map +1 -0
- package/dist/src/transform/transfromRLCOptions.d.ts +10 -0
- package/dist/src/transform/transfromRLCOptions.d.ts.map +1 -0
- package/dist/src/transform/transfromRLCOptions.js +156 -0
- package/dist/src/transform/transfromRLCOptions.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +73 -0
- package/src/emitUtil.ts +63 -0
- package/src/index.ts +106 -0
- package/src/lib.ts +207 -0
- package/src/modelUtils.ts +961 -0
- package/src/operationUtil.ts +203 -0
- package/src/transform/transform.ts +224 -0
- package/src/transform/transformAnnotationDetails.ts +231 -0
- package/src/transform/transformApiVersionParam.ts +104 -0
- package/src/transform/transformParameters.ts +480 -0
- package/src/transform/transformPaths.ts +187 -0
- package/src/transform/transformResponses.ts +190 -0
- package/src/transform/transformSchemas.ts +209 -0
- package/src/transform/transfromRLCOptions.ts +202 -0
- package/test/commands/cadl-ranch-list.ts +83 -0
- package/test/commands/check-clean-tree.ts +55 -0
- package/test/commands/childProcessOnExit.ts +16 -0
- package/test/commands/gen-cadl-ranch.ts +21 -0
- package/test/commands/run.ts +41 -0
- package/test/integration/arrayItemTypes.spec.ts +93 -0
- package/test/integration/authApiKey.spec.ts +38 -0
- package/test/integration/authOauth2.spec.ts +65 -0
- package/test/integration/authUnion.spec.ts +72 -0
- package/test/integration/dictionary.spec.ts +102 -0
- package/test/integration/extensibleEnums.spec.ts +61 -0
- package/test/integration/fixedEnums.spec.ts +52 -0
- package/test/integration/generated/arrays/itemTypes/src/arrayItemTypesClient.ts +31 -0
- package/test/integration/generated/arrays/itemTypes/src/clientDefinitions.ts +150 -0
- package/test/integration/generated/arrays/itemTypes/src/index.ts +13 -0
- package/test/integration/generated/arrays/itemTypes/src/models.ts +9 -0
- package/test/integration/generated/arrays/itemTypes/src/outputModels.ts +9 -0
- package/test/integration/generated/arrays/itemTypes/src/parameters.ts +78 -0
- package/test/integration/generated/arrays/itemTypes/src/responses.ts +104 -0
- package/test/integration/generated/arrays/itemTypes/tspconfig.yaml +12 -0
- package/test/integration/generated/authentication/apiKey/.eslintrc.json +11 -0
- package/test/integration/generated/authentication/apiKey/README.md +56 -0
- package/test/integration/generated/authentication/apiKey/api-extractor.json +18 -0
- package/test/integration/generated/authentication/apiKey/karma.conf.js +133 -0
- package/test/integration/generated/authentication/apiKey/package.json +103 -0
- package/test/integration/generated/authentication/apiKey/rollup.config.js +118 -0
- package/test/integration/generated/authentication/apiKey/src/authApiKeyClient.ts +41 -0
- package/test/integration/generated/authentication/apiKey/src/clientDefinitions.ts +33 -0
- package/test/integration/generated/authentication/apiKey/src/index.ts +12 -0
- package/test/integration/generated/authentication/apiKey/src/outputModels.ts +6 -0
- package/test/integration/generated/authentication/apiKey/src/parameters.ts +7 -0
- package/test/integration/generated/authentication/apiKey/src/responses.ts +21 -0
- package/test/integration/generated/authentication/apiKey/test/public/sampleTest.spec.ts +23 -0
- package/test/integration/generated/authentication/apiKey/test/public/utils/env.browser.ts +2 -0
- package/test/integration/generated/authentication/apiKey/test/public/utils/env.ts +6 -0
- package/test/integration/generated/authentication/apiKey/test/public/utils/recordedClient.ts +29 -0
- package/test/integration/generated/authentication/apiKey/tsconfig.json +25 -0
- package/test/integration/generated/authentication/apiKey/tspconfig.yaml +10 -0
- package/test/integration/generated/authentication/oauth2/karma.conf.js +133 -0
- package/test/integration/generated/authentication/oauth2/src/authOauth2Client.ts +41 -0
- package/test/integration/generated/authentication/oauth2/src/clientDefinitions.ts +33 -0
- package/test/integration/generated/authentication/oauth2/src/index.ts +12 -0
- package/test/integration/generated/authentication/oauth2/src/outputModels.ts +6 -0
- package/test/integration/generated/authentication/oauth2/src/parameters.ts +7 -0
- package/test/integration/generated/authentication/oauth2/src/responses.ts +21 -0
- package/test/integration/generated/authentication/oauth2/test/public/sampleTest.spec.ts +23 -0
- package/test/integration/generated/authentication/oauth2/test/public/utils/env.browser.ts +2 -0
- package/test/integration/generated/authentication/oauth2/test/public/utils/env.ts +6 -0
- package/test/integration/generated/authentication/oauth2/test/public/utils/recordedClient.ts +29 -0
- package/test/integration/generated/authentication/oauth2/tspconfig.yaml +12 -0
- package/test/integration/generated/authentication/union/karma.conf.js +133 -0
- package/test/integration/generated/authentication/union/src/authUnionClient.ts +42 -0
- package/test/integration/generated/authentication/union/src/clientDefinitions.ts +27 -0
- package/test/integration/generated/authentication/union/src/index.ts +11 -0
- package/test/integration/generated/authentication/union/src/parameters.ts +7 -0
- package/test/integration/generated/authentication/union/src/responses.ts +14 -0
- package/test/integration/generated/authentication/union/test/public/sampleTest.spec.ts +23 -0
- package/test/integration/generated/authentication/union/test/public/utils/env.browser.ts +2 -0
- package/test/integration/generated/authentication/union/test/public/utils/env.ts +6 -0
- package/test/integration/generated/authentication/union/test/public/utils/recordedClient.ts +29 -0
- package/test/integration/generated/authentication/union/tspconfig.yaml +12 -0
- package/test/integration/generated/dictionary/.eslintrc.json +11 -0
- package/test/integration/generated/dictionary/README.md +56 -0
- package/test/integration/generated/dictionary/api-extractor.json +18 -0
- package/test/integration/generated/dictionary/package.json +80 -0
- package/test/integration/generated/dictionary/rollup.config.js +118 -0
- package/test/integration/generated/dictionary/src/clientDefinitions.ts +165 -0
- package/test/integration/generated/dictionary/src/dictClient.ts +29 -0
- package/test/integration/generated/dictionary/src/index.ts +13 -0
- package/test/integration/generated/dictionary/src/models.ts +9 -0
- package/test/integration/generated/dictionary/src/outputModels.ts +9 -0
- package/test/integration/generated/dictionary/src/parameters.ts +86 -0
- package/test/integration/generated/dictionary/src/responses.ts +115 -0
- package/test/integration/generated/dictionary/tsconfig.json +25 -0
- package/test/integration/generated/dictionary/tspconfig.yaml +12 -0
- package/test/integration/generated/enums/extensible/.eslintrc.json +11 -0
- package/test/integration/generated/enums/extensible/README.md +56 -0
- package/test/integration/generated/enums/extensible/api-extractor.json +18 -0
- package/test/integration/generated/enums/extensible/package.json +80 -0
- package/test/integration/generated/enums/extensible/rollup.config.js +118 -0
- package/test/integration/generated/enums/extensible/src/clientDefinitions.ts +45 -0
- package/test/integration/generated/enums/extensible/src/enumsExtensible.ts +31 -0
- package/test/integration/generated/enums/extensible/src/index.ts +11 -0
- package/test/integration/generated/enums/extensible/src/parameters.ts +23 -0
- package/test/integration/generated/enums/extensible/src/responses.ts +26 -0
- package/test/integration/generated/enums/extensible/tsconfig.json +25 -0
- package/test/integration/generated/enums/extensible/tspconfig.yaml +11 -0
- package/test/integration/generated/enums/fixed/.eslintrc.json +11 -0
- package/test/integration/generated/enums/fixed/README.md +56 -0
- package/test/integration/generated/enums/fixed/api-extractor.json +18 -0
- package/test/integration/generated/enums/fixed/package.json +80 -0
- package/test/integration/generated/enums/fixed/rollup.config.js +118 -0
- package/test/integration/generated/enums/fixed/src/clientDefinitions.ts +43 -0
- package/test/integration/generated/enums/fixed/src/enumsFixed.ts +31 -0
- package/test/integration/generated/enums/fixed/src/index.ts +11 -0
- package/test/integration/generated/enums/fixed/src/parameters.ts +36 -0
- package/test/integration/generated/enums/fixed/src/responses.ts +27 -0
- package/test/integration/generated/enums/fixed/tsconfig.json +25 -0
- package/test/integration/generated/enums/fixed/tspconfig.yaml +11 -0
- package/test/integration/generated/hello/.eslintrc.json +11 -0
- package/test/integration/generated/hello/README.md +56 -0
- package/test/integration/generated/hello/api-extractor.json +18 -0
- package/test/integration/generated/hello/package.json +80 -0
- package/test/integration/generated/hello/rollup.config.js +118 -0
- package/test/integration/generated/hello/src/clientDefinitions.ts +19 -0
- package/test/integration/generated/hello/src/hello.ts +29 -0
- package/test/integration/generated/hello/src/index.ts +11 -0
- package/test/integration/generated/hello/src/parameters.ts +6 -0
- package/test/integration/generated/hello/src/responses.ts +10 -0
- package/test/integration/generated/hello/tsconfig.json +25 -0
- package/test/integration/generated/hello/tspconfig.yaml +11 -0
- package/test/integration/generated/lro/lroBasic/.eslintrc.json +11 -0
- package/test/integration/generated/lro/lroBasic/README.md +56 -0
- package/test/integration/generated/lro/lroBasic/api-extractor.json +18 -0
- package/test/integration/generated/lro/lroBasic/package.json +82 -0
- package/test/integration/generated/lro/lroBasic/rollup.config.js +118 -0
- package/test/integration/generated/lro/lroBasic/src/azureLro.ts +31 -0
- package/test/integration/generated/lro/lroBasic/src/clientDefinitions.ts +37 -0
- package/test/integration/generated/lro/lroBasic/src/index.ts +12 -0
- package/test/integration/generated/lro/lroBasic/src/parameters.ts +8 -0
- package/test/integration/generated/lro/lroBasic/src/pollingHelper.ts +75 -0
- package/test/integration/generated/lro/lroBasic/src/responses.ts +22 -0
- package/test/integration/generated/lro/lroBasic/tsconfig.json +25 -0
- package/test/integration/generated/lro/lroBasic/tspconfig.yaml +11 -0
- package/test/integration/generated/models/inheritance/.eslintrc.json +11 -0
- package/test/integration/generated/models/inheritance/README.md +56 -0
- package/test/integration/generated/models/inheritance/api-extractor.json +18 -0
- package/test/integration/generated/models/inheritance/package.json +80 -0
- package/test/integration/generated/models/inheritance/rollup.config.js +118 -0
- package/test/integration/generated/models/inheritance/src/clientDefinitions.ts +79 -0
- package/test/integration/generated/models/inheritance/src/index.ts +13 -0
- package/test/integration/generated/models/inheritance/src/models.ts +52 -0
- package/test/integration/generated/models/inheritance/src/modelsInheritance.ts +31 -0
- package/test/integration/generated/models/inheritance/src/outputModels.ts +52 -0
- package/test/integration/generated/models/inheritance/src/parameters.ts +35 -0
- package/test/integration/generated/models/inheritance/src/responses.ts +56 -0
- package/test/integration/generated/models/inheritance/tsconfig.json +25 -0
- package/test/integration/generated/models/inheritance/tspconfig.yaml +11 -0
- package/test/integration/generated/models/propertyOptional/.eslintrc.json +11 -0
- package/test/integration/generated/models/propertyOptional/README.md +56 -0
- package/test/integration/generated/models/propertyOptional/api-extractor.json +18 -0
- package/test/integration/generated/models/propertyOptional/package.json +80 -0
- package/test/integration/generated/models/propertyOptional/rollup.config.js +118 -0
- package/test/integration/generated/models/propertyOptional/src/clientDefinitions.ts +263 -0
- package/test/integration/generated/models/propertyOptional/src/index.ts +13 -0
- package/test/integration/generated/models/propertyOptional/src/models.ts +46 -0
- package/test/integration/generated/models/propertyOptional/src/modelsPropertyOptional.ts +31 -0
- package/test/integration/generated/models/propertyOptional/src/outputModels.ts +46 -0
- package/test/integration/generated/models/propertyOptional/src/parameters.ts +124 -0
- package/test/integration/generated/models/propertyOptional/src/responses.ts +169 -0
- package/test/integration/generated/models/propertyOptional/tsconfig.json +25 -0
- package/test/integration/generated/models/propertyOptional/tspconfig.yaml +11 -0
- package/test/integration/generated/models/propertyTypes/.eslintrc.json +11 -0
- package/test/integration/generated/models/propertyTypes/README.md +56 -0
- package/test/integration/generated/models/propertyTypes/api-extractor.json +18 -0
- package/test/integration/generated/models/propertyTypes/package.json +80 -0
- package/test/integration/generated/models/propertyTypes/rollup.config.js +118 -0
- package/test/integration/generated/models/propertyTypes/src/clientDefinitions.ts +234 -0
- package/test/integration/generated/models/propertyTypes/src/index.ts +13 -0
- package/test/integration/generated/models/propertyTypes/src/models.ts +99 -0
- package/test/integration/generated/models/propertyTypes/src/modelsPropertyTypes.ts +31 -0
- package/test/integration/generated/models/propertyTypes/src/outputModels.ts +99 -0
- package/test/integration/generated/models/propertyTypes/src/parameters.ts +147 -0
- package/test/integration/generated/models/propertyTypes/src/responses.ts +186 -0
- package/test/integration/generated/models/propertyTypes/tsconfig.json +25 -0
- package/test/integration/generated/models/propertyTypes/tspconfig.yaml +11 -0
- package/test/integration/generated/models/usage/.eslintrc.json +11 -0
- package/test/integration/generated/models/usage/README.md +56 -0
- package/test/integration/generated/models/usage/api-extractor.json +18 -0
- package/test/integration/generated/models/usage/package.json +80 -0
- package/test/integration/generated/models/usage/rollup.config.js +118 -0
- package/test/integration/generated/models/usage/src/clientDefinitions.ts +41 -0
- package/test/integration/generated/models/usage/src/index.ts +13 -0
- package/test/integration/generated/models/usage/src/models.ts +12 -0
- package/test/integration/generated/models/usage/src/modelsUsage.ts +31 -0
- package/test/integration/generated/models/usage/src/outputModels.ts +12 -0
- package/test/integration/generated/models/usage/src/parameters.ts +19 -0
- package/test/integration/generated/models/usage/src/responses.ts +22 -0
- package/test/integration/generated/models/usage/tsconfig.json +25 -0
- package/test/integration/generated/models/usage/tspconfig.yaml +11 -0
- package/test/integration/generated/models/visibility/.eslintrc.json +11 -0
- package/test/integration/generated/models/visibility/README.md +56 -0
- package/test/integration/generated/models/visibility/api-extractor.json +18 -0
- package/test/integration/generated/models/visibility/package.json +80 -0
- package/test/integration/generated/models/visibility/rollup.config.js +118 -0
- package/test/integration/generated/models/visibility/src/clientDefinitions.ts +40 -0
- package/test/integration/generated/models/visibility/src/index.ts +13 -0
- package/test/integration/generated/models/visibility/src/models.ts +14 -0
- package/test/integration/generated/models/visibility/src/modelsVisibilityAutomatic.ts +31 -0
- package/test/integration/generated/models/visibility/src/outputModels.ts +16 -0
- package/test/integration/generated/models/visibility/src/parameters.ts +41 -0
- package/test/integration/generated/models/visibility/src/responses.ts +36 -0
- package/test/integration/generated/models/visibility/tsconfig.json +25 -0
- package/test/integration/generated/models/visibility/tspconfig.yaml +11 -0
- package/test/integration/generated/resiliency/devDriven/.eslintrc.json +11 -0
- package/test/integration/generated/resiliency/devDriven/README.md +56 -0
- package/test/integration/generated/resiliency/devDriven/api-extractor.json +18 -0
- package/test/integration/generated/resiliency/devDriven/package.json +81 -0
- package/test/integration/generated/resiliency/devDriven/rollup.config.js +118 -0
- package/test/integration/generated/resiliency/devDriven/src/clientDefinitions.ts +75 -0
- package/test/integration/generated/resiliency/devDriven/src/index.ts +15 -0
- package/test/integration/generated/resiliency/devDriven/src/isUnexpected.ts +117 -0
- package/test/integration/generated/resiliency/devDriven/src/models.ts +8 -0
- package/test/integration/generated/resiliency/devDriven/src/outputModels.ts +25 -0
- package/test/integration/generated/resiliency/devDriven/src/paginateHelper.ts +154 -0
- package/test/integration/generated/resiliency/devDriven/src/parameters.ts +17 -0
- package/test/integration/generated/resiliency/devDriven/src/resiliencyDevDriven.ts +31 -0
- package/test/integration/generated/resiliency/devDriven/src/responses.ts +62 -0
- package/test/integration/generated/resiliency/devDriven/tsconfig.json +25 -0
- package/test/integration/generated/resiliency/devDriven/tspconfig.yaml +11 -0
- package/test/integration/generated/resiliency/srvDriven1/.eslintrc.json +11 -0
- package/test/integration/generated/resiliency/srvDriven1/README.md +56 -0
- package/test/integration/generated/resiliency/srvDriven1/api-extractor.json +18 -0
- package/test/integration/generated/resiliency/srvDriven1/package.json +80 -0
- package/test/integration/generated/resiliency/srvDriven1/rollup.config.js +118 -0
- package/test/integration/generated/resiliency/srvDriven1/src/clientDefinitions.ts +70 -0
- package/test/integration/generated/resiliency/srvDriven1/src/index.ts +13 -0
- package/test/integration/generated/resiliency/srvDriven1/src/models.ts +6 -0
- package/test/integration/generated/resiliency/srvDriven1/src/outputModels.ts +6 -0
- package/test/integration/generated/resiliency/srvDriven1/src/parameters.ts +51 -0
- package/test/integration/generated/resiliency/srvDriven1/src/resiliencyServiceDriven1.ts +31 -0
- package/test/integration/generated/resiliency/srvDriven1/src/responses.ts +34 -0
- package/test/integration/generated/resiliency/srvDriven1/tsconfig.json +25 -0
- package/test/integration/generated/resiliency/srvDriven1/tspconfig.yaml +11 -0
- package/test/integration/generated/resiliency/srvDriven2/.eslintrc.json +11 -0
- package/test/integration/generated/resiliency/srvDriven2/README.md +56 -0
- package/test/integration/generated/resiliency/srvDriven2/api-extractor.json +18 -0
- package/test/integration/generated/resiliency/srvDriven2/package.json +80 -0
- package/test/integration/generated/resiliency/srvDriven2/rollup.config.js +118 -0
- package/test/integration/generated/resiliency/srvDriven2/src/clientDefinitions.ts +93 -0
- package/test/integration/generated/resiliency/srvDriven2/src/index.ts +13 -0
- package/test/integration/generated/resiliency/srvDriven2/src/models.ts +6 -0
- package/test/integration/generated/resiliency/srvDriven2/src/outputModels.ts +6 -0
- package/test/integration/generated/resiliency/srvDriven2/src/parameters.ts +68 -0
- package/test/integration/generated/resiliency/srvDriven2/src/resiliencyServiceDriven2.ts +31 -0
- package/test/integration/generated/resiliency/srvDriven2/src/responses.ts +45 -0
- package/test/integration/generated/resiliency/srvDriven2/tsconfig.json +25 -0
- package/test/integration/generated/resiliency/srvDriven2/tspconfig.yaml +11 -0
- package/test/integration/generated/specialWords/src/clientDefinitions.ts +61 -0
- package/test/integration/generated/specialWords/src/index.ts +13 -0
- package/test/integration/generated/specialWords/src/models.ts +17 -0
- package/test/integration/generated/specialWords/src/outputModels.ts +17 -0
- package/test/integration/generated/specialWords/src/parameters.ts +37 -0
- package/test/integration/generated/specialWords/src/responses.ts +31 -0
- package/test/integration/generated/specialWords/src/specialWordsClient.ts +31 -0
- package/test/integration/generated/specialWords/tspconfig.yaml +11 -0
- package/test/integration/generated/unions/src/clientDefinitions.ts +53 -0
- package/test/integration/generated/unions/src/index.ts +12 -0
- package/test/integration/generated/unions/src/models.ts +27 -0
- package/test/integration/generated/unions/src/parameters.ts +34 -0
- package/test/integration/generated/unions/src/responses.ts +24 -0
- package/test/integration/generated/unions/src/unionsClient.ts +31 -0
- package/test/integration/generated/unions/tspconfig.yaml +11 -0
- package/test/integration/helloWorld.spec.ts +20 -0
- package/test/integration/lroBasic.spec.ts +25 -0
- package/test/integration/modelInheritance.spec.ts +192 -0
- package/test/integration/modelPropertyOptional.spec.ts +362 -0
- package/test/integration/modelPropertyType.spec.ts +119 -0
- package/test/integration/modelUsage.spec.ts +47 -0
- package/test/integration/resiliencyDpgCustomization.spec.ts +52 -0
- package/test/integration/specialWords.spec.ts +73 -0
- package/test/integration/unions.spec.ts +69 -0
- package/test/tsconfig.json +4 -0
- package/test/unit/azureCoreOperationsGenerator.spec.ts +71 -0
- package/test/unit/clientDefinitionGenerator.spec.ts +73 -0
- package/test/unit/clientFactoryGenerator.spec.ts +507 -0
- package/test/unit/docsGenerator.spec.ts +201 -0
- package/test/unit/modelsGenerator.spec.ts +1319 -0
- package/test/unit/parametersGenerator.spec.ts +561 -0
- package/test/unit/responsesGenerator.spec.ts +462 -0
- package/test/unit/spreadAndAlias.spec.ts +200 -0
- package/test/unit/util/emitUtil.ts +156 -0
- package/test/unit/util/testUtil.ts +83 -0
- package/test/util/customBearerTokenTestingPolicy.ts +78 -0
- package/test/util/matrix.ts +48 -0
- package/tsconfig.json +36 -0
- package/tsconfig.test.json +7 -0
- package/typespec-ts.build.log +2 -0
|
@@ -0,0 +1,507 @@
|
|
|
1
|
+
import { assert } from "chai";
|
|
2
|
+
import { emitClientFactoryFromCadl } from "./util/emitUtil.js";
|
|
3
|
+
import { assertEqualContent } from "./util/testUtil.js";
|
|
4
|
+
|
|
5
|
+
describe("Client Factory generation", () => {
|
|
6
|
+
describe("should handle url parameters", () => {
|
|
7
|
+
it("should handle zero parameter", async () => {
|
|
8
|
+
const models = await emitClientFactoryFromCadl(`
|
|
9
|
+
@server(
|
|
10
|
+
"localhost",
|
|
11
|
+
"Language Service"
|
|
12
|
+
)
|
|
13
|
+
@service( {title: "PetStoreClient"})
|
|
14
|
+
namespace PetStore;
|
|
15
|
+
`);
|
|
16
|
+
assert.ok(models);
|
|
17
|
+
assertEqualContent(
|
|
18
|
+
models!.content,
|
|
19
|
+
`
|
|
20
|
+
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
21
|
+
import { testClient } from "./clientDefinitions";
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Initialize a new instance of \`testClient\`
|
|
25
|
+
* @param options type: ClientOptions, the parameter for all optional parameters
|
|
26
|
+
*/
|
|
27
|
+
export default function createClient(options: ClientOptions = {}): testClient {
|
|
28
|
+
const baseUrl = options.baseUrl ?? \`localhost\`;
|
|
29
|
+
|
|
30
|
+
const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
|
|
31
|
+
const userAgentPrefix =
|
|
32
|
+
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
|
|
33
|
+
? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
|
|
34
|
+
: \`\${userAgentInfo}\`;
|
|
35
|
+
options = {
|
|
36
|
+
...options,
|
|
37
|
+
userAgentOptions: {
|
|
38
|
+
userAgentPrefix,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const client = getClient(baseUrl, options) as testClient;
|
|
43
|
+
|
|
44
|
+
return client;
|
|
45
|
+
}
|
|
46
|
+
`
|
|
47
|
+
);
|
|
48
|
+
});
|
|
49
|
+
it("should handle one parameter", async () => {
|
|
50
|
+
const models = await emitClientFactoryFromCadl(`
|
|
51
|
+
@server(
|
|
52
|
+
"{Endpoint}/language",
|
|
53
|
+
"Language Service",
|
|
54
|
+
{
|
|
55
|
+
Endpoint: Endpoint,
|
|
56
|
+
}
|
|
57
|
+
)
|
|
58
|
+
@service( {title: "PetStoreClient"})
|
|
59
|
+
namespace PetStore;
|
|
60
|
+
@doc("The endpoint to use.")
|
|
61
|
+
scalar Endpoint extends string;
|
|
62
|
+
`);
|
|
63
|
+
assert.ok(models);
|
|
64
|
+
assertEqualContent(
|
|
65
|
+
models!.content,
|
|
66
|
+
`
|
|
67
|
+
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
68
|
+
import { testClient } from "./clientDefinitions";
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Initialize a new instance of \`testClient\`
|
|
72
|
+
* @param endpoint type: string, The endpoint to use.
|
|
73
|
+
* @param options type: ClientOptions, the parameter for all optional parameters
|
|
74
|
+
*/
|
|
75
|
+
export default function createClient(
|
|
76
|
+
endpoint: string,
|
|
77
|
+
options: ClientOptions = {}
|
|
78
|
+
): testClient {
|
|
79
|
+
const baseUrl = options.baseUrl ?? \`\${endpoint}/language\`;
|
|
80
|
+
|
|
81
|
+
const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
|
|
82
|
+
const userAgentPrefix =
|
|
83
|
+
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
|
|
84
|
+
? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
|
|
85
|
+
: \`\${userAgentInfo}\`;
|
|
86
|
+
options = {
|
|
87
|
+
...options,
|
|
88
|
+
userAgentOptions: {
|
|
89
|
+
userAgentPrefix,
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
const client = getClient(baseUrl, options) as testClient;
|
|
94
|
+
|
|
95
|
+
return client;
|
|
96
|
+
}
|
|
97
|
+
`
|
|
98
|
+
);
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
it("should handle two parameters", async () => {
|
|
102
|
+
const models = await emitClientFactoryFromCadl(
|
|
103
|
+
`
|
|
104
|
+
@server(
|
|
105
|
+
"{Endpoint}/language/{Version}",
|
|
106
|
+
"Language Service",
|
|
107
|
+
{
|
|
108
|
+
Endpoint: Endpoint,
|
|
109
|
+
Version: Version
|
|
110
|
+
}
|
|
111
|
+
)
|
|
112
|
+
@service( {title: "PetStoreClient"})
|
|
113
|
+
namespace PetStore;
|
|
114
|
+
@doc("The endpoint to use.")
|
|
115
|
+
scalar Endpoint extends string;
|
|
116
|
+
|
|
117
|
+
#suppress "@azure-tools/typespec-azure-core/use-extensible-enum" "for test"
|
|
118
|
+
@doc("The version to use")
|
|
119
|
+
@fixed
|
|
120
|
+
enum Version {
|
|
121
|
+
V1,
|
|
122
|
+
V2
|
|
123
|
+
}
|
|
124
|
+
`,
|
|
125
|
+
true
|
|
126
|
+
);
|
|
127
|
+
assert.ok(models);
|
|
128
|
+
assertEqualContent(
|
|
129
|
+
models!.content,
|
|
130
|
+
`
|
|
131
|
+
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
132
|
+
import { testClient } from "./clientDefinitions";
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Initialize a new instance of \`testClient\`
|
|
136
|
+
* @param endpoint type: string, The endpoint to use.
|
|
137
|
+
* @param version type: "V1"|"V2", The version to use
|
|
138
|
+
* @param options type: ClientOptions, the parameter for all optional parameters
|
|
139
|
+
*/
|
|
140
|
+
export default function createClient(
|
|
141
|
+
endpoint: string,
|
|
142
|
+
version: "V1" | "V2",
|
|
143
|
+
options: ClientOptions = {}
|
|
144
|
+
): testClient {
|
|
145
|
+
const baseUrl = options.baseUrl ?? \`\${endpoint}/language/\${version}\`;
|
|
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
|
+
});
|
|
166
|
+
it("should handle extensible enums in host parameters", async () => {
|
|
167
|
+
const models = await emitClientFactoryFromCadl(
|
|
168
|
+
`
|
|
169
|
+
@server(
|
|
170
|
+
"{Endpoint}/language/{Version}",
|
|
171
|
+
"Language Service",
|
|
172
|
+
{
|
|
173
|
+
Endpoint: Endpoint,
|
|
174
|
+
Version: Versions
|
|
175
|
+
}
|
|
176
|
+
)
|
|
177
|
+
@service( {title: "PetStoreClient"})
|
|
178
|
+
namespace PetStore;
|
|
179
|
+
@doc("The endpoint to use.")
|
|
180
|
+
scalar Endpoint extends string;
|
|
181
|
+
|
|
182
|
+
@doc("The version to use.")
|
|
183
|
+
enum Versions {
|
|
184
|
+
v1_1: "v1.1",
|
|
185
|
+
}
|
|
186
|
+
`,
|
|
187
|
+
true
|
|
188
|
+
);
|
|
189
|
+
assert.ok(models);
|
|
190
|
+
assertEqualContent(
|
|
191
|
+
models!.content,
|
|
192
|
+
`
|
|
193
|
+
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
194
|
+
import { testClient } from "./clientDefinitions";
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Initialize a new instance of \`testClient\`
|
|
198
|
+
* @param endpoint type: string, The endpoint to use.
|
|
199
|
+
* @param version type: string, The version to use. Possible values: v1.1
|
|
200
|
+
* @param options type: ClientOptions, the parameter for all optional parameters
|
|
201
|
+
*/
|
|
202
|
+
export default function createClient(
|
|
203
|
+
endpoint: string,
|
|
204
|
+
version: string,
|
|
205
|
+
options: ClientOptions = {}
|
|
206
|
+
): testClient {
|
|
207
|
+
const baseUrl = options.baseUrl ?? \`\${endpoint}/language/\${version}\`;
|
|
208
|
+
|
|
209
|
+
const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
|
|
210
|
+
const userAgentPrefix =
|
|
211
|
+
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
|
|
212
|
+
? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
|
|
213
|
+
: \`\${userAgentInfo}\`;
|
|
214
|
+
options = {
|
|
215
|
+
...options,
|
|
216
|
+
userAgentOptions: {
|
|
217
|
+
userAgentPrefix,
|
|
218
|
+
},
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
const client = getClient(baseUrl, options) as testClient;
|
|
222
|
+
|
|
223
|
+
return client;
|
|
224
|
+
}
|
|
225
|
+
`
|
|
226
|
+
);
|
|
227
|
+
});
|
|
228
|
+
});
|
|
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
|
+
describe("should handle no @server definition", () => {
|
|
362
|
+
it("should set default endpoint parameter when no @server", async () => {
|
|
363
|
+
const models = await emitClientFactoryFromCadl(`
|
|
364
|
+
@service( {title: "PetStoreClient"})
|
|
365
|
+
namespace PetStore;
|
|
366
|
+
`);
|
|
367
|
+
assert.ok(models);
|
|
368
|
+
assertEqualContent(
|
|
369
|
+
models!.content,
|
|
370
|
+
`
|
|
371
|
+
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
372
|
+
import { testClient } from "./clientDefinitions";
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Initialize a new instance of \`testClient\`
|
|
376
|
+
* @param endpoint type: string, The parameter endpoint
|
|
377
|
+
* @param options type: ClientOptions, the parameter for all optional parameters
|
|
378
|
+
*/
|
|
379
|
+
export default function createClient(endpoint: string, options: ClientOptions = {}): testClient {
|
|
380
|
+
const baseUrl = options.baseUrl ?? \`\${endpoint}\`;
|
|
381
|
+
|
|
382
|
+
const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
|
|
383
|
+
const userAgentPrefix =
|
|
384
|
+
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
|
|
385
|
+
? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
|
|
386
|
+
: \`\${userAgentInfo}\`;
|
|
387
|
+
options = {
|
|
388
|
+
...options,
|
|
389
|
+
userAgentOptions: {
|
|
390
|
+
userAgentPrefix,
|
|
391
|
+
},
|
|
392
|
+
};
|
|
393
|
+
|
|
394
|
+
const client = getClient(baseUrl, options) as testClient;
|
|
395
|
+
|
|
396
|
+
return client;
|
|
397
|
+
}
|
|
398
|
+
`
|
|
399
|
+
);
|
|
400
|
+
});
|
|
401
|
+
});
|
|
402
|
+
|
|
403
|
+
describe("should handle different auth options", () => {
|
|
404
|
+
it("should not generate credential if scope is empty", async () => {
|
|
405
|
+
const models = await emitClientFactoryFromCadl(`
|
|
406
|
+
@useAuth(
|
|
407
|
+
OAuth2Auth<[{
|
|
408
|
+
type: OAuth2FlowType.implicit,
|
|
409
|
+
authorizationUrl: "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
|
|
410
|
+
scopes: []
|
|
411
|
+
}]>)
|
|
412
|
+
@service( {title: "PetStoreClient"})
|
|
413
|
+
namespace PetStore;
|
|
414
|
+
`);
|
|
415
|
+
assert.ok(models);
|
|
416
|
+
assertEqualContent(
|
|
417
|
+
models!.content,
|
|
418
|
+
`
|
|
419
|
+
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
420
|
+
import { testClient } from "./clientDefinitions";
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* Initialize a new instance of \`testClient\`
|
|
424
|
+
* @param endpoint type: string, The parameter endpoint
|
|
425
|
+
* @param options type: ClientOptions, the parameter for all optional parameters
|
|
426
|
+
*/
|
|
427
|
+
export default function createClient(endpoint: string, options: ClientOptions = {}): testClient {
|
|
428
|
+
const baseUrl = options.baseUrl ?? \`\${endpoint}\`;
|
|
429
|
+
|
|
430
|
+
const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
|
|
431
|
+
const userAgentPrefix =
|
|
432
|
+
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
|
|
433
|
+
? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
|
|
434
|
+
: \`\${userAgentInfo}\`;
|
|
435
|
+
options = {
|
|
436
|
+
...options,
|
|
437
|
+
userAgentOptions: {
|
|
438
|
+
userAgentPrefix,
|
|
439
|
+
},
|
|
440
|
+
};
|
|
441
|
+
|
|
442
|
+
const client = getClient(baseUrl, options) as testClient;
|
|
443
|
+
|
|
444
|
+
return client;
|
|
445
|
+
}
|
|
446
|
+
`
|
|
447
|
+
);
|
|
448
|
+
});
|
|
449
|
+
|
|
450
|
+
it("should generate both credentials if both defined", async () => {
|
|
451
|
+
const models = await emitClientFactoryFromCadl(`
|
|
452
|
+
@useAuth(
|
|
453
|
+
ApiKeyAuth<ApiKeyLocation.header, "apiKey"> |
|
|
454
|
+
OAuth2Auth<[{
|
|
455
|
+
type: OAuth2FlowType.implicit,
|
|
456
|
+
authorizationUrl: "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
|
|
457
|
+
scopes: ["https://petstor.com/default"]
|
|
458
|
+
}]>)
|
|
459
|
+
@service( {title: "PetStoreClient"})
|
|
460
|
+
namespace PetStore;
|
|
461
|
+
`);
|
|
462
|
+
assert.ok(models);
|
|
463
|
+
assertEqualContent(
|
|
464
|
+
models!.content,
|
|
465
|
+
`
|
|
466
|
+
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
467
|
+
import { TokenCredential, KeyCredential } from "@azure/core-auth";
|
|
468
|
+
import { testClient } from "./clientDefinitions";
|
|
469
|
+
|
|
470
|
+
/**
|
|
471
|
+
* Initialize a new instance of \`testClient\`
|
|
472
|
+
* @param endpoint type: string, The parameter endpoint
|
|
473
|
+
* @param credentials type: TokenCredential|KeyCredential, uniquely identify client credential
|
|
474
|
+
* @param options type: ClientOptions, the parameter for all optional parameters
|
|
475
|
+
*/
|
|
476
|
+
export default function createClient(endpoint: string, credentials: TokenCredential | KeyCredential, options: ClientOptions = {}): testClient {
|
|
477
|
+
const baseUrl = options.baseUrl ?? \`\${endpoint}\`;
|
|
478
|
+
|
|
479
|
+
options = {
|
|
480
|
+
...options,
|
|
481
|
+
credentials: {
|
|
482
|
+
scopes: ["https://petstor.com/default"],
|
|
483
|
+
apiKeyHeaderName: "apiKey",
|
|
484
|
+
},
|
|
485
|
+
};
|
|
486
|
+
|
|
487
|
+
const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
|
|
488
|
+
const userAgentPrefix =
|
|
489
|
+
options.userAgentOptions && options.userAgentOptions.userAgentPrefix
|
|
490
|
+
? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
|
|
491
|
+
: \`\${userAgentInfo}\`;
|
|
492
|
+
options = {
|
|
493
|
+
...options,
|
|
494
|
+
userAgentOptions: {
|
|
495
|
+
userAgentPrefix,
|
|
496
|
+
},
|
|
497
|
+
};
|
|
498
|
+
|
|
499
|
+
const client = getClient(baseUrl, credentials, options) as testClient;
|
|
500
|
+
|
|
501
|
+
return client;
|
|
502
|
+
}
|
|
503
|
+
`
|
|
504
|
+
);
|
|
505
|
+
});
|
|
506
|
+
});
|
|
507
|
+
});
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { assert } from "chai";
|
|
2
|
+
import {
|
|
3
|
+
emitClientDefinitionFromCadl,
|
|
4
|
+
emitModelsFromCadl,
|
|
5
|
+
emitParameterFromCadl
|
|
6
|
+
} from "./util/emitUtil.js";
|
|
7
|
+
import { assertEqualContent } from "./util/testUtil.js";
|
|
8
|
+
|
|
9
|
+
describe("Doc generation testing", () => {
|
|
10
|
+
describe("docs in models.ts & outputModels.ts", () => {
|
|
11
|
+
it("should generate model-level and property-level docs in input model", async () => {
|
|
12
|
+
const models = await emitModelsFromCadl(`
|
|
13
|
+
@doc("A simple model with doc")
|
|
14
|
+
model SimpleModel {
|
|
15
|
+
@doc("A test property.")
|
|
16
|
+
prop: string;
|
|
17
|
+
}
|
|
18
|
+
op read(): { @body body: SimpleModel };
|
|
19
|
+
`);
|
|
20
|
+
assert.ok(models);
|
|
21
|
+
assertEqualContent(
|
|
22
|
+
models!.outputModelFile!.content,
|
|
23
|
+
`
|
|
24
|
+
/** A simple model with doc */
|
|
25
|
+
export interface SimpleModelOutput {
|
|
26
|
+
/** A test property. */
|
|
27
|
+
prop: string;
|
|
28
|
+
}
|
|
29
|
+
`
|
|
30
|
+
);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
describe("docs in parameters.ts", () => {
|
|
35
|
+
it("should generate body description", async () => {
|
|
36
|
+
const parameters = await emitParameterFromCadl(
|
|
37
|
+
`
|
|
38
|
+
model UserDetailsParameter {
|
|
39
|
+
@body
|
|
40
|
+
@doc("Details about username.")
|
|
41
|
+
username: string;
|
|
42
|
+
}
|
|
43
|
+
op createOrUpdateUser(...UserDetailsParameter): OkResponse;
|
|
44
|
+
`
|
|
45
|
+
);
|
|
46
|
+
assert.ok(parameters);
|
|
47
|
+
assertEqualContent(
|
|
48
|
+
parameters?.content!,
|
|
49
|
+
`
|
|
50
|
+
import { RequestParameters } from "@azure-rest/core-client";
|
|
51
|
+
|
|
52
|
+
export interface CreateOrUpdateUserBodyParam {
|
|
53
|
+
/** Details about username. */
|
|
54
|
+
body: string;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export type CreateOrUpdateUserParameters = CreateOrUpdateUserBodyParam & RequestParameters;
|
|
58
|
+
`
|
|
59
|
+
);
|
|
60
|
+
});
|
|
61
|
+
it("shouldn't generate type description as body property description", async () => {
|
|
62
|
+
const parameters = await emitParameterFromCadl(
|
|
63
|
+
`
|
|
64
|
+
@doc("Body type details")
|
|
65
|
+
model UserDetailsParameter {
|
|
66
|
+
username: string;
|
|
67
|
+
}
|
|
68
|
+
op createOrUpdateUser(@body username: UserDetailsParameter): OkResponse;
|
|
69
|
+
`
|
|
70
|
+
);
|
|
71
|
+
assert.ok(parameters);
|
|
72
|
+
assertEqualContent(
|
|
73
|
+
parameters?.content!,
|
|
74
|
+
`
|
|
75
|
+
import { RequestParameters } from "@azure-rest/core-client";
|
|
76
|
+
import { UserDetailsParameter } from "./models";
|
|
77
|
+
|
|
78
|
+
export interface CreateOrUpdateUserBodyParam {
|
|
79
|
+
body: UserDetailsParameter;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export type CreateOrUpdateUserParameters = CreateOrUpdateUserBodyParam & RequestParameters;
|
|
83
|
+
`
|
|
84
|
+
);
|
|
85
|
+
});
|
|
86
|
+
it("should generate query description", async () => {
|
|
87
|
+
const parameters = await emitParameterFromCadl(
|
|
88
|
+
`
|
|
89
|
+
@doc("The filter query parameter.")
|
|
90
|
+
model FilterParameter {
|
|
91
|
+
@query
|
|
92
|
+
@doc("Input your filter condition.")
|
|
93
|
+
filter: string;
|
|
94
|
+
}
|
|
95
|
+
op list(...FilterParameter): OkResponse;
|
|
96
|
+
`
|
|
97
|
+
);
|
|
98
|
+
assert.ok(parameters);
|
|
99
|
+
assertEqualContent(
|
|
100
|
+
parameters?.content!,
|
|
101
|
+
`
|
|
102
|
+
import { RequestParameters } from "@azure-rest/core-client";
|
|
103
|
+
|
|
104
|
+
export interface ListQueryParamProperties {
|
|
105
|
+
/** Input your filter condition. */
|
|
106
|
+
filter: string;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export interface ListQueryParam {
|
|
110
|
+
queryParameters: ListQueryParamProperties;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export type ListParameters = ListQueryParam & RequestParameters;
|
|
114
|
+
`
|
|
115
|
+
);
|
|
116
|
+
});
|
|
117
|
+
it("should generate header description with custom name", async () => {
|
|
118
|
+
const parameters = await emitParameterFromCadl(
|
|
119
|
+
`
|
|
120
|
+
op test(@doc("test header") @header("x-my-header") MyHeader: string): string;
|
|
121
|
+
`
|
|
122
|
+
);
|
|
123
|
+
assert.ok(parameters);
|
|
124
|
+
assertEqualContent(
|
|
125
|
+
parameters?.content!,
|
|
126
|
+
`
|
|
127
|
+
import { RawHttpHeadersInput } from "@azure/core-rest-pipeline";
|
|
128
|
+
import { RequestParameters } from "@azure-rest/core-client";
|
|
129
|
+
|
|
130
|
+
export interface TestHeaders {
|
|
131
|
+
/** test header */
|
|
132
|
+
"x-my-header": string;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export interface TestHeaderParam {
|
|
136
|
+
headers: RawHttpHeadersInput & TestHeaders;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export type TestParameters = TestHeaderParam & RequestParameters;
|
|
140
|
+
`
|
|
141
|
+
);
|
|
142
|
+
});
|
|
143
|
+
it("should generate contentType description", async () => {
|
|
144
|
+
const parameters = await emitParameterFromCadl(
|
|
145
|
+
`
|
|
146
|
+
#suppress "@typespec/http/content-type-ignored" "for test"
|
|
147
|
+
op test(@doc("content type") @header contentType: "application/octet-stream"): string;
|
|
148
|
+
`
|
|
149
|
+
);
|
|
150
|
+
assert.ok(parameters);
|
|
151
|
+
assertEqualContent(
|
|
152
|
+
parameters?.content!,
|
|
153
|
+
`
|
|
154
|
+
import { RequestParameters } from "@azure-rest/core-client";
|
|
155
|
+
|
|
156
|
+
export interface TestMediaTypesParam {
|
|
157
|
+
/** content type */
|
|
158
|
+
contentType: "application/octet-stream";
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export type TestParameters = TestMediaTypesParam & RequestParameters;
|
|
162
|
+
`
|
|
163
|
+
);
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
describe("docs in clientDefinitions.ts", () => {
|
|
168
|
+
it("should generate operation description", async () => {
|
|
169
|
+
const clientDef = await emitClientDefinitionFromCadl(
|
|
170
|
+
`
|
|
171
|
+
@summary("This is a summary")
|
|
172
|
+
@doc("This is the longer description")
|
|
173
|
+
op read(): {};
|
|
174
|
+
`
|
|
175
|
+
);
|
|
176
|
+
assert.ok(clientDef);
|
|
177
|
+
assertEqualContent(
|
|
178
|
+
clientDef?.content!,
|
|
179
|
+
`
|
|
180
|
+
import { ReadParameters } from "./parameters";
|
|
181
|
+
import { Read200Response } from "./responses";
|
|
182
|
+
import { Client, StreamableMethod } from "@azure-rest/core-client";
|
|
183
|
+
|
|
184
|
+
export interface Read {
|
|
185
|
+
/** This is the longer description */
|
|
186
|
+
get(options?: ReadParameters): StreamableMethod<Read200Response>;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
export interface Routes {
|
|
190
|
+
/** Resource for '/' has methods for the following verbs: get */
|
|
191
|
+
(path: "/"): Read;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
export type testClient = Client & {
|
|
195
|
+
path: Routes;
|
|
196
|
+
};
|
|
197
|
+
`
|
|
198
|
+
);
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
});
|