@autorest/typescript 6.0.0-beta.7 → 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} +41 -5
- 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 +18 -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.d.ts.map +1 -1
- package/dist/src/generators/LROGenerator.js +5 -13
- 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 +303 -61
- package/dist/src/generators/clientFileGenerator.js.map +1 -1
- package/dist/src/generators/indexGenerator.d.ts +1 -1
- package/dist/src/generators/indexGenerator.d.ts.map +1 -1
- package/dist/src/generators/indexGenerator.js +143 -11
- 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 +81 -82
- 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 +92 -125
- 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 +3 -3
- 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} +41 -5
- 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 +267 -79
- 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 +54 -26
- 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 +47 -20
- 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/lroImpl.d.ts +16 -0
- package/dist/src/lroImpl.d.ts.map +1 -0
- package/dist/src/lroImpl.js +45 -0
- package/dist/src/lroImpl.js.map +1 -0
- 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 -43
- 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 +45 -29
- 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 +64 -15
- 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 +3 -2
- package/dist/src/restLevelClient/getPropertySignature.d.ts.map +1 -1
- package/dist/src/restLevelClient/getPropertySignature.js +23 -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 +12 -2
- package/dist/src/restLevelClient/schemaHelpers.d.ts.map +1 -1
- package/dist/src/restLevelClient/schemaHelpers.js +48 -14
- 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 +1 -1
- package/dist/src/transforms/mapperTransforms.d.ts.map +1 -1
- package/dist/src/transforms/mapperTransforms.js +30 -27
- 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 -40
- 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 +148 -61
- 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.d.ts.map +1 -1
- package/dist/src/utils/valueHelpers.js +2 -1
- package/dist/src/utils/valueHelpers.js.map +1 -1
- package/package.json +59 -39
- package/src/autorestSession.ts +26 -18
- package/src/conflictResolver.ts +61 -0
- package/src/generators/LROGenerator.ts +2 -16
- package/src/generators/clientFileGenerator.ts +400 -50
- package/src/generators/indexGenerator.ts +166 -14
- package/src/generators/mappersGenerator.ts +108 -8
- package/src/generators/modelsGenerator.ts +101 -98
- package/src/generators/operationGenerator.ts +63 -122
- 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 +3 -3
- 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 +305 -82
- package/src/generators/static/readmeFileGenerator.ts +85 -42
- package/src/generators/static/rlcREADME.md.hbs +71 -0
- package/src/generators/static/rollupConfigFileGenerator.ts +13 -71
- package/src/generators/static/tsConfigFileGenerator.ts +55 -21
- 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/lroImpl.ts +26 -0
- 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 -55
- package/src/restLevelClient/generatePollingHelper.ts +19 -0
- package/src/restLevelClient/generateResponseTypes.ts +53 -22
- package/src/restLevelClient/generateRestLevel.ts +65 -8
- package/src/restLevelClient/generateSchemaTypes.ts +43 -8
- package/src/restLevelClient/generateTopLevelIndexFile.ts +37 -0
- package/src/restLevelClient/getPropertySignature.ts +31 -6
- 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 +51 -9
- package/src/transforms/mapperTransforms.ts +12 -6
- 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 +41 -45
- package/src/utils/autorestOptions.ts +203 -86
- 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/src/utils/valueHelpers.ts +1 -0
- package/CHANGELOG.md +0 -44
- package/dist/src/coreClientLro.d.ts +0 -26
- package/dist/src/coreClientLro.d.ts.map +0 -1
- package/dist/src/coreClientLro.js +0 -207
- package/dist/src/coreClientLro.js.map +0 -1
- package/dist/src/coreHttpLro.d.ts +0 -26
- package/dist/src/coreHttpLro.d.ts.map +0 -1
- package/dist/src/coreHttpLro.js +0 -186
- package/dist/src/coreHttpLro.js.map +0 -1
- 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/dist/src/lro/azureAsyncPolling.d.ts +0 -3
- package/dist/src/lro/azureAsyncPolling.d.ts.map +0 -1
- package/dist/src/lro/azureAsyncPolling.js +0 -71
- package/dist/src/lro/azureAsyncPolling.js.map +0 -1
- package/dist/src/lro/bodyPolling.d.ts +0 -8
- package/dist/src/lro/bodyPolling.d.ts.map +0 -1
- package/dist/src/lro/bodyPolling.js +0 -34
- package/dist/src/lro/bodyPolling.js.map +0 -1
- package/dist/src/lro/index.d.ts +0 -4
- package/dist/src/lro/index.d.ts.map +0 -1
- package/dist/src/lro/index.js +0 -10
- package/dist/src/lro/index.js.map +0 -1
- package/dist/src/lro/locationPolling.d.ts +0 -3
- package/dist/src/lro/locationPolling.d.ts.map +0 -1
- package/dist/src/lro/locationPolling.js +0 -18
- package/dist/src/lro/locationPolling.js.map +0 -1
- package/dist/src/lro/lroEngine.d.ts +0 -14
- package/dist/src/lro/lroEngine.d.ts.map +0 -1
- package/dist/src/lro/lroEngine.js +0 -38
- package/dist/src/lro/lroEngine.js.map +0 -1
- package/dist/src/lro/models.d.ts +0 -138
- package/dist/src/lro/models.d.ts.map +0 -1
- package/dist/src/lro/models.js +0 -12
- package/dist/src/lro/models.js.map +0 -1
- package/dist/src/lro/operation.d.ts +0 -36
- package/dist/src/lro/operation.d.ts.map +0 -1
- package/dist/src/lro/operation.js +0 -89
- package/dist/src/lro/operation.js.map +0 -1
- package/dist/src/lro/passthrough.d.ts +0 -3
- package/dist/src/lro/passthrough.d.ts.map +0 -1
- package/dist/src/lro/passthrough.js +0 -14
- package/dist/src/lro/passthrough.js.map +0 -1
- package/dist/src/lro/requestUtils.d.ts +0 -16
- package/dist/src/lro/requestUtils.d.ts.map +0 -1
- package/dist/src/lro/requestUtils.js +0 -76
- package/dist/src/lro/requestUtils.js.map +0 -1
- package/dist/src/lro/stateMachine.d.ts +0 -18
- package/dist/src/lro/stateMachine.d.ts.map +0 -1
- package/dist/src/lro/stateMachine.js +0 -90
- package/dist/src/lro/stateMachine.js.map +0 -1
- package/src/coreClientLro.ts +0 -315
- package/src/coreHttpLro.ts +0 -268
- package/src/generators/clientContextFileGenerator.ts +0 -405
- package/src/lro/azureAsyncPolling.ts +0 -82
- package/src/lro/bodyPolling.ts +0 -34
- package/src/lro/index.ts +0 -18
- package/src/lro/locationPolling.ts +0 -20
- package/src/lro/lroEngine.ts +0 -53
- package/src/lro/models.ts +0 -165
- package/src/lro/operation.ts +0 -112
- package/src/lro/passthrough.ts +0 -15
- package/src/lro/requestUtils.ts +0 -94
- package/src/lro/stateMachine.ts +0 -108
|
@@ -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);
|
|
@@ -30,13 +32,24 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
|
|
|
30
32
|
const skipEnumValidation = await getSkipEnumValidation(host);
|
|
31
33
|
const azureOutputDirectory = await getAzureOutputDirectoryPath(host);
|
|
32
34
|
const headAsBoolean = await getHeadAsBoolean(host);
|
|
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);
|
|
33
44
|
|
|
34
45
|
return {
|
|
35
46
|
azureArm,
|
|
36
47
|
addCredentials,
|
|
37
|
-
|
|
38
|
-
|
|
48
|
+
security,
|
|
49
|
+
securityHeaderName,
|
|
50
|
+
securityScopes,
|
|
39
51
|
restLevelClient,
|
|
52
|
+
rlcShortcut,
|
|
40
53
|
srcPath,
|
|
41
54
|
outputPath,
|
|
42
55
|
packageDetails,
|
|
@@ -51,68 +64,127 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
|
|
|
51
64
|
skipEnumValidation,
|
|
52
65
|
title,
|
|
53
66
|
azureOutputDirectory,
|
|
54
|
-
headAsBoolean
|
|
67
|
+
headAsBoolean,
|
|
68
|
+
isTestPackage,
|
|
69
|
+
generateTest,
|
|
70
|
+
batch,
|
|
71
|
+
multiClient,
|
|
72
|
+
generateSample,
|
|
73
|
+
azureSdkForJs,
|
|
74
|
+
productDocLink,
|
|
75
|
+
coreHttpCompatMode,
|
|
76
|
+
dependencyInfo
|
|
55
77
|
};
|
|
56
78
|
}
|
|
57
79
|
|
|
58
|
-
async function
|
|
59
|
-
|
|
80
|
+
async function getHasShortcutMethods(
|
|
81
|
+
host: AutorestExtensionHost
|
|
82
|
+
): Promise<boolean> {
|
|
83
|
+
const headAsBoolean = await host.getValue("rlc-shortcut");
|
|
60
84
|
|
|
61
85
|
return Boolean(headAsBoolean);
|
|
62
86
|
}
|
|
63
87
|
|
|
64
|
-
async function
|
|
65
|
-
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");
|
|
96
|
+
return isTestPackage === null ? false : Boolean(isTestPackage);
|
|
97
|
+
}
|
|
98
|
+
|
|
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");
|
|
66
122
|
|
|
67
123
|
return skipEnumValidation === true;
|
|
68
124
|
}
|
|
69
125
|
|
|
70
|
-
async function getAllowInsecureConnection(
|
|
71
|
-
|
|
126
|
+
async function getAllowInsecureConnection(
|
|
127
|
+
host: AutorestExtensionHost
|
|
128
|
+
): Promise<boolean> {
|
|
129
|
+
return (await host.getValue("allow-insecure-connection")) || false;
|
|
72
130
|
}
|
|
73
131
|
|
|
74
|
-
async function getIgnoreNullableOnOptional(
|
|
132
|
+
async function getIgnoreNullableOnOptional(
|
|
133
|
+
host: AutorestExtensionHost
|
|
134
|
+
): Promise<boolean> {
|
|
75
135
|
const isAzureArm = await getIsAzureArm(host);
|
|
76
|
-
return (await host.
|
|
136
|
+
return (await host.getValue("ignore-nullable-on-optional"))
|
|
77
137
|
? true
|
|
78
138
|
: isAzureArm;
|
|
79
139
|
}
|
|
80
140
|
|
|
81
|
-
async function getDisableAsyncOperators(
|
|
82
|
-
|
|
141
|
+
async function getDisableAsyncOperators(
|
|
142
|
+
host: AutorestExtensionHost
|
|
143
|
+
): Promise<boolean> {
|
|
144
|
+
return (await host.getValue("disable-async-iterators")) === true;
|
|
83
145
|
}
|
|
84
146
|
|
|
85
|
-
async function getHideClients(host:
|
|
86
|
-
return (await host.
|
|
147
|
+
async function getHideClients(host: AutorestExtensionHost): Promise<boolean> {
|
|
148
|
+
return (await host.getValue("hide-clients")) || false;
|
|
87
149
|
}
|
|
88
|
-
async function getGenerateMetadata(host:
|
|
89
|
-
return (await host.
|
|
150
|
+
async function getGenerateMetadata(host: AutorestExtensionHost) {
|
|
151
|
+
return (await host.getValue("generate-metadata")) !== false;
|
|
90
152
|
}
|
|
91
153
|
|
|
92
|
-
async function getLicenseHeader(host:
|
|
93
|
-
|
|
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;
|
|
94
160
|
}
|
|
95
161
|
|
|
96
|
-
async function getTitle(
|
|
97
|
-
|
|
162
|
+
async function getTitle(
|
|
163
|
+
host: AutorestExtensionHost
|
|
164
|
+
): Promise<string | undefined> {
|
|
165
|
+
return (await host.getValue("title")) || undefined;
|
|
98
166
|
}
|
|
99
167
|
|
|
100
|
-
async function getSrcPath(host:
|
|
101
|
-
return ((await host.
|
|
168
|
+
async function getSrcPath(host: AutorestExtensionHost): Promise<string> {
|
|
169
|
+
return ((await host.getValue("source-code-folder-path")) as string) || "src";
|
|
102
170
|
}
|
|
103
171
|
|
|
104
|
-
async function getOutputPath(
|
|
105
|
-
|
|
172
|
+
async function getOutputPath(
|
|
173
|
+
host: AutorestExtensionHost
|
|
174
|
+
): Promise<string | undefined> {
|
|
175
|
+
return (await host.getValue("output-folder")) || undefined;
|
|
106
176
|
}
|
|
107
177
|
|
|
108
|
-
async function
|
|
109
|
-
host:
|
|
178
|
+
async function getSecurityHeaderName(
|
|
179
|
+
host: AutorestExtensionHost
|
|
110
180
|
): Promise<string | undefined> {
|
|
111
|
-
return (await host.
|
|
181
|
+
return (await host.getValue("security-header-name")) || undefined;
|
|
112
182
|
}
|
|
113
183
|
|
|
114
|
-
async function getAddCredentials(
|
|
115
|
-
|
|
184
|
+
async function getAddCredentials(
|
|
185
|
+
host: AutorestExtensionHost
|
|
186
|
+
): Promise<boolean> {
|
|
187
|
+
const addCredentials = await host.getValue("add-credentials");
|
|
116
188
|
|
|
117
189
|
// Only set addCredentials to false if explicitly set to false
|
|
118
190
|
// otherwise default to true
|
|
@@ -122,34 +194,46 @@ async function getAddCredentials(host: Host): Promise<boolean> {
|
|
|
122
194
|
return true;
|
|
123
195
|
}
|
|
124
196
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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";
|
|
128
208
|
|
|
129
209
|
return flag || openapi;
|
|
130
210
|
}
|
|
131
211
|
|
|
132
|
-
async function getRestLevelClient(
|
|
133
|
-
|
|
212
|
+
async function getRestLevelClient(
|
|
213
|
+
host: AutorestExtensionHost
|
|
214
|
+
): Promise<boolean> {
|
|
215
|
+
return (await host.getValue("rest-level-client")) === true;
|
|
134
216
|
}
|
|
135
217
|
|
|
136
|
-
async function getUseCoreV2(host:
|
|
137
|
-
const useCoreV2Option
|
|
218
|
+
async function getUseCoreV2(host: AutorestExtensionHost): Promise<boolean> {
|
|
219
|
+
const useCoreV2Option = await host.getValue("use-core-v2");
|
|
138
220
|
return useCoreV2Option === null ? true : Boolean(useCoreV2Option);
|
|
139
221
|
}
|
|
140
222
|
|
|
141
|
-
async function getTracingInfo(
|
|
223
|
+
async function getTracingInfo(
|
|
224
|
+
host: AutorestExtensionHost
|
|
225
|
+
): Promise<TracingInfo | undefined> {
|
|
142
226
|
const tracing: TracingInfo | undefined =
|
|
143
|
-
(await host.
|
|
227
|
+
(await host.getValue("tracing-info")) || undefined;
|
|
144
228
|
|
|
145
|
-
if (tracing && tracing.namespace
|
|
229
|
+
if (tracing && tracing.namespace) {
|
|
146
230
|
return tracing;
|
|
147
231
|
}
|
|
148
232
|
|
|
149
|
-
const namespace =
|
|
150
|
-
(await host.
|
|
151
|
-
const packagePrefix =
|
|
152
|
-
(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;
|
|
153
237
|
|
|
154
238
|
if (packagePrefix && namespace) {
|
|
155
239
|
return {
|
|
@@ -167,13 +251,17 @@ async function getTracingInfo(host: Host): Promise<TracingInfo | undefined> {
|
|
|
167
251
|
);
|
|
168
252
|
}
|
|
169
253
|
|
|
170
|
-
async function getPackageDetails(
|
|
254
|
+
async function getPackageDetails(
|
|
255
|
+
host: AutorestExtensionHost
|
|
256
|
+
): Promise<PackageDetails> {
|
|
171
257
|
const { model } = getSession();
|
|
172
258
|
const name = normalizeName(model.language.default.name, NameType.File);
|
|
173
259
|
// TODO: Look for an existing package.json and
|
|
174
|
-
const packageName = (await host.
|
|
175
|
-
const packageNameParts =
|
|
176
|
-
|
|
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";
|
|
177
265
|
|
|
178
266
|
return {
|
|
179
267
|
name: packageName,
|
|
@@ -184,46 +272,20 @@ async function getPackageDetails(host: Host): Promise<PackageDetails> {
|
|
|
184
272
|
};
|
|
185
273
|
}
|
|
186
274
|
|
|
187
|
-
export async function
|
|
188
|
-
host:
|
|
275
|
+
export async function getSecurityScopes(
|
|
276
|
+
host: AutorestExtensionHost
|
|
189
277
|
): Promise<string[] | undefined> {
|
|
190
|
-
const
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
if (credentialScopes && !addCredentials) {
|
|
195
|
-
throw new Error(
|
|
196
|
-
"--credential-scopes must be used with the --add-credentials flag"
|
|
197
|
-
);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
if (!credentialScopes) {
|
|
201
|
-
if (azureArm) {
|
|
202
|
-
return ["https://management.azure.com/.default"];
|
|
203
|
-
} else if (addCredentials) {
|
|
204
|
-
host.Message({
|
|
205
|
-
Channel: Channel.Warning,
|
|
206
|
-
Text: `You have default credential policy BearerTokenCredentialPolicy
|
|
207
|
-
but not the --credential-scopes flag set while generating non-management plane code.
|
|
208
|
-
This is not recommended because it forces the customer to pass credential scopes
|
|
209
|
-
through kwargs if they want to authenticate.`
|
|
210
|
-
});
|
|
211
|
-
}
|
|
278
|
+
const securityScopes: string | undefined = await host.getValue("security-scopes");
|
|
279
|
+
if(securityScopes !== undefined && typeof securityScopes === "string") {
|
|
280
|
+
return securityScopes.split(",");
|
|
212
281
|
}
|
|
213
|
-
|
|
214
|
-
if (typeof credentialScopes === "string") {
|
|
215
|
-
return credentialScopes.split(",");
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
return undefined;
|
|
282
|
+
return securityScopes;
|
|
219
283
|
}
|
|
220
284
|
|
|
221
285
|
async function getAzureOutputDirectoryPath(
|
|
222
|
-
host:
|
|
286
|
+
host: AutorestExtensionHost
|
|
223
287
|
): Promise<string | undefined> {
|
|
224
|
-
const outputDirectoryPath
|
|
225
|
-
"outputFolderUri"
|
|
226
|
-
);
|
|
288
|
+
const outputDirectoryPath = await host.getValue<string>("outputFolderUri");
|
|
227
289
|
const outputDirectoryRelativePath: string | undefined = outputDirectoryPath
|
|
228
290
|
?.replace(/\/$/, "")
|
|
229
291
|
.split("/")
|
|
@@ -233,3 +295,58 @@ async function getAzureOutputDirectoryPath(
|
|
|
233
295
|
? outputDirectoryRelativePath
|
|
234
296
|
: undefined;
|
|
235
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
|
+
}
|
|
@@ -60,6 +60,7 @@ export function getStringForValue(
|
|
|
60
60
|
case MapperTypes.String:
|
|
61
61
|
case MapperTypes.TimeSpan:
|
|
62
62
|
case SchemaType.Choice:
|
|
63
|
+
case SchemaType.SealedChoice:
|
|
63
64
|
case MapperTypes.Enum:
|
|
64
65
|
const valueString = !!value ? value.toString() : "";
|
|
65
66
|
return quotedStrings ? `"${valueString}"` : `${valueString}`;
|