@autorest/typescript 6.0.0-beta.19 → 6.0.0-beta.20
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 +3 -3
- package/dist/hlcREADME.md.hbs +144 -0
- package/dist/karma.conf.js.hbs +126 -0
- package/dist/paginateHelper.ts.hbs +208 -0
- package/dist/pollingHelper.ts.hbs +69 -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/sampleEnv.hbs +4 -0
- package/dist/sampleTest.ts.hbs +32 -0
- package/dist/samples.ts.hbs +49 -0
- package/dist/src/autorestSession.js +2 -2
- package/dist/src/autorestSession.js.map +1 -1
- 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 +78 -19
- package/dist/src/generators/clientFileGenerator.js.map +1 -1
- package/dist/src/generators/indexGenerator.js +14 -14
- package/dist/src/generators/indexGenerator.js.map +1 -1
- package/dist/src/generators/mappersGenerator.js +14 -14
- package/dist/src/generators/mappersGenerator.js.map +1 -1
- package/dist/src/generators/modelsGenerator.js +22 -22
- 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 +58 -89
- 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/sampleGenerator.js +1 -1
- package/dist/src/generators/samples/sampleGenerator.js.map +1 -1
- package/dist/src/generators/static/apiExtractorConfig.js +1 -1
- package/dist/src/generators/static/apiExtractorConfig.js.map +1 -1
- package/dist/src/generators/static/esLintConfigGenerator.js +1 -1
- package/dist/src/generators/static/esLintConfigGenerator.js.map +1 -1
- package/dist/src/generators/static/karma.conf.js.hbs +4 -19
- package/dist/src/generators/static/karmaConfigFileGenerator.js +1 -1
- package/dist/src/generators/static/karmaConfigFileGenerator.js.map +1 -1
- 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.js +46 -40
- package/dist/src/generators/static/packageFileGenerator.js.map +1 -1
- package/dist/src/generators/static/readmeFileGenerator.js +4 -4
- package/dist/src/generators/static/readmeFileGenerator.js.map +1 -1
- package/dist/src/generators/static/rollupConfigFileGenerator.js +1 -1
- package/dist/src/generators/static/rollupConfigFileGenerator.js.map +1 -1
- package/dist/src/generators/static/tsConfigFileGenerator.js +1 -1
- package/dist/src/generators/static/tsConfigFileGenerator.js.map +1 -1
- package/dist/src/generators/test/envBrowserFileGenerator.js +1 -1
- package/dist/src/generators/test/envBrowserFileGenerator.js.map +1 -1
- package/dist/src/generators/test/envFileGenerator.js +1 -1
- package/dist/src/generators/test/envFileGenerator.js.map +1 -1
- package/dist/src/generators/test/recordedClientFileGenerator.js +1 -1
- package/dist/src/generators/test/recordedClientFileGenerator.js.map +1 -1
- package/dist/src/generators/test/rlcRecordedClient.ts.hbs +15 -24
- package/dist/src/generators/test/rlcSampleTest.spec.ts.hbs +4 -3
- package/dist/src/generators/test/sampleTest.ts.hbs +18 -18
- package/dist/src/generators/test/sampleTestGenerator.js +1 -1
- package/dist/src/generators/test/sampleTestGenerator.js.map +1 -1
- 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.js +13 -13
- 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.js +5 -5
- package/dist/src/main.js.map +1 -1
- package/dist/src/models/clientDetails.d.ts +1 -1
- package/dist/src/models/clientDetails.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateClient.js +14 -14
- package/dist/src/restLevelClient/generateClient.js.map +1 -1
- package/dist/src/restLevelClient/generateClientDefinition.d.ts.map +1 -1
- package/dist/src/restLevelClient/generateClientDefinition.js +23 -25
- package/dist/src/restLevelClient/generateClientDefinition.js.map +1 -1
- package/dist/src/restLevelClient/generateMethodShortcuts.js +5 -5
- package/dist/src/restLevelClient/generateMethodShortcuts.js.map +1 -1
- package/dist/src/restLevelClient/generateObjectTypes.js +10 -10
- package/dist/src/restLevelClient/generateObjectTypes.js.map +1 -1
- package/dist/src/restLevelClient/generatePagingHelper.js +4 -4
- package/dist/src/restLevelClient/generatePagingHelper.js.map +1 -1
- package/dist/src/restLevelClient/generateParameterTypes.js +11 -11
- package/dist/src/restLevelClient/generateParameterTypes.js.map +1 -1
- package/dist/src/restLevelClient/generatePollingHelper.js +2 -2
- package/dist/src/restLevelClient/generatePollingHelper.js.map +1 -1
- package/dist/src/restLevelClient/generateResponseTypes.js +12 -12
- 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 +32 -28
- package/dist/src/restLevelClient/generateRestLevel.js.map +1 -1
- package/dist/src/restLevelClient/generateSchemaTypes.js +5 -5
- package/dist/src/restLevelClient/generateSchemaTypes.js.map +1 -1
- package/dist/src/restLevelClient/generateTopLevelIndexFile.js +3 -3
- package/dist/src/restLevelClient/generateTopLevelIndexFile.js.map +1 -1
- package/dist/src/restLevelClient/getPropertySignature.js +4 -4
- package/dist/src/restLevelClient/getPropertySignature.js.map +1 -1
- package/dist/src/restLevelClient/helpers/operationHelpers.js +1 -1
- package/dist/src/restLevelClient/helpers/operationHelpers.js.map +1 -1
- package/dist/src/restLevelClient/mutateCodeModel.js +2 -2
- package/dist/src/restLevelClient/mutateCodeModel.js.map +1 -1
- package/dist/src/restLevelClient/operationHelpers.js +2 -2
- package/dist/src/restLevelClient/operationHelpers.js.map +1 -1
- package/dist/src/restLevelClient/schemaHelpers.js +4 -4
- 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.js +25 -25
- package/dist/src/transforms/mapperTransforms.js.map +1 -1
- package/dist/src/transforms/objectTransforms.js +22 -22
- package/dist/src/transforms/objectTransforms.js.map +1 -1
- package/dist/src/transforms/operationTransforms.js +25 -25
- 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.js +23 -23
- package/dist/src/transforms/parameterTransforms.js.map +1 -1
- package/dist/src/transforms/samplesTransforms.d.ts +1 -1
- package/dist/src/transforms/samplesTransforms.d.ts.map +1 -1
- package/dist/src/transforms/samplesTransforms.js +30 -20
- package/dist/src/transforms/samplesTransforms.js.map +1 -1
- package/dist/src/transforms/transforms.d.ts.map +1 -1
- package/dist/src/transforms/transforms.js +21 -21
- 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.map +1 -1
- package/dist/src/typescriptGenerator.js +25 -23
- package/dist/src/typescriptGenerator.js.map +1 -1
- package/dist/src/utils/autorestOptions.d.ts.map +1 -1
- package/dist/src/utils/autorestOptions.js +19 -13
- 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/extractHeaders.js +4 -4
- package/dist/src/utils/extractHeaders.js.map +1 -1
- package/dist/src/utils/extractPaginationDetails.js +9 -9
- 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.js +2 -2
- package/dist/src/utils/nameUtils.js.map +1 -1
- package/dist/src/utils/schemaHelpers.js +3 -3
- 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 +29 -30
- package/src/generators/clientFileGenerator.ts +74 -5
- package/src/generators/modelsGenerator.ts +2 -2
- package/src/generators/operationGenerator.ts +39 -85
- package/src/generators/parametersGenerator.ts +2 -3
- package/src/generators/static/karma.conf.js.hbs +4 -19
- package/src/generators/static/packageFileGenerator.ts +39 -33
- package/src/generators/test/rlcRecordedClient.ts.hbs +15 -24
- package/src/generators/test/rlcSampleTest.spec.ts.hbs +4 -3
- package/src/generators/test/sampleTest.ts.hbs +18 -18
- package/src/generators/tracingFileGenerator.ts +6 -24
- package/src/generators/utils/tracingUtils.ts +1 -5
- package/src/models/clientDetails.ts +1 -1
- package/src/restLevelClient/generateClientDefinition.ts +10 -8
- package/src/restLevelClient/generateRestLevel.ts +5 -2
- package/src/transforms/samplesTransforms.ts +325 -276
- package/src/transforms/transforms.ts +2 -3
- package/src/typescriptGenerator.ts +7 -3
- package/src/utils/autorestOptions.ts +16 -10
- package/CHANGELOG.md +0 -106
|
@@ -768,30 +768,12 @@ function writeNoOverloadsOperationBody(
|
|
|
768
768
|
const vanillaOptionsName = "options";
|
|
769
769
|
let options = vanillaOptionsName;
|
|
770
770
|
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
clientDetails,
|
|
778
|
-
operationName,
|
|
779
|
-
`${options} || {}`
|
|
780
|
-
);
|
|
781
|
-
operationMethod.addStatements([tracingStatement]);
|
|
782
|
-
// Options from createSpan should be used as operation options, updating
|
|
783
|
-
options = compileOperationOptionsToRequestOptionsBase(
|
|
784
|
-
updatedOptionsName,
|
|
785
|
-
operation.isLro,
|
|
786
|
-
lroResourceLocationConfig
|
|
787
|
-
);
|
|
788
|
-
} else {
|
|
789
|
-
options = compileOperationOptionsToRequestOptionsBase(
|
|
790
|
-
vanillaOptionsName,
|
|
791
|
-
operation.isLro,
|
|
792
|
-
lroResourceLocationConfig
|
|
793
|
-
);
|
|
794
|
-
}
|
|
771
|
+
// Options from createSpan should be used as operation options, updating
|
|
772
|
+
options = compileOperationOptionsToRequestOptionsBase(
|
|
773
|
+
vanillaOptionsName,
|
|
774
|
+
operation.isLro,
|
|
775
|
+
lroResourceLocationConfig
|
|
776
|
+
);
|
|
795
777
|
|
|
796
778
|
const sendParams = parameterDeclarations
|
|
797
779
|
.map(p =>
|
|
@@ -813,6 +795,7 @@ function writeNoOverloadsOperationBody(
|
|
|
813
795
|
if (operation.isLro) {
|
|
814
796
|
if (!useCoreV2) {
|
|
815
797
|
writeLroOperationBody(
|
|
798
|
+
clientDetails,
|
|
816
799
|
"operationArguments",
|
|
817
800
|
responseName,
|
|
818
801
|
operationSpecName,
|
|
@@ -823,6 +806,7 @@ function writeNoOverloadsOperationBody(
|
|
|
823
806
|
);
|
|
824
807
|
} else {
|
|
825
808
|
writeLroOperationBody(
|
|
809
|
+
clientDetails,
|
|
826
810
|
`{${sendParams}}`,
|
|
827
811
|
responseName,
|
|
828
812
|
operationSpecName,
|
|
@@ -850,18 +834,6 @@ interface OptionsStatement {
|
|
|
850
834
|
outputOptionsVarName: string;
|
|
851
835
|
}
|
|
852
836
|
|
|
853
|
-
function getTracingSpanStatement(
|
|
854
|
-
clientDetails: ClientDetails,
|
|
855
|
-
operationName: string,
|
|
856
|
-
options: string
|
|
857
|
-
): OptionsStatement {
|
|
858
|
-
const outputOptionsVarName = "updatedOptions";
|
|
859
|
-
return {
|
|
860
|
-
statement: `const { span, ${outputOptionsVarName} } = createSpan("${clientDetails.className}-${operationName}", ${options});`,
|
|
861
|
-
outputOptionsVarName: outputOptionsVarName
|
|
862
|
-
};
|
|
863
|
-
}
|
|
864
|
-
|
|
865
837
|
function writeSendOperationRequest(
|
|
866
838
|
responseName: string,
|
|
867
839
|
operationMethod: MethodDeclaration,
|
|
@@ -871,6 +843,7 @@ function writeSendOperationRequest(
|
|
|
871
843
|
sendParams: string
|
|
872
844
|
) {
|
|
873
845
|
const { useCoreV2, tracingInfo } = getAutorestOptions();
|
|
846
|
+
const operationName = operationMethod.getName();
|
|
874
847
|
const client = isInline ? "" : ".client";
|
|
875
848
|
const sendRequestStatement = !useCoreV2
|
|
876
849
|
? `this${client}.sendOperationRequest(operationArguments, ${operationSpecName})`
|
|
@@ -879,10 +852,11 @@ function writeSendOperationRequest(
|
|
|
879
852
|
// When tracing is enabled we want to report success and failures through OpenTelemetry
|
|
880
853
|
// so we create a span and mark it as succeeded or failed
|
|
881
854
|
operationMethod.addStatements(
|
|
882
|
-
|
|
855
|
+
getTracingClientWithSpanStatement(
|
|
883
856
|
sendRequestStatement,
|
|
884
857
|
responseName,
|
|
885
|
-
!!tracingInfo
|
|
858
|
+
!!tracingInfo,
|
|
859
|
+
`${clientDetails.className}.${operationName}`
|
|
886
860
|
)
|
|
887
861
|
);
|
|
888
862
|
}
|
|
@@ -891,25 +865,18 @@ function getSpanStatusCode() {
|
|
|
891
865
|
return "coreTracing.SpanStatusCode.UNSET";
|
|
892
866
|
}
|
|
893
867
|
|
|
894
|
-
function
|
|
868
|
+
function getTracingClientWithSpanStatement(
|
|
895
869
|
sendRequestStatement: string,
|
|
896
870
|
responseName: string,
|
|
897
|
-
isTracingEnabled: boolean
|
|
871
|
+
isTracingEnabled: boolean,
|
|
872
|
+
spanName: string
|
|
898
873
|
) {
|
|
899
874
|
const { useCoreV2 } = getAutorestOptions();
|
|
900
875
|
if (isTracingEnabled) {
|
|
901
|
-
return `
|
|
902
|
-
|
|
903
|
-
return
|
|
904
|
-
}
|
|
905
|
-
span.setStatus({
|
|
906
|
-
code: ${getSpanStatusCode()},
|
|
907
|
-
message: error.message
|
|
908
|
-
});
|
|
909
|
-
throw error;
|
|
910
|
-
} finally {
|
|
911
|
-
span.end();
|
|
912
|
-
}`;
|
|
876
|
+
return `
|
|
877
|
+
return tracingClient.withSpan("${spanName}", options ?? {}, async options => {
|
|
878
|
+
return ${sendRequestStatement} as Promise<${responseName}>;
|
|
879
|
+
});`;
|
|
913
880
|
} else {
|
|
914
881
|
return !useCoreV2
|
|
915
882
|
? `return ${sendRequestStatement} as Promise<${responseName}>`
|
|
@@ -918,6 +885,7 @@ function getTracingTryCatchStatement(
|
|
|
918
885
|
}
|
|
919
886
|
|
|
920
887
|
function writeLroOperationBody(
|
|
888
|
+
clientDetails: ClientDetails,
|
|
921
889
|
operationParamsName: string,
|
|
922
890
|
responseName: string,
|
|
923
891
|
operationSpecName: string,
|
|
@@ -927,14 +895,16 @@ function writeLroOperationBody(
|
|
|
927
895
|
isTracingEnabled = false
|
|
928
896
|
) {
|
|
929
897
|
const { useCoreV2 } = getAutorestOptions();
|
|
898
|
+
const spanName = `${clientDetails.className}.${methodDeclaration.getName()}`;
|
|
930
899
|
const client = isInline ? "" : ".client";
|
|
931
900
|
const sendRequestStatement = `this${client}.sendOperationRequest(args, spec)`;
|
|
932
901
|
const sendOperationStatement = !useCoreV2
|
|
933
902
|
? `const directSendOperation = async (args: coreHttp.OperationArguments, spec: coreHttp.OperationSpec): Promise<${responseName}> => {
|
|
934
|
-
${
|
|
903
|
+
${getTracingClientWithSpanStatement(
|
|
935
904
|
sendRequestStatement,
|
|
936
905
|
responseName,
|
|
937
|
-
isTracingEnabled
|
|
906
|
+
isTracingEnabled,
|
|
907
|
+
spanName
|
|
938
908
|
)}
|
|
939
909
|
};
|
|
940
910
|
const sendOperation = async (args: coreHttp.OperationArguments, spec: coreHttp.OperationSpec) => {
|
|
@@ -946,10 +916,11 @@ function writeLroOperationBody(
|
|
|
946
916
|
}};
|
|
947
917
|
}`
|
|
948
918
|
: `const directSendOperation = async (args: coreClient.OperationArguments, spec: coreClient.OperationSpec): Promise<${responseName}> => {
|
|
949
|
-
${
|
|
919
|
+
${getTracingClientWithSpanStatement(
|
|
950
920
|
sendRequestStatement,
|
|
951
921
|
responseName,
|
|
952
|
-
isTracingEnabled
|
|
922
|
+
isTracingEnabled,
|
|
923
|
+
spanName
|
|
953
924
|
)}
|
|
954
925
|
};
|
|
955
926
|
const sendOperation = async (args: coreClient.OperationArguments, spec: coreClient.OperationSpec) => {
|
|
@@ -984,8 +955,8 @@ function writeLroOperationBody(
|
|
|
984
955
|
? `, lroResourceLocationConfig: "${lroResourceLocationConfig.toLowerCase()}"`
|
|
985
956
|
: ""
|
|
986
957
|
} });`,
|
|
987
|
-
|
|
988
|
-
|
|
958
|
+
"await poller.poll();",
|
|
959
|
+
"return poller;"
|
|
989
960
|
]);
|
|
990
961
|
|
|
991
962
|
methodDeclaration.setReturnType(
|
|
@@ -1008,6 +979,7 @@ function writeMultiMediaTypeOperationBody(
|
|
|
1008
979
|
): void {
|
|
1009
980
|
const { useCoreV2, tracingInfo } = getAutorestOptions();
|
|
1010
981
|
const coreImport = !useCoreV2 ? "coreHttp" : "coreClient";
|
|
982
|
+
|
|
1011
983
|
operationMethod.addStatements([
|
|
1012
984
|
`let operationSpec: ${coreImport}.OperationSpec;`,
|
|
1013
985
|
`let operationArguments: ${coreImport}.OperationArguments;`
|
|
@@ -1089,29 +1061,13 @@ function writeMultiMediaTypeOperationBody(
|
|
|
1089
1061
|
const lroResourceLocationConfig =
|
|
1090
1062
|
operation.lroOptions && operation.lroOptions["final-state-via"];
|
|
1091
1063
|
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
}
|
|
1098
|
-
|
|
1099
|
-
tracingStatement,
|
|
1100
|
-
`operationArguments.options = ${compileOperationOptionsToRequestOptionsBase(
|
|
1101
|
-
outputOptionsVarName,
|
|
1102
|
-
operation.isLro,
|
|
1103
|
-
lroResourceLocationConfig
|
|
1104
|
-
)};`
|
|
1105
|
-
]);
|
|
1106
|
-
} else {
|
|
1107
|
-
operationMethod.addStatements([
|
|
1108
|
-
`operationArguments.options = ${compileOperationOptionsToRequestOptionsBase(
|
|
1109
|
-
optionsVarName,
|
|
1110
|
-
operation.isLro,
|
|
1111
|
-
lroResourceLocationConfig
|
|
1112
|
-
)};`
|
|
1113
|
-
]);
|
|
1114
|
-
}
|
|
1064
|
+
operationMethod.addStatements([
|
|
1065
|
+
`operationArguments.options = ${compileOperationOptionsToRequestOptionsBase(
|
|
1066
|
+
optionsVarName,
|
|
1067
|
+
operation.isLro,
|
|
1068
|
+
lroResourceLocationConfig
|
|
1069
|
+
)};`
|
|
1070
|
+
]);
|
|
1115
1071
|
|
|
1116
1072
|
if (!operation.isLro) {
|
|
1117
1073
|
writeSendOperationRequest(
|
|
@@ -1124,6 +1080,7 @@ function writeMultiMediaTypeOperationBody(
|
|
|
1124
1080
|
);
|
|
1125
1081
|
} else {
|
|
1126
1082
|
writeLroOperationBody(
|
|
1083
|
+
clientDetails,
|
|
1127
1084
|
"operationArguments",
|
|
1128
1085
|
responseName,
|
|
1129
1086
|
"operationSpec",
|
|
@@ -1323,10 +1280,7 @@ function addImports(
|
|
|
1323
1280
|
|
|
1324
1281
|
const clientClassName = `${className}`;
|
|
1325
1282
|
|
|
1326
|
-
const clientFileName = normalizeName(
|
|
1327
|
-
clientClassName,
|
|
1328
|
-
NameType.File
|
|
1329
|
-
);
|
|
1283
|
+
const clientFileName = normalizeName(clientClassName, NameType.File);
|
|
1330
1284
|
|
|
1331
1285
|
operationGroupFile.addImportDeclaration({
|
|
1332
1286
|
namedImports: [`${clientClassName}`],
|
|
@@ -11,7 +11,6 @@ import {
|
|
|
11
11
|
} from "ts-morph";
|
|
12
12
|
import { ClientDetails } from "../models/clientDetails";
|
|
13
13
|
import { ParameterDetails } from "../models/parameterDetails";
|
|
14
|
-
import { isString } from "util";
|
|
15
14
|
import { writeMapper } from "./mappersGenerator";
|
|
16
15
|
import { shouldImportParameters } from "./utils/importUtils";
|
|
17
16
|
import { logger } from "../utils/logger";
|
|
@@ -143,7 +142,7 @@ function writeParameterMapper(
|
|
|
143
142
|
{ mapper }: ParameterDetails
|
|
144
143
|
) {
|
|
145
144
|
writer.write("mapper: ");
|
|
146
|
-
if (
|
|
145
|
+
if (typeof mapper === "string") {
|
|
147
146
|
writer.write(`${mapper}Mapper`);
|
|
148
147
|
} else {
|
|
149
148
|
writeMapper(writer, mapper);
|
|
@@ -184,7 +183,7 @@ function getCoreHttpImports(clientDetails: ClientDetails) {
|
|
|
184
183
|
|
|
185
184
|
function getImportedMappers(clientDetails: ClientDetails) {
|
|
186
185
|
const mappers = clientDetails.parameters
|
|
187
|
-
.filter(p => !p.isSynthetic &&
|
|
186
|
+
.filter(p => !p.isSynthetic && typeof p.mapper === "string")
|
|
188
187
|
.map(p => `${p.mapper} as ${p.mapper}Mapper`);
|
|
189
188
|
|
|
190
189
|
return [...new Set<string>(mappers)];
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
// https://github.com/karma-runner/karma-chrome-launcher
|
|
2
2
|
process.env.CHROME_BIN = require("puppeteer").executablePath();
|
|
3
3
|
require("dotenv").config();
|
|
4
|
-
const {
|
|
5
|
-
|
|
6
|
-
isPlaybackMode,
|
|
7
|
-
isSoftRecordMode,
|
|
8
|
-
isRecordMode,
|
|
9
|
-
} = require("@azure-tools/test-recorder");
|
|
4
|
+
const { relativeRecordingsPath } = require("@azure-tools/test-recorder");
|
|
5
|
+
process.env.RECORDINGS_RELATIVE_PATH = relativeRecordingsPath();
|
|
10
6
|
|
|
11
7
|
module.exports = function (config) {
|
|
12
8
|
config.set({
|
|
@@ -28,16 +24,14 @@ module.exports = function (config) {
|
|
|
28
24
|
"karma-coverage",
|
|
29
25
|
"karma-sourcemap-loader",
|
|
30
26
|
"karma-junit-reporter",
|
|
31
|
-
"karma-json-to-file-reporter",
|
|
32
27
|
"karma-source-map-support",
|
|
33
|
-
"karma-json-preprocessor",
|
|
34
28
|
],
|
|
35
29
|
|
|
36
30
|
// list of files / patterns to load in the browser
|
|
37
31
|
files: [
|
|
38
32
|
"dist-test/index.browser.js",
|
|
39
33
|
{ pattern: "dist-test/index.browser.js.map", type: "html", included: false, served: true },
|
|
40
|
-
]
|
|
34
|
+
],
|
|
41
35
|
|
|
42
36
|
// list of files / patterns to exclude
|
|
43
37
|
exclude: [],
|
|
@@ -46,7 +40,6 @@ module.exports = function (config) {
|
|
|
46
40
|
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
|
|
47
41
|
preprocessors: {
|
|
48
42
|
"**/*.js": ["sourcemap", "env"],
|
|
49
|
-
"recordings/browsers/**/*.json": ["json"],
|
|
50
43
|
// IMPORTANT: COMMENT following line if you want to debug in your browsers!!
|
|
51
44
|
// Preprocess source file to calculate code coverage, however this will make source file unreadable
|
|
52
45
|
// "dist-test/index.js": ["coverage"]
|
|
@@ -64,7 +57,7 @@ module.exports = function (config) {
|
|
|
64
57
|
// test results reporter to use
|
|
65
58
|
// possible values: 'dots', 'progress'
|
|
66
59
|
// available reporters: https://npmjs.org/browse/keyword/karma-reporter
|
|
67
|
-
reporters: ["mocha", "coverage", "junit"
|
|
60
|
+
reporters: ["mocha", "coverage", "junit"],
|
|
68
61
|
|
|
69
62
|
coverageReporter: {
|
|
70
63
|
// specify a common output directory
|
|
@@ -87,11 +80,6 @@ module.exports = function (config) {
|
|
|
87
80
|
properties: {}, // key value pair of properties to add to the <properties> section of the report
|
|
88
81
|
},
|
|
89
82
|
|
|
90
|
-
jsonToFileReporter: {
|
|
91
|
-
filter: jsonRecordingFilterFunction,
|
|
92
|
-
outputPath: ".",
|
|
93
|
-
},
|
|
94
|
-
|
|
95
83
|
// web server port
|
|
96
84
|
port: 9876,
|
|
97
85
|
|
|
@@ -126,9 +114,6 @@ module.exports = function (config) {
|
|
|
126
114
|
browserNoActivityTimeout: 60000000,
|
|
127
115
|
browserDisconnectTimeout: 10000,
|
|
128
116
|
browserDisconnectTolerance: 3,
|
|
129
|
-
browserConsoleLogOptions: {
|
|
130
|
-
terminal: !isRecordMode(),
|
|
131
|
-
},
|
|
132
117
|
|
|
133
118
|
client: {
|
|
134
119
|
mocha: {
|
|
@@ -60,7 +60,7 @@ function restLevelPackage(packageDetails: PackageDetails) {
|
|
|
60
60
|
const hasLRO = hasPollingOperations(model);
|
|
61
61
|
const packageInfo: Record<string, any> = {
|
|
62
62
|
name: `${packageDetails.name}`,
|
|
63
|
-
"sdk-type":
|
|
63
|
+
"sdk-type": "client",
|
|
64
64
|
author: "Microsoft Corporation",
|
|
65
65
|
version: `${packageDetails.version}`,
|
|
66
66
|
description: `${packageDetails.description}`,
|
|
@@ -132,7 +132,7 @@ function restLevelPackage(packageDetails: PackageDetails) {
|
|
|
132
132
|
autoPublish: false,
|
|
133
133
|
dependencies: {
|
|
134
134
|
"@azure/core-auth": "^1.3.0",
|
|
135
|
-
"@azure-rest/core-client": "1.0.0-beta.
|
|
135
|
+
"@azure-rest/core-client": "1.0.0-beta.9",
|
|
136
136
|
"@azure/core-rest-pipeline": "^1.8.0",
|
|
137
137
|
"@azure/logger": "^1.0.0",
|
|
138
138
|
tslib: "^2.2.0",
|
|
@@ -144,7 +144,7 @@ function restLevelPackage(packageDetails: PackageDetails) {
|
|
|
144
144
|
})
|
|
145
145
|
},
|
|
146
146
|
devDependencies: {
|
|
147
|
-
"@microsoft/api-extractor": "
|
|
147
|
+
"@microsoft/api-extractor": "7.18.11",
|
|
148
148
|
autorest: "latest",
|
|
149
149
|
"@types/node": "^12.0.0",
|
|
150
150
|
dotenv: "^8.2.0",
|
|
@@ -184,11 +184,13 @@ function restLevelPackage(packageDetails: PackageDetails) {
|
|
|
184
184
|
|
|
185
185
|
if (generateTest) {
|
|
186
186
|
packageInfo.module = `./dist-esm/src/index.js`;
|
|
187
|
+
packageInfo.devDependencies["@azure-tools/test-credential"] = "^1.0.0";
|
|
187
188
|
packageInfo.devDependencies["@azure/identity"] = "^2.0.1";
|
|
188
|
-
packageInfo.devDependencies["@azure-tools/test-recorder"] = "^
|
|
189
|
+
packageInfo.devDependencies["@azure-tools/test-recorder"] = "^2.0.0";
|
|
189
190
|
packageInfo.devDependencies["mocha"] = "^7.1.1";
|
|
190
191
|
packageInfo.devDependencies["mocha-junit-reporter"] = "^1.18.0";
|
|
191
192
|
packageInfo.devDependencies["cross-env"] = "^7.0.2";
|
|
193
|
+
packageInfo.devDependencies["@types/chai"] = "^4.2.8";
|
|
192
194
|
packageInfo.devDependencies["chai"] = "^4.2.0";
|
|
193
195
|
packageInfo.devDependencies["cross-env"] = "^7.0.2";
|
|
194
196
|
packageInfo.devDependencies["karma-chrome-launcher"] = "^3.0.0";
|
|
@@ -197,8 +199,6 @@ function restLevelPackage(packageDetails: PackageDetails) {
|
|
|
197
199
|
packageInfo.devDependencies["karma-env-preprocessor"] = "^0.1.1";
|
|
198
200
|
packageInfo.devDependencies["karma-firefox-launcher"] = "^1.1.0";
|
|
199
201
|
packageInfo.devDependencies["karma-ie-launcher"] = "^1.0.0";
|
|
200
|
-
packageInfo.devDependencies["karma-json-preprocessor"] = "^0.3.3";
|
|
201
|
-
packageInfo.devDependencies["karma-json-to-file-reporter"] = "^1.0.1";
|
|
202
202
|
packageInfo.devDependencies["karma-junit-reporter"] = "^2.0.1";
|
|
203
203
|
packageInfo.devDependencies["karma-mocha-reporter"] = "^2.2.5";
|
|
204
204
|
packageInfo.devDependencies["karma-mocha"] = "^2.0.1";
|
|
@@ -207,31 +207,27 @@ function restLevelPackage(packageDetails: PackageDetails) {
|
|
|
207
207
|
packageInfo.devDependencies["karma"] = "^6.2.0";
|
|
208
208
|
packageInfo.devDependencies["nyc"] = "^14.0.0";
|
|
209
209
|
packageInfo.devDependencies["source-map-support"] = "^0.5.9";
|
|
210
|
-
|
|
211
|
-
packageInfo.scripts["test"] =
|
|
212
|
-
|
|
213
|
-
packageInfo.scripts["
|
|
214
|
-
|
|
215
|
-
packageInfo.scripts["test
|
|
216
|
-
|
|
217
|
-
packageInfo.scripts["unit-test"] =
|
|
218
|
-
"npm run unit-test:node && npm run unit-test:browser";
|
|
219
|
-
packageInfo.scripts["unit-test:node"] =
|
|
220
|
-
'mocha -r esm --require ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace "test/{,!(browser)/**/}*.spec.ts"';
|
|
210
|
+
packageInfo.scripts["test"] = "npm run clean && npm run build:test && npm run unit-test";
|
|
211
|
+
packageInfo.scripts["test:node"] = "npm run clean && npm run build:test && npm run unit-test:node";
|
|
212
|
+
packageInfo.scripts["test:browser"] = "npm run clean && npm run build:test && npm run unit-test:browser";
|
|
213
|
+
packageInfo.scripts["build:browser"] = "tsc -p . && cross-env ONLY_BROWSER=true rollup -c 2>&1";
|
|
214
|
+
packageInfo.scripts["build:node"] = "tsc -p . && cross-env ONLY_NODE=true rollup -c 2>&1";
|
|
215
|
+
packageInfo.scripts["build:test"] = "tsc -p . && rollup -c 2>&1";
|
|
216
|
+
packageInfo.scripts["unit-test"] = "npm run unit-test:node && npm run unit-test:browser";
|
|
217
|
+
packageInfo.scripts["unit-test:node"] = "mocha -r esm --require ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace \"test/{,!(browser)/**/}*.spec.ts\"";
|
|
221
218
|
packageInfo.scripts["unit-test:browser"] = "karma start --single-run";
|
|
222
|
-
packageInfo.scripts["integration-test"] =
|
|
223
|
-
|
|
224
|
-
packageInfo.scripts["integration-test
|
|
225
|
-
'nyc mocha -r esm --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 5000000 --full-trace "dist-esm/test/{,!(browser)/**/}*.spec.js"';
|
|
226
|
-
|
|
219
|
+
packageInfo.scripts["integration-test:browser"] = "karma start --single-run";
|
|
220
|
+
packageInfo.scripts["integration-test:node"] = "nyc mocha -r esm --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 5000000 --full-trace \"dist-esm/test/{,!(browser)/**/}*.spec.js\"";
|
|
221
|
+
packageInfo.scripts["integration-test"] = "npm run integration-test:node && npm run integration-test:browser";
|
|
227
222
|
if (azureSdkForJs) {
|
|
228
223
|
packageInfo.scripts["build:test"] = "tsc -p . && dev-tool run bundle";
|
|
229
224
|
packageInfo.scripts["integration-test:browser"] =
|
|
230
225
|
"dev-tool run test:browser";
|
|
231
|
-
|
|
232
|
-
packageInfo.scripts["
|
|
233
|
-
|
|
234
|
-
|
|
226
|
+
packageInfo.scripts["unit-test:browser"] = "dev-tool run test:browser";
|
|
227
|
+
packageInfo.scripts["unit-test:node"] =
|
|
228
|
+
"dev-tool run test:node-ts-input -- --timeout 1200000 --exclude 'test/**/browser/*.spec.ts' 'test/**/*.spec.ts'";
|
|
229
|
+
packageInfo.scripts["integration-test:node"] =
|
|
230
|
+
"dev-tool run test:node-js-input -- --timeout 5000000 'dist-esm/test/**/*.spec.js'";
|
|
235
231
|
}
|
|
236
232
|
|
|
237
233
|
packageInfo["browser"] = {
|
|
@@ -261,7 +257,8 @@ function regularAutorestPackage(
|
|
|
261
257
|
azureOutputDirectory,
|
|
262
258
|
generateTest,
|
|
263
259
|
generateSample,
|
|
264
|
-
coreHttpCompatMode
|
|
260
|
+
coreHttpCompatMode,
|
|
261
|
+
azureSdkForJs
|
|
265
262
|
} = getAutorestOptions();
|
|
266
263
|
const { model } = getSession();
|
|
267
264
|
const hasLro = hasPollingOperations(model);
|
|
@@ -298,8 +295,7 @@ function regularAutorestPackage(
|
|
|
298
295
|
"@azure/core-rest-pipeline": "^1.8.0"
|
|
299
296
|
}),
|
|
300
297
|
...(tracingInfo && {
|
|
301
|
-
"@azure/core-tracing": "1.0.0
|
|
302
|
-
"@opentelemetry/api": "^0.10.2"
|
|
298
|
+
"@azure/core-tracing": "^1.0.0"
|
|
303
299
|
}),
|
|
304
300
|
tslib: "^2.2.0"
|
|
305
301
|
},
|
|
@@ -309,7 +305,7 @@ function regularAutorestPackage(
|
|
|
309
305
|
module: `./dist-esm/index.js`,
|
|
310
306
|
types: `./types/${packageDetails.nameWithoutScope}.d.ts`,
|
|
311
307
|
devDependencies: {
|
|
312
|
-
"@microsoft/api-extractor": "
|
|
308
|
+
"@microsoft/api-extractor": "7.18.11",
|
|
313
309
|
"@rollup/plugin-commonjs": "^21.0.1",
|
|
314
310
|
"@rollup/plugin-json": "^4.1.0",
|
|
315
311
|
"@rollup/plugin-multi-entry": "^4.1.0",
|
|
@@ -391,8 +387,11 @@ function regularAutorestPackage(
|
|
|
391
387
|
if (generateTest) {
|
|
392
388
|
packageInfo.module = `./dist-esm/src/index.js`;
|
|
393
389
|
packageInfo.devDependencies["@azure/identity"] = "^2.0.1";
|
|
394
|
-
packageInfo.devDependencies["@azure-tools/test-recorder"] = "^
|
|
390
|
+
packageInfo.devDependencies["@azure-tools/test-recorder"] = "^2.0.0";
|
|
391
|
+
packageInfo.devDependencies["@azure-tools/test-credential"] = "^1.0.0";
|
|
395
392
|
packageInfo.devDependencies["mocha"] = "^7.1.1";
|
|
393
|
+
packageInfo.devDependencies["@types/chai"] = "^4.2.8";
|
|
394
|
+
packageInfo.devDependencies["chai"] = "^4.2.0";
|
|
396
395
|
packageInfo.devDependencies["cross-env"] = "^7.0.2";
|
|
397
396
|
packageInfo.scripts["test"] = "npm run integration-test";
|
|
398
397
|
packageInfo.scripts["unit-test"] =
|
|
@@ -401,8 +400,15 @@ function regularAutorestPackage(
|
|
|
401
400
|
"cross-env TEST_MODE=playback npm run integration-test:node";
|
|
402
401
|
packageInfo.scripts["integration-test"] =
|
|
403
402
|
"npm run integration-test:node && npm run integration-test:browser";
|
|
404
|
-
|
|
405
|
-
|
|
403
|
+
|
|
404
|
+
if (azureSdkForJs) {
|
|
405
|
+
packageInfo.devDependencies["@azure/dev-tool"] = "^1.0.0";
|
|
406
|
+
packageInfo.scripts["integration-test:node"] =
|
|
407
|
+
"dev-tool run test:node-ts-input -- --timeout 1200000 'test/*.ts'";
|
|
408
|
+
} else {
|
|
409
|
+
packageInfo.scripts["integration-test:node"] =
|
|
410
|
+
"mocha -r esm --require ts-node/register --timeout 1200000 --full-trace test/*.ts --reporter ../../../common/tools/mocha-multi-reporter.js";
|
|
411
|
+
}
|
|
406
412
|
}
|
|
407
413
|
if (
|
|
408
414
|
generateSample &&
|
|
@@ -1,28 +1,17 @@
|
|
|
1
1
|
import { Context } from "mocha";
|
|
2
|
-
import {
|
|
2
|
+
import { Recorder, RecorderStartOptions } from "@azure-tools/test-recorder";
|
|
3
3
|
import "./env";
|
|
4
4
|
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
recording.replace(/"access_token":"[^"]*"/g, `"access_token":"access_token"`),
|
|
16
|
-
// If we put ENDPOINT in replaceableVariables above, it will not capture
|
|
17
|
-
// the endpoint string used with nock, which will be expanded to
|
|
18
|
-
// https://<endpoint>:443/ and therefore will not match, so we have to do
|
|
19
|
-
// this instead.
|
|
20
|
-
(recording: string): string => {
|
|
21
|
-
const replaced = recording.replace("endpoint:443", "endpoint");
|
|
22
|
-
return replaced;
|
|
23
|
-
},
|
|
24
|
-
],
|
|
25
|
-
queryParametersToSkip: []
|
|
5
|
+
const envSetupForPlayback: Record<string, string> = {
|
|
6
|
+
ENDPOINT: "https://endpoint",
|
|
7
|
+
AZURE_CLIENT_ID: "azure_client_id",
|
|
8
|
+
AZURE_CLIENT_SECRET: "azure_client_secret",
|
|
9
|
+
AZURE_TENANT_ID: "88888888-8888-8888-8888-888888888888",
|
|
10
|
+
SUBSCRIPTION_ID: "azure_subscription_id"
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const recorderEnvSetup: RecorderStartOptions = {
|
|
14
|
+
envSetupForPlayback
|
|
26
15
|
};
|
|
27
16
|
|
|
28
17
|
/**
|
|
@@ -30,6 +19,8 @@ const recorderEnvSetup: RecorderEnvironmentSetup = {
|
|
|
30
19
|
* Should be called first in the test suite to make sure environment variables are
|
|
31
20
|
* read before they are being used.
|
|
32
21
|
*/
|
|
33
|
-
export function createRecorder(context: Context): Recorder {
|
|
34
|
-
|
|
22
|
+
export async function createRecorder(context: Context): Promise<Recorder> {
|
|
23
|
+
const recorder = new Recorder(context.currentTest);
|
|
24
|
+
await recorder.start(recorderEnvSetup);
|
|
25
|
+
return recorder;
|
|
35
26
|
}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Recorder } from "@azure-tools/test-recorder";
|
|
2
|
-
import
|
|
2
|
+
import { assert } from "chai";
|
|
3
3
|
import { createRecorder } from "./utils/recordedClient";
|
|
4
|
+
import { Context } from "mocha";
|
|
4
5
|
|
|
5
6
|
describe("My test", () => {
|
|
6
7
|
let recorder: Recorder;
|
|
7
8
|
|
|
8
|
-
beforeEach(async function() {
|
|
9
|
-
recorder = createRecorder(this);
|
|
9
|
+
beforeEach(async function(this: Context) {
|
|
10
|
+
recorder = await createRecorder(this);
|
|
10
11
|
});
|
|
11
12
|
|
|
12
13
|
afterEach(async function() {
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { Recorder, RecorderStartOptions, env } from "@azure-tools/test-recorder";
|
|
2
|
+
import { assert } from "chai";
|
|
3
|
+
import { Context } from "mocha";
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
],
|
|
15
|
-
queryParametersToSkip: []
|
|
5
|
+
|
|
6
|
+
const replaceableVariables: Record<string, string> = {
|
|
7
|
+
AZURE_CLIENT_ID: "azure_client_id",
|
|
8
|
+
AZURE_CLIENT_SECRET: "azure_client_secret",
|
|
9
|
+
AZURE_TENANT_ID: "88888888-8888-8888-8888-888888888888",
|
|
10
|
+
SUBSCRIPTION_ID: "azure_subscription_id"
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const recorderOptions: RecorderStartOptions = {
|
|
14
|
+
envSetupForPlayback: replaceableVariables,
|
|
16
15
|
};
|
|
17
16
|
|
|
18
17
|
describe("My test", () => {
|
|
19
18
|
let recorder: Recorder;
|
|
20
19
|
|
|
21
|
-
beforeEach(async function() {
|
|
22
|
-
recorder =
|
|
20
|
+
beforeEach(async function (this: Context) {
|
|
21
|
+
recorder = new Recorder(this.currentTest);
|
|
22
|
+
await recorder.start(recorderOptions);
|
|
23
23
|
});
|
|
24
24
|
|
|
25
|
-
afterEach(async function() {
|
|
25
|
+
afterEach(async function () {
|
|
26
26
|
await recorder.stop();
|
|
27
27
|
});
|
|
28
28
|
|
|
29
|
-
it("sample test", async function() {
|
|
29
|
+
it("sample test", async function () {
|
|
30
30
|
console.log("Hi, I'm a test!");
|
|
31
31
|
});
|
|
32
32
|
});
|