@autorest/typescript 6.0.0-beta.9 → 6.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -5
- package/dist/{src/generators/static/README.md.hbs → hlcREADME.md.hbs} +35 -3
- package/dist/hlcSamples.ts.hbs +49 -0
- package/dist/karma.conf.js.hbs +126 -0
- package/dist/paginateHelper.ts.hbs +208 -0
- package/dist/pollingHelper.ts.hbs +72 -0
- package/dist/rlcEnv.ts.hbs +3 -0
- package/dist/rlcREADME.md.hbs +71 -0
- package/dist/rlcRecordedClient.ts.hbs +26 -0
- package/dist/rlcSampleTest.spec.ts.hbs +20 -0
- package/dist/rlcSamples.ts.hbs +28 -0
- package/dist/sampleEnv.hbs +4 -0
- package/dist/sampleTest.ts.hbs +32 -0
- package/dist/samples.ts.hbs +0 -0
- package/dist/src/autorestSession.d.ts +17 -6
- package/dist/src/autorestSession.d.ts.map +1 -1
- package/dist/src/autorestSession.js +3 -9
- package/dist/src/autorestSession.js.map +1 -1
- package/dist/src/conflictResolver.d.ts +3 -0
- package/dist/src/conflictResolver.d.ts.map +1 -0
- package/dist/src/conflictResolver.js +43 -0
- package/dist/src/conflictResolver.js.map +1 -0
- package/dist/src/generators/LROGenerator.js +4 -4
- package/dist/src/generators/LROGenerator.js.map +1 -1
- package/dist/src/generators/clientFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/clientFileGenerator.js +300 -46
- package/dist/src/generators/clientFileGenerator.js.map +1 -1
- package/dist/src/generators/indexGenerator.d.ts.map +1 -1
- package/dist/src/generators/indexGenerator.js +106 -14
- package/dist/src/generators/indexGenerator.js.map +1 -1
- package/dist/src/generators/mappersGenerator.d.ts.map +1 -1
- package/dist/src/generators/mappersGenerator.js +93 -19
- package/dist/src/generators/mappersGenerator.js.map +1 -1
- package/dist/src/generators/modelsGenerator.d.ts.map +1 -1
- package/dist/src/generators/modelsGenerator.js +80 -81
- package/dist/src/generators/modelsGenerator.js.map +1 -1
- package/dist/src/generators/operationGenerator.d.ts.map +1 -1
- package/dist/src/generators/operationGenerator.js +85 -96
- package/dist/src/generators/operationGenerator.js.map +1 -1
- package/dist/src/generators/operationInterfaceGenerator.js +20 -20
- package/dist/src/generators/operationInterfaceGenerator.js.map +1 -1
- package/dist/src/generators/parametersGenerator.d.ts.map +1 -1
- package/dist/src/generators/parametersGenerator.js +7 -8
- package/dist/src/generators/parametersGenerator.js.map +1 -1
- package/dist/src/generators/samples/hlcSampleGenerator.d.ts +13 -0
- package/dist/src/generators/samples/hlcSampleGenerator.d.ts.map +1 -0
- package/dist/src/generators/samples/hlcSampleGenerator.js +43 -0
- package/dist/src/generators/samples/hlcSampleGenerator.js.map +1 -0
- package/dist/src/generators/samples/hlcSamples.ts.hbs +49 -0
- package/dist/src/generators/samples/rlcSampleGenerator.d.ts +4 -0
- package/dist/src/generators/samples/rlcSampleGenerator.d.ts.map +1 -0
- package/dist/src/generators/samples/rlcSampleGenerator.js +64 -0
- package/dist/src/generators/samples/rlcSampleGenerator.js.map +1 -0
- package/dist/src/generators/samples/rlcSamples.ts.hbs +28 -0
- package/dist/src/generators/samples/sampleEnv.hbs +4 -0
- package/dist/src/generators/samples/sampleEnvGenerator.d.ts +3 -0
- package/dist/src/generators/samples/sampleEnvGenerator.d.ts.map +1 -0
- package/dist/src/generators/samples/sampleEnvGenerator.js +17 -0
- package/dist/src/generators/samples/sampleEnvGenerator.js.map +1 -0
- package/dist/src/generators/static/apiExtractorConfig.js +2 -2
- package/dist/src/generators/static/apiExtractorConfig.js.map +1 -1
- package/dist/src/generators/static/esLintConfigGenerator.d.ts +3 -0
- package/dist/src/generators/static/esLintConfigGenerator.d.ts.map +1 -0
- package/dist/src/generators/static/esLintConfigGenerator.js +26 -0
- package/dist/src/generators/static/esLintConfigGenerator.js.map +1 -0
- package/{src/generators/static/README.md.hbs → dist/src/generators/static/hlcREADME.md.hbs} +35 -3
- package/dist/src/generators/static/karma.conf.js.hbs +126 -0
- package/dist/src/generators/static/karmaConfigFileGenerator.d.ts +3 -0
- package/dist/src/generators/static/karmaConfigFileGenerator.d.ts.map +1 -0
- package/dist/src/generators/static/karmaConfigFileGenerator.js +23 -0
- package/dist/src/generators/static/karmaConfigFileGenerator.js.map +1 -0
- package/dist/src/generators/static/licenseFileGenerator.js +1 -1
- package/dist/src/generators/static/licenseFileGenerator.js.map +1 -1
- package/dist/src/generators/static/packageFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/static/packageFileGenerator.js +255 -67
- package/dist/src/generators/static/packageFileGenerator.js.map +1 -1
- package/dist/src/generators/static/readmeFileGenerator.d.ts +2 -2
- package/dist/src/generators/static/readmeFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/static/readmeFileGenerator.js +50 -23
- package/dist/src/generators/static/readmeFileGenerator.js.map +1 -1
- package/dist/src/generators/static/rlcREADME.md.hbs +71 -0
- package/dist/src/generators/static/rollupConfigFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/static/rollupConfigFileGenerator.js +12 -71
- package/dist/src/generators/static/rollupConfigFileGenerator.js.map +1 -1
- package/dist/src/generators/static/tsConfigFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/static/tsConfigFileGenerator.js +46 -18
- package/dist/src/generators/static/tsConfigFileGenerator.js.map +1 -1
- package/dist/src/generators/test/envBrowserFileGenerator.d.ts +3 -0
- package/dist/src/generators/test/envBrowserFileGenerator.d.ts.map +1 -0
- package/dist/src/generators/test/envBrowserFileGenerator.js +15 -0
- package/dist/src/generators/test/envBrowserFileGenerator.js.map +1 -0
- package/dist/src/generators/test/envFileGenerator.d.ts +3 -0
- package/dist/src/generators/test/envFileGenerator.d.ts.map +1 -0
- package/dist/src/generators/test/envFileGenerator.js +23 -0
- package/dist/src/generators/test/envFileGenerator.js.map +1 -0
- package/dist/src/generators/test/recordedClientFileGenerator.d.ts +3 -0
- package/dist/src/generators/test/recordedClientFileGenerator.d.ts.map +1 -0
- package/dist/src/generators/test/recordedClientFileGenerator.js +23 -0
- package/dist/src/generators/test/recordedClientFileGenerator.js.map +1 -0
- package/dist/src/generators/test/rlcEnv.ts.hbs +3 -0
- package/dist/src/generators/test/rlcRecordedClient.ts.hbs +26 -0
- package/dist/src/generators/test/rlcSampleTest.spec.ts.hbs +20 -0
- package/dist/src/generators/test/sampleTest.ts.hbs +32 -0
- package/dist/src/generators/test/sampleTestGenerator.d.ts +3 -0
- package/dist/src/generators/test/sampleTestGenerator.d.ts.map +1 -0
- package/dist/src/generators/test/sampleTestGenerator.js +34 -0
- package/dist/src/generators/test/sampleTestGenerator.js.map +1 -0
- package/dist/src/generators/tracingFileGenerator.d.ts.map +1 -1
- package/dist/src/generators/tracingFileGenerator.js +7 -21
- package/dist/src/generators/tracingFileGenerator.js.map +1 -1
- package/dist/src/generators/utils/docsUtils.js +2 -2
- package/dist/src/generators/utils/docsUtils.js.map +1 -1
- package/dist/src/generators/utils/operationsUtils.js +1 -1
- package/dist/src/generators/utils/operationsUtils.js.map +1 -1
- package/dist/src/generators/utils/pagingOperations.d.ts +5 -0
- package/dist/src/generators/utils/pagingOperations.d.ts.map +1 -1
- package/dist/src/generators/utils/pagingOperations.js +15 -15
- package/dist/src/generators/utils/pagingOperations.js.map +1 -1
- package/dist/src/generators/utils/parameterUtils.js +9 -9
- package/dist/src/generators/utils/parameterUtils.js.map +1 -1
- package/dist/src/generators/utils/responseTypeUtils.js +2 -2
- package/dist/src/generators/utils/responseTypeUtils.js.map +1 -1
- package/dist/src/generators/utils/tracingUtils.d.ts.map +1 -1
- package/dist/src/generators/utils/tracingUtils.js +2 -6
- package/dist/src/generators/utils/tracingUtils.js.map +1 -1
- package/dist/src/main.d.ts +2 -2
- package/dist/src/main.d.ts.map +1 -1
- package/dist/src/main.js +8 -8
- package/dist/src/main.js.map +1 -1
- package/dist/src/models/clientDetails.d.ts +10 -1
- package/dist/src/models/clientDetails.d.ts.map +1 -1
- package/dist/src/models/modelDetails.d.ts +2 -2
- package/dist/src/models/modelDetails.d.ts.map +1 -1
- package/dist/src/models/operationDetails.d.ts +1 -0
- package/dist/src/models/operationDetails.d.ts.map +1 -1
- package/dist/src/models/sampleDetails.d.ts +22 -0
- package/dist/src/models/sampleDetails.d.ts.map +1 -0
- package/dist/src/models/sampleDetails.js +3 -0
- package/dist/src/models/sampleDetails.js.map +1 -0
- package/dist/src/restLevelClient/generateClient.d.ts +1 -1
- package/dist/src/restLevelClient/generateClient.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateClient.js +108 -167
- package/dist/src/restLevelClient/generateClient.js.map +1 -1
- package/dist/src/restLevelClient/generateClientDefinition.d.ts +6 -0
- package/dist/src/restLevelClient/generateClientDefinition.d.ts.map +1 -0
- package/dist/src/restLevelClient/generateClientDefinition.js +261 -0
- package/dist/src/restLevelClient/generateClientDefinition.js.map +1 -0
- package/dist/src/restLevelClient/generateIsUnexpectedHelper.d.ts +8 -0
- package/dist/src/restLevelClient/generateIsUnexpectedHelper.d.ts.map +1 -0
- package/dist/src/restLevelClient/generateIsUnexpectedHelper.js +204 -0
- package/dist/src/restLevelClient/generateIsUnexpectedHelper.js.map +1 -0
- package/dist/src/restLevelClient/generateMethodShortcuts.d.ts +8 -0
- package/dist/src/restLevelClient/generateMethodShortcuts.d.ts.map +1 -0
- package/dist/src/restLevelClient/generateMethodShortcuts.js +70 -0
- package/dist/src/restLevelClient/generateMethodShortcuts.js.map +1 -0
- package/dist/src/restLevelClient/generateObjectTypes.d.ts +3 -3
- package/dist/src/restLevelClient/generateObjectTypes.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateObjectTypes.js +43 -31
- package/dist/src/restLevelClient/generateObjectTypes.js.map +1 -1
- package/dist/src/restLevelClient/generatePagingHelper.d.ts +3 -0
- package/dist/src/restLevelClient/generatePagingHelper.d.ts.map +1 -0
- package/dist/src/restLevelClient/generatePagingHelper.js +54 -0
- package/dist/src/restLevelClient/generatePagingHelper.js.map +1 -0
- package/dist/src/restLevelClient/generateParameterTypes.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateParameterTypes.js +247 -44
- package/dist/src/restLevelClient/generateParameterTypes.js.map +1 -1
- package/dist/src/restLevelClient/generatePollingHelper.d.ts +3 -0
- package/dist/src/restLevelClient/generatePollingHelper.d.ts.map +1 -0
- package/dist/src/restLevelClient/generatePollingHelper.js +20 -0
- package/dist/src/restLevelClient/generatePollingHelper.js.map +1 -0
- package/dist/src/restLevelClient/generateResponseTypes.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateResponseTypes.js +35 -23
- package/dist/src/restLevelClient/generateResponseTypes.js.map +1 -1
- package/dist/src/restLevelClient/generateRestLevel.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateRestLevel.js +63 -16
- package/dist/src/restLevelClient/generateRestLevel.js.map +1 -1
- package/dist/src/restLevelClient/generateSchemaTypes.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateSchemaTypes.js +29 -7
- package/dist/src/restLevelClient/generateSchemaTypes.js.map +1 -1
- package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts +4 -0
- package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts.map +1 -0
- package/dist/src/restLevelClient/generateTopLevelIndexFile.js +37 -0
- package/dist/src/restLevelClient/generateTopLevelIndexFile.js.map +1 -0
- package/dist/src/restLevelClient/getPropertySignature.d.ts +2 -2
- package/dist/src/restLevelClient/getPropertySignature.d.ts.map +1 -1
- package/dist/src/restLevelClient/getPropertySignature.js +10 -7
- package/dist/src/restLevelClient/getPropertySignature.js.map +1 -1
- package/dist/src/restLevelClient/helpers/hasPollingOperations.d.ts +4 -0
- package/dist/src/restLevelClient/helpers/hasPollingOperations.d.ts.map +1 -0
- package/dist/src/restLevelClient/helpers/hasPollingOperations.js +12 -0
- package/dist/src/restLevelClient/helpers/hasPollingOperations.js.map +1 -0
- package/dist/src/restLevelClient/helpers/modelHelpers.d.ts +4 -0
- package/dist/src/restLevelClient/helpers/modelHelpers.d.ts.map +1 -0
- package/dist/src/restLevelClient/helpers/modelHelpers.js +19 -0
- package/dist/src/restLevelClient/helpers/modelHelpers.js.map +1 -0
- package/dist/src/restLevelClient/helpers/operationHelpers.d.ts +10 -0
- package/dist/src/restLevelClient/helpers/operationHelpers.d.ts.map +1 -0
- package/dist/src/restLevelClient/helpers/operationHelpers.js +64 -0
- package/dist/src/restLevelClient/helpers/operationHelpers.js.map +1 -0
- package/dist/src/restLevelClient/interfaces.d.ts +33 -0
- package/dist/src/restLevelClient/interfaces.d.ts.map +1 -0
- package/dist/src/restLevelClient/interfaces.js +3 -0
- package/dist/src/restLevelClient/interfaces.js.map +1 -0
- package/dist/src/restLevelClient/mutateCodeModel.js +2 -2
- package/dist/src/restLevelClient/mutateCodeModel.js.map +1 -1
- package/dist/src/restLevelClient/operationHelpers.d.ts +4 -0
- package/dist/src/restLevelClient/operationHelpers.d.ts.map +1 -1
- package/dist/src/restLevelClient/operationHelpers.js +21 -10
- package/dist/src/restLevelClient/operationHelpers.js.map +1 -1
- package/dist/src/restLevelClient/paginateHelper.ts.hbs +208 -0
- package/dist/src/restLevelClient/pollingHelper.ts.hbs +72 -0
- package/dist/src/restLevelClient/samples/generateSamples.d.ts +23 -0
- package/dist/src/restLevelClient/samples/generateSamples.d.ts.map +1 -0
- package/dist/src/restLevelClient/samples/generateSamples.js +3 -0
- package/dist/src/restLevelClient/samples/generateSamples.js.map +1 -0
- package/dist/src/restLevelClient/samples/samples.ts.hbs +0 -0
- package/dist/src/restLevelClient/schemaHelpers.d.ts +8 -2
- package/dist/src/restLevelClient/schemaHelpers.d.ts.map +1 -1
- package/dist/src/restLevelClient/schemaHelpers.js +27 -12
- package/dist/src/restLevelClient/schemaHelpers.js.map +1 -1
- package/dist/src/transforms/extensions.js +10 -10
- package/dist/src/transforms/extensions.js.map +1 -1
- package/dist/src/transforms/groupTransforms.js +2 -2
- package/dist/src/transforms/groupTransforms.js.map +1 -1
- package/dist/src/transforms/mapperTransforms.d.ts.map +1 -1
- package/dist/src/transforms/mapperTransforms.js +29 -26
- package/dist/src/transforms/mapperTransforms.js.map +1 -1
- package/dist/src/transforms/objectTransforms.d.ts.map +1 -1
- package/dist/src/transforms/objectTransforms.js +42 -26
- package/dist/src/transforms/objectTransforms.js.map +1 -1
- package/dist/src/transforms/operationTransforms.d.ts.map +1 -1
- package/dist/src/transforms/operationTransforms.js +29 -26
- package/dist/src/transforms/operationTransforms.js.map +1 -1
- package/dist/src/transforms/optionsTransforms.js +1 -1
- package/dist/src/transforms/optionsTransforms.js.map +1 -1
- package/dist/src/transforms/parameterTransforms.d.ts.map +1 -1
- package/dist/src/transforms/parameterTransforms.js +43 -27
- package/dist/src/transforms/parameterTransforms.js.map +1 -1
- package/dist/src/transforms/samplesTransforms.d.ts +7 -0
- package/dist/src/transforms/samplesTransforms.d.ts.map +1 -0
- package/dist/src/transforms/samplesTransforms.js +293 -0
- package/dist/src/transforms/samplesTransforms.js.map +1 -0
- package/dist/src/transforms/transforms.d.ts +1 -2
- package/dist/src/transforms/transforms.d.ts.map +1 -1
- package/dist/src/transforms/transforms.js +26 -24
- package/dist/src/transforms/transforms.js.map +1 -1
- package/dist/src/transforms/urlTransforms.js +3 -3
- package/dist/src/transforms/urlTransforms.js.map +1 -1
- package/dist/src/typescriptGenerator.d.ts +2 -2
- package/dist/src/typescriptGenerator.d.ts.map +1 -1
- package/dist/src/typescriptGenerator.js +46 -46
- package/dist/src/typescriptGenerator.js.map +1 -1
- package/dist/src/utils/autorestOptions.d.ts +2 -2
- package/dist/src/utils/autorestOptions.d.ts.map +1 -1
- package/dist/src/utils/autorestOptions.js +141 -62
- package/dist/src/utils/autorestOptions.js.map +1 -1
- package/dist/src/utils/cloneOperation.js +2 -2
- package/dist/src/utils/cloneOperation.js.map +1 -1
- package/dist/src/utils/copyFiles.d.ts +2 -0
- package/dist/src/utils/copyFiles.d.ts.map +1 -0
- package/dist/src/utils/copyFiles.js +33 -0
- package/dist/src/utils/copyFiles.js.map +1 -0
- package/dist/src/utils/extractHeaders.js +4 -4
- package/dist/src/utils/extractHeaders.js.map +1 -1
- package/dist/src/utils/extractPaginationDetails.d.ts +5 -1
- package/dist/src/utils/extractPaginationDetails.d.ts.map +1 -1
- package/dist/src/utils/extractPaginationDetails.js +23 -10
- package/dist/src/utils/extractPaginationDetails.js.map +1 -1
- package/dist/src/utils/headersToSchema.js +1 -1
- package/dist/src/utils/headersToSchema.js.map +1 -1
- package/dist/src/utils/logger.js +1 -1
- package/dist/src/utils/logger.js.map +1 -1
- package/dist/src/utils/nameUtils.d.ts +6 -2
- package/dist/src/utils/nameUtils.d.ts.map +1 -1
- package/dist/src/utils/nameUtils.js +13 -8
- package/dist/src/utils/nameUtils.js.map +1 -1
- package/dist/src/utils/schemaHelpers.d.ts +6 -1
- package/dist/src/utils/schemaHelpers.d.ts.map +1 -1
- package/dist/src/utils/schemaHelpers.js +50 -7
- package/dist/src/utils/schemaHelpers.js.map +1 -1
- package/dist/src/utils/sortObjectSchemasHierarchically.js +1 -1
- package/dist/src/utils/sortObjectSchemasHierarchically.js.map +1 -1
- package/dist/src/utils/valueHelpers.js +1 -1
- package/dist/src/utils/valueHelpers.js.map +1 -1
- package/package.json +58 -39
- package/src/autorestSession.ts +25 -18
- package/src/conflictResolver.ts +61 -0
- package/src/generators/clientFileGenerator.ts +397 -36
- package/src/generators/indexGenerator.ts +118 -12
- package/src/generators/mappersGenerator.ts +108 -8
- package/src/generators/modelsGenerator.ts +98 -97
- package/src/generators/operationGenerator.ts +54 -93
- package/src/generators/parametersGenerator.ts +2 -3
- package/src/generators/samples/hlcSampleGenerator.ts +50 -0
- package/src/generators/samples/hlcSamples.ts.hbs +49 -0
- package/src/generators/samples/rlcSampleGenerator.ts +72 -0
- package/src/generators/samples/rlcSamples.ts.hbs +28 -0
- package/src/generators/samples/sampleEnv.hbs +4 -0
- package/src/generators/samples/sampleEnvGenerator.ts +14 -0
- package/src/generators/static/apiExtractorConfig.ts +2 -2
- package/src/generators/static/esLintConfigGenerator.ts +24 -0
- package/src/generators/static/hlcREADME.md.hbs +144 -0
- package/src/generators/static/karma.conf.js.hbs +126 -0
- package/src/generators/static/karmaConfigFileGenerator.ts +20 -0
- package/src/generators/static/packageFileGenerator.ts +292 -71
- package/src/generators/static/readmeFileGenerator.ts +79 -42
- package/src/generators/static/rlcREADME.md.hbs +71 -0
- package/src/generators/static/rollupConfigFileGenerator.ts +13 -71
- package/src/generators/static/tsConfigFileGenerator.ts +54 -19
- package/src/generators/test/envBrowserFileGenerator.ts +14 -0
- package/src/generators/test/envFileGenerator.ts +22 -0
- package/src/generators/test/recordedClientFileGenerator.ts +22 -0
- package/src/generators/test/rlcEnv.ts.hbs +3 -0
- package/src/generators/test/rlcRecordedClient.ts.hbs +26 -0
- package/src/generators/test/rlcSampleTest.spec.ts.hbs +20 -0
- package/src/generators/test/sampleTest.ts.hbs +32 -0
- package/src/generators/test/sampleTestGenerator.ts +32 -0
- package/src/generators/tracingFileGenerator.ts +6 -24
- package/src/generators/utils/pagingOperations.ts +1 -2
- package/src/generators/utils/tracingUtils.ts +1 -5
- package/src/main.ts +8 -5
- package/src/models/clientDetails.ts +11 -1
- package/src/models/modelDetails.ts +2 -2
- package/src/models/operationDetails.ts +1 -0
- package/src/models/sampleDetails.ts +22 -0
- package/src/restLevelClient/generateClient.ts +134 -244
- package/src/restLevelClient/generateClientDefinition.ts +386 -0
- package/src/restLevelClient/generateIsUnexpectedHelper.ts +224 -0
- package/src/restLevelClient/generateMethodShortcuts.ts +121 -0
- package/src/restLevelClient/generateObjectTypes.ts +62 -21
- package/src/restLevelClient/generatePagingHelper.ts +69 -0
- package/src/restLevelClient/generateParameterTypes.ts +377 -56
- package/src/restLevelClient/generatePollingHelper.ts +19 -0
- package/src/restLevelClient/generateResponseTypes.ts +36 -17
- package/src/restLevelClient/generateRestLevel.ts +63 -8
- package/src/restLevelClient/generateSchemaTypes.ts +43 -8
- package/src/restLevelClient/generateTopLevelIndexFile.ts +37 -0
- package/src/restLevelClient/getPropertySignature.ts +12 -4
- package/src/restLevelClient/helpers/hasPollingOperations.ts +15 -0
- package/src/restLevelClient/helpers/modelHelpers.ts +15 -0
- package/src/restLevelClient/helpers/operationHelpers.ts +93 -0
- package/src/restLevelClient/interfaces.ts +39 -0
- package/src/restLevelClient/operationHelpers.ts +23 -9
- package/src/restLevelClient/paginateHelper.ts.hbs +208 -0
- package/src/restLevelClient/pollingHelper.ts.hbs +72 -0
- package/src/restLevelClient/samples/generateSamples.ts +23 -0
- package/src/restLevelClient/samples/samples.ts.hbs +0 -0
- package/src/restLevelClient/schemaHelpers.ts +30 -8
- package/src/transforms/mapperTransforms.ts +11 -5
- package/src/transforms/objectTransforms.ts +26 -6
- package/src/transforms/operationTransforms.ts +6 -1
- package/src/transforms/parameterTransforms.ts +26 -7
- package/src/transforms/samplesTransforms.ts +349 -0
- package/src/transforms/transforms.ts +14 -9
- package/src/typescriptGenerator.ts +40 -53
- package/src/utils/autorestOptions.ts +198 -88
- package/src/utils/copyFiles.ts +36 -0
- package/src/utils/extractPaginationDetails.ts +19 -1
- package/src/utils/nameUtils.ts +18 -9
- package/src/utils/schemaHelpers.ts +51 -4
- package/CHANGELOG.md +0 -56
- package/dist/src/generators/clientContextFileGenerator.d.ts +0 -5
- package/dist/src/generators/clientContextFileGenerator.d.ts.map +0 -1
- package/dist/src/generators/clientContextFileGenerator.js +0 -263
- package/dist/src/generators/clientContextFileGenerator.js.map +0 -1
- package/src/generators/clientContextFileGenerator.ts +0 -405
|
@@ -2,12 +2,17 @@ import { Project, SourceFile } from "ts-morph";
|
|
|
2
2
|
import { ClientDetails } from "../models/clientDetails";
|
|
3
3
|
import { getAutorestOptions, getSession } from "../autorestSession";
|
|
4
4
|
import { NameType, normalizeName } from "../utils/nameUtils";
|
|
5
|
-
|
|
5
|
+
import { hasPagingOperations } from "../utils/extractPaginationDetails";
|
|
6
|
+
import { hasPollingOperations } from "../restLevelClient/helpers/hasPollingOperations";
|
|
7
|
+
import {
|
|
8
|
+
hasInputModels,
|
|
9
|
+
hasOutputModels
|
|
10
|
+
} from "../restLevelClient/helpers/modelHelpers";
|
|
6
11
|
export function generateIndexFile(
|
|
7
12
|
project: Project,
|
|
8
13
|
clientDetails?: ClientDetails
|
|
9
14
|
) {
|
|
10
|
-
const { restLevelClient, srcPath } = getAutorestOptions();
|
|
15
|
+
const { restLevelClient, srcPath, multiClient, batch } = getAutorestOptions();
|
|
11
16
|
const indexFile = project.createSourceFile(`${srcPath}/index.ts`, undefined, {
|
|
12
17
|
overwrite: true
|
|
13
18
|
});
|
|
@@ -19,38 +24,143 @@ export function generateIndexFile(
|
|
|
19
24
|
);
|
|
20
25
|
}
|
|
21
26
|
generateHLCIndex(clientDetails, indexFile);
|
|
22
|
-
} else {
|
|
27
|
+
} else if (!multiClient || !batch || batch?.length === 1) {
|
|
28
|
+
// if we are generate single client package for RLC
|
|
23
29
|
generateRLCIndex(indexFile);
|
|
30
|
+
} else {
|
|
31
|
+
generateRLCIndexForMultiClient(indexFile);
|
|
24
32
|
}
|
|
25
33
|
}
|
|
26
34
|
|
|
35
|
+
// to generate a index.ts for each single module inside the multi client RLC package
|
|
36
|
+
function generateRLCIndexForMultiClient(file: SourceFile) {
|
|
37
|
+
const { model } = getSession();
|
|
38
|
+
const clientName = model.language.default.name;
|
|
39
|
+
const createClientFuncName = `createClient`;
|
|
40
|
+
const moduleName = normalizeName(clientName, NameType.File);
|
|
41
|
+
|
|
42
|
+
file.addImportDeclaration({
|
|
43
|
+
namespaceImport: "Parameters",
|
|
44
|
+
moduleSpecifier: "./parameters"
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
file.addImportDeclaration({
|
|
48
|
+
namespaceImport: "Responses",
|
|
49
|
+
moduleSpecifier: "./responses"
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
file.addImportDeclaration({
|
|
53
|
+
namespaceImport: "Client",
|
|
54
|
+
moduleSpecifier: "./clientDefinitions"
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
const exports = ["Parameters", "Responses", "Client"];
|
|
58
|
+
if (hasInputModels(model)) {
|
|
59
|
+
file.addImportDeclaration({
|
|
60
|
+
namespaceImport: "Models",
|
|
61
|
+
moduleSpecifier: "./models"
|
|
62
|
+
});
|
|
63
|
+
exports.push("Models");
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (hasOutputModels(model)) {
|
|
67
|
+
file.addImportDeclaration({
|
|
68
|
+
namespaceImport: "OutputModels",
|
|
69
|
+
moduleSpecifier: "./outputModels"
|
|
70
|
+
});
|
|
71
|
+
exports.push("OutputModels");
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (hasPagingOperations(model)) {
|
|
75
|
+
file.addImportDeclaration({
|
|
76
|
+
namespaceImport: "PaginateHelper",
|
|
77
|
+
moduleSpecifier: "./paginateHelper"
|
|
78
|
+
});
|
|
79
|
+
exports.push("PaginateHelper");
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (hasPollingOperations(model)) {
|
|
83
|
+
file.addImportDeclaration({
|
|
84
|
+
namespaceImport: "PollingHelper",
|
|
85
|
+
moduleSpecifier: "./pollingHelper"
|
|
86
|
+
});
|
|
87
|
+
exports.push("PollingHelper");
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
file.addExportDeclarations([
|
|
91
|
+
{
|
|
92
|
+
moduleSpecifier: `./${moduleName}`,
|
|
93
|
+
namedExports: [`${createClientFuncName}`]
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
namedExports: [...exports]
|
|
97
|
+
}
|
|
98
|
+
]);
|
|
99
|
+
}
|
|
100
|
+
|
|
27
101
|
function generateRLCIndex(file: SourceFile) {
|
|
28
102
|
const { model } = getSession();
|
|
29
103
|
const clientName = model.language.default.name;
|
|
104
|
+
const createClientFuncName = `${clientName}`;
|
|
30
105
|
const moduleName = normalizeName(clientName, NameType.File);
|
|
31
106
|
|
|
32
107
|
file.addImportDeclaration({
|
|
33
108
|
moduleSpecifier: `./${moduleName}`,
|
|
34
|
-
defaultImport:
|
|
109
|
+
defaultImport: createClientFuncName
|
|
35
110
|
});
|
|
36
111
|
|
|
37
112
|
file.addExportDeclarations([
|
|
38
113
|
{
|
|
39
114
|
moduleSpecifier: `./${moduleName}`
|
|
40
115
|
},
|
|
41
|
-
{
|
|
42
|
-
moduleSpecifier: "./models"
|
|
43
|
-
},
|
|
44
116
|
{
|
|
45
117
|
moduleSpecifier: "./parameters"
|
|
46
118
|
},
|
|
47
119
|
{
|
|
48
120
|
moduleSpecifier: "./responses"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
moduleSpecifier: "./clientDefinitions"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
moduleSpecifier: "./isUnexpected"
|
|
49
127
|
}
|
|
50
128
|
]);
|
|
51
129
|
|
|
130
|
+
if (hasInputModels(model)) {
|
|
131
|
+
file.addExportDeclarations([
|
|
132
|
+
{
|
|
133
|
+
moduleSpecifier: "./models"
|
|
134
|
+
}
|
|
135
|
+
]);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (hasOutputModels(model)) {
|
|
139
|
+
file.addExportDeclarations([
|
|
140
|
+
{
|
|
141
|
+
moduleSpecifier: "./outputModels"
|
|
142
|
+
}
|
|
143
|
+
]);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (hasPagingOperations(model)) {
|
|
147
|
+
file.addExportDeclarations([
|
|
148
|
+
{
|
|
149
|
+
moduleSpecifier: "./paginateHelper"
|
|
150
|
+
}
|
|
151
|
+
]);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if (hasPollingOperations(model)) {
|
|
155
|
+
file.addExportDeclarations([
|
|
156
|
+
{
|
|
157
|
+
moduleSpecifier: "./pollingHelper"
|
|
158
|
+
}
|
|
159
|
+
]);
|
|
160
|
+
}
|
|
161
|
+
|
|
52
162
|
file.addExportAssignment({
|
|
53
|
-
expression:
|
|
163
|
+
expression: createClientFuncName,
|
|
54
164
|
isExportEquals: false
|
|
55
165
|
});
|
|
56
166
|
}
|
|
@@ -68,10 +178,6 @@ function generateHLCIndex(clientDetails: ClientDetails, file: SourceFile) {
|
|
|
68
178
|
{
|
|
69
179
|
moduleSpecifier: `./${clientDetails.sourceFileName}`,
|
|
70
180
|
namedExports: [clientDetails.className]
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
moduleSpecifier: `./${clientDetails.sourceFileName}Context`,
|
|
74
|
-
namedExports: [`${clientDetails.className}Context`]
|
|
75
181
|
}
|
|
76
182
|
]);
|
|
77
183
|
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
MapperConstraints
|
|
20
20
|
} from "@azure/core-http";
|
|
21
21
|
import { ModelProperties } from "../transforms/mapperTransforms";
|
|
22
|
-
import { keys, isEmpty, isString, isNil, isEqual } from "lodash";
|
|
22
|
+
import { keys, isEmpty, isString, isNil, isEqual, List } from "lodash";
|
|
23
23
|
import { getStringForValue, MapperTypes } from "../utils/valueHelpers";
|
|
24
24
|
import { PolymorphicObjectDetails, ObjectKind } from "../models/modelDetails";
|
|
25
25
|
import { logger } from "../utils/logger";
|
|
@@ -57,14 +57,89 @@ export function generateMappers(
|
|
|
57
57
|
mappersFile.fixUnusedIdentifiers();
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
function getParents(
|
|
61
|
+
mapperParentMap: Map<string, Array<string>>,
|
|
62
|
+
parent: string
|
|
63
|
+
) {
|
|
64
|
+
const list: Array<string> = new Array<string>();
|
|
65
|
+
const parents = mapperParentMap.get(parent);
|
|
66
|
+
|
|
67
|
+
if (!parents) {
|
|
68
|
+
parents!.forEach(pnt => {
|
|
69
|
+
if (!list.includes(pnt)) {
|
|
70
|
+
getParents(mapperParentMap, pnt).forEach(str => list.push(str));
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (!list.includes(parent)) {
|
|
76
|
+
list.push(parent);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return list;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function traverse(mapperParentMap: Map<string, Array<string>>) {
|
|
83
|
+
const list: Array<string> = new Array<string>();
|
|
84
|
+
mapperParentMap.forEach((value: string[], key: string) => {
|
|
85
|
+
value.forEach(parent => {
|
|
86
|
+
if (!list.includes(parent)) {
|
|
87
|
+
getParents(mapperParentMap, parent).forEach(str => list.push(str));
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
if (!list.includes(key)) {
|
|
91
|
+
list.push(key);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
return list;
|
|
95
|
+
}
|
|
96
|
+
|
|
60
97
|
/**
|
|
61
98
|
* This function writes to the mappers.ts file all the mappers to be used by @azure/core-http for serialization
|
|
62
99
|
*/
|
|
63
100
|
function writeMappers(sourceFile: SourceFile, { mappers }: ClientDetails) {
|
|
101
|
+
const mapperParentMap: Map<string, Array<string>> = new Map<
|
|
102
|
+
string,
|
|
103
|
+
Array<string>
|
|
104
|
+
>();
|
|
105
|
+
const mapperPositionMap: Map<string, number> = new Map<string, number>();
|
|
106
|
+
let position = 0;
|
|
107
|
+
mappers.forEach(mapper => {
|
|
108
|
+
const compositeMapper = mapper as CompositeMapper;
|
|
109
|
+
const mapperClassName = compositeMapper.type.className;
|
|
110
|
+
if (!mapperClassName) return;
|
|
111
|
+
mapperPositionMap.set(mapperClassName, position);
|
|
112
|
+
position += 1;
|
|
113
|
+
let listOfParents = mapperParentMap.get(mapperClassName);
|
|
114
|
+
if (!listOfParents) {
|
|
115
|
+
listOfParents = new Array<string>();
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (
|
|
119
|
+
compositeMapper.type.modelProperties &&
|
|
120
|
+
compositeMapper.type.modelProperties.parentsRefs
|
|
121
|
+
) {
|
|
122
|
+
const { parentsRefs } = (compositeMapper.type.modelProperties ||
|
|
123
|
+
{}) as ModelProperties;
|
|
124
|
+
|
|
125
|
+
if (parentsRefs) {
|
|
126
|
+
(parentsRefs as string[]).forEach(parentsRef => {
|
|
127
|
+
listOfParents!.push(parentsRef);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
mapperParentMap.set(mapperClassName, listOfParents);
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
const modifiedList = traverse(mapperParentMap);
|
|
64
136
|
const { useCoreV2 } = getAutorestOptions();
|
|
65
137
|
const generatedMappers: Map<string, Mapper> = new Map<string, Mapper>();
|
|
66
138
|
|
|
67
|
-
|
|
139
|
+
modifiedList.forEach(name => {
|
|
140
|
+
const arrayIndex = mapperPositionMap.get(name) || 0;
|
|
141
|
+
const mapper = mappers[arrayIndex];
|
|
142
|
+
|
|
68
143
|
const mapperClassName = (mapper as CompositeMapper).type.className;
|
|
69
144
|
if (!mapperClassName) {
|
|
70
145
|
logger.warning(`Expected a mapper with a className, skipping generation`);
|
|
@@ -103,6 +178,19 @@ function writeMappers(sourceFile: SourceFile, { mappers }: ClientDetails) {
|
|
|
103
178
|
leadingTrivia: writer => writer.blankLine()
|
|
104
179
|
});
|
|
105
180
|
|
|
181
|
+
const { polymorphicDiscriminator } = mapper.type as CompositeMapperType;
|
|
182
|
+
|
|
183
|
+
if (polymorphicDiscriminator) {
|
|
184
|
+
if (
|
|
185
|
+
isString(polymorphicDiscriminator) &&
|
|
186
|
+
`${polymorphicDiscriminator}`.startsWith(mapper.serializedName!)
|
|
187
|
+
) {
|
|
188
|
+
sourceFile.addStatements(
|
|
189
|
+
`${polymorphicDiscriminator}=${polymorphicDiscriminator};`
|
|
190
|
+
);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
106
194
|
// Keep track of the mapper we just generated
|
|
107
195
|
generatedMappers.set(mapperClassName, mapper);
|
|
108
196
|
});
|
|
@@ -178,7 +266,7 @@ export function writeMapper(writer: CodeBlockWriter, mapper: Mapper) {
|
|
|
178
266
|
.write("type:")
|
|
179
267
|
.block(() => {
|
|
180
268
|
// Write tipe properties for the current mapper
|
|
181
|
-
writeMapperType(writer, mapper
|
|
269
|
+
writeMapperType(writer, mapper, parents);
|
|
182
270
|
});
|
|
183
271
|
});
|
|
184
272
|
}
|
|
@@ -189,14 +277,16 @@ export function writeMapper(writer: CodeBlockWriter, mapper: Mapper) {
|
|
|
189
277
|
*/
|
|
190
278
|
function writeMapperType(
|
|
191
279
|
writer: CodeBlockWriter,
|
|
192
|
-
|
|
280
|
+
mapper: Mapper,
|
|
193
281
|
parents: string[]
|
|
194
282
|
) {
|
|
283
|
+
const mapperType = mapper.type;
|
|
284
|
+
|
|
195
285
|
if (isSequenceMapperType(mapperType)) {
|
|
196
286
|
return writeSequenceMapperType(writer, mapperType);
|
|
197
287
|
}
|
|
198
288
|
|
|
199
|
-
return writeCompositeMapperType(writer,
|
|
289
|
+
return writeCompositeMapperType(writer, mapper, parents);
|
|
200
290
|
}
|
|
201
291
|
|
|
202
292
|
/**
|
|
@@ -213,9 +303,10 @@ function isSequenceMapperType(
|
|
|
213
303
|
*/
|
|
214
304
|
function writeCompositeMapperType(
|
|
215
305
|
writer: CodeBlockWriter,
|
|
216
|
-
|
|
306
|
+
mapper: Mapper,
|
|
217
307
|
parents: string[]
|
|
218
308
|
) {
|
|
309
|
+
const mapperType = mapper.type;
|
|
219
310
|
const {
|
|
220
311
|
modelProperties,
|
|
221
312
|
polymorphicDiscriminator,
|
|
@@ -223,7 +314,14 @@ function writeCompositeMapperType(
|
|
|
223
314
|
} = mapperType as CompositeMapperType;
|
|
224
315
|
writeObjectProps(restType, writer);
|
|
225
316
|
// Write type properties that need special handling
|
|
226
|
-
|
|
317
|
+
if (polymorphicDiscriminator) {
|
|
318
|
+
if (
|
|
319
|
+
!isString(polymorphicDiscriminator) ||
|
|
320
|
+
!`${polymorphicDiscriminator}`.startsWith(mapper.serializedName!)
|
|
321
|
+
) {
|
|
322
|
+
writePolymorphicDiscriminator(writer, polymorphicDiscriminator);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
227
325
|
writeModelProperties(writer, parents, modelProperties);
|
|
228
326
|
}
|
|
229
327
|
|
|
@@ -258,7 +356,9 @@ function writeMapperContraints(
|
|
|
258
356
|
.block(() => {
|
|
259
357
|
if (Pattern) {
|
|
260
358
|
writer.write(
|
|
261
|
-
`Pattern: new RegExp("${Pattern.source
|
|
359
|
+
`Pattern: new RegExp("${Pattern.source
|
|
360
|
+
.replace(/\\/g, "\\\\")
|
|
361
|
+
.replace(/"/g, '\\"')}"), `
|
|
262
362
|
);
|
|
263
363
|
}
|
|
264
364
|
|
|
@@ -27,7 +27,6 @@ import { filterOperationParameters } from "./utils/parameterUtils";
|
|
|
27
27
|
import {
|
|
28
28
|
OperationDetails,
|
|
29
29
|
OperationResponseDetails,
|
|
30
|
-
OperationGroupDetails
|
|
31
30
|
} from "../models/operationDetails";
|
|
32
31
|
import { ParameterDetails } from "../models/parameterDetails";
|
|
33
32
|
import {
|
|
@@ -69,6 +68,10 @@ export function generateModels(clientDetails: ClientDetails, project: Project) {
|
|
|
69
68
|
namespaceImport: "coreRestPipeline",
|
|
70
69
|
moduleSpecifier: "@azure/core-rest-pipeline"
|
|
71
70
|
});
|
|
71
|
+
modelsIndexFile.addImportDeclaration({
|
|
72
|
+
namespaceImport: "coreHttpCompat",
|
|
73
|
+
moduleSpecifier: "@azure/core-http-compat"
|
|
74
|
+
});
|
|
72
75
|
}
|
|
73
76
|
|
|
74
77
|
writeUniontypes(clientDetails, modelsIndexFile);
|
|
@@ -77,13 +80,21 @@ export function generateModels(clientDetails: ClientDetails, project: Project) {
|
|
|
77
80
|
writeOperationModels(clientDetails, modelsIndexFile);
|
|
78
81
|
writeClientModels(clientDetails, modelsIndexFile);
|
|
79
82
|
modelsIndexFile.fixUnusedIdentifiers();
|
|
83
|
+
const allTypes = modelsIndexFile.getTypeAliases();
|
|
84
|
+
clientDetails.allTypes = allTypes
|
|
85
|
+
.filter(item => {
|
|
86
|
+
return item.isExported();
|
|
87
|
+
})
|
|
88
|
+
.map(item => {
|
|
89
|
+
return item.getName();
|
|
90
|
+
});
|
|
80
91
|
}
|
|
81
92
|
|
|
82
93
|
const writeClientModels = (
|
|
83
94
|
clientDetails: ClientDetails,
|
|
84
95
|
modelsIndexFile: SourceFile
|
|
85
96
|
) => {
|
|
86
|
-
const { useCoreV2 } = getAutorestOptions();
|
|
97
|
+
const { useCoreV2, coreHttpCompatMode } = getAutorestOptions();
|
|
87
98
|
let clientOptionalParams = clientDetails.parameters.filter(
|
|
88
99
|
p =>
|
|
89
100
|
(!p.required || p.defaultValue) &&
|
|
@@ -97,7 +108,9 @@ const writeClientModels = (
|
|
|
97
108
|
{
|
|
98
109
|
baseClass: !useCoreV2
|
|
99
110
|
? "coreHttp.ServiceClientOptions"
|
|
100
|
-
:
|
|
111
|
+
: coreHttpCompatMode
|
|
112
|
+
? "coreHttpCompat.ExtendedServiceClientOptions"
|
|
113
|
+
: "coreClient.ServiceClientOptions"
|
|
101
114
|
}
|
|
102
115
|
);
|
|
103
116
|
};
|
|
@@ -391,11 +404,11 @@ function buildResponseType(
|
|
|
391
404
|
docs: ["The underlying HTTP response."],
|
|
392
405
|
type: innerResponseProperties.length
|
|
393
406
|
? Writers.intersectionType(
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
407
|
+
"coreHttp.HttpResponse",
|
|
408
|
+
Writers.objectType({
|
|
409
|
+
properties: innerResponseProperties
|
|
410
|
+
})
|
|
411
|
+
)
|
|
399
412
|
: "coreHttp.HttpResponse",
|
|
400
413
|
leadingTrivia: writer => writer.blankLine()
|
|
401
414
|
}
|
|
@@ -435,13 +448,13 @@ function buildResponseType(
|
|
|
435
448
|
if (!useCoreV2) {
|
|
436
449
|
return intersectionTypes.length > 1
|
|
437
450
|
? // Using apply instead of calling the method directly to be able to conditionally pass
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
451
|
+
// parameters, this way we don't have to have a nested if/else tree to decide which parameters
|
|
452
|
+
// to pass, we will pass any intersectionTypes availabe plus the innerType. When there are no intersection types
|
|
453
|
+
// we just return innerType
|
|
454
|
+
Writers.intersectionType.apply(
|
|
455
|
+
Writers,
|
|
456
|
+
intersectionTypes as IntersectionTypeParameters
|
|
457
|
+
)
|
|
445
458
|
: (innerTypeWriter as WriterFunction);
|
|
446
459
|
} else {
|
|
447
460
|
if (intersectionTypes.length > 1) {
|
|
@@ -491,7 +504,7 @@ const writeExtensibleChoice = (
|
|
|
491
504
|
members: choice.properties.map(p => ({
|
|
492
505
|
name: p.name,
|
|
493
506
|
value: p.value,
|
|
494
|
-
docs: p.description ?
|
|
507
|
+
docs: [p.description ? p.description : p.name]
|
|
495
508
|
}))
|
|
496
509
|
});
|
|
497
510
|
}
|
|
@@ -559,29 +572,14 @@ const writeObjects = (
|
|
|
559
572
|
const writeObjectSignature = (modelsIndexFile: SourceFile) => (
|
|
560
573
|
model: ObjectDetails
|
|
561
574
|
) => {
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
type: Writers.intersectionType(
|
|
571
|
-
parents,
|
|
572
|
-
Writers.objectType({ properties })
|
|
573
|
-
),
|
|
574
|
-
leadingTrivia: writer => writer.blankLine()
|
|
575
|
-
});
|
|
576
|
-
} else {
|
|
577
|
-
modelsIndexFile.addInterface({
|
|
578
|
-
name: model.name,
|
|
579
|
-
docs: model.description ? [model.description] : [],
|
|
580
|
-
isExported: true,
|
|
581
|
-
properties,
|
|
582
|
-
leadingTrivia: writer => writer.blankLine()
|
|
583
|
-
});
|
|
584
|
-
}
|
|
575
|
+
modelsIndexFile.addInterface({
|
|
576
|
+
name: model.name,
|
|
577
|
+
docs: model.description ? [model.description] : [],
|
|
578
|
+
isExported: true,
|
|
579
|
+
extends: model.parents.map(p => p.name),
|
|
580
|
+
properties: getPropertiesSignatures(model),
|
|
581
|
+
leadingTrivia: writer => writer.blankLine()
|
|
582
|
+
});
|
|
585
583
|
};
|
|
586
584
|
|
|
587
585
|
/**
|
|
@@ -602,7 +600,6 @@ function writeUniontypes({ objects }: ClientDetails, modelsFile: SourceFile) {
|
|
|
602
600
|
: c.name;
|
|
603
601
|
})
|
|
604
602
|
];
|
|
605
|
-
|
|
606
603
|
modelsFile.addTypeAlias({
|
|
607
604
|
name: `${obj.name}Union`,
|
|
608
605
|
isExported: true,
|
|
@@ -612,20 +609,6 @@ function writeUniontypes({ objects }: ClientDetails, modelsFile: SourceFile) {
|
|
|
612
609
|
});
|
|
613
610
|
}
|
|
614
611
|
|
|
615
|
-
/**
|
|
616
|
-
* Checks if a polymorphic parent needs to be included in the Union type to represent its polymorphism
|
|
617
|
-
* A parent needs to be in the union only if its name is in the list of allowed discriminator values
|
|
618
|
-
* otherwise the parent should be excluded.
|
|
619
|
-
* @param parent Plymorphic parent to check
|
|
620
|
-
*/
|
|
621
|
-
function isPolymorphicParentInUnion(parent: PolymorphicObjectDetails): boolean {
|
|
622
|
-
return Object.keys(parent.discriminatorValues).some(property =>
|
|
623
|
-
parent.discriminatorValues[property].some(
|
|
624
|
-
discriminatorValue => discriminatorValue === parent.name
|
|
625
|
-
)
|
|
626
|
-
);
|
|
627
|
-
}
|
|
628
|
-
|
|
629
612
|
interface WriteOptionalParametersOptions {
|
|
630
613
|
baseClass?: string;
|
|
631
614
|
mediaTypes?: Set<KnownMediaType>;
|
|
@@ -689,7 +672,7 @@ function writeOptionalParameters(
|
|
|
689
672
|
function buildParamDetails(p: ParameterDetails): PropertySignatureStructure {
|
|
690
673
|
const description = getParameterDescription(p, operationFullName);
|
|
691
674
|
return {
|
|
692
|
-
name: p.name,
|
|
675
|
+
name: normalizeName(p.name, NameType.Parameter, true),
|
|
693
676
|
hasQuestionToken: true,
|
|
694
677
|
type: p.typeDetails.typeName,
|
|
695
678
|
docs: description ? [description] : undefined,
|
|
@@ -707,9 +690,9 @@ function writeOptionalParameters(
|
|
|
707
690
|
isExported: true,
|
|
708
691
|
extends: [
|
|
709
692
|
baseClass ||
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
693
|
+
(!useCoreV2
|
|
694
|
+
? "coreHttp.OperationOptions"
|
|
695
|
+
: "coreClient.OperationOptions")
|
|
713
696
|
],
|
|
714
697
|
properties: properties
|
|
715
698
|
};
|
|
@@ -764,48 +747,50 @@ function writeOptionalParameters(
|
|
|
764
747
|
});
|
|
765
748
|
}
|
|
766
749
|
|
|
750
|
+
// Get the type name to generate given a property
|
|
751
|
+
function getPropertyTypeName(
|
|
752
|
+
property: PropertyDetails,
|
|
753
|
+
objectDetails: ObjectDetails,
|
|
754
|
+
ignoreNullableOnOptional: boolean
|
|
755
|
+
) {
|
|
756
|
+
if (property.isConstant) {
|
|
757
|
+
if (
|
|
758
|
+
property.type === SchemaType.Number ||
|
|
759
|
+
property.type === SchemaType.Boolean
|
|
760
|
+
) {
|
|
761
|
+
return `${property.defaultValue}`;
|
|
762
|
+
}
|
|
763
|
+
return `"${getStringForValue(
|
|
764
|
+
property.defaultValue,
|
|
765
|
+
property.type,
|
|
766
|
+
false //quoted
|
|
767
|
+
)}"`;
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
const typeName =
|
|
771
|
+
property.name === "siblings"
|
|
772
|
+
? `${(objectDetails as PolymorphicObjectDetails).unionName}[]`
|
|
773
|
+
: property.type;
|
|
774
|
+
|
|
775
|
+
if (ignoreNullableOnOptional) {
|
|
776
|
+
return property.nullable && property.required
|
|
777
|
+
? `${typeName} | null`
|
|
778
|
+
: typeName;
|
|
779
|
+
} else {
|
|
780
|
+
return property.nullable ? `${typeName} | null` : typeName;
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
|
|
767
784
|
/**
|
|
768
|
-
*
|
|
785
|
+
* Get a list of properties from an object which aren't marked as discriminators
|
|
769
786
|
* @param objectDetails Object description
|
|
770
787
|
*/
|
|
771
|
-
function
|
|
788
|
+
function getNonDiscriminatorProperties(
|
|
772
789
|
objectDetails: ObjectDetails
|
|
773
|
-
):
|
|
774
|
-
const { ignoreNullableOnOptional } = getAutorestOptions();
|
|
790
|
+
): PropertyDetails[] {
|
|
775
791
|
const { properties } = objectDetails;
|
|
776
|
-
const getTypename = (property: PropertyDetails) => {
|
|
777
|
-
if (property.isConstant) {
|
|
778
|
-
return `"${getStringForValue(
|
|
779
|
-
property.defaultValue,
|
|
780
|
-
property.type,
|
|
781
|
-
false //quoted
|
|
782
|
-
)}"`;
|
|
783
|
-
}
|
|
784
792
|
|
|
785
|
-
|
|
786
|
-
property.name === "siblings"
|
|
787
|
-
? `${(objectDetails as PolymorphicObjectDetails).unionName}[]`
|
|
788
|
-
: property.type;
|
|
789
|
-
|
|
790
|
-
if (ignoreNullableOnOptional) {
|
|
791
|
-
return property.nullable && property.required
|
|
792
|
-
? `${typeName} | null`
|
|
793
|
-
: typeName;
|
|
794
|
-
} else {
|
|
795
|
-
return property.nullable ? `${typeName} | null` : typeName;
|
|
796
|
-
}
|
|
797
|
-
};
|
|
798
|
-
|
|
799
|
-
return properties
|
|
800
|
-
.filter(property => !property.isDiscriminator)
|
|
801
|
-
.map<PropertySignatureStructure>(property => ({
|
|
802
|
-
name: `"${property.name}"`,
|
|
803
|
-
hasQuestionToken: !property.required,
|
|
804
|
-
isReadonly: property.readOnly,
|
|
805
|
-
type: getTypename(property),
|
|
806
|
-
docs: getPropertyDescription(property),
|
|
807
|
-
kind: StructureKind.PropertySignature
|
|
808
|
-
}));
|
|
793
|
+
return properties.filter(property => !property.isDiscriminator);
|
|
809
794
|
}
|
|
810
795
|
|
|
811
796
|
function getPropertyDescription({ description, readOnly }: PropertyDetails) {
|
|
@@ -886,8 +871,24 @@ function withAdditionalProperties(
|
|
|
886
871
|
* Gets an enhanced list of Properties to construct an Object signature
|
|
887
872
|
* @param objectDetails Object description
|
|
888
873
|
*/
|
|
889
|
-
const getPropertiesSignatures = (objectDetails: ObjectDetails) =>
|
|
890
|
-
|
|
874
|
+
const getPropertiesSignatures = (objectDetails: ObjectDetails) => {
|
|
875
|
+
const { ignoreNullableOnOptional = false } = getAutorestOptions();
|
|
876
|
+
const properties = getNonDiscriminatorProperties(objectDetails).map<
|
|
877
|
+
PropertySignatureStructure
|
|
878
|
+
>(property => ({
|
|
879
|
+
name: `"${property.name}"`,
|
|
880
|
+
hasQuestionToken: !property.required,
|
|
881
|
+
isReadonly: property.readOnly,
|
|
882
|
+
type: getPropertyTypeName(
|
|
883
|
+
property,
|
|
884
|
+
objectDetails,
|
|
885
|
+
ignoreNullableOnOptional
|
|
886
|
+
),
|
|
887
|
+
docs: getPropertyDescription(property),
|
|
888
|
+
kind: StructureKind.PropertySignature
|
|
889
|
+
}));
|
|
890
|
+
return withDiscriminator(
|
|
891
891
|
objectDetails,
|
|
892
|
-
withAdditionalProperties(objectDetails,
|
|
892
|
+
withAdditionalProperties(objectDetails, properties)
|
|
893
893
|
);
|
|
894
|
+
};
|