@azure-tools/typespec-java 0.20.0 → 0.20.2

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.
Files changed (71) hide show
  1. package/dist/src/code-model-builder.d.ts +0 -1
  2. package/dist/src/code-model-builder.d.ts.map +1 -1
  3. package/dist/src/code-model-builder.js +178 -137
  4. package/dist/src/code-model-builder.js.map +1 -1
  5. package/dist/src/common/client.d.ts +1 -1
  6. package/dist/src/common/client.d.ts.map +1 -1
  7. package/dist/src/common/client.js +1 -0
  8. package/dist/src/common/client.js.map +1 -1
  9. package/dist/src/common/code-model.d.ts +1 -1
  10. package/dist/src/common/code-model.d.ts.map +1 -1
  11. package/dist/src/common/code-model.js +2 -1
  12. package/dist/src/common/code-model.js.map +1 -1
  13. package/dist/src/common/operation.d.ts +2 -2
  14. package/dist/src/common/operation.d.ts.map +1 -1
  15. package/dist/src/common/operation.js +2 -1
  16. package/dist/src/common/operation.js.map +1 -1
  17. package/dist/src/common/schemas/choice.d.ts.map +1 -1
  18. package/dist/src/common/schemas/choice.js +2 -1
  19. package/dist/src/common/schemas/choice.js.map +1 -1
  20. package/dist/src/common/schemas/constant.d.ts +1 -1
  21. package/dist/src/common/schemas/constant.d.ts.map +1 -1
  22. package/dist/src/common/schemas/constant.js +1 -0
  23. package/dist/src/common/schemas/constant.js.map +1 -1
  24. package/dist/src/common/schemas/relationship.d.ts +2 -3
  25. package/dist/src/common/schemas/relationship.d.ts.map +1 -1
  26. package/dist/src/common/schemas/relationship.js +2 -2
  27. package/dist/src/common/schemas/relationship.js.map +1 -1
  28. package/dist/src/common/schemas/time.d.ts +1 -1
  29. package/dist/src/common/schemas/time.d.ts.map +1 -1
  30. package/dist/src/common/schemas/time.js +1 -0
  31. package/dist/src/common/schemas/time.js.map +1 -1
  32. package/dist/src/common/schemas/usage.d.ts +2 -2
  33. package/dist/src/common/schemas/usage.d.ts.map +1 -1
  34. package/dist/src/common/schemas/usage.js +2 -2
  35. package/dist/src/common/schemas/usage.js.map +1 -1
  36. package/dist/src/emitter.d.ts +5 -6
  37. package/dist/src/emitter.d.ts.map +1 -1
  38. package/dist/src/emitter.js +12 -14
  39. package/dist/src/emitter.js.map +1 -1
  40. package/dist/src/external-schemas.d.ts.map +1 -1
  41. package/dist/src/external-schemas.js +3 -2
  42. package/dist/src/external-schemas.js.map +1 -1
  43. package/dist/src/models.d.ts +2 -2
  44. package/dist/src/models.d.ts.map +1 -1
  45. package/dist/src/models.js.map +1 -1
  46. package/dist/src/operation-utils.d.ts +3 -3
  47. package/dist/src/operation-utils.d.ts.map +1 -1
  48. package/dist/src/operation-utils.js +2 -2
  49. package/dist/src/operation-utils.js.map +1 -1
  50. package/dist/src/type-utils.d.ts +2 -2
  51. package/dist/src/type-utils.d.ts.map +1 -1
  52. package/dist/src/type-utils.js +23 -10
  53. package/dist/src/type-utils.js.map +1 -1
  54. package/dist/src/utils.d.ts.map +1 -1
  55. package/dist/src/utils.js +10 -4
  56. package/dist/src/utils.js.map +1 -1
  57. package/dist/tsconfig.tsbuildinfo +1 -1
  58. package/{target → generator/http-client-generator/target}/emitter.jar +0 -0
  59. package/package.json +5 -5
  60. package/dist/src/prenamer/formatter.d.ts +0 -11
  61. package/dist/src/prenamer/formatter.d.ts.map +0 -1
  62. package/dist/src/prenamer/formatter.js +0 -124
  63. package/dist/src/prenamer/formatter.js.map +0 -1
  64. package/dist/src/prenamer/naming-utils.d.ts +0 -67
  65. package/dist/src/prenamer/naming-utils.d.ts.map +0 -1
  66. package/dist/src/prenamer/naming-utils.js +0 -147
  67. package/dist/src/prenamer/naming-utils.js.map +0 -1
  68. package/dist/src/prenamer/prenamer.d.ts +0 -36
  69. package/dist/src/prenamer/prenamer.d.ts.map +0 -1
  70. package/dist/src/prenamer/prenamer.js +0 -333
  71. package/dist/src/prenamer/prenamer.js.map +0 -1
