@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
package/src/coreClientLro.ts
DELETED
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Microsoft Corporation.
|
|
2
|
-
// Licensed under the MIT License.
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
OperationArguments,
|
|
6
|
-
OperationSpec,
|
|
7
|
-
OperationResponseMap,
|
|
8
|
-
FullOperationResponse
|
|
9
|
-
} from "@azure/core-client";
|
|
10
|
-
import {
|
|
11
|
-
LroResourceLocationConfig,
|
|
12
|
-
GetLroStatusFromResponse,
|
|
13
|
-
LongRunningOperation,
|
|
14
|
-
LroConfig,
|
|
15
|
-
LroMode,
|
|
16
|
-
LroResponse,
|
|
17
|
-
LroStatus,
|
|
18
|
-
createGetLroStatusFromResponse,
|
|
19
|
-
RawResponse
|
|
20
|
-
} from "./lro";
|
|
21
|
-
|
|
22
|
-
export const successStates = ["succeeded"];
|
|
23
|
-
export const failureStates = ["failed", "canceled", "cancelled"];
|
|
24
|
-
export const terminalStates = successStates.concat(failureStates);
|
|
25
|
-
|
|
26
|
-
export type SendOperationFn<T> = (
|
|
27
|
-
args: OperationArguments,
|
|
28
|
-
spec: OperationSpec
|
|
29
|
-
) => Promise<LroResponse<T>>;
|
|
30
|
-
|
|
31
|
-
export function createPollingMethod<TResult>(
|
|
32
|
-
sendOperationFn: SendOperationFn<TResult>,
|
|
33
|
-
GetLroStatusFromResponse: GetLroStatusFromResponse<TResult>,
|
|
34
|
-
args: OperationArguments,
|
|
35
|
-
spec: OperationSpec,
|
|
36
|
-
mode?: LroMode
|
|
37
|
-
): (path?: string) => Promise<LroStatus<TResult>> {
|
|
38
|
-
/**
|
|
39
|
-
* Polling calls will always return a status object i.e. {"status": "success"}
|
|
40
|
-
* these intermediate responses are not described in the swagger so we need to
|
|
41
|
-
* pass custom mappers at runtime.
|
|
42
|
-
* This function replaces all the existing mappers to be able to deserialize a status object
|
|
43
|
-
* @param responses Original set of responses defined in the operation
|
|
44
|
-
*/
|
|
45
|
-
function getCompositeMappers(responses: {
|
|
46
|
-
[responseCode: string]: OperationResponseMap;
|
|
47
|
-
}): {
|
|
48
|
-
[responseCode: string]: OperationResponseMap;
|
|
49
|
-
} {
|
|
50
|
-
return Object.keys(responses).reduce((acc, statusCode) => {
|
|
51
|
-
return {
|
|
52
|
-
...acc,
|
|
53
|
-
[statusCode]: {
|
|
54
|
-
...responses[statusCode],
|
|
55
|
-
bodyMapper: {
|
|
56
|
-
type: {
|
|
57
|
-
name: "Composite",
|
|
58
|
-
modelProperties: {
|
|
59
|
-
status: {
|
|
60
|
-
serializedName: "status",
|
|
61
|
-
type: {
|
|
62
|
-
name: "String"
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
}, {} as { [responseCode: string]: OperationResponseMap });
|
|
71
|
-
}
|
|
72
|
-
let response: LroStatus<TResult> | undefined = undefined;
|
|
73
|
-
const customerCallback = args?.options?.onResponse;
|
|
74
|
-
const updatedArgs = {
|
|
75
|
-
...args,
|
|
76
|
-
options: {
|
|
77
|
-
...args.options,
|
|
78
|
-
onResponse: (
|
|
79
|
-
rawResponse: FullOperationResponse,
|
|
80
|
-
flatResponse: unknown
|
|
81
|
-
): void => {
|
|
82
|
-
response = GetLroStatusFromResponse(
|
|
83
|
-
{
|
|
84
|
-
statusCode: rawResponse.status,
|
|
85
|
-
body: rawResponse.parsedBody,
|
|
86
|
-
headers: rawResponse.headers.toJSON()
|
|
87
|
-
},
|
|
88
|
-
flatResponse as TResult
|
|
89
|
-
);
|
|
90
|
-
if (response.done) {
|
|
91
|
-
customerCallback?.(rawResponse, flatResponse);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
// Make sure we don't send any body to the get request
|
|
97
|
-
const { requestBody, responses, ...restSpec } = spec;
|
|
98
|
-
if (mode === "AzureAsync") {
|
|
99
|
-
return async (path?: string) => {
|
|
100
|
-
await sendOperationFn(updatedArgs, {
|
|
101
|
-
...restSpec,
|
|
102
|
-
responses: getCompositeMappers(responses),
|
|
103
|
-
httpMethod: "GET",
|
|
104
|
-
...(path && { path })
|
|
105
|
-
});
|
|
106
|
-
return response!;
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
return async (path?: string) => {
|
|
110
|
-
await sendOperationFn(updatedArgs, {
|
|
111
|
-
...restSpec,
|
|
112
|
-
responses: responses,
|
|
113
|
-
httpMethod: "GET",
|
|
114
|
-
...(path && { path })
|
|
115
|
-
});
|
|
116
|
-
return response!;
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* We need to selectively deserialize our responses, only deserializing if we
|
|
122
|
-
* are in a final Lro response, not deserializing any polling non-terminal responses
|
|
123
|
-
*/
|
|
124
|
-
export function shouldDeserializeLro(lroResourceLocationConfig?: string) {
|
|
125
|
-
let initialOperationInfo: LroResponseInfo | undefined;
|
|
126
|
-
let isInitialRequest = true;
|
|
127
|
-
|
|
128
|
-
return (response: FullOperationResponse) => {
|
|
129
|
-
if (response.status < 200 || response.status >= 300) {
|
|
130
|
-
return true;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
if (!initialOperationInfo) {
|
|
134
|
-
initialOperationInfo = getLroData(response);
|
|
135
|
-
} else {
|
|
136
|
-
isInitialRequest = false;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
if (
|
|
140
|
-
initialOperationInfo.azureAsyncOperation ||
|
|
141
|
-
initialOperationInfo.operationLocation
|
|
142
|
-
) {
|
|
143
|
-
return (
|
|
144
|
-
!isInitialRequest &&
|
|
145
|
-
isAsyncOperationFinalResponse(
|
|
146
|
-
response,
|
|
147
|
-
initialOperationInfo,
|
|
148
|
-
lroResourceLocationConfig
|
|
149
|
-
)
|
|
150
|
-
);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
if (initialOperationInfo.location) {
|
|
154
|
-
return isLocationFinalResponse(response);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
if (initialOperationInfo.requestMethod === "PUT") {
|
|
158
|
-
return isBodyPollingFinalResponse(response);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
return true;
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
function isAsyncOperationFinalResponse(
|
|
166
|
-
response: FullOperationResponse,
|
|
167
|
-
initialOperationInfo: LroResponseInfo,
|
|
168
|
-
lroResourceLocationConfig?: string
|
|
169
|
-
): boolean {
|
|
170
|
-
const status: string = response.parsedBody?.status || "Succeeded";
|
|
171
|
-
if (!terminalStates.includes(status.toLowerCase())) {
|
|
172
|
-
return false;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
if (initialOperationInfo.requestMethod === "DELETE") {
|
|
176
|
-
return true;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
if (
|
|
180
|
-
initialOperationInfo.requestMethod === "PUT" &&
|
|
181
|
-
lroResourceLocationConfig &&
|
|
182
|
-
lroResourceLocationConfig.toLowerCase() === "azure-asyncoperation"
|
|
183
|
-
) {
|
|
184
|
-
return true;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
if (
|
|
188
|
-
initialOperationInfo.requestMethod !== "PUT" &&
|
|
189
|
-
!initialOperationInfo.location
|
|
190
|
-
) {
|
|
191
|
-
return true;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
return false;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
function isLocationFinalResponse(response: FullOperationResponse): boolean {
|
|
198
|
-
return response.status !== 202;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
function isBodyPollingFinalResponse(response: FullOperationResponse): boolean {
|
|
202
|
-
const provisioningState: string =
|
|
203
|
-
response.parsedBody?.properties?.provisioningState || "Succeeded";
|
|
204
|
-
|
|
205
|
-
if (terminalStates.includes(provisioningState.toLowerCase())) {
|
|
206
|
-
return true;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
return false;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
interface LroResponseInfo {
|
|
213
|
-
requestMethod: string;
|
|
214
|
-
azureAsyncOperation?: string;
|
|
215
|
-
operationLocation?: string;
|
|
216
|
-
location?: string;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
function getLroData(result: FullOperationResponse): LroResponseInfo {
|
|
220
|
-
return {
|
|
221
|
-
azureAsyncOperation: result.headers.get("azure-asyncoperation"),
|
|
222
|
-
operationLocation: result.headers.get("operation-location"),
|
|
223
|
-
location: result.headers.get("location"),
|
|
224
|
-
requestMethod: result.request.method
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
export function getSpecPath(spec: OperationSpec): string {
|
|
229
|
-
if (spec.path) {
|
|
230
|
-
return spec.path;
|
|
231
|
-
} else {
|
|
232
|
-
throw Error("Bad spec: request path is not found!");
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
export class CoreClientLro<T> implements LongRunningOperation<T> {
|
|
237
|
-
constructor(
|
|
238
|
-
private sendOperationFn: SendOperationFn<T>,
|
|
239
|
-
private args: OperationArguments,
|
|
240
|
-
private spec: OperationSpec,
|
|
241
|
-
private lroResourceLocationConfig?: LroResourceLocationConfig,
|
|
242
|
-
public requestPath: string = spec.path!,
|
|
243
|
-
public requestMethod: string = spec.httpMethod
|
|
244
|
-
) {}
|
|
245
|
-
public async sendInitialRequest(
|
|
246
|
-
initializeState: (
|
|
247
|
-
rawResponse: RawResponse,
|
|
248
|
-
flatResponse: unknown
|
|
249
|
-
) => boolean
|
|
250
|
-
): Promise<LroResponse<T>> {
|
|
251
|
-
const { onResponse, ...restOptions } = this.args.options || {};
|
|
252
|
-
return this.sendOperationFn(
|
|
253
|
-
{
|
|
254
|
-
...this.args,
|
|
255
|
-
options: {
|
|
256
|
-
...restOptions,
|
|
257
|
-
onResponse: (
|
|
258
|
-
rawResponse: FullOperationResponse,
|
|
259
|
-
flatResponse: unknown
|
|
260
|
-
) => {
|
|
261
|
-
const isCompleted = initializeState(
|
|
262
|
-
{
|
|
263
|
-
statusCode: rawResponse.status,
|
|
264
|
-
body: rawResponse.parsedBody,
|
|
265
|
-
headers: rawResponse.headers.toJSON()
|
|
266
|
-
},
|
|
267
|
-
flatResponse
|
|
268
|
-
);
|
|
269
|
-
if (isCompleted) {
|
|
270
|
-
onResponse?.(rawResponse, flatResponse);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
},
|
|
275
|
-
this.spec
|
|
276
|
-
);
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
public async sendPollRequest(
|
|
280
|
-
config: LroConfig,
|
|
281
|
-
path: string
|
|
282
|
-
): Promise<LroStatus<T>> {
|
|
283
|
-
const getLroStatusFromResponse = createGetLroStatusFromResponse(
|
|
284
|
-
this,
|
|
285
|
-
config,
|
|
286
|
-
this.lroResourceLocationConfig
|
|
287
|
-
);
|
|
288
|
-
return createPollingMethod(
|
|
289
|
-
this.sendOperationFn,
|
|
290
|
-
getLroStatusFromResponse,
|
|
291
|
-
this.args,
|
|
292
|
-
this.spec,
|
|
293
|
-
config.mode
|
|
294
|
-
)(path);
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
public async retrieveAzureAsyncResource(
|
|
298
|
-
path?: string
|
|
299
|
-
): Promise<LroResponse<T>> {
|
|
300
|
-
const updatedArgs = { ...this.args };
|
|
301
|
-
if (updatedArgs.options) {
|
|
302
|
-
(updatedArgs.options as any).shouldDeserialize = true;
|
|
303
|
-
}
|
|
304
|
-
return createPollingMethod(
|
|
305
|
-
this.sendOperationFn,
|
|
306
|
-
(rawResponse, flatResponse) => ({
|
|
307
|
-
rawResponse,
|
|
308
|
-
flatResponse,
|
|
309
|
-
done: true
|
|
310
|
-
}),
|
|
311
|
-
updatedArgs,
|
|
312
|
-
this.spec
|
|
313
|
-
)(path);
|
|
314
|
-
}
|
|
315
|
-
}
|
package/src/coreHttpLro.ts
DELETED
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Microsoft Corporation.
|
|
2
|
-
// Licensed under the MIT License.
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
HttpOperationResponse,
|
|
6
|
-
OperationArguments,
|
|
7
|
-
OperationResponse,
|
|
8
|
-
OperationSpec
|
|
9
|
-
} from "@azure/core-http";
|
|
10
|
-
import {
|
|
11
|
-
LroResourceLocationConfig,
|
|
12
|
-
GetLroStatusFromResponse,
|
|
13
|
-
LongRunningOperation,
|
|
14
|
-
LroConfig,
|
|
15
|
-
LroMode,
|
|
16
|
-
LroResponse,
|
|
17
|
-
LroStatus,
|
|
18
|
-
createGetLroStatusFromResponse,
|
|
19
|
-
RawResponse
|
|
20
|
-
} from "./lro";
|
|
21
|
-
|
|
22
|
-
export const successStates = ["succeeded"];
|
|
23
|
-
export const failureStates = ["failed", "canceled", "cancelled"];
|
|
24
|
-
export const terminalStates = successStates.concat(failureStates);
|
|
25
|
-
|
|
26
|
-
export type SendOperationFn<T> = (
|
|
27
|
-
args: OperationArguments,
|
|
28
|
-
spec: OperationSpec
|
|
29
|
-
) => Promise<LroResponse<T>>;
|
|
30
|
-
|
|
31
|
-
export function createPollingMethod<TResult>(
|
|
32
|
-
sendOperationFn: SendOperationFn<TResult>,
|
|
33
|
-
getLroStatusFromResponse: GetLroStatusFromResponse<TResult>,
|
|
34
|
-
args: OperationArguments,
|
|
35
|
-
spec: OperationSpec,
|
|
36
|
-
mode?: LroMode
|
|
37
|
-
): (path?: string) => Promise<LroStatus<TResult>> {
|
|
38
|
-
/**
|
|
39
|
-
* Polling calls will always return a status object i.e. {"status": "success"}
|
|
40
|
-
* these intermediate responses are not described in the swagger so we need to
|
|
41
|
-
* pass custom mappers at runtime.
|
|
42
|
-
* This function replaces all the existing mappers to be able to deserialize a status object
|
|
43
|
-
* @param responses Original set of responses defined in the operation
|
|
44
|
-
*/
|
|
45
|
-
function getCompositeMappers(responses: {
|
|
46
|
-
[responseCode: string]: OperationResponse;
|
|
47
|
-
}): {
|
|
48
|
-
[responseCode: string]: OperationResponse;
|
|
49
|
-
} {
|
|
50
|
-
return Object.keys(responses).reduce((acc, statusCode) => {
|
|
51
|
-
return {
|
|
52
|
-
...acc,
|
|
53
|
-
[statusCode]: {
|
|
54
|
-
...responses[statusCode],
|
|
55
|
-
bodyMapper: {
|
|
56
|
-
type: {
|
|
57
|
-
name: "Composite",
|
|
58
|
-
modelProperties: {
|
|
59
|
-
status: {
|
|
60
|
-
serializedName: "status",
|
|
61
|
-
type: {
|
|
62
|
-
name: "String"
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
}, {} as { [responseCode: string]: OperationResponse });
|
|
71
|
-
}
|
|
72
|
-
// Make sure we don't send any body to the get request
|
|
73
|
-
const { requestBody, responses, ...restSpec } = spec;
|
|
74
|
-
if (mode === "AzureAsync") {
|
|
75
|
-
return async (path?: string) => {
|
|
76
|
-
const { flatResponse, rawResponse } = await sendOperationFn(args, {
|
|
77
|
-
...restSpec,
|
|
78
|
-
responses: getCompositeMappers(responses),
|
|
79
|
-
httpMethod: "GET",
|
|
80
|
-
...(path && { path })
|
|
81
|
-
});
|
|
82
|
-
return getLroStatusFromResponse(rawResponse, flatResponse as TResult);
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
return async (path?: string) => {
|
|
86
|
-
const { flatResponse, rawResponse } = await sendOperationFn(args, {
|
|
87
|
-
...restSpec,
|
|
88
|
-
responses: responses,
|
|
89
|
-
httpMethod: "GET",
|
|
90
|
-
...(path && { path })
|
|
91
|
-
});
|
|
92
|
-
return getLroStatusFromResponse(rawResponse, flatResponse as TResult);
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* We need to selectively deserialize our responses, only deserializing if we
|
|
98
|
-
* are in a final Lro response, not deserializing any polling non-terminal responses
|
|
99
|
-
*/
|
|
100
|
-
export function shouldDeserializeLro(lroResourceLocationConfig?: string) {
|
|
101
|
-
let initialOperationInfo: LroResponseInfo | undefined;
|
|
102
|
-
let isInitialRequest = true;
|
|
103
|
-
|
|
104
|
-
return (response: HttpOperationResponse) => {
|
|
105
|
-
if (response.status < 200 || response.status >= 300) {
|
|
106
|
-
return true;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
if (!initialOperationInfo) {
|
|
110
|
-
initialOperationInfo = getLroData(response);
|
|
111
|
-
} else {
|
|
112
|
-
isInitialRequest = false;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
if (
|
|
116
|
-
initialOperationInfo.azureAsyncOperation ||
|
|
117
|
-
initialOperationInfo.operationLocation
|
|
118
|
-
) {
|
|
119
|
-
return (
|
|
120
|
-
!isInitialRequest &&
|
|
121
|
-
isAsyncOperationFinalResponse(
|
|
122
|
-
response,
|
|
123
|
-
initialOperationInfo,
|
|
124
|
-
lroResourceLocationConfig
|
|
125
|
-
)
|
|
126
|
-
);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
if (initialOperationInfo.location) {
|
|
130
|
-
return isLocationFinalResponse(response);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
if (initialOperationInfo.requestMethod === "PUT") {
|
|
134
|
-
return isBodyPollingFinalResponse(response);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
return true;
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
function isAsyncOperationFinalResponse(
|
|
142
|
-
response: HttpOperationResponse,
|
|
143
|
-
initialOperationInfo: LroResponseInfo,
|
|
144
|
-
lroResourceLocationConfig?: string
|
|
145
|
-
): boolean {
|
|
146
|
-
const status: string = response.parsedBody?.status || "Succeeded";
|
|
147
|
-
if (!terminalStates.includes(status.toLowerCase())) {
|
|
148
|
-
return false;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
if (initialOperationInfo.requestMethod === "DELETE") {
|
|
152
|
-
return true;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
if (
|
|
156
|
-
initialOperationInfo.requestMethod === "PUT" &&
|
|
157
|
-
lroResourceLocationConfig &&
|
|
158
|
-
lroResourceLocationConfig.toLowerCase() === "azure-asyncoperation"
|
|
159
|
-
) {
|
|
160
|
-
return true;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
if (
|
|
164
|
-
initialOperationInfo.requestMethod !== "PUT" &&
|
|
165
|
-
!initialOperationInfo.location
|
|
166
|
-
) {
|
|
167
|
-
return true;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
return false;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
function isLocationFinalResponse(response: HttpOperationResponse): boolean {
|
|
174
|
-
return response.status !== 202;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
function isBodyPollingFinalResponse(response: HttpOperationResponse): boolean {
|
|
178
|
-
const provisioningState: string =
|
|
179
|
-
response.parsedBody?.properties?.provisioningState || "Succeeded";
|
|
180
|
-
|
|
181
|
-
if (terminalStates.includes(provisioningState.toLowerCase())) {
|
|
182
|
-
return true;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
return false;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
interface LroResponseInfo {
|
|
189
|
-
requestMethod: string;
|
|
190
|
-
azureAsyncOperation?: string;
|
|
191
|
-
operationLocation?: string;
|
|
192
|
-
location?: string;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
function getLroData(result: HttpOperationResponse): LroResponseInfo {
|
|
196
|
-
return {
|
|
197
|
-
azureAsyncOperation: result.headers.get("azure-asyncoperation"),
|
|
198
|
-
operationLocation: result.headers.get("operation-location"),
|
|
199
|
-
location: result.headers.get("location"),
|
|
200
|
-
requestMethod: result.request.method
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
export function getSpecPath(spec: OperationSpec): string {
|
|
205
|
-
if (spec.path) {
|
|
206
|
-
return spec.path;
|
|
207
|
-
} else {
|
|
208
|
-
throw Error("Bad spec: request path is not found!");
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
export class CoreHttpLro<T> implements LongRunningOperation<T> {
|
|
213
|
-
constructor(
|
|
214
|
-
private sendOperationFn: SendOperationFn<T>,
|
|
215
|
-
private args: OperationArguments,
|
|
216
|
-
private spec: OperationSpec,
|
|
217
|
-
private lroResourceLocationConfig?: LroResourceLocationConfig,
|
|
218
|
-
public requestPath: string = spec.path!,
|
|
219
|
-
public requestMethod: string = spec.httpMethod
|
|
220
|
-
) {}
|
|
221
|
-
public async sendInitialRequest(
|
|
222
|
-
initializeState: (
|
|
223
|
-
rawResponse: RawResponse,
|
|
224
|
-
flatResponse: unknown
|
|
225
|
-
) => boolean
|
|
226
|
-
): Promise<LroResponse<T>> {
|
|
227
|
-
const response = await this.sendOperationFn(this.args, this.spec);
|
|
228
|
-
initializeState(response.rawResponse, response.flatResponse);
|
|
229
|
-
return response;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
public async sendPollRequest(
|
|
233
|
-
config: LroConfig,
|
|
234
|
-
path: string
|
|
235
|
-
): Promise<LroStatus<T>> {
|
|
236
|
-
const getLroStatusFromResponse = createGetLroStatusFromResponse(
|
|
237
|
-
this,
|
|
238
|
-
config,
|
|
239
|
-
this.lroResourceLocationConfig
|
|
240
|
-
);
|
|
241
|
-
return createPollingMethod(
|
|
242
|
-
this.sendOperationFn,
|
|
243
|
-
getLroStatusFromResponse,
|
|
244
|
-
this.args,
|
|
245
|
-
this.spec,
|
|
246
|
-
config.mode
|
|
247
|
-
)(path);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
public async retrieveAzureAsyncResource(
|
|
251
|
-
path?: string
|
|
252
|
-
): Promise<LroResponse<T>> {
|
|
253
|
-
const updatedArgs = { ...this.args };
|
|
254
|
-
if (updatedArgs.options) {
|
|
255
|
-
(updatedArgs.options as any).shouldDeserialize = true;
|
|
256
|
-
}
|
|
257
|
-
return createPollingMethod(
|
|
258
|
-
this.sendOperationFn,
|
|
259
|
-
(rawResponse, flatResponse) => ({
|
|
260
|
-
rawResponse,
|
|
261
|
-
flatResponse,
|
|
262
|
-
done: true
|
|
263
|
-
}),
|
|
264
|
-
updatedArgs,
|
|
265
|
-
this.spec
|
|
266
|
-
)(path);
|
|
267
|
-
}
|
|
268
|
-
}
|