@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
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ChoiceSchema,
|
|
3
|
+
CodeModel,
|
|
4
|
+
ConstantSchema,
|
|
5
|
+
ImplementationLocation,
|
|
6
|
+
Operation,
|
|
7
|
+
OperationGroup,
|
|
8
|
+
SchemaType
|
|
9
|
+
} from "@autorest/codemodel";
|
|
10
|
+
import { ClientDetails } from "../models/clientDetails";
|
|
11
|
+
import { SampleGroup, SampleDetails } from "../models/sampleDetails";
|
|
12
|
+
import { ExampleValue, TestCodeModel } from "@autorest/testmodeler/dist/src/core/model";
|
|
13
|
+
import { getLanguageMetadata } from "../utils/languageHelpers";
|
|
14
|
+
import { getAutorestOptions, getSession } from "../autorestSession";
|
|
15
|
+
import {
|
|
16
|
+
getOperationFullName,
|
|
17
|
+
NameType,
|
|
18
|
+
normalizeName
|
|
19
|
+
} from "../utils/nameUtils";
|
|
20
|
+
import { calculateMethodName } from "../generators/utils/operationsUtils";
|
|
21
|
+
import { camelCase } from "@azure-tools/codegen";
|
|
22
|
+
import { OperationGroupDetails } from "../models/operationDetails";
|
|
23
|
+
import { getPublicMethodName } from "../generators/utils/pagingOperations";
|
|
24
|
+
import { getTypeForSchema } from "../utils/schemaHelpers";
|
|
25
|
+
|
|
26
|
+
export async function transformSamples(
|
|
27
|
+
codeModel: CodeModel,
|
|
28
|
+
clientDetails: ClientDetails
|
|
29
|
+
): Promise<SampleGroup[]> {
|
|
30
|
+
return await getAllExamples(codeModel as TestCodeModel, clientDetails);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function getTransformedOperationGroup(
|
|
34
|
+
operationGroup: OperationGroup,
|
|
35
|
+
operationGroupDetails: OperationGroupDetails[]
|
|
36
|
+
) {
|
|
37
|
+
return operationGroupDetails.filter(
|
|
38
|
+
operationGroupDetail =>
|
|
39
|
+
operationGroup.$key === operationGroupDetail.originalKey
|
|
40
|
+
)[0];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function getTransformedOperation(
|
|
44
|
+
operationGroup: OperationGroup,
|
|
45
|
+
operation: Operation,
|
|
46
|
+
operationGroupDetails: OperationGroupDetails,
|
|
47
|
+
clientName: string
|
|
48
|
+
) {
|
|
49
|
+
return operationGroupDetails.operations.filter(
|
|
50
|
+
operationDetail =>
|
|
51
|
+
operationDetail.fullName ===
|
|
52
|
+
getOperationFullName(operationGroup, operation, clientName)
|
|
53
|
+
)[0];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export async function getAllExamples(
|
|
57
|
+
codeModel: TestCodeModel,
|
|
58
|
+
clientDetails: ClientDetails
|
|
59
|
+
) {
|
|
60
|
+
const operationGroupDetails = clientDetails.operationGroups;
|
|
61
|
+
const { packageDetails } = getAutorestOptions();
|
|
62
|
+
const session = getSession();
|
|
63
|
+
let examplesModels: SampleGroup[] = [];
|
|
64
|
+
if (codeModel?.testModel?.mockTest?.exampleGroups !== undefined) {
|
|
65
|
+
for (const exampleGroup of codeModel.testModel.mockTest.exampleGroups) {
|
|
66
|
+
const clientName = getLanguageMetadata(codeModel.language).name;
|
|
67
|
+
const ogDetails = getTransformedOperationGroup(
|
|
68
|
+
exampleGroup.operationGroup,
|
|
69
|
+
operationGroupDetails
|
|
70
|
+
);
|
|
71
|
+
if (ogDetails === undefined) {
|
|
72
|
+
session.error("An error was encountered while transforming sample", [
|
|
73
|
+
exampleGroup.operationId
|
|
74
|
+
]);
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (!(exampleGroup?.examples?.length > 0)) {
|
|
78
|
+
// Skip tranforming sample detail no given example in group
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const opDetails = getTransformedOperation(
|
|
82
|
+
exampleGroup.operationGroup,
|
|
83
|
+
exampleGroup.operation,
|
|
84
|
+
ogDetails,
|
|
85
|
+
clientName
|
|
86
|
+
);
|
|
87
|
+
let methodName = calculateMethodName(opDetails);
|
|
88
|
+
if (opDetails.isLro && opDetails.pagination === undefined) {
|
|
89
|
+
methodName = `${methodName}AndWait`;
|
|
90
|
+
} else if (opDetails.pagination) {
|
|
91
|
+
methodName = getPublicMethodName(opDetails);
|
|
92
|
+
}
|
|
93
|
+
const opGroupName = ogDetails.name;
|
|
94
|
+
const importedTypeSet = new Set<string>();
|
|
95
|
+
const operatonConcante = `${exampleGroup?.operationGroup?.language?.default?.name}${exampleGroup?.operation?.language?.default?.name}`;
|
|
96
|
+
const sampleGroup: SampleGroup = {
|
|
97
|
+
sampleFileName: `${camelCase(
|
|
98
|
+
_transformSpecialLetterToSpace(operatonConcante)
|
|
99
|
+
)}Sample`,
|
|
100
|
+
clientClassName: clientName,
|
|
101
|
+
clientPackageName: packageDetails.name,
|
|
102
|
+
samples: [],
|
|
103
|
+
importedTypes: []
|
|
104
|
+
};
|
|
105
|
+
try {
|
|
106
|
+
for (const example of exampleGroup.examples) {
|
|
107
|
+
const sample: SampleDetails = {
|
|
108
|
+
sampleFunctionName: camelCase(
|
|
109
|
+
_transformSpecialLetterToSpace(example?.name)
|
|
110
|
+
),
|
|
111
|
+
clientParameterNames: "",
|
|
112
|
+
methodParameterNames: "",
|
|
113
|
+
clientParamAssignments: [],
|
|
114
|
+
methodParamAssignments: [],
|
|
115
|
+
originalFileLocation: example.originalFile,
|
|
116
|
+
isTopLevel: ogDetails.isTopLevel,
|
|
117
|
+
isPaging: opDetails.pagination !== undefined,
|
|
118
|
+
operationName: methodName,
|
|
119
|
+
clientClassName: clientName,
|
|
120
|
+
operationGroupName: normalizeName(
|
|
121
|
+
opGroupName,
|
|
122
|
+
NameType.Property,
|
|
123
|
+
true
|
|
124
|
+
),
|
|
125
|
+
operationDescription: getLanguageMetadata(
|
|
126
|
+
exampleGroup.operation.language
|
|
127
|
+
).description
|
|
128
|
+
};
|
|
129
|
+
const clientParameterNames = ["credential"];
|
|
130
|
+
const requiredParams = clientDetails.parameters.filter(
|
|
131
|
+
param =>
|
|
132
|
+
param.required &&
|
|
133
|
+
param.implementationLocation === ImplementationLocation.Client &&
|
|
134
|
+
!param.defaultValue &&
|
|
135
|
+
param.schemaType !== SchemaType.Constant
|
|
136
|
+
);
|
|
137
|
+
for (const clientParameter of example.clientParameters) {
|
|
138
|
+
if (
|
|
139
|
+
clientParameter.exampleValue.schema.type === SchemaType.Constant
|
|
140
|
+
) {
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const parameterName = normalizeName(
|
|
144
|
+
getLanguageMetadata(clientParameter.exampleValue.language).name,
|
|
145
|
+
NameType.Parameter,
|
|
146
|
+
true
|
|
147
|
+
);
|
|
148
|
+
const paramAssignment =
|
|
149
|
+
`const ${parameterName} = ` +
|
|
150
|
+
getParameterAssignment(clientParameter.exampleValue);
|
|
151
|
+
sample.clientParamAssignments.push(paramAssignment);
|
|
152
|
+
clientParameterNames.push(parameterName);
|
|
153
|
+
}
|
|
154
|
+
if (
|
|
155
|
+
clientParameterNames.indexOf("subscriptionId") < 0 &&
|
|
156
|
+
requiredParams.find(param => param.name === "subscriptionId")
|
|
157
|
+
) {
|
|
158
|
+
const subscriptionIdAssignment = `const subscriptionId = "00000000-0000-0000-0000-000000000000"`;
|
|
159
|
+
sample.clientParamAssignments.push(subscriptionIdAssignment);
|
|
160
|
+
clientParameterNames.push("subscriptionId");
|
|
161
|
+
}
|
|
162
|
+
if (clientParameterNames.length > 0) {
|
|
163
|
+
sample.clientParameterNames = clientParameterNames.join(", ");
|
|
164
|
+
}
|
|
165
|
+
const methodParameterNames = [];
|
|
166
|
+
const optionalParams: [string, string][] = [];
|
|
167
|
+
for (const methodParameter of example.methodParameters) {
|
|
168
|
+
if (
|
|
169
|
+
methodParameter.exampleValue.schema.type === SchemaType.Constant
|
|
170
|
+
) {
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
const parameterName = normalizeName(
|
|
174
|
+
getLanguageMetadata(methodParameter.exampleValue.language).name,
|
|
175
|
+
NameType.Parameter,
|
|
176
|
+
true
|
|
177
|
+
);
|
|
178
|
+
const parameterTypeDetails = getTypeForSchema(
|
|
179
|
+
methodParameter.exampleValue.schema
|
|
180
|
+
);
|
|
181
|
+
const parameterTypeName = parameterTypeDetails.typeName;
|
|
182
|
+
let paramAssignment = "";
|
|
183
|
+
if (methodParameter.parameter.protocol?.http?.["in"] === "body") {
|
|
184
|
+
let bodySchemaName = parameterTypeName;
|
|
185
|
+
if (
|
|
186
|
+
methodParameter.exampleValue.schema.type ===
|
|
187
|
+
SchemaType.AnyObject ||
|
|
188
|
+
methodParameter.exampleValue.schema.type === SchemaType.Any
|
|
189
|
+
) {
|
|
190
|
+
bodySchemaName = "Record<string, unknown>";
|
|
191
|
+
} else if (methodParameter.exampleValue.schema.type !== SchemaType.Dictionary) {
|
|
192
|
+
importedTypeSet.add(parameterTypeName);
|
|
193
|
+
}
|
|
194
|
+
paramAssignment =
|
|
195
|
+
`const ${parameterName}: ${bodySchemaName} = ` +
|
|
196
|
+
getParameterAssignment(methodParameter.exampleValue);
|
|
197
|
+
} else {
|
|
198
|
+
paramAssignment =
|
|
199
|
+
`const ${parameterName} = ` +
|
|
200
|
+
getParameterAssignment(methodParameter.exampleValue);
|
|
201
|
+
}
|
|
202
|
+
if (!methodParameter.parameter.required) {
|
|
203
|
+
optionalParams.push([parameterName, parameterTypeName]);
|
|
204
|
+
} else {
|
|
205
|
+
methodParameterNames.push(parameterName);
|
|
206
|
+
}
|
|
207
|
+
sample.methodParamAssignments.push(paramAssignment);
|
|
208
|
+
}
|
|
209
|
+
if (optionalParams.length > 0) {
|
|
210
|
+
const optionTypeName = `${opDetails.typeDetails.typeName}OptionalParams`;
|
|
211
|
+
importedTypeSet.add(optionTypeName);
|
|
212
|
+
const optionAssignment = `const options: ${optionTypeName} = {${optionalParams
|
|
213
|
+
.map(item => {
|
|
214
|
+
return item[0];
|
|
215
|
+
})
|
|
216
|
+
.join(", ")}}`;
|
|
217
|
+
sample.methodParamAssignments.push(optionAssignment);
|
|
218
|
+
methodParameterNames.push("options");
|
|
219
|
+
}
|
|
220
|
+
if (methodParameterNames.length > 0) {
|
|
221
|
+
sample.methodParameterNames = methodParameterNames.join(", ");
|
|
222
|
+
}
|
|
223
|
+
sampleGroup.samples.push(sample);
|
|
224
|
+
}
|
|
225
|
+
} catch (error) {
|
|
226
|
+
session.error("An error was encountered while transforming sample", [
|
|
227
|
+
exampleGroup.operationId
|
|
228
|
+
]);
|
|
229
|
+
throw error;
|
|
230
|
+
}
|
|
231
|
+
if (sampleGroup.samples.length > 0) {
|
|
232
|
+
// enrich the importedTypes after all examples resolved
|
|
233
|
+
sampleGroup.importedTypes = Array.from(importedTypeSet);
|
|
234
|
+
examplesModels.push(sampleGroup);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return examplesModels;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
function _transformSpecialLetterToSpace(str: string) {
|
|
242
|
+
if (!str) {
|
|
243
|
+
return str;
|
|
244
|
+
}
|
|
245
|
+
return str
|
|
246
|
+
.replace(/_/g, " ")
|
|
247
|
+
.replace(/\//g, " Or ")
|
|
248
|
+
.replace(/,|\.|\(|\)/g, " ")
|
|
249
|
+
.replace("'s ", " ");
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
function getParameterAssignment(exampleValue: ExampleValue) {
|
|
253
|
+
let schemaType = exampleValue.schema.type;
|
|
254
|
+
const rawValue = exampleValue.rawValue;
|
|
255
|
+
let retValue = rawValue;
|
|
256
|
+
switch (schemaType) {
|
|
257
|
+
case SchemaType.Constant:
|
|
258
|
+
const contentSchema = exampleValue.schema as ConstantSchema;
|
|
259
|
+
schemaType = contentSchema.valueType.type;
|
|
260
|
+
break;
|
|
261
|
+
case SchemaType.Choice:
|
|
262
|
+
case SchemaType.SealedChoice:
|
|
263
|
+
const choiceSchema = exampleValue.schema as ChoiceSchema;
|
|
264
|
+
schemaType = choiceSchema.choiceType.type;
|
|
265
|
+
break;
|
|
266
|
+
}
|
|
267
|
+
if (rawValue === null) {
|
|
268
|
+
switch (schemaType) {
|
|
269
|
+
case SchemaType.Object:
|
|
270
|
+
case SchemaType.Any:
|
|
271
|
+
case SchemaType.Dictionary:
|
|
272
|
+
case SchemaType.AnyObject:
|
|
273
|
+
retValue = `{}`;
|
|
274
|
+
break;
|
|
275
|
+
case SchemaType.Array:
|
|
276
|
+
retValue = `[]`;
|
|
277
|
+
break;
|
|
278
|
+
default:
|
|
279
|
+
retValue = undefined;
|
|
280
|
+
}
|
|
281
|
+
return retValue;
|
|
282
|
+
}
|
|
283
|
+
switch (schemaType) {
|
|
284
|
+
case SchemaType.String:
|
|
285
|
+
case SchemaType.Char:
|
|
286
|
+
case SchemaType.Time:
|
|
287
|
+
case SchemaType.Uuid:
|
|
288
|
+
case SchemaType.Uri:
|
|
289
|
+
case SchemaType.Credential:
|
|
290
|
+
case SchemaType.Duration:
|
|
291
|
+
retValue = `"${rawValue
|
|
292
|
+
?.toString()
|
|
293
|
+
.replace(/"/g, '\\"')
|
|
294
|
+
.replace(/\n/g, "\\n")}"`;
|
|
295
|
+
break;
|
|
296
|
+
case SchemaType.Boolean:
|
|
297
|
+
(retValue = rawValue), toString();
|
|
298
|
+
break;
|
|
299
|
+
case SchemaType.Object:
|
|
300
|
+
case SchemaType.Dictionary:
|
|
301
|
+
const values = [];
|
|
302
|
+
for (const prop in exampleValue.properties) {
|
|
303
|
+
const property = exampleValue.properties[prop];
|
|
304
|
+
if (property === undefined || property === null) {
|
|
305
|
+
continue;
|
|
306
|
+
}
|
|
307
|
+
const initPropName = property.language?.default?.name
|
|
308
|
+
? property.language?.default?.name
|
|
309
|
+
: prop;
|
|
310
|
+
const propName = normalizeName(initPropName, NameType.Property, true);
|
|
311
|
+
let propRetValue: string;
|
|
312
|
+
if (propName.indexOf("/") > -1 || propName.match(/^\d/)) {
|
|
313
|
+
propRetValue = `"${propName}": ` + getParameterAssignment(property);
|
|
314
|
+
} else {
|
|
315
|
+
propRetValue = `${propName}: ` + getParameterAssignment(property);
|
|
316
|
+
}
|
|
317
|
+
values.push(propRetValue);
|
|
318
|
+
}
|
|
319
|
+
if (values.length > 0) {
|
|
320
|
+
retValue = `{${values.join(", ")}}`;
|
|
321
|
+
} else {
|
|
322
|
+
retValue = "{}";
|
|
323
|
+
}
|
|
324
|
+
break;
|
|
325
|
+
case SchemaType.Array:
|
|
326
|
+
const valuesArr = [];
|
|
327
|
+
for (const element of <ExampleValue[]>exampleValue.elements) {
|
|
328
|
+
let propRetValueArr = getParameterAssignment(element);
|
|
329
|
+
valuesArr.push(propRetValueArr);
|
|
330
|
+
}
|
|
331
|
+
if (valuesArr.length > 0) {
|
|
332
|
+
retValue = `[${valuesArr.join(", ")}]`;
|
|
333
|
+
} else {
|
|
334
|
+
retValue = "[]";
|
|
335
|
+
}
|
|
336
|
+
break;
|
|
337
|
+
case SchemaType.Date:
|
|
338
|
+
case SchemaType.DateTime:
|
|
339
|
+
retValue = `new Date("${rawValue}")`;
|
|
340
|
+
break;
|
|
341
|
+
case SchemaType.Any:
|
|
342
|
+
case SchemaType.AnyObject:
|
|
343
|
+
retValue = `${JSON.stringify(rawValue)}`;
|
|
344
|
+
break;
|
|
345
|
+
default:
|
|
346
|
+
break;
|
|
347
|
+
}
|
|
348
|
+
return retValue;
|
|
349
|
+
}
|
|
@@ -8,7 +8,9 @@ import {
|
|
|
8
8
|
CodeModel,
|
|
9
9
|
ChoiceSchema,
|
|
10
10
|
SealedChoiceSchema,
|
|
11
|
-
SchemaType
|
|
11
|
+
SchemaType,
|
|
12
|
+
OAuth2SecurityScheme,
|
|
13
|
+
KeySecurityScheme
|
|
12
14
|
} from "@autorest/codemodel";
|
|
13
15
|
import { normalizeName, NameType } from "../utils/nameUtils";
|
|
14
16
|
import { getStringForValue } from "../utils/valueHelpers";
|
|
@@ -19,7 +21,6 @@ import { transformOptions } from "./optionsTransforms";
|
|
|
19
21
|
import { transformParameters } from "./parameterTransforms";
|
|
20
22
|
import { transformObjects, transformObject } from "./objectTransforms";
|
|
21
23
|
import { ObjectDetails } from "../models/modelDetails";
|
|
22
|
-
import { Host } from "@autorest/extension-base";
|
|
23
24
|
import { transformBaseUrl } from "./urlTransforms";
|
|
24
25
|
import { normalizeModelWithExtensions } from "./extensions";
|
|
25
26
|
import { transformGroups } from "./groupTransforms";
|
|
@@ -70,15 +71,17 @@ export function transformChoice(
|
|
|
70
71
|
name,
|
|
71
72
|
schemaType,
|
|
72
73
|
itemType,
|
|
73
|
-
description: `Defines values for ${
|
|
74
|
+
description: `Defines values for ${normalizeName(
|
|
75
|
+
metadata.name,
|
|
76
|
+
NameType.Interface
|
|
77
|
+
)}.`,
|
|
74
78
|
serializedName: metadata.name,
|
|
75
79
|
properties: extractProperties(choice)
|
|
76
80
|
};
|
|
77
81
|
}
|
|
78
82
|
|
|
79
83
|
export async function transformCodeModel(
|
|
80
|
-
codeModel: CodeModel
|
|
81
|
-
host: Host
|
|
84
|
+
codeModel: CodeModel
|
|
82
85
|
): Promise<ClientDetails> {
|
|
83
86
|
const { name: clientName } = getLanguageMetadata(codeModel.language);
|
|
84
87
|
const className = normalizeName(
|
|
@@ -98,12 +101,12 @@ export async function transformCodeModel(
|
|
|
98
101
|
|
|
99
102
|
const options = await transformOptions(operationGroups);
|
|
100
103
|
|
|
101
|
-
const [objects, groups, mappers, unions
|
|
104
|
+
const [objects, groups, parameters, mappers, unions] = await Promise.all([
|
|
102
105
|
transformObjects(codeModel, uberParents),
|
|
103
106
|
transformGroups(codeModel),
|
|
107
|
+
transformParameters(codeModel, options),
|
|
104
108
|
transformMappers(codeModel, uberParents, options),
|
|
105
|
-
transformChoices(codeModel)
|
|
106
|
-
transformParameters(codeModel, options)
|
|
109
|
+
transformChoices(codeModel)
|
|
107
110
|
]);
|
|
108
111
|
|
|
109
112
|
const baseUrl = transformBaseUrl(codeModel);
|
|
@@ -119,7 +122,9 @@ export async function transformCodeModel(
|
|
|
119
122
|
operationGroups,
|
|
120
123
|
parameters,
|
|
121
124
|
options,
|
|
122
|
-
endpoint: baseUrl
|
|
125
|
+
endpoint: baseUrl,
|
|
126
|
+
allTypes: [],
|
|
127
|
+
security: codeModel.security
|
|
123
128
|
};
|
|
124
129
|
}
|
|
125
130
|
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
3
|
|
|
4
4
|
import * as prettier from "prettier";
|
|
5
|
+
import * as fsextra from "fs-extra";
|
|
6
|
+
import * as path from "path";
|
|
5
7
|
import { CodeModel } from "@autorest/codemodel";
|
|
6
8
|
import { Project, IndentationText } from "ts-morph";
|
|
7
|
-
import {
|
|
9
|
+
import { AutorestExtensionHost } from "@autorest/extension-base";
|
|
8
10
|
import { transformCodeModel } from "./transforms/transforms";
|
|
9
|
-
import {
|
|
11
|
+
import { transformSamples } from './transforms/samplesTransforms';
|
|
10
12
|
import { generateClient } from "./generators/clientFileGenerator";
|
|
11
|
-
import { generateClientContext } from "./generators/clientContextFileGenerator";
|
|
12
13
|
import { generateModels } from "./generators/modelsGenerator";
|
|
13
14
|
import { generateMappers } from "./generators/mappersGenerator";
|
|
14
15
|
import { generateIndexFile } from "./generators/indexGenerator";
|
|
@@ -16,14 +17,18 @@ import { generatePackageJson } from "./generators/static/packageFileGenerator";
|
|
|
16
17
|
import { generateApiExtractorConfig } from "./generators/static/apiExtractorConfig";
|
|
17
18
|
import { generateLicenseFile } from "./generators/static/licenseFileGenerator";
|
|
18
19
|
import { generateReadmeFile } from "./generators/static/readmeFileGenerator";
|
|
20
|
+
import { generateSampleTestFile } from "./generators/test/sampleTestGenerator";
|
|
19
21
|
import { generateTsConfig } from "./generators/static/tsConfigFileGenerator";
|
|
20
22
|
import { generateRollupConfig } from "./generators/static/rollupConfigFileGenerator";
|
|
21
23
|
import { generateOperations } from "./generators/operationGenerator";
|
|
22
24
|
import { generateOperationsInterfaces } from "./generators/operationInterfaceGenerator";
|
|
25
|
+
import { generateSampleEnv } from "./generators/samples/sampleEnvGenerator";
|
|
26
|
+
import { generateHLCSamples } from "./generators/samples/hlcSampleGenerator";
|
|
23
27
|
import { generateParameters } from "./generators/parametersGenerator";
|
|
24
28
|
import { generateLroFiles } from "./generators/LROGenerator";
|
|
25
29
|
import { generateTracingFile } from "./generators/tracingFileGenerator";
|
|
26
30
|
import { getAutorestOptions } from "./autorestSession";
|
|
31
|
+
import { conflictResolver } from "./conflictResolver";
|
|
27
32
|
|
|
28
33
|
const prettierTypeScriptOptions: prettier.Options = {
|
|
29
34
|
parser: "typescript",
|
|
@@ -45,7 +50,7 @@ const prettierJSONOptions: prettier.Options = {
|
|
|
45
50
|
|
|
46
51
|
export async function generateTypeScriptLibrary(
|
|
47
52
|
codeModel: CodeModel,
|
|
48
|
-
host:
|
|
53
|
+
host: AutorestExtensionHost
|
|
49
54
|
): Promise<void> {
|
|
50
55
|
const project = new Project({
|
|
51
56
|
useInMemoryFileSystem: true,
|
|
@@ -56,46 +61,48 @@ export async function generateTypeScriptLibrary(
|
|
|
56
61
|
|
|
57
62
|
const {
|
|
58
63
|
packageDetails,
|
|
59
|
-
licenseHeader: shouldGenerateLicense
|
|
64
|
+
licenseHeader: shouldGenerateLicense,
|
|
65
|
+
generateTest,
|
|
66
|
+
generateSample,
|
|
67
|
+
outputPath,
|
|
68
|
+
srcPath
|
|
60
69
|
} = getAutorestOptions();
|
|
61
70
|
|
|
62
|
-
const clientDetails = await transformCodeModel(codeModel
|
|
63
|
-
|
|
64
|
-
clientDetails.operationGroups.forEach(operationGroup => {
|
|
65
|
-
const isConflict: boolean = checkForConflictWithDefinitions(
|
|
66
|
-
operationGroup.name,
|
|
67
|
-
clientDetails
|
|
68
|
-
);
|
|
69
|
-
|
|
70
|
-
if (isConflict) {
|
|
71
|
-
operationGroup.operations.forEach(operation => {
|
|
72
|
-
operation.typeDetails.typeName = operation.typeDetails.typeName.replace(
|
|
73
|
-
operationGroup.name,
|
|
74
|
-
`${operationGroup.name}Operations`
|
|
75
|
-
);
|
|
76
|
-
});
|
|
77
|
-
operationGroup.name = `${operationGroup.name}Operations`;
|
|
78
|
-
operationGroup.key = `${operationGroup.key}Operations`;
|
|
79
|
-
}
|
|
80
|
-
});
|
|
71
|
+
const clientDetails = await transformCodeModel(codeModel);
|
|
72
|
+
conflictResolver(clientDetails);
|
|
81
73
|
|
|
74
|
+
generateModels(clientDetails, project);
|
|
75
|
+
if (generateSample) {
|
|
76
|
+
clientDetails.samples = await transformSamples(codeModel, clientDetails);
|
|
77
|
+
}
|
|
82
78
|
// Skip metadata generation if `generate-metadata` is explicitly false
|
|
83
79
|
generatePackageJson(project, clientDetails);
|
|
84
80
|
generateLicenseFile(project);
|
|
85
|
-
generateReadmeFile(
|
|
81
|
+
generateReadmeFile(codeModel, project);
|
|
82
|
+
if (generateTest) {
|
|
83
|
+
generateSampleTestFile(project);
|
|
84
|
+
}
|
|
86
85
|
generateTsConfig(project);
|
|
87
86
|
generateRollupConfig(project);
|
|
88
87
|
generateApiExtractorConfig(project);
|
|
89
88
|
|
|
90
89
|
generateClient(clientDetails, project);
|
|
91
|
-
generateClientContext(clientDetails, packageDetails, project);
|
|
92
|
-
generateModels(clientDetails, project);
|
|
93
90
|
|
|
94
91
|
generateMappers(clientDetails, project);
|
|
95
92
|
generateOperations(clientDetails, project);
|
|
96
93
|
generateOperationsInterfaces(clientDetails, project);
|
|
94
|
+
if (generateSample || generateTest) {
|
|
95
|
+
generateSampleEnv(project);
|
|
96
|
+
}
|
|
97
|
+
if (
|
|
98
|
+
generateSample &&
|
|
99
|
+
clientDetails?.samples?.length &&
|
|
100
|
+
clientDetails?.samples?.length > 0
|
|
101
|
+
) {
|
|
102
|
+
generateHLCSamples(clientDetails, project);
|
|
103
|
+
}
|
|
97
104
|
generateParameters(clientDetails, project);
|
|
98
|
-
generateIndexFile(
|
|
105
|
+
generateIndexFile(project, clientDetails);
|
|
99
106
|
await generateLroFiles(clientDetails, project);
|
|
100
107
|
generateTracingFile(project);
|
|
101
108
|
|
|
@@ -112,6 +119,8 @@ export async function generateTypeScriptLibrary(
|
|
|
112
119
|
// Save the source files to the virtual filesystem
|
|
113
120
|
project.saveSync();
|
|
114
121
|
const fs = project.getFileSystem();
|
|
122
|
+
const pathToClear = outputPath ? path.join(outputPath, srcPath) : srcPath;
|
|
123
|
+
fsextra.emptyDirSync(`${pathToClear}`);
|
|
115
124
|
|
|
116
125
|
// Loop over the files
|
|
117
126
|
for (const file of project.getSourceFiles()) {
|
|
@@ -134,22 +143,9 @@ export async function generateTypeScriptLibrary(
|
|
|
134
143
|
}
|
|
135
144
|
|
|
136
145
|
// Write the file to the AutoRest host
|
|
137
|
-
host.
|
|
138
|
-
filePath.substr(1), // Get rid of the leading slash '/'
|
|
139
|
-
fileContents
|
|
140
|
-
);
|
|
146
|
+
host.writeFile({
|
|
147
|
+
filename: filePath.substr(1), // Get rid of the leading slash '/'
|
|
148
|
+
content: fileContents
|
|
149
|
+
});
|
|
141
150
|
}
|
|
142
151
|
}
|
|
143
|
-
|
|
144
|
-
function checkForConflictWithDefinitions(
|
|
145
|
-
operationGroupName: string,
|
|
146
|
-
clientDetails: ClientDetails
|
|
147
|
-
): boolean {
|
|
148
|
-
let conflict: boolean = false;
|
|
149
|
-
clientDetails.objects.forEach(model => {
|
|
150
|
-
if (model.name === operationGroupName) {
|
|
151
|
-
conflict = true;
|
|
152
|
-
}
|
|
153
|
-
});
|
|
154
|
-
return conflict;
|
|
155
|
-
}
|