@@ -87,7 +87,6 @@ export declare class CodeModelBuilder {
87
87
  private getDoc;
88
88
  private getSummary;
89
89
  private getSerializedName;
90
- private getParameterLocation;
91
90
  private isReadOnly;
92
91
  private isSecret;
93
92
  private getMutability;
@@ -1 +1 @@
1
- {"version":3,"file":"code-model-builder.d.ts","sourceRoot":"","sources":["../../src/code-model-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-model-builder.d.ts","sourceRoot":"","sources":["../../src/code-model-builder.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  import { AnySchema, ApiVersion, ArraySchema, BinaryResponse, BinarySchema, BooleanSchema, ByteArraySchema, ChoiceValue, DateSchema, DateTimeSchema, DictionarySchema, Discriminator, GroupProperty, GroupSchema, HttpHeader, HttpParameter, ImplementationLocation, KeySecurityScheme, Language, Metadata, NumberSchema, OAuth2SecurityScheme, ObjectSchema, OperationGroup, Parameter, ParameterLocation, Property, Relations, Response, SchemaResponse, SchemaType, Security, SerializationStyle, StringSchema, TimeSchema, UnixTimeSchema, UriSchema, VirtualParameter, } from "@autorest/codemodel";
2
2
  import { KnownMediaType } from "@azure-tools/codegen";
3
- import { UsageFlags, createSdkContext, getAllModels, getClientType, getWireName, isApiVersion, isSdkBuiltInKind, isSdkIntKind, } from "@azure-tools/typespec-client-generator-core";
3
+ import { createSdkContext, getAllModels, getClientType, getWireName, isApiVersion, isSdkBuiltInKind, isSdkIntKind, } from "@azure-tools/typespec-client-generator-core";
4
4
  import { getDoc, getEffectiveModelType, getNamespaceFullName, getOverloadedOperation, getSummary, getVisibility, isArrayModelType, isRecordModelType, listServices, } from "@typespec/compiler";
5
- import { Visibility, getAuthentication, getHeaderFieldName, getPathParamName, getQueryParamName, isBody, isBodyRoot, isHeader, isMultipartBodyProperty, isPathParam, isQueryParam, } from "@typespec/http";
5
+ import { Visibility, getAuthentication, getHeaderFieldName, getPathParamName, getQueryParamName, isHeader, isPathParam, isQueryParam, } from "@typespec/http";
6
6
  import { getSegment } from "@typespec/rest";
7
7
  import { getAddedOnVersions } from "@typespec/versioning";
8
8
  import { fail } from "assert";
9
9
  import pkg from "lodash";
10
- import { Client as CodeModelClient } from "./common/client.js";
10
+ import { Client as CodeModelClient, } from "./common/client.js";
11
11
  import { CodeModel } from "./common/code-model.js";
12
12
  import { LongRunningMetadata } from "./common/long-running-metadata.js";
13
13
  import { Operation as CodeModelOperation, ConvenienceApi, Request } from "./common/operation.js";
@@ -19,7 +19,6 @@ import { SchemaContext } from "./common/schemas/usage.js";
19
19
  import { createPollOperationDetailsSchema, getFileDetailsSchema } from "./external-schemas.js";
20
20
  import { ClientContext } from "./models.js";
21
21
  import { CONTENT_TYPE_KEY, ORIGIN_API_VERSION, SPECIAL_HEADER_NAMES, cloneOperationParameter, getServiceVersion, isKnownContentType, isLroNewPollingStrategy, isPayloadProperty, operationIsJsonMergePatch, operationIsMultipart, operationIsMultipleContentTypes, } from "./operation-utils.js";
22
- import { PreNamer } from "./prenamer/prenamer.js";
23
22
  import { ProcessingCache, getAccess, getDurationFormatFromSdkType, getNonNullSdkType, getUnionDescription, getUsage, isStable, modelIs, pushDistinct, } from "./type-utils.js";
24
23
  import { getNamespace, logWarning, pascalCase, removeClientSuffix, stringArrayContainsIgnoreCase, trace, } from "./utils.js";
25
24
  const { isEqual } = pkg;
@@ -39,12 +38,11 @@ export class CodeModelBuilder {
39
38
  this.options["skip-special-headers"].forEach((it) => SPECIAL_HEADER_NAMES.add(it.toLowerCase()));
40
39
  }
41
40
  const service = listServices(this.program)[0];
42
- const serviceNamespace = service.type;
43
- if (serviceNamespace === undefined) {
44
- throw Error("Cannot emit yaml for a namespace that doesn't exist.");
41
+ if (!service) {
42
+ throw Error("TypeSpec for HTTP must define a service.");
45
43
  }
46
- this.serviceNamespace = serviceNamespace;
47
- this.namespace = getNamespaceFullName(serviceNamespace) || "Azure.Client";
44
+ this.serviceNamespace = service.type;
45
+ this.namespace = getNamespaceFullName(this.serviceNamespace) || "Azure.Client";
48
46
  // java namespace
49
47
  const javaNamespace = this.getJavaNamespace(this.namespace);
50
48
  const namespace1 = this.namespace;
@@ -56,8 +54,8 @@ export class CodeModelBuilder {
56
54
  },
57
55
  };
58
56
  // init code model
59
- const title = (_b = this.options["service-name"]) !== null && _b !== void 0 ? _b : serviceNamespace.name;
60
- const description = this.getDoc(serviceNamespace);
57
+ const title = (_b = this.options["service-name"]) !== null && _b !== void 0 ? _b : this.serviceNamespace.name;
58
+ const description = this.getDoc(this.serviceNamespace);
61
59
  this.codeModel = new CodeModel(title, false, {
62
60
  info: {
63
61
  description: description,
@@ -66,7 +64,7 @@ export class CodeModelBuilder {
66
64
  default: {
67
65
  name: title,
68
66
  description: description,
69
- summary: this.getSummary(serviceNamespace),
67
+ summary: this.getSummary(this.serviceNamespace),
70
68
  namespace: this.namespace,
71
69
  },
72
70
  java: {
@@ -93,9 +91,6 @@ export class CodeModelBuilder {
93
91
  this.processClients();
94
92
  this.processModels();
95
93
  this.processSchemaUsage();
96
- if (this.options.namer) {
97
- this.codeModel = new PreNamer(this.codeModel).init().process();
98
- }
99
94
  this.deduplicateSchemaName();
100
95
  return this.codeModel;
101
96
  }
@@ -121,7 +116,7 @@ export class CodeModelBuilder {
121
116
  },
122
117
  language: {
123
118
  default: {
124
- serializedName: arg.name,
119
+ serializedName: arg.serializedName,
125
120
  },
126
121
  },
127
122
  // TODO: deprecate this logic of string/url for x-ms-skip-url-encoding
@@ -274,11 +269,16 @@ export class CodeModelBuilder {
274
269
  schemaUsage.splice(index, 1);
275
270
  }
276
271
  }
277
- // Internal on Anonymous
278
- if (schemaUsage === null || schemaUsage === void 0 ? void 0 : schemaUsage.includes(SchemaContext.Anonymous)) {
279
- const index = schemaUsage.indexOf(SchemaContext.Internal);
280
- if (index < 0) {
281
- schemaUsage.push(SchemaContext.Internal);
272
+ // Internal on PublicSpread, but Public takes precedence
273
+ if (schemaUsage === null || schemaUsage === void 0 ? void 0 : schemaUsage.includes(SchemaContext.PublicSpread)) {
274
+ // remove PublicSpread as it now served its purpose
275
+ schemaUsage.splice(schemaUsage.indexOf(SchemaContext.PublicSpread), 1);
276
+ // Public would override PublicSpread, hence do nothing if this schema is Public
277
+ if (!(schemaUsage === null || schemaUsage === void 0 ? void 0 : schemaUsage.includes(SchemaContext.Public))) {
278
+ // set the model as Internal, so that it is not exposed to user
279
+ if (!schemaUsage.includes(SchemaContext.Internal)) {
280
+ schemaUsage.push(SchemaContext.Internal);
281
+ }
282
282
  }
283
283
  }
284
284
  }
@@ -431,7 +431,8 @@ export class CodeModelBuilder {
431
431
  const subClient = method.response;
432
432
  if (!isRootClient) {
433
433
  // if it is not root client, append the parent client's name
434
- subClient.name = removeClientSuffix(client.name) + removeClientSuffix(pascalCase(subClient.name));
434
+ subClient.name =
435
+ removeClientSuffix(client.name) + removeClientSuffix(pascalCase(subClient.name));
435
436
  }
436
437
  operationGroups.push(subClient);
437
438
  if (includeNestedOperationGroups) {
@@ -518,7 +519,8 @@ export class CodeModelBuilder {
518
519
  "x-ms-examples": operationExamples,
519
520
  },
520
521
  });
521
- codeModelOperation.crossLanguageDefinitionId = sdkMethod.crossLanguageDefintionId;
522
+ codeModelOperation.crossLanguageDefinitionId =
523
+ sdkMethod.crossLanguageDefintionId;
522
524
  codeModelOperation.internalApi = sdkMethod.access === "internal";
523
525
  const convenienceApiName = this.getConvenienceApiName(sdkMethod);
524
526
  let generateConvenienceApi = sdkMethod.generateConvenient;
@@ -539,7 +541,8 @@ export class CodeModelBuilder {
539
541
  apiComment = `Convenience API is not generated, as operation '${operationName}' is multiple content-type`;
540
542
  this.logWarning(apiComment);
541
543
  }
542
- else if (operationIsJsonMergePatch(httpOperation) && this.options["stream-style-serialization"] === false) {
544
+ else if (operationIsJsonMergePatch(httpOperation) &&
545
+ this.options["stream-style-serialization"] === false) {
543
546
  // do not generate convenient method for json merge patch operation if stream-style-serialization is not enabled
544
547
  generateConvenienceApi = false;
545
548
  apiComment = `Convenience API is not generated, as operation '${operationName}' is 'application/merge-patch+json' and stream-style-serialization is not enabled`;
@@ -675,7 +678,9 @@ export class CodeModelBuilder {
675
678
  lroMetadata.finalEnvelopeResult &&
676
679
  lroMetadata.finalResult !== "void" &&
677
680
  lroMetadata.finalEnvelopeResult !== "void") {
678
- const finalResult = useNewPollStrategy ? lroMetadata.finalResult : lroMetadata.finalEnvelopeResult;
681
+ const finalResult = useNewPollStrategy
682
+ ? lroMetadata.finalResult
683
+ : lroMetadata.finalEnvelopeResult;
679
684
  const finalType = this.findResponseBody(finalResult);
680
685
  const sdkType = getClientType(this.sdkContext, finalType);
681
686
  finalSchema = this.processSchemaFromSdkType(sdkType, "finalResult");
@@ -742,7 +747,8 @@ export class CodeModelBuilder {
742
747
  op.addParameter(parameter);
743
748
  clientContext.addGlobalParameter(parameter);
744
749
  }
745
- else if (param.kind === "header" && SPECIAL_HEADER_NAMES.has(param.serializedName.toLowerCase())) {
750
+ else if (param.kind === "header" &&
751
+ SPECIAL_HEADER_NAMES.has(param.serializedName.toLowerCase())) {
746
752
  // special headers
747
753
  op.specialHeaders = (_a = op.specialHeaders) !== null && _a !== void 0 ? _a : [];
748
754
  if (!stringArrayContainsIgnoreCase(op.specialHeaders, param.serializedName)) {
@@ -801,6 +807,10 @@ export class CodeModelBuilder {
801
807
  explode = true;
802
808
  break;
803
809
  }
810
+ if (param.explode && !param.collectionFormat) {
811
+ style = SerializationStyle.Form;
812
+ explode = true;
813
+ }
804
814
  }
805
815
  else if (param.kind === "header") {
806
816
  const format = param.collectionFormat;
@@ -838,7 +848,9 @@ export class CodeModelBuilder {
838
848
  op.addParameter(parameter);
839
849
  this.trackSchemaUsage(schema, { usage: [SchemaContext.Input] });
840
850
  if (op.convenienceApi) {
841
- this.trackSchemaUsage(schema, { usage: [op.internalApi ? SchemaContext.Internal : SchemaContext.Public] });
851
+ this.trackSchemaUsage(schema, {
852
+ usage: [op.internalApi ? SchemaContext.Internal : SchemaContext.Public],
853
+ });
842
854
  }
843
855
  }
844
856
  }
@@ -868,7 +880,8 @@ export class CodeModelBuilder {
868
880
  }
869
881
  else if (etagHeaders.length === 2) {
870
882
  const etagHeadersLowerCase = etagHeaders.map((it) => it.toLowerCase());
871
- if (etagHeadersLowerCase.includes("if-match") && etagHeadersLowerCase.includes("if-none-match")) {
883
+ if (etagHeadersLowerCase.includes("if-match") &&
884
+ etagHeadersLowerCase.includes("if-none-match")) {
872
885
  // only 2 headers available, use MatchConditions
873
886
  groupToMatchConditions = true;
874
887
  }
@@ -944,7 +957,7 @@ export class CodeModelBuilder {
944
957
  }
945
958
  }
946
959
  processParameterBody(op, rawHttpOperation, sdkHttpOperation, sdkBody) {
947
- var _a;
960
+ var _a, _b, _c;
948
961
  // set contentTypes to mediaTypes
949
962
  op.requests[0].protocol.http.mediaTypes = sdkBody.contentTypes;
950
963
  const unknownRequestBody = op.requests[0].protocol.http.mediaTypes &&
@@ -969,97 +982,115 @@ export class CodeModelBuilder {
969
982
  },
970
983
  });
971
984
  op.addParameter(parameter);
985
+ const jsonMergePatch = operationIsJsonMergePatch(sdkHttpOperation);
986
+ const schemaIsPublicBeforeProcess = schema instanceof ObjectSchema &&
987
+ ((_b = schema.usage) === null || _b === void 0 ? void 0 : _b.includes(SchemaContext.Public));
972
988
  this.trackSchemaUsage(schema, { usage: [SchemaContext.Input] });
973
989
  if (op.convenienceApi) {
974
990
  // model/schema does not need to be Public or Internal, if it is not to be used in convenience API
975
- this.trackSchemaUsage(schema, { usage: [op.internalApi ? SchemaContext.Internal : SchemaContext.Public] });
991
+ this.trackSchemaUsage(schema, {
992
+ usage: [op.internalApi ? SchemaContext.Internal : SchemaContext.Public],
993
+ });
976
994
  }
977
- if (operationIsJsonMergePatch(sdkHttpOperation)) {
995
+ if (jsonMergePatch) {
978
996
  this.trackSchemaUsage(schema, { usage: [SchemaContext.JsonMergePatch] });
979
997
  }
980
998
  if (op.convenienceApi && operationIsMultipart(sdkHttpOperation)) {
981
999
  this.trackSchemaUsage(schema, { serializationFormats: [KnownMediaType.Multipart] });
982
1000
  }
983
- // Implicit body parameter would have usage flag: UsageFlags.Spread, for this case we need to do body parameter flatten
984
- const bodyParameterFlatten = sdkType.kind === "model" && sdkType.usage & UsageFlags.Spread && !this.isArm();
985
- if (schema instanceof ObjectSchema && bodyParameterFlatten) {
986
- // flatten body parameter
987
- const parameters = sdkHttpOperation.parameters;
988
- const bodyParameter = sdkHttpOperation.bodyParam;
989
- // name the schema for documentation
990
- schema.language.default.name = pascalCase(op.language.default.name) + "Request";
991
- if (!parameter.language.default.name) {
992
- // name the parameter for documentation
993
- parameter.language.default.name = "request";
994
- }
995
- if (operationIsJsonMergePatch(sdkHttpOperation)) {
996
- // skip model flatten, if "application/merge-patch+json"
997
- schema.language.default.name = pascalCase(op.language.default.name) + "PatchRequest";
998
- return;
999
- }
1000
- this.trackSchemaUsage(schema, { usage: [SchemaContext.Anonymous] });
1001
- if (op.convenienceApi && op.parameters) {
1002
- op.convenienceApi.requests = [];
1003
- const request = new Request({
1004
- protocol: op.requests[0].protocol,
1005
- });
1006
- request.parameters = [];
1007
- op.convenienceApi.requests.push(request);
1008
- // header/query/path params
1009
- for (const opParameter of parameters) {
1010
- this.addParameterOrBodyPropertyToCodeModelRequest(opParameter, op, request, schema, parameter);
1001
+ if (op.convenienceApi) {
1002
+ // Explicit body parameter @body or @bodyRoot would result to the existence of rawHttpOperation.parameters.body.property
1003
+ // Implicit body parameter would result to rawHttpOperation.parameters.body.property be undefined
1004
+ // see https://typespec.io/docs/libraries/http/cheat-sheet#data-types
1005
+ const bodyParameterFlatten = schema instanceof ObjectSchema &&
1006
+ sdkType.kind === "model" &&
1007
+ !((_c = rawHttpOperation.parameters.body) === null || _c === void 0 ? void 0 : _c.property) &&
1008
+ !this.isArm();
1009
+ if (schema instanceof ObjectSchema && bodyParameterFlatten) {
1010
+ // flatten body parameter
1011
+ const parameters = sdkHttpOperation.parameters;
1012
+ const bodyParameter = sdkHttpOperation.bodyParam;
1013
+ if (!parameter.language.default.name) {
1014
+ // name the parameter for documentation
1015
+ parameter.language.default.name = "request";
1011
1016
  }
1012
- // body param
1013
- if (bodyParameter) {
1014
- if (bodyParameter.type.kind === "model") {
1015
- for (const bodyProperty of bodyParameter.type.properties) {
1016
- if (bodyProperty.kind === "property") {
1017
- this.addParameterOrBodyPropertyToCodeModelRequest(bodyProperty, op, request, schema, parameter);
1017
+ if (jsonMergePatch) {
1018
+ // skip model flatten, if "application/merge-patch+json"
1019
+ if (sdkType.isGeneratedName) {
1020
+ schema.language.default.name = pascalCase(op.language.default.name) + "PatchRequest";
1021
+ }
1022
+ return;
1023
+ }
1024
+ const schemaUsage = schema.usage;
1025
+ if (!schemaIsPublicBeforeProcess && (schemaUsage === null || schemaUsage === void 0 ? void 0 : schemaUsage.includes(SchemaContext.Public))) {
1026
+ // Public added in this op, change it to PublicSpread
1027
+ // This means that if this op would originally add Public to this schema, it adds PublicSpread instead
1028
+ schemaUsage === null || schemaUsage === void 0 ? void 0 : schemaUsage.splice(schemaUsage === null || schemaUsage === void 0 ? void 0 : schemaUsage.indexOf(SchemaContext.Public), 1);
1029
+ this.trackSchemaUsage(schema, { usage: [SchemaContext.PublicSpread] });
1030
+ }
1031
+ if (op.convenienceApi && op.parameters) {
1032
+ op.convenienceApi.requests = [];
1033
+ const request = new Request({
1034
+ protocol: op.requests[0].protocol,
1035
+ });
1036
+ request.parameters = [];
1037
+ op.convenienceApi.requests.push(request);
1038
+ // header/query/path params
1039
+ for (const opParameter of parameters) {
1040
+ this.addParameterOrBodyPropertyToCodeModelRequest(opParameter, op, request, schema, parameter);
1041
+ }
1042
+ // body param
1043
+ if (bodyParameter) {
1044
+ if (bodyParameter.type.kind === "model") {
1045
+ for (const bodyProperty of bodyParameter.type.properties) {
1046
+ if (bodyProperty.kind === "property") {
1047
+ this.addParameterOrBodyPropertyToCodeModelRequest(bodyProperty, op, request, schema, parameter);
1048
+ }
1018
1049
  }
1019
1050
  }
1020
1051
  }
1021
- }
1022
- request.signatureParameters = request.parameters;
1023
- if (request.signatureParameters.length > 6) {
1024
- // create an option bag
1025
- const name = op.language.default.name + "Options";
1026
- const namespace = getNamespace(rawHttpOperation.operation);
1027
- // option bag schema
1028
- const optionBagSchema = this.codeModel.schemas.add(new GroupSchema(name, `Options for ${op.language.default.name} API`, {
1029
- language: {
1030
- default: {
1031
- namespace: namespace,
1032
- },
1033
- java: {
1034
- namespace: this.getJavaNamespace(namespace),
1052
+ request.signatureParameters = request.parameters;
1053
+ if (request.signatureParameters.length > 6) {
1054
+ // create an option bag
1055
+ const name = op.language.default.name + "Options";
1056
+ const namespace = getNamespace(rawHttpOperation.operation);
1057
+ // option bag schema
1058
+ const optionBagSchema = this.codeModel.schemas.add(new GroupSchema(name, `Options for ${op.language.default.name} API`, {
1059
+ language: {
1060
+ default: {
1061
+ namespace: namespace,
1062
+ },
1063
+ java: {
1064
+ namespace: this.getJavaNamespace(namespace),
1065
+ },
1035
1066
  },
1036
- },
1037
- }));
1038
- request.parameters.forEach((it) => {
1039
- optionBagSchema.add(new GroupProperty(it.language.default.name, it.language.default.description, it.schema, {
1040
- originalParameter: [it],
1041
- summary: it.summary,
1042
- required: it.required,
1043
- nullable: it.nullable,
1044
- readOnly: false,
1045
- serializedName: it.language.default.serializedName,
1046
1067
  }));
1047
- });
1048
- this.trackSchemaUsage(optionBagSchema, { usage: [SchemaContext.Input] });
1049
- if (op.convenienceApi) {
1050
- this.trackSchemaUsage(optionBagSchema, {
1051
- usage: [op.internalApi ? SchemaContext.Internal : SchemaContext.Public],
1068
+ request.parameters.forEach((it) => {
1069
+ optionBagSchema.add(new GroupProperty(it.language.default.name, it.language.default.description, it.schema, {
1070
+ originalParameter: [it],
1071
+ summary: it.summary,
1072
+ required: it.required,
1073
+ nullable: it.nullable,
1074
+ readOnly: false,
1075
+ serializedName: it.language.default.serializedName,
1076
+ }));
1052
1077
  });
1078
+ this.trackSchemaUsage(optionBagSchema, { usage: [SchemaContext.Input] });
1079
+ if (op.convenienceApi) {
1080
+ this.trackSchemaUsage(optionBagSchema, {
1081
+ usage: [op.internalApi ? SchemaContext.Internal : SchemaContext.Public],
1082
+ });
1083
+ }
1084
+ // option bag parameter
1085
+ const optionBagParameter = new Parameter("options", optionBagSchema.language.default.description, optionBagSchema, {
1086
+ implementation: ImplementationLocation.Method,
1087
+ required: true,
1088
+ nullable: false,
1089
+ });
1090
+ request.signatureParameters = [optionBagParameter];
1091
+ request.parameters.forEach((it) => (it.groupedBy = optionBagParameter));
1092
+ request.parameters.push(optionBagParameter);
1053
1093
  }
1054
- // option bag parameter
1055
- const optionBagParameter = new Parameter("options", optionBagSchema.language.default.description, optionBagSchema, {
1056
- implementation: ImplementationLocation.Method,
1057
- required: true,
1058
- nullable: false,
1059
- });
1060
- request.signatureParameters = [optionBagParameter];
1061
- request.parameters.forEach((it) => (it.groupedBy = optionBagParameter));
1062
- request.parameters.push(optionBagParameter);
1063
1094
  }
1064
1095
  }
1065
1096
  }
@@ -1071,7 +1102,11 @@ export class CodeModelBuilder {
1071
1102
  if (opParameter.kind !== "property") {
1072
1103
  // not body property
1073
1104
  // header/query/path, same location and same serializedName
1074
- existParameter = (_a = op.parameters) === null || _a === void 0 ? void 0 : _a.find((it) => { var _a; return ((_a = it.protocol.http) === null || _a === void 0 ? void 0 : _a.in) === opParameter.kind && it.language.default.serializedName === serializedName; });
1105
+ existParameter = (_a = op.parameters) === null || _a === void 0 ? void 0 : _a.find((it) => {
1106
+ var _a;
1107
+ return ((_a = it.protocol.http) === null || _a === void 0 ? void 0 : _a.in) === opParameter.kind &&
1108
+ it.language.default.serializedName === serializedName;
1109
+ });
1075
1110
  }
1076
1111
  request.parameters = (_b = request.parameters) !== null && _b !== void 0 ? _b : [];
1077
1112
  if (existParameter) {
@@ -1085,7 +1120,9 @@ export class CodeModelBuilder {
1085
1120
  else {
1086
1121
  // property from anonymous model
1087
1122
  const existBodyProperty = (_e = schema.properties) === null || _e === void 0 ? void 0 : _e.find((it) => it.serializedName === serializedName);
1088
- if (existBodyProperty && !existBodyProperty.readOnly && !(existBodyProperty.schema instanceof ConstantSchema)) {
1123
+ if (existBodyProperty &&
1124
+ !existBodyProperty.readOnly &&
1125
+ !(existBodyProperty.schema instanceof ConstantSchema)) {
1089
1126
  request.parameters.push(new VirtualParameter(existBodyProperty.language.default.name, existBodyProperty.language.default.description, existBodyProperty.schema, {
1090
1127
  originalParameter: originalParameter,
1091
1128
  targetProperty: existBodyProperty,
@@ -1129,7 +1166,9 @@ export class CodeModelBuilder {
1129
1166
  }
1130
1167
  const bodyType = sdkResponse.type;
1131
1168
  let trackConvenienceApi = Boolean(op.convenienceApi);
1132
- const unknownResponseBody = sdkResponse.contentTypes && sdkResponse.contentTypes.length > 0 && !isKnownContentType(sdkResponse.contentTypes);
1169
+ const unknownResponseBody = sdkResponse.contentTypes &&
1170
+ sdkResponse.contentTypes.length > 0 &&
1171
+ !isKnownContentType(sdkResponse.contentTypes);
1133
1172
  let response;
1134
1173
  if (unknownResponseBody && bodyType && bodyType.kind === "bytes") {
1135
1174
  // binary
@@ -1471,7 +1510,8 @@ export class CodeModelBuilder {
1471
1510
  },
1472
1511
  },
1473
1512
  });
1474
- objectSchema.crossLanguageDefinitionId = type.crossLanguageDefinitionId;
1513
+ objectSchema.crossLanguageDefinitionId =
1514
+ type.crossLanguageDefinitionId;
1475
1515
  this.codeModel.schemas.add(objectSchema);
1476
1516
  // cache this now before we accidentally recurse on this type.
1477
1517
  if (!this.schemaCache.has(type)) {
@@ -1583,6 +1623,11 @@ export class CodeModelBuilder {
1583
1623
  if (prop.multipartOptions.isFilePart) {
1584
1624
  schema = this.processMultipartFormDataFilePropertySchemaFromSdkType(prop);
1585
1625
  }
1626
+ else if (prop.type.kind === "model" &&
1627
+ prop.type.properties.some((it) => it.kind === "body")) {
1628
+ // TODO: this is HttpPart of non-File. TCGC should help handle this.
1629
+ schema = this.processSchemaFromSdkType(prop.type.properties.find((it) => it.kind === "body").type, "");
1630
+ }
1586
1631
  else {
1587
1632
  schema = this.processSchemaFromSdkType(nonNullType, "");
1588
1633
  }
@@ -1654,7 +1699,9 @@ export class CodeModelBuilder {
1654
1699
  case "Scalar": {
1655
1700
  const scalarName = type.name;
1656
1701
  let name = type.name;
1657
- if (scalarName.startsWith("int") || scalarName.startsWith("uint") || scalarName === "safeint") {
1702
+ if (scalarName.startsWith("int") ||
1703
+ scalarName.startsWith("uint") ||
1704
+ scalarName === "safeint") {
1658
1705
  name = scalarName === "safeint" || scalarName.includes("int64") ? "Long" : "Integer";
1659
1706
  }
1660
1707
  else if (scalarName.startsWith("float")) {
@@ -1673,7 +1720,7 @@ export class CodeModelBuilder {
1673
1720
  case "Model":
1674
1721
  if (isArrayModelType(this.program, type)) {
1675
1722
  ++option.depth;
1676
- if (option.depth == 1) {
1723
+ if (option.depth === 1) {
1677
1724
  return this.getUnionVariantName(type.indexer.value, option) + "List";
1678
1725
  }
1679
1726
  else {
@@ -1682,7 +1729,7 @@ export class CodeModelBuilder {
1682
1729
  }
1683
1730
  else if (isRecordModelType(this.program, type)) {
1684
1731
  ++option.depth;
1685
- if (option.depth == 1) {
1732
+ if (option.depth === 1) {
1686
1733
  return this.getUnionVariantName(type.indexer.value, option) + "Map";
1687
1734
  }
1688
1735
  else {
@@ -1708,7 +1755,9 @@ export class CodeModelBuilder {
1708
1755
  var _a, _b, _c, _d;
1709
1756
  const processSchemaFunc = (type) => this.processSchemaFromSdkType(type, "");
1710
1757
  if (property.type.kind === "bytes" || property.type.kind === "model") {
1711
- const namespace = property.type.kind === "model" ? ((_a = getNamespace(property.type.__raw)) !== null && _a !== void 0 ? _a : this.namespace) : this.namespace;
1758
+ const namespace = property.type.kind === "model"
1759
+ ? ((_a = getNamespace(property.type.__raw)) !== null && _a !== void 0 ? _a : this.namespace)
1760
+ : this.namespace;
1712
1761
  return getFileDetailsSchema(property, (_b = getNamespace(property.type.__raw)) !== null && _b !== void 0 ? _b : this.namespace, namespace, this.codeModel.schemas, this.binarySchema, this.stringSchema, processSchemaFunc);
1713
1762
  }
1714
1763
  else if (property.type.kind === "array" &&
@@ -1745,25 +1794,6 @@ export class CodeModelBuilder {
1745
1794
  return getWireName(this.sdkContext, target);
1746
1795
  }
1747
1796
  }
1748
- getParameterLocation(target) {
1749
- if (isHeader(this.program, target)) {
1750
- return ParameterLocation.Header;
1751
- }
1752
- else if (isQueryParam(this.program, target)) {
1753
- return ParameterLocation.Query;
1754
- }
1755
- else if (isPathParam(this.program, target)) {
1756
- return ParameterLocation.Path;
1757
- }
1758
- else if (isBody(this.program, target) ||
1759
- isBodyRoot(this.program, target) ||
1760
- isMultipartBodyProperty(this.program, target)) {
1761
- return ParameterLocation.Body;
1762
- }
1763
- else {
1764
- return "BodyProperty";
1765
- }
1766
- }
1767
1797
  isReadOnly(target) {
1768
1798
  const segment = target.__raw ? getSegment(this.program, target.__raw) !== undefined : false;
1769
1799
  if (segment) {
@@ -1830,7 +1860,8 @@ export class CodeModelBuilder {
1830
1860
  if (!namespace) {
1831
1861
  return undefined;
1832
1862
  }
1833
- else if (baseJavaNamespace && (namespace === tspNamespace || namespace.startsWith(tspNamespace + "."))) {
1863
+ else if (baseJavaNamespace &&
1864
+ (namespace === tspNamespace || namespace.startsWith(tspNamespace + "."))) {
1834
1865
  return baseJavaNamespace + namespace.slice(tspNamespace.length).toLowerCase();
1835
1866
  }
1836
1867
  else {
@@ -1863,10 +1894,11 @@ export class CodeModelBuilder {
1863
1894
  }
1864
1895
  get anySchema() {
1865
1896
  var _a;
1866
- return (_a = this._anySchema) !== null && _a !== void 0 ? _a : (this._anySchema = this.codeModel.schemas.add(new AnySchema("Anything")));
1897
+ return ((_a = this._anySchema) !== null && _a !== void 0 ? _a : (this._anySchema = this.codeModel.schemas.add(new AnySchema("Anything"))));
1867
1898
  }
1868
1899
  get binarySchema() {
1869
- return this._binarySchema || (this._binarySchema = this.codeModel.schemas.add(new BinarySchema("simple binary")));
1900
+ return (this._binarySchema ||
1901
+ (this._binarySchema = this.codeModel.schemas.add(new BinarySchema("simple binary"))));
1870
1902
  }
1871
1903
  get pollResultSchema() {
1872
1904
  var _a;
@@ -1921,7 +1953,7 @@ export class CodeModelBuilder {
1921
1953
  return this._subscriptionParameter;
1922
1954
  }
1923
1955
  propagateSchemaUsage(schema) {
1924
- var _a, _b;
1956
+ var _a, _b, _c, _d;
1925
1957
  const processedSchemas = new Set();
1926
1958
  const innerApplySchemaUsage = (schema, schemaUsage) => {
1927
1959
  this.trackSchemaUsage(schema, schemaUsage);
@@ -1939,7 +1971,7 @@ export class CodeModelBuilder {
1939
1971
  var _a;
1940
1972
  if (p.readOnly && ((_a = schemaUsage.usage) === null || _a === void 0 ? void 0 : _a.includes(SchemaContext.Input))) {
1941
1973
  const schemaUsageWithoutInput = {
1942
- usage: schemaUsage.usage.filter((it) => it != SchemaContext.Input),
1974
+ usage: schemaUsage.usage.filter((it) => it !== SchemaContext.Input),
1943
1975
  serializationFormats: schemaUsage.serializationFormats,
1944
1976
  };
1945
1977
  innerApplySchemaUsage(p.schema, schemaUsageWithoutInput);
@@ -1977,9 +2009,18 @@ export class CodeModelBuilder {
1977
2009
  }
1978
2010
  };
1979
2011
  // Exclude context that not to be propagated
2012
+ const updatedSchemaUsage = (_a = schema.usage) === null || _a === void 0 ? void 0 : _a.filter((it) => it !== SchemaContext.Paged && it !== SchemaContext.PublicSpread);
2013
+ const indexSpread = (_b = schema.usage) === null || _b === void 0 ? void 0 : _b.indexOf(SchemaContext.PublicSpread);
2014
+ if (updatedSchemaUsage &&
2015
+ indexSpread &&
2016
+ indexSpread >= 0 &&
2017
+ !((_c = schema.usage) === null || _c === void 0 ? void 0 : _c.includes(SchemaContext.Public))) {
2018
+ // Propagate Public, if schema is PublicSpread
2019
+ updatedSchemaUsage.push(SchemaContext.Public);
2020
+ }
1980
2021
  const schemaUsage = {
1981
- usage: (_a = schema.usage) === null || _a === void 0 ? void 0 : _a.filter((it) => it !== SchemaContext.Paged && it !== SchemaContext.Anonymous),
1982
- serializationFormats: (_b = schema.serializationFormats) === null || _b === void 0 ? void 0 : _b.filter((it) => it !== KnownMediaType.Multipart),
2022
+ usage: updatedSchemaUsage,
2023
+ serializationFormats: (_d = schema.serializationFormats) === null || _d === void 0 ? void 0 : _d.filter((it) => it !== KnownMediaType.Multipart),
1983
2024
  };
1984
2025
  // Propagate the usage of the initial schema itself
1985
2026
  innerPropagateSchemaUsage(schema, schemaUsage);