@autorest/typescript 6.0.0-beta.9 → 6.0.0-rc.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/README.md +42 -5
- package/dist/{src/generators/static/README.md.hbs → hlcREADME.md.hbs} +35 -3
- package/dist/hlcSamples.ts.hbs +49 -0
- package/dist/karma.conf.js.hbs +126 -0
- package/dist/paginateHelper.ts.hbs +208 -0
- package/dist/pollingHelper.ts.hbs +72 -0
- package/dist/rlcEnv.ts.hbs +3 -0
- package/dist/rlcREADME.md.hbs +71 -0
- package/dist/rlcRecordedClient.ts.hbs +26 -0
- package/dist/rlcSampleTest.spec.ts.hbs +20 -0
- package/dist/rlcSamples.ts.hbs +28 -0
- package/dist/sampleEnv.hbs +4 -0
- package/dist/sampleTest.ts.hbs +32 -0
- package/dist/samples.ts.hbs +0 -0
- package/dist/src/autorestSession.d.ts +17 -6
- package/dist/src/autorestSession.d.ts.map +1 -1
- package/dist/src/autorestSession.js +3 -9
- package/dist/src/autorestSession.js.map +1 -1
- package/dist/src/conflictResolver.d.ts +3 -0
- package/dist/src/conflictResolver.d.ts.map +1 -0
- package/dist/src/conflictResolver.js +43 -0
- package/dist/src/conflictResolver.js.map +1 -0
- package/dist/src/generators/LROGenerator.js +4 -4
- package/dist/src/generators/LROGenerator.js.map +1 -1
- package/dist/src/generators/clientFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/clientFileGenerator.js +300 -46
- package/dist/src/generators/clientFileGenerator.js.map +1 -1
- package/dist/src/generators/indexGenerator.d.ts.map +1 -1
- package/dist/src/generators/indexGenerator.js +106 -14
- package/dist/src/generators/indexGenerator.js.map +1 -1
- package/dist/src/generators/mappersGenerator.d.ts.map +1 -1
- package/dist/src/generators/mappersGenerator.js +93 -19
- package/dist/src/generators/mappersGenerator.js.map +1 -1
- package/dist/src/generators/modelsGenerator.d.ts.map +1 -1
- package/dist/src/generators/modelsGenerator.js +80 -81
- package/dist/src/generators/modelsGenerator.js.map +1 -1
- package/dist/src/generators/operationGenerator.d.ts.map +1 -1
- package/dist/src/generators/operationGenerator.js +85 -96
- package/dist/src/generators/operationGenerator.js.map +1 -1
- package/dist/src/generators/operationInterfaceGenerator.js +20 -20
- package/dist/src/generators/operationInterfaceGenerator.js.map +1 -1
- package/dist/src/generators/parametersGenerator.d.ts.map +1 -1
- package/dist/src/generators/parametersGenerator.js +7 -8
- package/dist/src/generators/parametersGenerator.js.map +1 -1
- package/dist/src/generators/samples/hlcSampleGenerator.d.ts +13 -0
- package/dist/src/generators/samples/hlcSampleGenerator.d.ts.map +1 -0
- package/dist/src/generators/samples/hlcSampleGenerator.js +43 -0
- package/dist/src/generators/samples/hlcSampleGenerator.js.map +1 -0
- package/dist/src/generators/samples/hlcSamples.ts.hbs +49 -0
- package/dist/src/generators/samples/rlcSampleGenerator.d.ts +4 -0
- package/dist/src/generators/samples/rlcSampleGenerator.d.ts.map +1 -0
- package/dist/src/generators/samples/rlcSampleGenerator.js +64 -0
- package/dist/src/generators/samples/rlcSampleGenerator.js.map +1 -0
- package/dist/src/generators/samples/rlcSamples.ts.hbs +28 -0
- package/dist/src/generators/samples/sampleEnv.hbs +4 -0
- package/dist/src/generators/samples/sampleEnvGenerator.d.ts +3 -0
- package/dist/src/generators/samples/sampleEnvGenerator.d.ts.map +1 -0
- package/dist/src/generators/samples/sampleEnvGenerator.js +17 -0
- package/dist/src/generators/samples/sampleEnvGenerator.js.map +1 -0
- package/dist/src/generators/static/apiExtractorConfig.js +2 -2
- package/dist/src/generators/static/apiExtractorConfig.js.map +1 -1
- package/dist/src/generators/static/esLintConfigGenerator.d.ts +3 -0
- package/dist/src/generators/static/esLintConfigGenerator.d.ts.map +1 -0
- package/dist/src/generators/static/esLintConfigGenerator.js +26 -0
- package/dist/src/generators/static/esLintConfigGenerator.js.map +1 -0
- package/{src/generators/static/README.md.hbs → dist/src/generators/static/hlcREADME.md.hbs} +35 -3
- package/dist/src/generators/static/karma.conf.js.hbs +126 -0
- package/dist/src/generators/static/karmaConfigFileGenerator.d.ts +3 -0
- package/dist/src/generators/static/karmaConfigFileGenerator.d.ts.map +1 -0
- package/dist/src/generators/static/karmaConfigFileGenerator.js +23 -0
- package/dist/src/generators/static/karmaConfigFileGenerator.js.map +1 -0
- package/dist/src/generators/static/licenseFileGenerator.js +1 -1
- package/dist/src/generators/static/licenseFileGenerator.js.map +1 -1
- package/dist/src/generators/static/packageFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/static/packageFileGenerator.js +255 -67
- package/dist/src/generators/static/packageFileGenerator.js.map +1 -1
- package/dist/src/generators/static/readmeFileGenerator.d.ts +2 -2
- package/dist/src/generators/static/readmeFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/static/readmeFileGenerator.js +50 -23
- package/dist/src/generators/static/readmeFileGenerator.js.map +1 -1
- package/dist/src/generators/static/rlcREADME.md.hbs +71 -0
- package/dist/src/generators/static/rollupConfigFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/static/rollupConfigFileGenerator.js +12 -71
- package/dist/src/generators/static/rollupConfigFileGenerator.js.map +1 -1
- package/dist/src/generators/static/tsConfigFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/static/tsConfigFileGenerator.js +46 -18
- package/dist/src/generators/static/tsConfigFileGenerator.js.map +1 -1
- package/dist/src/generators/test/envBrowserFileGenerator.d.ts +3 -0
- package/dist/src/generators/test/envBrowserFileGenerator.d.ts.map +1 -0
- package/dist/src/generators/test/envBrowserFileGenerator.js +15 -0
- package/dist/src/generators/test/envBrowserFileGenerator.js.map +1 -0
- package/dist/src/generators/test/envFileGenerator.d.ts +3 -0
- package/dist/src/generators/test/envFileGenerator.d.ts.map +1 -0
- package/dist/src/generators/test/envFileGenerator.js +23 -0
- package/dist/src/generators/test/envFileGenerator.js.map +1 -0
- package/dist/src/generators/test/recordedClientFileGenerator.d.ts +3 -0
- package/dist/src/generators/test/recordedClientFileGenerator.d.ts.map +1 -0
- package/dist/src/generators/test/recordedClientFileGenerator.js +23 -0
- package/dist/src/generators/test/recordedClientFileGenerator.js.map +1 -0
- package/dist/src/generators/test/rlcEnv.ts.hbs +3 -0
- package/dist/src/generators/test/rlcRecordedClient.ts.hbs +26 -0
- package/dist/src/generators/test/rlcSampleTest.spec.ts.hbs +20 -0
- package/dist/src/generators/test/sampleTest.ts.hbs +32 -0
- package/dist/src/generators/test/sampleTestGenerator.d.ts +3 -0
- package/dist/src/generators/test/sampleTestGenerator.d.ts.map +1 -0
- package/dist/src/generators/test/sampleTestGenerator.js +34 -0
- package/dist/src/generators/test/sampleTestGenerator.js.map +1 -0
- package/dist/src/generators/tracingFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/tracingFileGenerator.js +7 -21
- package/dist/src/generators/tracingFileGenerator.js.map +1 -1
- package/dist/src/generators/utils/docsUtils.js +2 -2
- package/dist/src/generators/utils/docsUtils.js.map +1 -1
- package/dist/src/generators/utils/operationsUtils.js +1 -1
- package/dist/src/generators/utils/operationsUtils.js.map +1 -1
- package/dist/src/generators/utils/pagingOperations.d.ts +5 -0
- package/dist/src/generators/utils/pagingOperations.d.ts.map +1 -1
- package/dist/src/generators/utils/pagingOperations.js +15 -15
- package/dist/src/generators/utils/pagingOperations.js.map +1 -1
- package/dist/src/generators/utils/parameterUtils.js +9 -9
- package/dist/src/generators/utils/parameterUtils.js.map +1 -1
- package/dist/src/generators/utils/responseTypeUtils.js +2 -2
- package/dist/src/generators/utils/responseTypeUtils.js.map +1 -1
- package/dist/src/generators/utils/tracingUtils.d.ts.map +1 -1
- package/dist/src/generators/utils/tracingUtils.js +2 -6
- package/dist/src/generators/utils/tracingUtils.js.map +1 -1
- package/dist/src/main.d.ts +2 -2
- package/dist/src/main.d.ts.map +1 -1
- package/dist/src/main.js +8 -8
- package/dist/src/main.js.map +1 -1
- package/dist/src/models/clientDetails.d.ts +10 -1
- package/dist/src/models/clientDetails.d.ts.map +1 -1
- package/dist/src/models/modelDetails.d.ts +2 -2
- package/dist/src/models/modelDetails.d.ts.map +1 -1
- package/dist/src/models/operationDetails.d.ts +1 -0
- package/dist/src/models/operationDetails.d.ts.map +1 -1
- package/dist/src/models/sampleDetails.d.ts +22 -0
- package/dist/src/models/sampleDetails.d.ts.map +1 -0
- package/dist/src/models/sampleDetails.js +3 -0
- package/dist/src/models/sampleDetails.js.map +1 -0
- package/dist/src/restLevelClient/generateClient.d.ts +1 -1
- package/dist/src/restLevelClient/generateClient.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateClient.js +108 -167
- package/dist/src/restLevelClient/generateClient.js.map +1 -1
- package/dist/src/restLevelClient/generateClientDefinition.d.ts +6 -0
- package/dist/src/restLevelClient/generateClientDefinition.d.ts.map +1 -0
- package/dist/src/restLevelClient/generateClientDefinition.js +261 -0
- package/dist/src/restLevelClient/generateClientDefinition.js.map +1 -0
- package/dist/src/restLevelClient/generateIsUnexpectedHelper.d.ts +8 -0
- package/dist/src/restLevelClient/generateIsUnexpectedHelper.d.ts.map +1 -0
- package/dist/src/restLevelClient/generateIsUnexpectedHelper.js +204 -0
- package/dist/src/restLevelClient/generateIsUnexpectedHelper.js.map +1 -0
- package/dist/src/restLevelClient/generateMethodShortcuts.d.ts +8 -0
- package/dist/src/restLevelClient/generateMethodShortcuts.d.ts.map +1 -0
- package/dist/src/restLevelClient/generateMethodShortcuts.js +70 -0
- package/dist/src/restLevelClient/generateMethodShortcuts.js.map +1 -0
- package/dist/src/restLevelClient/generateObjectTypes.d.ts +3 -3
- package/dist/src/restLevelClient/generateObjectTypes.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateObjectTypes.js +43 -31
- package/dist/src/restLevelClient/generateObjectTypes.js.map +1 -1
- package/dist/src/restLevelClient/generatePagingHelper.d.ts +3 -0
- package/dist/src/restLevelClient/generatePagingHelper.d.ts.map +1 -0
- package/dist/src/restLevelClient/generatePagingHelper.js +54 -0
- package/dist/src/restLevelClient/generatePagingHelper.js.map +1 -0
- package/dist/src/restLevelClient/generateParameterTypes.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateParameterTypes.js +247 -44
- package/dist/src/restLevelClient/generateParameterTypes.js.map +1 -1
- package/dist/src/restLevelClient/generatePollingHelper.d.ts +3 -0
- package/dist/src/restLevelClient/generatePollingHelper.d.ts.map +1 -0
- package/dist/src/restLevelClient/generatePollingHelper.js +20 -0
- package/dist/src/restLevelClient/generatePollingHelper.js.map +1 -0
- package/dist/src/restLevelClient/generateResponseTypes.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateResponseTypes.js +35 -23
- package/dist/src/restLevelClient/generateResponseTypes.js.map +1 -1
- package/dist/src/restLevelClient/generateRestLevel.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateRestLevel.js +63 -16
- package/dist/src/restLevelClient/generateRestLevel.js.map +1 -1
- package/dist/src/restLevelClient/generateSchemaTypes.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateSchemaTypes.js +29 -7
- package/dist/src/restLevelClient/generateSchemaTypes.js.map +1 -1
- package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts +4 -0
- package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts.map +1 -0
- package/dist/src/restLevelClient/generateTopLevelIndexFile.js +37 -0
- package/dist/src/restLevelClient/generateTopLevelIndexFile.js.map +1 -0
- package/dist/src/restLevelClient/getPropertySignature.d.ts +2 -2
- package/dist/src/restLevelClient/getPropertySignature.d.ts.map +1 -1
- package/dist/src/restLevelClient/getPropertySignature.js +10 -7
- package/dist/src/restLevelClient/getPropertySignature.js.map +1 -1
- package/dist/src/restLevelClient/helpers/hasPollingOperations.d.ts +4 -0
- package/dist/src/restLevelClient/helpers/hasPollingOperations.d.ts.map +1 -0
- package/dist/src/restLevelClient/helpers/hasPollingOperations.js +12 -0
- package/dist/src/restLevelClient/helpers/hasPollingOperations.js.map +1 -0
- package/dist/src/restLevelClient/helpers/modelHelpers.d.ts +4 -0
- package/dist/src/restLevelClient/helpers/modelHelpers.d.ts.map +1 -0
- package/dist/src/restLevelClient/helpers/modelHelpers.js +19 -0
- package/dist/src/restLevelClient/helpers/modelHelpers.js.map +1 -0
- package/dist/src/restLevelClient/helpers/operationHelpers.d.ts +10 -0
- package/dist/src/restLevelClient/helpers/operationHelpers.d.ts.map +1 -0
- package/dist/src/restLevelClient/helpers/operationHelpers.js +64 -0
- package/dist/src/restLevelClient/helpers/operationHelpers.js.map +1 -0
- package/dist/src/restLevelClient/interfaces.d.ts +33 -0
- package/dist/src/restLevelClient/interfaces.d.ts.map +1 -0
- package/dist/src/restLevelClient/interfaces.js +3 -0
- package/dist/src/restLevelClient/interfaces.js.map +1 -0
- package/dist/src/restLevelClient/mutateCodeModel.js +2 -2
- package/dist/src/restLevelClient/mutateCodeModel.js.map +1 -1
- package/dist/src/restLevelClient/operationHelpers.d.ts +4 -0
- package/dist/src/restLevelClient/operationHelpers.d.ts.map +1 -1
- package/dist/src/restLevelClient/operationHelpers.js +21 -10
- package/dist/src/restLevelClient/operationHelpers.js.map +1 -1
- package/dist/src/restLevelClient/paginateHelper.ts.hbs +208 -0
- package/dist/src/restLevelClient/pollingHelper.ts.hbs +72 -0
- package/dist/src/restLevelClient/samples/generateSamples.d.ts +23 -0
- package/dist/src/restLevelClient/samples/generateSamples.d.ts.map +1 -0
- package/dist/src/restLevelClient/samples/generateSamples.js +3 -0
- package/dist/src/restLevelClient/samples/generateSamples.js.map +1 -0
- package/dist/src/restLevelClient/samples/samples.ts.hbs +0 -0
- package/dist/src/restLevelClient/schemaHelpers.d.ts +8 -2
- package/dist/src/restLevelClient/schemaHelpers.d.ts.map +1 -1
- package/dist/src/restLevelClient/schemaHelpers.js +27 -12
- package/dist/src/restLevelClient/schemaHelpers.js.map +1 -1
- package/dist/src/transforms/extensions.js +10 -10
- package/dist/src/transforms/extensions.js.map +1 -1
- package/dist/src/transforms/groupTransforms.js +2 -2
- package/dist/src/transforms/groupTransforms.js.map +1 -1
- package/dist/src/transforms/mapperTransforms.d.ts.map +1 -1
- package/dist/src/transforms/mapperTransforms.js +29 -26
- package/dist/src/transforms/mapperTransforms.js.map +1 -1
- package/dist/src/transforms/objectTransforms.d.ts.map +1 -1
- package/dist/src/transforms/objectTransforms.js +42 -26
- package/dist/src/transforms/objectTransforms.js.map +1 -1
- package/dist/src/transforms/operationTransforms.d.ts.map +1 -1
- package/dist/src/transforms/operationTransforms.js +29 -26
- package/dist/src/transforms/operationTransforms.js.map +1 -1
- package/dist/src/transforms/optionsTransforms.js +1 -1
- package/dist/src/transforms/optionsTransforms.js.map +1 -1
- package/dist/src/transforms/parameterTransforms.d.ts.map +1 -1
- package/dist/src/transforms/parameterTransforms.js +43 -27
- package/dist/src/transforms/parameterTransforms.js.map +1 -1
- package/dist/src/transforms/samplesTransforms.d.ts +7 -0
- package/dist/src/transforms/samplesTransforms.d.ts.map +1 -0
- package/dist/src/transforms/samplesTransforms.js +293 -0
- package/dist/src/transforms/samplesTransforms.js.map +1 -0
- package/dist/src/transforms/transforms.d.ts +1 -2
- package/dist/src/transforms/transforms.d.ts.map +1 -1
- package/dist/src/transforms/transforms.js +26 -24
- package/dist/src/transforms/transforms.js.map +1 -1
- package/dist/src/transforms/urlTransforms.js +3 -3
- package/dist/src/transforms/urlTransforms.js.map +1 -1
- package/dist/src/typescriptGenerator.d.ts +2 -2
- package/dist/src/typescriptGenerator.d.ts.map +1 -1
- package/dist/src/typescriptGenerator.js +46 -46
- package/dist/src/typescriptGenerator.js.map +1 -1
- package/dist/src/utils/autorestOptions.d.ts +2 -2
- package/dist/src/utils/autorestOptions.d.ts.map +1 -1
- package/dist/src/utils/autorestOptions.js +141 -62
- package/dist/src/utils/autorestOptions.js.map +1 -1
- package/dist/src/utils/cloneOperation.js +2 -2
- package/dist/src/utils/cloneOperation.js.map +1 -1
- package/dist/src/utils/copyFiles.d.ts +2 -0
- package/dist/src/utils/copyFiles.d.ts.map +1 -0
- package/dist/src/utils/copyFiles.js +33 -0
- package/dist/src/utils/copyFiles.js.map +1 -0
- package/dist/src/utils/extractHeaders.js +4 -4
- package/dist/src/utils/extractHeaders.js.map +1 -1
- package/dist/src/utils/extractPaginationDetails.d.ts +5 -1
- package/dist/src/utils/extractPaginationDetails.d.ts.map +1 -1
- package/dist/src/utils/extractPaginationDetails.js +23 -10
- package/dist/src/utils/extractPaginationDetails.js.map +1 -1
- package/dist/src/utils/headersToSchema.js +1 -1
- package/dist/src/utils/headersToSchema.js.map +1 -1
- package/dist/src/utils/logger.js +1 -1
- package/dist/src/utils/logger.js.map +1 -1
- package/dist/src/utils/nameUtils.d.ts +6 -2
- package/dist/src/utils/nameUtils.d.ts.map +1 -1
- package/dist/src/utils/nameUtils.js +13 -8
- package/dist/src/utils/nameUtils.js.map +1 -1
- package/dist/src/utils/schemaHelpers.d.ts +6 -1
- package/dist/src/utils/schemaHelpers.d.ts.map +1 -1
- package/dist/src/utils/schemaHelpers.js +50 -7
- package/dist/src/utils/schemaHelpers.js.map +1 -1
- package/dist/src/utils/sortObjectSchemasHierarchically.js +1 -1
- package/dist/src/utils/sortObjectSchemasHierarchically.js.map +1 -1
- package/dist/src/utils/valueHelpers.js +1 -1
- package/dist/src/utils/valueHelpers.js.map +1 -1
- package/package.json +58 -39
- package/src/autorestSession.ts +25 -18
- package/src/conflictResolver.ts +61 -0
- package/src/generators/clientFileGenerator.ts +397 -36
- package/src/generators/indexGenerator.ts +118 -12
- package/src/generators/mappersGenerator.ts +108 -8
- package/src/generators/modelsGenerator.ts +98 -97
- package/src/generators/operationGenerator.ts +54 -93
- package/src/generators/parametersGenerator.ts +2 -3
- package/src/generators/samples/hlcSampleGenerator.ts +50 -0
- package/src/generators/samples/hlcSamples.ts.hbs +49 -0
- package/src/generators/samples/rlcSampleGenerator.ts +72 -0
- package/src/generators/samples/rlcSamples.ts.hbs +28 -0
- package/src/generators/samples/sampleEnv.hbs +4 -0
- package/src/generators/samples/sampleEnvGenerator.ts +14 -0
- package/src/generators/static/apiExtractorConfig.ts +2 -2
- package/src/generators/static/esLintConfigGenerator.ts +24 -0
- package/src/generators/static/hlcREADME.md.hbs +144 -0
- package/src/generators/static/karma.conf.js.hbs +126 -0
- package/src/generators/static/karmaConfigFileGenerator.ts +20 -0
- package/src/generators/static/packageFileGenerator.ts +292 -71
- package/src/generators/static/readmeFileGenerator.ts +79 -42
- package/src/generators/static/rlcREADME.md.hbs +71 -0
- package/src/generators/static/rollupConfigFileGenerator.ts +13 -71
- package/src/generators/static/tsConfigFileGenerator.ts +54 -19
- package/src/generators/test/envBrowserFileGenerator.ts +14 -0
- package/src/generators/test/envFileGenerator.ts +22 -0
- package/src/generators/test/recordedClientFileGenerator.ts +22 -0
- package/src/generators/test/rlcEnv.ts.hbs +3 -0
- package/src/generators/test/rlcRecordedClient.ts.hbs +26 -0
- package/src/generators/test/rlcSampleTest.spec.ts.hbs +20 -0
- package/src/generators/test/sampleTest.ts.hbs +32 -0
- package/src/generators/test/sampleTestGenerator.ts +32 -0
- package/src/generators/tracingFileGenerator.ts +6 -24
- package/src/generators/utils/pagingOperations.ts +1 -2
- package/src/generators/utils/tracingUtils.ts +1 -5
- package/src/main.ts +8 -5
- package/src/models/clientDetails.ts +11 -1
- package/src/models/modelDetails.ts +2 -2
- package/src/models/operationDetails.ts +1 -0
- package/src/models/sampleDetails.ts +22 -0
- package/src/restLevelClient/generateClient.ts +134 -244
- package/src/restLevelClient/generateClientDefinition.ts +386 -0
- package/src/restLevelClient/generateIsUnexpectedHelper.ts +224 -0
- package/src/restLevelClient/generateMethodShortcuts.ts +121 -0
- package/src/restLevelClient/generateObjectTypes.ts +62 -21
- package/src/restLevelClient/generatePagingHelper.ts +69 -0
- package/src/restLevelClient/generateParameterTypes.ts +377 -56
- package/src/restLevelClient/generatePollingHelper.ts +19 -0
- package/src/restLevelClient/generateResponseTypes.ts +36 -17
- package/src/restLevelClient/generateRestLevel.ts +63 -8
- package/src/restLevelClient/generateSchemaTypes.ts +43 -8
- package/src/restLevelClient/generateTopLevelIndexFile.ts +37 -0
- package/src/restLevelClient/getPropertySignature.ts +12 -4
- package/src/restLevelClient/helpers/hasPollingOperations.ts +15 -0
- package/src/restLevelClient/helpers/modelHelpers.ts +15 -0
- package/src/restLevelClient/helpers/operationHelpers.ts +93 -0
- package/src/restLevelClient/interfaces.ts +39 -0
- package/src/restLevelClient/operationHelpers.ts +23 -9
- package/src/restLevelClient/paginateHelper.ts.hbs +208 -0
- package/src/restLevelClient/pollingHelper.ts.hbs +72 -0
- package/src/restLevelClient/samples/generateSamples.ts +23 -0
- package/src/restLevelClient/samples/samples.ts.hbs +0 -0
- package/src/restLevelClient/schemaHelpers.ts +30 -8
- package/src/transforms/mapperTransforms.ts +11 -5
- package/src/transforms/objectTransforms.ts +26 -6
- package/src/transforms/operationTransforms.ts +6 -1
- package/src/transforms/parameterTransforms.ts +26 -7
- package/src/transforms/samplesTransforms.ts +349 -0
- package/src/transforms/transforms.ts +14 -9
- package/src/typescriptGenerator.ts +40 -53
- package/src/utils/autorestOptions.ts +198 -88
- package/src/utils/copyFiles.ts +36 -0
- package/src/utils/extractPaginationDetails.ts +19 -1
- package/src/utils/nameUtils.ts +18 -9
- package/src/utils/schemaHelpers.ts +51 -4
- package/CHANGELOG.md +0 -56
- package/dist/src/generators/clientContextFileGenerator.d.ts +0 -5
- package/dist/src/generators/clientContextFileGenerator.d.ts.map +0 -1
- package/dist/src/generators/clientContextFileGenerator.js +0 -263
- package/dist/src/generators/clientContextFileGenerator.js.map +0 -1
- package/src/generators/clientContextFileGenerator.ts +0 -405
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Channel,
|
|
1
|
+
import { Channel, AutorestExtensionHost } from "@autorest/extension-base";
|
|
2
2
|
import { AutorestOptions, getHost, getSession } from "../autorestSession";
|
|
3
|
-
import { TracingInfo } from "../models/clientDetails";
|
|
3
|
+
import { DependencyInfo, TracingInfo } from "../models/clientDetails";
|
|
4
4
|
import { PackageDetails } from "../models/packageDetails";
|
|
5
5
|
import { NameType, normalizeName } from "./nameUtils";
|
|
6
6
|
|
|
@@ -11,12 +11,14 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
|
|
|
11
11
|
const host = getHost();
|
|
12
12
|
const useCoreV2 = await getUseCoreV2(host);
|
|
13
13
|
const restLevelClient = await getRestLevelClient(host);
|
|
14
|
+
const rlcShortcut = await getHasShortcutMethods(host);
|
|
14
15
|
const azureArm = await getIsAzureArm(host);
|
|
15
16
|
const addCredentials = await getAddCredentials(host);
|
|
16
|
-
const
|
|
17
|
+
const security = await getSecurity(host);
|
|
18
|
+
const securityHeaderName = await getSecurityHeaderName(host);
|
|
17
19
|
const srcPath = await getSrcPath(host);
|
|
18
20
|
const outputPath = await getOutputPath(host);
|
|
19
|
-
const
|
|
21
|
+
const securityScopes = await getSecurityScopes(host);
|
|
20
22
|
const packageDetails = await getPackageDetails(host);
|
|
21
23
|
const licenseHeader = await getLicenseHeader(host);
|
|
22
24
|
const generateMetadata = await getGenerateMetadata(host);
|
|
@@ -31,13 +33,23 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
|
|
|
31
33
|
const azureOutputDirectory = await getAzureOutputDirectoryPath(host);
|
|
32
34
|
const headAsBoolean = await getHeadAsBoolean(host);
|
|
33
35
|
const isTestPackage = await getIsTestPackage(host);
|
|
36
|
+
const generateSample = await getGenerateSample(host);
|
|
37
|
+
const generateTest = await getGenerateTest(host);
|
|
38
|
+
const batch = await getBatch(host);
|
|
39
|
+
const multiClient = await getMultiClient(host);
|
|
40
|
+
const productDocLink = await getProductDocLink(host);
|
|
41
|
+
const coreHttpCompatMode = await getCoreHttpCompatMode(host);
|
|
42
|
+
const azureSdkForJs = await getAzureSdkForJs(host);
|
|
43
|
+
const dependencyInfo = await getDependencyInfo(host);
|
|
34
44
|
|
|
35
45
|
return {
|
|
36
46
|
azureArm,
|
|
37
47
|
addCredentials,
|
|
38
|
-
|
|
39
|
-
|
|
48
|
+
security,
|
|
49
|
+
securityHeaderName,
|
|
50
|
+
securityScopes,
|
|
40
51
|
restLevelClient,
|
|
52
|
+
rlcShortcut,
|
|
41
53
|
srcPath,
|
|
42
54
|
outputPath,
|
|
43
55
|
packageDetails,
|
|
@@ -53,73 +65,126 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
|
|
|
53
65
|
title,
|
|
54
66
|
azureOutputDirectory,
|
|
55
67
|
headAsBoolean,
|
|
56
|
-
isTestPackage
|
|
68
|
+
isTestPackage,
|
|
69
|
+
generateTest,
|
|
70
|
+
batch,
|
|
71
|
+
multiClient,
|
|
72
|
+
generateSample,
|
|
73
|
+
azureSdkForJs,
|
|
74
|
+
productDocLink,
|
|
75
|
+
coreHttpCompatMode,
|
|
76
|
+
dependencyInfo
|
|
57
77
|
};
|
|
58
78
|
}
|
|
59
79
|
|
|
60
|
-
async function
|
|
61
|
-
|
|
80
|
+
async function getHasShortcutMethods(
|
|
81
|
+
host: AutorestExtensionHost
|
|
82
|
+
): Promise<boolean> {
|
|
83
|
+
const headAsBoolean = await host.getValue("rlc-shortcut");
|
|
62
84
|
|
|
63
85
|
return Boolean(headAsBoolean);
|
|
64
86
|
}
|
|
65
87
|
|
|
66
|
-
async function
|
|
67
|
-
const
|
|
88
|
+
async function getHeadAsBoolean(host: AutorestExtensionHost): Promise<boolean> {
|
|
89
|
+
const headAsBoolean = await host.getValue("head-as-boolean");
|
|
90
|
+
|
|
91
|
+
return Boolean(headAsBoolean);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
async function getIsTestPackage(host: AutorestExtensionHost): Promise<boolean> {
|
|
95
|
+
const isTestPackage = await host.getValue("is-test-package");
|
|
68
96
|
return isTestPackage === null ? false : Boolean(isTestPackage);
|
|
69
97
|
}
|
|
70
98
|
|
|
71
|
-
async function
|
|
72
|
-
|
|
99
|
+
async function getGenerateSample(
|
|
100
|
+
host: AutorestExtensionHost
|
|
101
|
+
): Promise<boolean> {
|
|
102
|
+
const generateSample = await host.getValue("generate-sample");
|
|
103
|
+
return generateSample === undefined || generateSample === null ? false : Boolean(generateSample);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
async function getGenerateTest(host: AutorestExtensionHost): Promise<boolean> {
|
|
107
|
+
const generateTest = await host.getValue("generate-test");
|
|
108
|
+
return generateTest === null ? false : Boolean(generateTest);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
async function getAzureSdkForJs(host: AutorestExtensionHost): Promise<boolean> {
|
|
112
|
+
const azureSdkForJs = await host.getValue("azure-sdk-for-js");
|
|
113
|
+
return azureSdkForJs === undefined || azureSdkForJs === null
|
|
114
|
+
? true
|
|
115
|
+
: Boolean(azureSdkForJs);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
async function getSkipEnumValidation(
|
|
119
|
+
host: AutorestExtensionHost
|
|
120
|
+
): Promise<boolean> {
|
|
121
|
+
const skipEnumValidation = await host.getValue("skip-enum-validation");
|
|
73
122
|
|
|
74
123
|
return skipEnumValidation === true;
|
|
75
124
|
}
|
|
76
125
|
|
|
77
|
-
async function getAllowInsecureConnection(
|
|
78
|
-
|
|
126
|
+
async function getAllowInsecureConnection(
|
|
127
|
+
host: AutorestExtensionHost
|
|
128
|
+
): Promise<boolean> {
|
|
129
|
+
return (await host.getValue("allow-insecure-connection")) || false;
|
|
79
130
|
}
|
|
80
131
|
|
|
81
|
-
async function getIgnoreNullableOnOptional(
|
|
132
|
+
async function getIgnoreNullableOnOptional(
|
|
133
|
+
host: AutorestExtensionHost
|
|
134
|
+
): Promise<boolean> {
|
|
82
135
|
const isAzureArm = await getIsAzureArm(host);
|
|
83
|
-
return (await host.
|
|
136
|
+
return (await host.getValue("ignore-nullable-on-optional"))
|
|
84
137
|
? true
|
|
85
138
|
: isAzureArm;
|
|
86
139
|
}
|
|
87
140
|
|
|
88
|
-
async function getDisableAsyncOperators(
|
|
89
|
-
|
|
141
|
+
async function getDisableAsyncOperators(
|
|
142
|
+
host: AutorestExtensionHost
|
|
143
|
+
): Promise<boolean> {
|
|
144
|
+
return (await host.getValue("disable-async-iterators")) === true;
|
|
90
145
|
}
|
|
91
146
|
|
|
92
|
-
async function getHideClients(host:
|
|
93
|
-
return (await host.
|
|
147
|
+
async function getHideClients(host: AutorestExtensionHost): Promise<boolean> {
|
|
148
|
+
return (await host.getValue("hide-clients")) || false;
|
|
94
149
|
}
|
|
95
|
-
async function getGenerateMetadata(host:
|
|
96
|
-
return (await host.
|
|
150
|
+
async function getGenerateMetadata(host: AutorestExtensionHost) {
|
|
151
|
+
return (await host.getValue("generate-metadata")) !== false;
|
|
97
152
|
}
|
|
98
153
|
|
|
99
|
-
async function getLicenseHeader(host:
|
|
100
|
-
|
|
154
|
+
async function getLicenseHeader(host: AutorestExtensionHost): Promise<boolean> {
|
|
155
|
+
const license: boolean | undefined = await host.getValue("license-header");
|
|
156
|
+
if (license === undefined) {
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
return license;
|
|
101
160
|
}
|
|
102
161
|
|
|
103
|
-
async function getTitle(
|
|
104
|
-
|
|
162
|
+
async function getTitle(
|
|
163
|
+
host: AutorestExtensionHost
|
|
164
|
+
): Promise<string | undefined> {
|
|
165
|
+
return (await host.getValue("title")) || undefined;
|
|
105
166
|
}
|
|
106
167
|
|
|
107
|
-
async function getSrcPath(host:
|
|
108
|
-
return ((await host.
|
|
168
|
+
async function getSrcPath(host: AutorestExtensionHost): Promise<string> {
|
|
169
|
+
return ((await host.getValue("source-code-folder-path")) as string) || "src";
|
|
109
170
|
}
|
|
110
171
|
|
|
111
|
-
async function getOutputPath(
|
|
112
|
-
|
|
172
|
+
async function getOutputPath(
|
|
173
|
+
host: AutorestExtensionHost
|
|
174
|
+
): Promise<string | undefined> {
|
|
175
|
+
return (await host.getValue("output-folder")) || undefined;
|
|
113
176
|
}
|
|
114
177
|
|
|
115
|
-
async function
|
|
116
|
-
host:
|
|
178
|
+
async function getSecurityHeaderName(
|
|
179
|
+
host: AutorestExtensionHost
|
|
117
180
|
): Promise<string | undefined> {
|
|
118
|
-
return (await host.
|
|
181
|
+
return (await host.getValue("security-header-name")) || undefined;
|
|
119
182
|
}
|
|
120
183
|
|
|
121
|
-
async function getAddCredentials(
|
|
122
|
-
|
|
184
|
+
async function getAddCredentials(
|
|
185
|
+
host: AutorestExtensionHost
|
|
186
|
+
): Promise<boolean> {
|
|
187
|
+
const addCredentials = await host.getValue("add-credentials");
|
|
123
188
|
|
|
124
189
|
// Only set addCredentials to false if explicitly set to false
|
|
125
190
|
// otherwise default to true
|
|
@@ -129,34 +194,46 @@ async function getAddCredentials(host: Host): Promise<boolean> {
|
|
|
129
194
|
return true;
|
|
130
195
|
}
|
|
131
196
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
197
|
+
|
|
198
|
+
async function getSecurity(
|
|
199
|
+
host: AutorestExtensionHost
|
|
200
|
+
): Promise<string | undefined> {
|
|
201
|
+
const security: string | undefined = await host.getValue("security");
|
|
202
|
+
return security
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
async function getIsAzureArm(host: AutorestExtensionHost): Promise<boolean> {
|
|
206
|
+
const flag = (await host.getValue("azure-arm")) === true;
|
|
207
|
+
const openapi = (await host.getValue("openapi-type")) === "arm";
|
|
135
208
|
|
|
136
209
|
return flag || openapi;
|
|
137
210
|
}
|
|
138
211
|
|
|
139
|
-
async function getRestLevelClient(
|
|
140
|
-
|
|
212
|
+
async function getRestLevelClient(
|
|
213
|
+
host: AutorestExtensionHost
|
|
214
|
+
): Promise<boolean> {
|
|
215
|
+
return (await host.getValue("rest-level-client")) === true;
|
|
141
216
|
}
|
|
142
217
|
|
|
143
|
-
async function getUseCoreV2(host:
|
|
144
|
-
const useCoreV2Option
|
|
218
|
+
async function getUseCoreV2(host: AutorestExtensionHost): Promise<boolean> {
|
|
219
|
+
const useCoreV2Option = await host.getValue("use-core-v2");
|
|
145
220
|
return useCoreV2Option === null ? true : Boolean(useCoreV2Option);
|
|
146
221
|
}
|
|
147
222
|
|
|
148
|
-
async function getTracingInfo(
|
|
223
|
+
async function getTracingInfo(
|
|
224
|
+
host: AutorestExtensionHost
|
|
225
|
+
): Promise<TracingInfo | undefined> {
|
|
149
226
|
const tracing: TracingInfo | undefined =
|
|
150
|
-
(await host.
|
|
227
|
+
(await host.getValue("tracing-info")) || undefined;
|
|
151
228
|
|
|
152
|
-
if (tracing && tracing.namespace
|
|
229
|
+
if (tracing && tracing.namespace) {
|
|
153
230
|
return tracing;
|
|
154
231
|
}
|
|
155
232
|
|
|
156
|
-
const namespace =
|
|
157
|
-
(await host.
|
|
158
|
-
const packagePrefix =
|
|
159
|
-
(await host.
|
|
233
|
+
const namespace: string | undefined =
|
|
234
|
+
(await host.getValue<string>("tracing-info.namespace")) || undefined;
|
|
235
|
+
const packagePrefix: string | undefined =
|
|
236
|
+
(await host.getValue("tracing-info.packagePrefix")) || undefined;
|
|
160
237
|
|
|
161
238
|
if (packagePrefix && namespace) {
|
|
162
239
|
return {
|
|
@@ -174,13 +251,17 @@ async function getTracingInfo(host: Host): Promise<TracingInfo | undefined> {
|
|
|
174
251
|
);
|
|
175
252
|
}
|
|
176
253
|
|
|
177
|
-
async function getPackageDetails(
|
|
254
|
+
async function getPackageDetails(
|
|
255
|
+
host: AutorestExtensionHost
|
|
256
|
+
): Promise<PackageDetails> {
|
|
178
257
|
const { model } = getSession();
|
|
179
258
|
const name = normalizeName(model.language.default.name, NameType.File);
|
|
180
259
|
// TODO: Look for an existing package.json and
|
|
181
|
-
const packageName = (await host.
|
|
182
|
-
const packageNameParts =
|
|
183
|
-
|
|
260
|
+
const packageName: string = (await host.getValue("package-name")) || name;
|
|
261
|
+
const packageNameParts: RegExpMatchArray =
|
|
262
|
+
packageName.match(/(^@(.*)\/)?(.*)/) ?? [];
|
|
263
|
+
const version: string =
|
|
264
|
+
(await host.getValue("package-version")) || "1.0.0-beta.1";
|
|
184
265
|
|
|
185
266
|
return {
|
|
186
267
|
name: packageName,
|
|
@@ -191,46 +272,20 @@ async function getPackageDetails(host: Host): Promise<PackageDetails> {
|
|
|
191
272
|
};
|
|
192
273
|
}
|
|
193
274
|
|
|
194
|
-
export async function
|
|
195
|
-
host:
|
|
275
|
+
export async function getSecurityScopes(
|
|
276
|
+
host: AutorestExtensionHost
|
|
196
277
|
): Promise<string[] | undefined> {
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
if (credentialScopes && !addCredentials) {
|
|
202
|
-
throw new Error(
|
|
203
|
-
"--credential-scopes must be used with the --add-credentials flag"
|
|
204
|
-
);
|
|
278
|
+
const securityScopes: string | undefined = await host.getValue("security-scopes");
|
|
279
|
+
if(securityScopes !== undefined && typeof securityScopes === "string") {
|
|
280
|
+
return securityScopes.split(",");
|
|
205
281
|
}
|
|
206
|
-
|
|
207
|
-
if (!credentialScopes) {
|
|
208
|
-
if (azureArm) {
|
|
209
|
-
return ["https://management.azure.com/.default"];
|
|
210
|
-
} else if (addCredentials) {
|
|
211
|
-
host.Message({
|
|
212
|
-
Channel: Channel.Warning,
|
|
213
|
-
Text: `You have default credential policy BearerTokenCredentialPolicy
|
|
214
|
-
but not the --credential-scopes flag set while generating non-management plane code.
|
|
215
|
-
This is not recommended because it forces the customer to pass credential scopes
|
|
216
|
-
through kwargs if they want to authenticate.`
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
if (typeof credentialScopes === "string") {
|
|
222
|
-
return credentialScopes.split(",");
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
return undefined;
|
|
282
|
+
return securityScopes;
|
|
226
283
|
}
|
|
227
284
|
|
|
228
285
|
async function getAzureOutputDirectoryPath(
|
|
229
|
-
host:
|
|
286
|
+
host: AutorestExtensionHost
|
|
230
287
|
): Promise<string | undefined> {
|
|
231
|
-
const outputDirectoryPath
|
|
232
|
-
"outputFolderUri"
|
|
233
|
-
);
|
|
288
|
+
const outputDirectoryPath = await host.getValue<string>("outputFolderUri");
|
|
234
289
|
const outputDirectoryRelativePath: string | undefined = outputDirectoryPath
|
|
235
290
|
?.replace(/\/$/, "")
|
|
236
291
|
.split("/")
|
|
@@ -240,3 +295,58 @@ async function getAzureOutputDirectoryPath(
|
|
|
240
295
|
? outputDirectoryRelativePath
|
|
241
296
|
: undefined;
|
|
242
297
|
}
|
|
298
|
+
|
|
299
|
+
async function getBatch(
|
|
300
|
+
host: AutorestExtensionHost
|
|
301
|
+
): Promise<[string, any][] | undefined> {
|
|
302
|
+
const batch = await host.getValue<[string, any][]>("batch");
|
|
303
|
+
return batch;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
async function getProductDocLink(
|
|
307
|
+
host: AutorestExtensionHost
|
|
308
|
+
): Promise<string | undefined> {
|
|
309
|
+
return (await host.getValue("product-doc-link")) || undefined;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
async function getMultiClient(host: AutorestExtensionHost): Promise<boolean> {
|
|
313
|
+
const multiClient = (await host.getValue("multi-client")) || undefined;
|
|
314
|
+
return !!multiClient;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
async function getCoreHttpCompatMode(
|
|
318
|
+
host: AutorestExtensionHost
|
|
319
|
+
): Promise<boolean> {
|
|
320
|
+
return (await host.getValue("core-http-compat-mode")) || false;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
async function getDependencyInfo(
|
|
324
|
+
host: AutorestExtensionHost
|
|
325
|
+
): Promise<DependencyInfo | undefined> {
|
|
326
|
+
const dependency: DependencyInfo | undefined =
|
|
327
|
+
(await host.getValue("dependency-info")) || undefined;
|
|
328
|
+
|
|
329
|
+
if (dependency && dependency.description && dependency.link) {
|
|
330
|
+
return dependency;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
const link: string | undefined =
|
|
334
|
+
(await host.getValue<string>("dependency-info.link")) || undefined;
|
|
335
|
+
const description: string | undefined =
|
|
336
|
+
(await host.getValue("dependency-info.description")) || undefined;
|
|
337
|
+
|
|
338
|
+
if (description && link) {
|
|
339
|
+
return {
|
|
340
|
+
link,
|
|
341
|
+
description
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
if (!dependency && !description && !link) {
|
|
346
|
+
return undefined;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
throw new Error(
|
|
350
|
+
"Invalid dependency-info. Make sure that link and description are defined"
|
|
351
|
+
);
|
|
352
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
|
|
4
|
+
import * as fsextra from "fs-extra";
|
|
5
|
+
|
|
6
|
+
export function copyFiles(srcDir: string, destDir: string[]) {
|
|
7
|
+
const dirContents: string[] = fsextra.readdirSync(srcDir);
|
|
8
|
+
dirContents.forEach((dirEntry: string) => {
|
|
9
|
+
if (dirEntry.endsWith(".hbs")) {
|
|
10
|
+
destDir.forEach((destDirEntry: string) => {
|
|
11
|
+
console.log(
|
|
12
|
+
`Copying ${srcDir}/${dirEntry} to ${destDirEntry}/${dirEntry}`
|
|
13
|
+
);
|
|
14
|
+
fsextra.copyFileSync(
|
|
15
|
+
`${srcDir}/${dirEntry}`,
|
|
16
|
+
`${destDirEntry}/${dirEntry}`
|
|
17
|
+
);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
copyFiles("./src/restLevelClient", ["./dist/src/restLevelClient", "./dist"]);
|
|
24
|
+
copyFiles("./src/generators/test", ["./dist/src/generators/test", "./dist"]);
|
|
25
|
+
copyFiles("./src/generators/static", [
|
|
26
|
+
"./dist/src/generators/static",
|
|
27
|
+
"./dist"
|
|
28
|
+
]);
|
|
29
|
+
copyFiles("./src/generators/samples", [
|
|
30
|
+
"./dist/src/generators/samples",
|
|
31
|
+
"./dist"
|
|
32
|
+
]);
|
|
33
|
+
copyFiles("./src/restLevelClient/samples", [
|
|
34
|
+
"./dist/src/restLevelClient/samples",
|
|
35
|
+
"./dist"
|
|
36
|
+
]);
|
|
@@ -2,7 +2,8 @@ import {
|
|
|
2
2
|
Operation,
|
|
3
3
|
SchemaResponse,
|
|
4
4
|
SchemaType,
|
|
5
|
-
ObjectSchema
|
|
5
|
+
ObjectSchema,
|
|
6
|
+
CodeModel
|
|
6
7
|
} from "@autorest/codemodel";
|
|
7
8
|
import { isEqual } from "lodash";
|
|
8
9
|
import { PaginationDetails } from "../models/operationDetails";
|
|
@@ -152,6 +153,23 @@ function getResponseItemType(
|
|
|
152
153
|
return getTypeForSchema(itemProperty.schema);
|
|
153
154
|
}
|
|
154
155
|
|
|
156
|
+
/**
|
|
157
|
+
* Function to determine if any of the operations in the code model has at least one pageable operatio
|
|
158
|
+
*/
|
|
159
|
+
export function hasPagingOperations(model: CodeModel) {
|
|
160
|
+
for (const group of model.operationGroups) {
|
|
161
|
+
const hasAnyPageable = group.operations.some(
|
|
162
|
+
o => o.extensions && o.extensions["x-ms-pageable"]
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
if (hasAnyPageable) {
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
|
|
155
173
|
function isObjectSchema(schema: any): schema is ObjectSchema {
|
|
156
174
|
return schema && schema.type === SchemaType.Object;
|
|
157
175
|
}
|
package/src/utils/nameUtils.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { Operation, OperationGroup } from "@autorest/codemodel";
|
|
|
4
4
|
import { getLanguageMetadata } from "./languageHelpers";
|
|
5
5
|
import { TypeDetails, PropertyKind } from "../models/modelDetails";
|
|
6
6
|
|
|
7
|
-
interface ReservedName {
|
|
7
|
+
export interface ReservedName {
|
|
8
8
|
name: string;
|
|
9
9
|
reservedFor: NameType[];
|
|
10
10
|
}
|
|
@@ -84,7 +84,8 @@ const ReservedModelNames: ReservedName[] = [
|
|
|
84
84
|
{ name: "void", reservedFor: [NameType.Parameter] },
|
|
85
85
|
{ name: "while", reservedFor: [NameType.Parameter] },
|
|
86
86
|
{ name: "with", reservedFor: [NameType.Parameter] },
|
|
87
|
-
{ name: "yield", reservedFor: [NameType.Parameter] }
|
|
87
|
+
{ name: "yield", reservedFor: [NameType.Parameter] },
|
|
88
|
+
{ name: "arguments", reservedFor: [NameType.Parameter] }
|
|
88
89
|
];
|
|
89
90
|
|
|
90
91
|
export enum CasingConvention {
|
|
@@ -92,11 +93,15 @@ export enum CasingConvention {
|
|
|
92
93
|
Camel
|
|
93
94
|
}
|
|
94
95
|
|
|
95
|
-
export function guardReservedNames(
|
|
96
|
+
export function guardReservedNames(
|
|
97
|
+
name: string,
|
|
98
|
+
nameType: NameType,
|
|
99
|
+
customReservedNames: ReservedName[] = []
|
|
100
|
+
): string {
|
|
96
101
|
const suffix = getSuffix(nameType);
|
|
97
|
-
return ReservedModelNames
|
|
98
|
-
r => r.
|
|
99
|
-
|
|
102
|
+
return [...ReservedModelNames, ...customReservedNames]
|
|
103
|
+
.filter(r => r.reservedFor.includes(nameType))
|
|
104
|
+
.find(r => r.name === name.toLowerCase())
|
|
100
105
|
? `${name}${suffix}`
|
|
101
106
|
: name;
|
|
102
107
|
}
|
|
@@ -135,12 +140,14 @@ export function normalizeTypeName({ kind, typeName }: TypeDetails) {
|
|
|
135
140
|
export function normalizeName(
|
|
136
141
|
name: string,
|
|
137
142
|
nameType: NameType,
|
|
138
|
-
shouldGuard?: boolean
|
|
143
|
+
shouldGuard?: boolean,
|
|
144
|
+
customReservedNames: ReservedName[] = [],
|
|
145
|
+
casingOverride?: CasingConvention
|
|
139
146
|
): string {
|
|
140
147
|
if (name.startsWith("$DO_NOT_NORMALIZE$")) {
|
|
141
148
|
return name.replace("$DO_NOT_NORMALIZE$", "");
|
|
142
149
|
}
|
|
143
|
-
const casingConvention = getCasingConvention(nameType);
|
|
150
|
+
const casingConvention = casingOverride ?? getCasingConvention(nameType);
|
|
144
151
|
const sanitizedName = sanitizeName(name);
|
|
145
152
|
const parts = getNameParts(sanitizedName);
|
|
146
153
|
const [firstPart, ...otherParts] = parts;
|
|
@@ -152,7 +159,9 @@ export function normalizeName(
|
|
|
152
159
|
.join("");
|
|
153
160
|
|
|
154
161
|
const normalized = checkBeginning(`${normalizedFirstPart}${normalizedParts}`);
|
|
155
|
-
return shouldGuard
|
|
162
|
+
return shouldGuard
|
|
163
|
+
? guardReservedNames(normalized, nameType, customReservedNames)
|
|
164
|
+
: normalized;
|
|
156
165
|
}
|
|
157
166
|
|
|
158
167
|
function checkBeginning(name: string): string {
|
|
@@ -11,11 +11,17 @@ import {
|
|
|
11
11
|
ArraySchema,
|
|
12
12
|
DictionarySchema,
|
|
13
13
|
SchemaResponse,
|
|
14
|
-
ComplexSchema
|
|
14
|
+
ComplexSchema,
|
|
15
|
+
OAuth2SecurityScheme,
|
|
16
|
+
KeySecurityScheme,
|
|
17
|
+
ParameterLocation,
|
|
18
|
+
Security
|
|
15
19
|
} from "@autorest/codemodel";
|
|
16
20
|
import { getStringForValue } from "./valueHelpers";
|
|
17
21
|
import { getLanguageMetadata } from "./languageHelpers";
|
|
18
|
-
import { normalizeName, NameType
|
|
22
|
+
import { normalizeName, NameType } from "./nameUtils";
|
|
23
|
+
import { logger } from "./logger";
|
|
24
|
+
import { getAutorestOptions } from "../autorestSession";
|
|
19
25
|
|
|
20
26
|
/**
|
|
21
27
|
* Extracts parents from an ObjectSchema
|
|
@@ -68,7 +74,7 @@ export function getTypeForSchema(
|
|
|
68
74
|
): TypeDetails {
|
|
69
75
|
let typeName: string = "";
|
|
70
76
|
let usedModels: string[] = [];
|
|
71
|
-
let defaultValue
|
|
77
|
+
let defaultValue = undefined;
|
|
72
78
|
let kind: PropertyKind = PropertyKind.Primitive;
|
|
73
79
|
switch (schema.type) {
|
|
74
80
|
case SchemaType.Any:
|
|
@@ -194,7 +200,7 @@ export function getTypeForSchema(
|
|
|
194
200
|
usedModels,
|
|
195
201
|
isConstant: schema.type === SchemaType.Constant,
|
|
196
202
|
nullable: isNullable,
|
|
197
|
-
|
|
203
|
+
defaultValue
|
|
198
204
|
};
|
|
199
205
|
}
|
|
200
206
|
|
|
@@ -221,3 +227,44 @@ export function getSchemaTypeDocumentation(schema: Schema) {
|
|
|
221
227
|
return "";
|
|
222
228
|
}
|
|
223
229
|
}
|
|
230
|
+
|
|
231
|
+
export function getSecurityInfoFromModel(security: Security) {
|
|
232
|
+
const { addCredentials } = getAutorestOptions();
|
|
233
|
+
const credentialScopes: Set<string> = new Set<string>();
|
|
234
|
+
let credentialKeyHeaderName: string = "";
|
|
235
|
+
for (const securitySchema of security.schemes) {
|
|
236
|
+
if (securitySchema.type === "OAuth2") {
|
|
237
|
+
(securitySchema as OAuth2SecurityScheme).scopes.forEach(scope => {
|
|
238
|
+
const scopes = scope.split(',');
|
|
239
|
+
for(const scope of scopes) {
|
|
240
|
+
credentialScopes.add(scope);
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
} else if (
|
|
244
|
+
credentialKeyHeaderName === "" &&
|
|
245
|
+
securitySchema.type === "Key" &&
|
|
246
|
+
(securitySchema as KeySecurityScheme).in === ParameterLocation.Header
|
|
247
|
+
) {
|
|
248
|
+
credentialKeyHeaderName = (securitySchema as KeySecurityScheme).name;
|
|
249
|
+
} else if (
|
|
250
|
+
credentialKeyHeaderName !== "" &&
|
|
251
|
+
credentialKeyHeaderName !== (securitySchema as KeySecurityScheme).name &&
|
|
252
|
+
securitySchema.type === "Key" &&
|
|
253
|
+
(securitySchema as KeySecurityScheme).in === ParameterLocation.Header
|
|
254
|
+
) {
|
|
255
|
+
logger.warning(
|
|
256
|
+
`Set multiple headers for key credential has not been supported yet`
|
|
257
|
+
);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
const scopes: string[] = [];
|
|
261
|
+
credentialScopes.forEach(item => {
|
|
262
|
+
scopes.push(item);
|
|
263
|
+
});
|
|
264
|
+
return {
|
|
265
|
+
addCredentials:
|
|
266
|
+
addCredentials === false ? false : security.authenticationRequired,
|
|
267
|
+
credentialScopes: scopes,
|
|
268
|
+
credentialKeyHeaderName: credentialKeyHeaderName
|
|
269
|
+
};
|
|
270
|
+
}
|