@azure/core-client 1.10.2-alpha.20260311.2 → 1.10.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 (105) hide show
  1. package/dist/browser/authorizeRequestOnTenantChallenge.js +1 -2
  2. package/dist/browser/authorizeRequestOnTenantChallenge.js.map +1 -1
  3. package/dist/browser/base64.d.ts +1 -5
  4. package/dist/browser/base64.js +6 -14
  5. package/dist/browser/base64.js.map +1 -1
  6. package/dist/browser/interfaceHelpers.js +1 -2
  7. package/dist/browser/interfaceHelpers.js.map +1 -1
  8. package/dist/browser/operationHelpers.js +8 -4
  9. package/dist/browser/operationHelpers.js.map +1 -1
  10. package/dist/browser/serializationPolicy.js +1 -1
  11. package/dist/browser/serializationPolicy.js.map +1 -1
  12. package/dist/browser/serializer.js +32 -11
  13. package/dist/browser/serializer.js.map +1 -1
  14. package/dist/browser/serviceClient.js +2 -2
  15. package/dist/browser/serviceClient.js.map +1 -1
  16. package/dist/browser/{state.d.ts → state-web.d.mts} +1 -1
  17. package/dist/browser/{state.js → state-web.mjs} +1 -1
  18. package/dist/browser/state-web.mjs.map +1 -0
  19. package/dist/browser/urlHelpers.js +2 -1
  20. package/dist/browser/urlHelpers.js.map +1 -1
  21. package/dist/commonjs/authorizeRequestOnTenantChallenge.js +1 -2
  22. package/dist/commonjs/authorizeRequestOnTenantChallenge.js.map +1 -1
  23. package/dist/commonjs/base64.d.ts +1 -1
  24. package/dist/commonjs/base64.js +6 -6
  25. package/dist/commonjs/base64.js.map +1 -1
  26. package/dist/commonjs/interfaceHelpers.js +1 -2
  27. package/dist/commonjs/interfaceHelpers.js.map +1 -1
  28. package/dist/commonjs/operationHelpers.js +10 -6
  29. package/dist/commonjs/operationHelpers.js.map +1 -1
  30. package/dist/commonjs/serializationPolicy.js +1 -1
  31. package/dist/commonjs/serializationPolicy.js.map +1 -1
  32. package/dist/commonjs/serializer.js +32 -11
  33. package/dist/commonjs/serializer.js.map +1 -1
  34. package/dist/commonjs/serviceClient.js +2 -2
  35. package/dist/commonjs/serviceClient.js.map +1 -1
  36. package/dist/commonjs/{state.d.ts → state-cjs.d.ts} +1 -1
  37. package/dist/commonjs/{state.js → state-cjs.js} +1 -1
  38. package/dist/commonjs/state-cjs.js.map +1 -0
  39. package/dist/commonjs/tsdoc-metadata.json +1 -1
  40. package/dist/commonjs/urlHelpers.js +2 -1
  41. package/dist/commonjs/urlHelpers.js.map +1 -1
  42. package/dist/esm/authorizeRequestOnClaimChallenge.js +67 -44
  43. package/dist/esm/authorizeRequestOnClaimChallenge.js.map +1 -7
  44. package/dist/esm/authorizeRequestOnTenantChallenge.js +97 -72
  45. package/dist/esm/authorizeRequestOnTenantChallenge.js.map +1 -7
  46. package/dist/esm/base64.d.ts +1 -1
  47. package/dist/esm/base64.js +32 -15
  48. package/dist/esm/base64.js.map +1 -7
  49. package/dist/esm/deserializationPolicy.js +202 -205
  50. package/dist/esm/deserializationPolicy.js.map +1 -7
  51. package/dist/esm/httpClientCache.js +8 -8
  52. package/dist/esm/httpClientCache.js.map +1 -7
  53. package/dist/esm/index.js +11 -31
  54. package/dist/esm/index.js.map +1 -7
  55. package/dist/esm/interfaceHelpers.js +34 -23
  56. package/dist/esm/interfaceHelpers.js.map +1 -7
  57. package/dist/esm/interfaces.js +11 -6
  58. package/dist/esm/interfaces.js.map +1 -7
  59. package/dist/esm/log.js +4 -4
  60. package/dist/esm/log.js.map +1 -7
  61. package/dist/esm/operationHelpers.js +86 -73
  62. package/dist/esm/operationHelpers.js.map +1 -7
  63. package/dist/esm/pipeline.js +23 -22
  64. package/dist/esm/pipeline.js.map +1 -7
  65. package/dist/esm/serializationPolicy.js +134 -163
  66. package/dist/esm/serializationPolicy.js.map +1 -7
  67. package/dist/esm/serializer.js +877 -812
  68. package/dist/esm/serializer.js.map +1 -7
  69. package/dist/esm/serviceClient.js +150 -151
  70. package/dist/esm/serviceClient.js.map +1 -7
  71. package/dist/esm/state-cjs.d.ts +8 -0
  72. package/dist/esm/state-cjs.js +9 -0
  73. package/dist/esm/state-cjs.js.map +1 -0
  74. package/dist/esm/state.js +10 -5
  75. package/dist/esm/state.js.map +1 -7
  76. package/dist/esm/urlHelpers.js +207 -199
  77. package/dist/esm/urlHelpers.js.map +1 -7
  78. package/dist/esm/utils.js +118 -64
  79. package/dist/esm/utils.js.map +1 -7
  80. package/dist/react-native/authorizeRequestOnTenantChallenge.js +1 -2
  81. package/dist/react-native/authorizeRequestOnTenantChallenge.js.map +1 -1
  82. package/dist/react-native/base64.d.ts +1 -1
  83. package/dist/react-native/base64.js +6 -6
  84. package/dist/react-native/base64.js.map +1 -1
  85. package/dist/react-native/interfaceHelpers.js +1 -2
  86. package/dist/react-native/interfaceHelpers.js.map +1 -1
  87. package/dist/react-native/operationHelpers.js +8 -4
  88. package/dist/react-native/operationHelpers.js.map +1 -1
  89. package/dist/react-native/serializationPolicy.js +1 -1
  90. package/dist/react-native/serializationPolicy.js.map +1 -1
  91. package/dist/react-native/serializer.js +32 -11
  92. package/dist/react-native/serializer.js.map +1 -1
  93. package/dist/react-native/serviceClient.js +2 -2
  94. package/dist/react-native/serviceClient.js.map +1 -1
  95. package/dist/react-native/state-web.d.mts +8 -0
  96. package/dist/react-native/state-web.mjs +9 -0
  97. package/dist/react-native/state-web.mjs.map +1 -0
  98. package/dist/react-native/urlHelpers.js +2 -1
  99. package/dist/react-native/urlHelpers.js.map +1 -1
  100. package/package.json +31 -17
  101. package/dist/browser/state.js.map +0 -1
  102. package/dist/commonjs/state.js.map +0 -1
  103. package/dist/react-native/state.d.ts +0 -8
  104. package/dist/react-native/state.js +0 -10
  105. package/dist/react-native/state.js.map +0 -1
@@ -1,180 +1,151 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
1
3
  import { XML_ATTRKEY, XML_CHARKEY } from "./interfaces.js";
2
- import {
3
- getOperationArgumentValueFromParameter,
4
- getOperationRequestInfo
5
- } from "./operationHelpers.js";
4
+ import { getOperationArgumentValueFromParameter, getOperationRequestInfo, } from "./operationHelpers.js";
6
5
  import { MapperTypeNames } from "./serializer.js";
7
6
  import { getPathStringFromParameter } from "./interfaceHelpers.js";
8
- const serializationPolicyName = "serializationPolicy";
9
- function serializationPolicy(options = {}) {
10
- const stringifyXML = options.stringifyXML;
11
- return {
12
- name: serializationPolicyName,
13
- async sendRequest(request, next) {
14
- const operationInfo = getOperationRequestInfo(request);
15
- const operationSpec = operationInfo?.operationSpec;
16
- const operationArguments = operationInfo?.operationArguments;
17
- if (operationSpec && operationArguments) {
18
- serializeHeaders(request, operationArguments, operationSpec);
19
- serializeRequestBody(request, operationArguments, operationSpec, stringifyXML);
20
- }
21
- return next(request);
22
- }
23
- };
7
+ /**
8
+ * The programmatic identifier of the serializationPolicy.
9
+ */
10
+ export const serializationPolicyName = "serializationPolicy";
11
+ /**
12
+ * This policy handles assembling the request body and headers using
13
+ * an OperationSpec and OperationArguments on the request.
14
+ */
15
+ export function serializationPolicy(options = {}) {
16
+ const stringifyXML = options.stringifyXML;
17
+ return {
18
+ name: serializationPolicyName,
19
+ sendRequest(request, next) {
20
+ const operationInfo = getOperationRequestInfo(request);
21
+ const operationSpec = operationInfo?.operationSpec;
22
+ const operationArguments = operationInfo?.operationArguments;
23
+ if (operationSpec && operationArguments) {
24
+ serializeHeaders(request, operationArguments, operationSpec);
25
+ serializeRequestBody(request, operationArguments, operationSpec, stringifyXML);
26
+ }
27
+ return next(request);
28
+ },
29
+ };
24
30
  }
25
- function serializeHeaders(request, operationArguments, operationSpec) {
26
- if (operationSpec.headerParameters) {
27
- for (const headerParameter of operationSpec.headerParameters) {
28
- let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter);
29
- if (headerValue !== null && headerValue !== void 0 || headerParameter.mapper.required) {
30
- headerValue = operationSpec.serializer.serialize(
31
- headerParameter.mapper,
32
- headerValue,
33
- getPathStringFromParameter(headerParameter)
34
- );
35
- const headerCollectionPrefix = headerParameter.mapper.headerCollectionPrefix;
36
- if (headerCollectionPrefix) {
37
- for (const key of Object.keys(headerValue)) {
38
- request.headers.set(headerCollectionPrefix + key, headerValue[key]);
39
- }
40
- } else {
41
- request.headers.set(
42
- headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter),
43
- headerValue
44
- );
31
+ /**
32
+ * @internal
33
+ */
34
+ export function serializeHeaders(request, operationArguments, operationSpec) {
35
+ if (operationSpec.headerParameters) {
36
+ for (const headerParameter of operationSpec.headerParameters) {
37
+ let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter);
38
+ if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) {
39
+ headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter));
40
+ const headerCollectionPrefix = headerParameter.mapper
41
+ .headerCollectionPrefix;
42
+ if (headerCollectionPrefix) {
43
+ for (const key of Object.keys(headerValue)) {
44
+ request.headers.set(headerCollectionPrefix + key, headerValue[key]);
45
+ }
46
+ }
47
+ else {
48
+ request.headers.set(headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter), headerValue);
49
+ }
50
+ }
45
51
  }
46
- }
47
52
  }
48
- }
49
- const customHeaders = operationArguments.options?.requestOptions?.customHeaders;
50
- if (customHeaders) {
51
- for (const customHeaderName of Object.keys(customHeaders)) {
52
- request.headers.set(customHeaderName, customHeaders[customHeaderName]);
53
+ const customHeaders = operationArguments.options?.requestOptions?.customHeaders;
54
+ if (customHeaders) {
55
+ for (const customHeaderName of Object.keys(customHeaders)) {
56
+ request.headers.set(customHeaderName, customHeaders[customHeaderName]);
57
+ }
53
58
  }
54
- }
55
59
  }
56
- function serializeRequestBody(request, operationArguments, operationSpec, stringifyXML = function() {
57
- throw new Error("XML serialization unsupported!");
60
+ /**
61
+ * @internal
62
+ */
63
+ export function serializeRequestBody(request, operationArguments, operationSpec, stringifyXML = function () {
64
+ throw new Error("XML serialization unsupported!");
58
65
  }) {
59
- const serializerOptions = operationArguments.options?.serializerOptions;
60
- const updatedOptions = {
61
- xml: {
62
- rootName: serializerOptions?.xml.rootName ?? "",
63
- includeRoot: serializerOptions?.xml.includeRoot ?? false,
64
- xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY
65
- }
66
- };
67
- const xmlCharKey = updatedOptions.xml.xmlCharKey;
68
- if (operationSpec.requestBody && operationSpec.requestBody.mapper) {
69
- request.body = getOperationArgumentValueFromParameter(
70
- operationArguments,
71
- operationSpec.requestBody
72
- );
73
- const bodyMapper = operationSpec.requestBody.mapper;
74
- const {
75
- required,
76
- serializedName,
77
- xmlName,
78
- xmlElementName,
79
- xmlNamespace,
80
- xmlNamespacePrefix,
81
- nullable
82
- } = bodyMapper;
83
- const typeName = bodyMapper.type.name;
84
- try {
85
- if (request.body !== void 0 && request.body !== null || nullable && request.body === null || required) {
86
- const requestBodyParameterPathString = getPathStringFromParameter(
87
- operationSpec.requestBody
88
- );
89
- request.body = operationSpec.serializer.serialize(
90
- bodyMapper,
91
- request.body,
92
- requestBodyParameterPathString,
93
- updatedOptions
94
- );
95
- const isStream = typeName === MapperTypeNames.Stream;
96
- if (operationSpec.isXML) {
97
- const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : "xmlns";
98
- const value = getXmlValueWithNamespace(
99
- xmlNamespace,
100
- xmlnsKey,
101
- typeName,
102
- request.body,
103
- updatedOptions
104
- );
105
- if (typeName === MapperTypeNames.Sequence) {
106
- request.body = stringifyXML(
107
- prepareXMLRootList(
108
- value,
109
- xmlElementName || xmlName || serializedName,
110
- xmlnsKey,
111
- xmlNamespace
112
- ),
113
- { rootName: xmlName || serializedName, xmlCharKey }
114
- );
115
- } else if (!isStream) {
116
- request.body = stringifyXML(value, {
117
- rootName: xmlName || serializedName,
118
- xmlCharKey
119
- });
120
- }
121
- } else if (typeName === MapperTypeNames.String && (operationSpec.contentType?.match("text/plain") || operationSpec.mediaType === "text")) {
122
- return;
123
- } else if (!isStream) {
124
- request.body = JSON.stringify(request.body);
66
+ const serializerOptions = operationArguments.options?.serializerOptions;
67
+ const updatedOptions = {
68
+ xml: {
69
+ rootName: serializerOptions?.xml.rootName ?? "",
70
+ includeRoot: serializerOptions?.xml.includeRoot ?? false,
71
+ xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY,
72
+ },
73
+ };
74
+ const xmlCharKey = updatedOptions.xml.xmlCharKey;
75
+ if (operationSpec.requestBody && operationSpec.requestBody.mapper) {
76
+ request.body = getOperationArgumentValueFromParameter(operationArguments, operationSpec.requestBody);
77
+ const bodyMapper = operationSpec.requestBody.mapper;
78
+ const { required, serializedName, xmlName, xmlElementName, xmlNamespace, xmlNamespacePrefix, nullable, } = bodyMapper;
79
+ const typeName = bodyMapper.type.name;
80
+ try {
81
+ if ((request.body !== undefined && request.body !== null) ||
82
+ (nullable && request.body === null) ||
83
+ required) {
84
+ const requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody);
85
+ request.body = operationSpec.serializer.serialize(bodyMapper, request.body, requestBodyParameterPathString, updatedOptions);
86
+ const isStream = typeName === MapperTypeNames.Stream;
87
+ if (operationSpec.isXML) {
88
+ const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : "xmlns";
89
+ const value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, request.body, updatedOptions);
90
+ if (typeName === MapperTypeNames.Sequence) {
91
+ request.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), { rootName: xmlName || serializedName, xmlCharKey });
92
+ }
93
+ else if (!isStream) {
94
+ request.body = stringifyXML(value, {
95
+ rootName: xmlName || serializedName,
96
+ xmlCharKey,
97
+ });
98
+ }
99
+ }
100
+ else if (typeName === MapperTypeNames.String &&
101
+ (operationSpec.contentType?.match("text/plain") || operationSpec.mediaType === "text")) {
102
+ // the String serializer has validated that request body is a string
103
+ // so just send the string.
104
+ return;
105
+ }
106
+ else if (!isStream) {
107
+ request.body = JSON.stringify(request.body);
108
+ }
109
+ }
110
+ }
111
+ catch (error) {
112
+ throw new Error(`Error "${error.message}" occurred in serializing the payload - ${JSON.stringify(serializedName, undefined, " ")}.`);
125
113
  }
126
- }
127
- } catch (error) {
128
- throw new Error(
129
- `Error "${error.message}" occurred in serializing the payload - ${JSON.stringify(
130
- serializedName,
131
- void 0,
132
- " "
133
- )}.`
134
- );
135
114
  }
136
- } else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {
137
- request.formData = {};
138
- for (const formDataParameter of operationSpec.formDataParameters) {
139
- const formDataParameterValue = getOperationArgumentValueFromParameter(
140
- operationArguments,
141
- formDataParameter
142
- );
143
- if (formDataParameterValue !== void 0 && formDataParameterValue !== null) {
144
- const formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);
145
- request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(
146
- formDataParameter.mapper,
147
- formDataParameterValue,
148
- getPathStringFromParameter(formDataParameter),
149
- updatedOptions
150
- );
151
- }
115
+ else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {
116
+ request.formData = {};
117
+ for (const formDataParameter of operationSpec.formDataParameters) {
118
+ const formDataParameterValue = getOperationArgumentValueFromParameter(operationArguments, formDataParameter);
119
+ if (formDataParameterValue !== undefined && formDataParameterValue !== null) {
120
+ const formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);
121
+ request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, getPathStringFromParameter(formDataParameter), updatedOptions);
122
+ }
123
+ }
152
124
  }
153
- }
154
125
  }
126
+ /**
127
+ * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself
128
+ */
155
129
  function getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) {
156
- if (xmlNamespace && !["Composite", "Sequence", "Dictionary"].includes(typeName)) {
157
- const result = {};
158
- result[options.xml.xmlCharKey] = serializedValue;
159
- result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };
160
- return result;
161
- }
162
- return serializedValue;
130
+ // Composite and Sequence schemas already got their root namespace set during serialization
131
+ // We just need to add xmlns to the other schema types
132
+ if (xmlNamespace && !["Composite", "Sequence", "Dictionary"].includes(typeName)) {
133
+ const result = {};
134
+ result[options.xml.xmlCharKey] = serializedValue;
135
+ result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };
136
+ return result;
137
+ }
138
+ return serializedValue;
163
139
  }
164
140
  function prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) {
165
- if (!Array.isArray(obj)) {
166
- obj = [obj];
167
- }
168
- if (!xmlNamespaceKey || !xmlNamespace) {
169
- return { [elementName]: obj };
170
- }
171
- const result = { [elementName]: obj };
172
- result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };
173
- return result;
141
+ if (!Array.isArray(obj)) {
142
+ obj = [obj];
143
+ }
144
+ if (!xmlNamespaceKey || !xmlNamespace) {
145
+ return { [elementName]: obj };
146
+ }
147
+ const result = { [elementName]: obj };
148
+ result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };
149
+ return result;
174
150
  }
175
- export {
176
- serializationPolicy,
177
- serializationPolicyName,
178
- serializeHeaders,
179
- serializeRequestBody
180
- };
151
+ //# sourceMappingURL=serializationPolicy.js.map
@@ -1,7 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["/mnt/vss/_work/1/s/sdk/core/core-client/src/serializationPolicy.ts"],
4
- "sourcesContent": ["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n DictionaryMapper,\n OperationArguments,\n OperationRequest,\n OperationSpec,\n RequiredSerializerOptions,\n SerializerOptions,\n XmlOptions,\n} from \"./interfaces.js\";\nimport { XML_ATTRKEY, XML_CHARKEY } from \"./interfaces.js\";\nimport type { PipelinePolicy, PipelineResponse, SendRequest } from \"@azure/core-rest-pipeline\";\nimport {\n getOperationArgumentValueFromParameter,\n getOperationRequestInfo,\n} from \"./operationHelpers.js\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\n\n/**\n * The programmatic identifier of the serializationPolicy.\n */\nexport const serializationPolicyName = \"serializationPolicy\";\n\n/**\n * Options to configure API request serialization.\n */\nexport interface SerializationPolicyOptions {\n /**\n * A function that is able to write XML. Required for XML support.\n */\n stringifyXML?: (obj: any, opts?: XmlOptions) => string;\n\n /**\n * Configures behavior of xml parser and builder.\n */\n serializerOptions?: SerializerOptions;\n}\n\n/**\n * This policy handles assembling the request body and headers using\n * an OperationSpec and OperationArguments on the request.\n */\nexport function serializationPolicy(options: SerializationPolicyOptions = {}): PipelinePolicy {\n const stringifyXML = options.stringifyXML;\n\n return {\n name: serializationPolicyName,\n async sendRequest(request: OperationRequest, next: SendRequest): Promise<PipelineResponse> {\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo?.operationSpec;\n const operationArguments = operationInfo?.operationArguments;\n if (operationSpec && operationArguments) {\n serializeHeaders(request, operationArguments, operationSpec);\n serializeRequestBody(request, operationArguments, operationSpec, stringifyXML);\n }\n return next(request);\n },\n };\n}\n\n/**\n * @internal\n */\nexport function serializeHeaders(\n request: OperationRequest,\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n): void {\n if (operationSpec.headerParameters) {\n for (const headerParameter of operationSpec.headerParameters) {\n let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter);\n if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) {\n headerValue = operationSpec.serializer.serialize(\n headerParameter.mapper,\n headerValue,\n getPathStringFromParameter(headerParameter),\n );\n const headerCollectionPrefix = (headerParameter.mapper as DictionaryMapper)\n .headerCollectionPrefix;\n if (headerCollectionPrefix) {\n for (const key of Object.keys(headerValue)) {\n request.headers.set(headerCollectionPrefix + key, headerValue[key]);\n }\n } else {\n request.headers.set(\n headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter),\n headerValue,\n );\n }\n }\n }\n }\n const customHeaders = operationArguments.options?.requestOptions?.customHeaders;\n if (customHeaders) {\n for (const customHeaderName of Object.keys(customHeaders)) {\n request.headers.set(customHeaderName, customHeaders[customHeaderName]);\n }\n }\n}\n\n/**\n * @internal\n */\nexport function serializeRequestBody(\n request: OperationRequest,\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n stringifyXML: (obj: any, opts?: XmlOptions) => string = function () {\n throw new Error(\"XML serialization unsupported!\");\n },\n): void {\n const serializerOptions = operationArguments.options?.serializerOptions;\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n if (operationSpec.requestBody && operationSpec.requestBody.mapper) {\n request.body = getOperationArgumentValueFromParameter(\n operationArguments,\n operationSpec.requestBody,\n );\n\n const bodyMapper = operationSpec.requestBody.mapper;\n const {\n required,\n serializedName,\n xmlName,\n xmlElementName,\n xmlNamespace,\n xmlNamespacePrefix,\n nullable,\n } = bodyMapper;\n const typeName = bodyMapper.type.name;\n\n try {\n if (\n (request.body !== undefined && request.body !== null) ||\n (nullable && request.body === null) ||\n required\n ) {\n const requestBodyParameterPathString: string = getPathStringFromParameter(\n operationSpec.requestBody,\n );\n request.body = operationSpec.serializer.serialize(\n bodyMapper,\n request.body,\n requestBodyParameterPathString,\n updatedOptions,\n );\n\n const isStream = typeName === MapperTypeNames.Stream;\n\n if (operationSpec.isXML) {\n const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : \"xmlns\";\n const value = getXmlValueWithNamespace(\n xmlNamespace,\n xmlnsKey,\n typeName,\n request.body,\n updatedOptions,\n );\n\n if (typeName === MapperTypeNames.Sequence) {\n request.body = stringifyXML(\n prepareXMLRootList(\n value,\n xmlElementName || xmlName || serializedName!,\n xmlnsKey,\n xmlNamespace,\n ),\n { rootName: xmlName || serializedName, xmlCharKey },\n );\n } else if (!isStream) {\n request.body = stringifyXML(value, {\n rootName: xmlName || serializedName,\n xmlCharKey,\n });\n }\n } else if (\n typeName === MapperTypeNames.String &&\n (operationSpec.contentType?.match(\"text/plain\") || operationSpec.mediaType === \"text\")\n ) {\n // the String serializer has validated that request body is a string\n // so just send the string.\n return;\n } else if (!isStream) {\n request.body = JSON.stringify(request.body);\n }\n }\n } catch (error: any) {\n throw new Error(\n `Error \"${error.message}\" occurred in serializing the payload - ${JSON.stringify(\n serializedName,\n undefined,\n \" \",\n )}.`,\n );\n }\n } else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {\n request.formData = {};\n for (const formDataParameter of operationSpec.formDataParameters) {\n const formDataParameterValue = getOperationArgumentValueFromParameter(\n operationArguments,\n formDataParameter,\n );\n if (formDataParameterValue !== undefined && formDataParameterValue !== null) {\n const formDataParameterPropertyName: string =\n formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);\n request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(\n formDataParameter.mapper,\n formDataParameterValue,\n getPathStringFromParameter(formDataParameter),\n updatedOptions,\n );\n }\n }\n }\n}\n\n/**\n * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself\n */\nfunction getXmlValueWithNamespace(\n xmlNamespace: string | undefined,\n xmlnsKey: string,\n typeName: string,\n serializedValue: any,\n options: RequiredSerializerOptions,\n): any {\n // Composite and Sequence schemas already got their root namespace set during serialization\n // We just need to add xmlns to the other schema types\n if (xmlNamespace && ![\"Composite\", \"Sequence\", \"Dictionary\"].includes(typeName)) {\n const result: any = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };\n return result;\n }\n\n return serializedValue;\n}\n\nfunction prepareXMLRootList(\n obj: any,\n elementName: string,\n xmlNamespaceKey?: string,\n xmlNamespace?: string,\n): { [key: string]: any[] } {\n if (!Array.isArray(obj)) {\n obj = [obj];\n }\n if (!xmlNamespaceKey || !xmlNamespace) {\n return { [elementName]: obj };\n }\n\n const result = { [elementName]: obj };\n result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };\n return result;\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
1
+ {"version":3,"file":"serializationPolicy.js","sourceRoot":"","sources":["../../src/serializationPolicy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAWlC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EACL,sCAAsC,EACtC,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AAiB7D;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAsC,EAAE;IAC1E,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAE1C,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,WAAW,CAAC,OAAyB,EAAE,IAAiB;YACtD,MAAM,aAAa,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,aAAa,EAAE,aAAa,CAAC;YACnD,MAAM,kBAAkB,GAAG,aAAa,EAAE,kBAAkB,CAAC;YAC7D,IAAI,aAAa,IAAI,kBAAkB,EAAE,CAAC;gBACxC,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC;gBAC7D,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;YACjF,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAyB,EACzB,kBAAsC,EACtC,aAA4B;IAE5B,IAAI,aAAa,CAAC,gBAAgB,EAAE,CAAC;QACnC,KAAK,MAAM,eAAe,IAAI,aAAa,CAAC,gBAAgB,EAAE,CAAC;YAC7D,IAAI,WAAW,GAAG,sCAAsC,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;YAC9F,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC3F,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,SAAS,CAC9C,eAAe,CAAC,MAAM,EACtB,WAAW,EACX,0BAA0B,CAAC,eAAe,CAAC,CAC5C,CAAC;gBACF,MAAM,sBAAsB,GAAI,eAAe,CAAC,MAA2B;qBACxE,sBAAsB,CAAC;gBAC1B,IAAI,sBAAsB,EAAE,CAAC;oBAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC3C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,GAAG,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;oBACtE,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,OAAO,CAAC,GAAG,CACjB,eAAe,CAAC,MAAM,CAAC,cAAc,IAAI,0BAA0B,CAAC,eAAe,CAAC,EACpF,WAAW,CACZ,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,CAAC;IAChF,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,MAAM,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1D,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAyB,EACzB,kBAAsC,EACtC,aAA4B,EAC5B,eAAwD;IACtD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACpD,CAAC;IAED,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACxE,MAAM,cAAc,GAA8B;QAChD,GAAG,EAAE;YACH,QAAQ,EAAE,iBAAiB,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE;YAC/C,WAAW,EAAE,iBAAiB,EAAE,GAAG,CAAC,WAAW,IAAI,KAAK;YACxD,UAAU,EAAE,iBAAiB,EAAE,GAAG,CAAC,UAAU,IAAI,WAAW;SAC7D;KACF,CAAC;IAEF,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;IACjD,IAAI,aAAa,CAAC,WAAW,IAAI,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;QAClE,OAAO,CAAC,IAAI,GAAG,sCAAsC,CACnD,kBAAkB,EAClB,aAAa,CAAC,WAAW,CAC1B,CAAC;QAEF,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC;QACpD,MAAM,EACJ,QAAQ,EACR,cAAc,EACd,OAAO,EACP,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,QAAQ,GACT,GAAG,UAAU,CAAC;QACf,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAEtC,IAAI,CAAC;YACH,IACE,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;gBACrD,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;gBACnC,QAAQ,EACR,CAAC;gBACD,MAAM,8BAA8B,GAAW,0BAA0B,CACvE,aAAa,CAAC,WAAW,CAC1B,CAAC;gBACF,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,SAAS,CAC/C,UAAU,EACV,OAAO,CAAC,IAAI,EACZ,8BAA8B,EAC9B,cAAc,CACf,CAAC;gBAEF,MAAM,QAAQ,GAAG,QAAQ,KAAK,eAAe,CAAC,MAAM,CAAC;gBAErD,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;oBACxB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,CAAC,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;oBAC9E,MAAM,KAAK,GAAG,wBAAwB,CACpC,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,OAAO,CAAC,IAAI,EACZ,cAAc,CACf,CAAC;oBAEF,IAAI,QAAQ,KAAK,eAAe,CAAC,QAAQ,EAAE,CAAC;wBAC1C,OAAO,CAAC,IAAI,GAAG,YAAY,CACzB,kBAAkB,CAChB,KAAK,EACL,cAAc,IAAI,OAAO,IAAI,cAAe,EAC5C,QAAQ,EACR,YAAY,CACb,EACD,EAAE,QAAQ,EAAE,OAAO,IAAI,cAAc,EAAE,UAAU,EAAE,CACpD,CAAC;oBACJ,CAAC;yBAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE;4BACjC,QAAQ,EAAE,OAAO,IAAI,cAAc;4BACnC,UAAU;yBACX,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,IACL,QAAQ,KAAK,eAAe,CAAC,MAAM;oBACnC,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,SAAS,KAAK,MAAM,CAAC,EACtF,CAAC;oBACD,oEAAoE;oBACpE,2BAA2B;oBAC3B,OAAO;gBACT,CAAC;qBAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACrB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,UAAU,KAAK,CAAC,OAAO,2CAA2C,IAAI,CAAC,SAAS,CAC9E,cAAc,EACd,SAAS,EACT,IAAI,CACL,GAAG,CACL,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,aAAa,CAAC,kBAAkB,IAAI,aAAa,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3F,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;QACtB,KAAK,MAAM,iBAAiB,IAAI,aAAa,CAAC,kBAAkB,EAAE,CAAC;YACjE,MAAM,sBAAsB,GAAG,sCAAsC,CACnE,kBAAkB,EAClB,iBAAiB,CAClB,CAAC;YACF,IAAI,sBAAsB,KAAK,SAAS,IAAI,sBAAsB,KAAK,IAAI,EAAE,CAAC;gBAC5E,MAAM,6BAA6B,GACjC,iBAAiB,CAAC,MAAM,CAAC,cAAc,IAAI,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;gBAC3F,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,SAAS,CAClF,iBAAiB,CAAC,MAAM,EACxB,sBAAsB,EACtB,0BAA0B,CAAC,iBAAiB,CAAC,EAC7C,cAAc,CACf,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAC/B,YAAgC,EAChC,QAAgB,EAChB,QAAgB,EAChB,eAAoB,EACpB,OAAkC;IAElC,2FAA2F;IAC3F,sDAAsD;IACtD,IAAI,YAAY,IAAI,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChF,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC;QACjD,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,SAAS,kBAAkB,CACzB,GAAQ,EACR,WAAmB,EACnB,eAAwB,EACxB,YAAqB;IAErB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IACD,IAAI,CAAC,eAAe,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;IACtC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n DictionaryMapper,\n OperationArguments,\n OperationRequest,\n OperationSpec,\n RequiredSerializerOptions,\n SerializerOptions,\n XmlOptions,\n} from \"./interfaces.js\";\nimport { XML_ATTRKEY, XML_CHARKEY } from \"./interfaces.js\";\nimport type { PipelinePolicy, PipelineResponse, SendRequest } from \"@azure/core-rest-pipeline\";\nimport {\n getOperationArgumentValueFromParameter,\n getOperationRequestInfo,\n} from \"./operationHelpers.js\";\nimport { MapperTypeNames } from \"./serializer.js\";\nimport { getPathStringFromParameter } from \"./interfaceHelpers.js\";\n\n/**\n * The programmatic identifier of the serializationPolicy.\n */\nexport const serializationPolicyName = \"serializationPolicy\";\n\n/**\n * Options to configure API request serialization.\n */\nexport interface SerializationPolicyOptions {\n /**\n * A function that is able to write XML. Required for XML support.\n */\n stringifyXML?: (obj: any, opts?: XmlOptions) => string;\n\n /**\n * Configures behavior of xml parser and builder.\n */\n serializerOptions?: SerializerOptions;\n}\n\n/**\n * This policy handles assembling the request body and headers using\n * an OperationSpec and OperationArguments on the request.\n */\nexport function serializationPolicy(options: SerializationPolicyOptions = {}): PipelinePolicy {\n const stringifyXML = options.stringifyXML;\n\n return {\n name: serializationPolicyName,\n sendRequest(request: OperationRequest, next: SendRequest): Promise<PipelineResponse> {\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo?.operationSpec;\n const operationArguments = operationInfo?.operationArguments;\n if (operationSpec && operationArguments) {\n serializeHeaders(request, operationArguments, operationSpec);\n serializeRequestBody(request, operationArguments, operationSpec, stringifyXML);\n }\n return next(request);\n },\n };\n}\n\n/**\n * @internal\n */\nexport function serializeHeaders(\n request: OperationRequest,\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n): void {\n if (operationSpec.headerParameters) {\n for (const headerParameter of operationSpec.headerParameters) {\n let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter);\n if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) {\n headerValue = operationSpec.serializer.serialize(\n headerParameter.mapper,\n headerValue,\n getPathStringFromParameter(headerParameter),\n );\n const headerCollectionPrefix = (headerParameter.mapper as DictionaryMapper)\n .headerCollectionPrefix;\n if (headerCollectionPrefix) {\n for (const key of Object.keys(headerValue)) {\n request.headers.set(headerCollectionPrefix + key, headerValue[key]);\n }\n } else {\n request.headers.set(\n headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter),\n headerValue,\n );\n }\n }\n }\n }\n const customHeaders = operationArguments.options?.requestOptions?.customHeaders;\n if (customHeaders) {\n for (const customHeaderName of Object.keys(customHeaders)) {\n request.headers.set(customHeaderName, customHeaders[customHeaderName]);\n }\n }\n}\n\n/**\n * @internal\n */\nexport function serializeRequestBody(\n request: OperationRequest,\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n stringifyXML: (obj: any, opts?: XmlOptions) => string = function () {\n throw new Error(\"XML serialization unsupported!\");\n },\n): void {\n const serializerOptions = operationArguments.options?.serializerOptions;\n const updatedOptions: RequiredSerializerOptions = {\n xml: {\n rootName: serializerOptions?.xml.rootName ?? \"\",\n includeRoot: serializerOptions?.xml.includeRoot ?? false,\n xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY,\n },\n };\n\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n if (operationSpec.requestBody && operationSpec.requestBody.mapper) {\n request.body = getOperationArgumentValueFromParameter(\n operationArguments,\n operationSpec.requestBody,\n );\n\n const bodyMapper = operationSpec.requestBody.mapper;\n const {\n required,\n serializedName,\n xmlName,\n xmlElementName,\n xmlNamespace,\n xmlNamespacePrefix,\n nullable,\n } = bodyMapper;\n const typeName = bodyMapper.type.name;\n\n try {\n if (\n (request.body !== undefined && request.body !== null) ||\n (nullable && request.body === null) ||\n required\n ) {\n const requestBodyParameterPathString: string = getPathStringFromParameter(\n operationSpec.requestBody,\n );\n request.body = operationSpec.serializer.serialize(\n bodyMapper,\n request.body,\n requestBodyParameterPathString,\n updatedOptions,\n );\n\n const isStream = typeName === MapperTypeNames.Stream;\n\n if (operationSpec.isXML) {\n const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : \"xmlns\";\n const value = getXmlValueWithNamespace(\n xmlNamespace,\n xmlnsKey,\n typeName,\n request.body,\n updatedOptions,\n );\n\n if (typeName === MapperTypeNames.Sequence) {\n request.body = stringifyXML(\n prepareXMLRootList(\n value,\n xmlElementName || xmlName || serializedName!,\n xmlnsKey,\n xmlNamespace,\n ),\n { rootName: xmlName || serializedName, xmlCharKey },\n );\n } else if (!isStream) {\n request.body = stringifyXML(value, {\n rootName: xmlName || serializedName,\n xmlCharKey,\n });\n }\n } else if (\n typeName === MapperTypeNames.String &&\n (operationSpec.contentType?.match(\"text/plain\") || operationSpec.mediaType === \"text\")\n ) {\n // the String serializer has validated that request body is a string\n // so just send the string.\n return;\n } else if (!isStream) {\n request.body = JSON.stringify(request.body);\n }\n }\n } catch (error: any) {\n throw new Error(\n `Error \"${error.message}\" occurred in serializing the payload - ${JSON.stringify(\n serializedName,\n undefined,\n \" \",\n )}.`,\n );\n }\n } else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {\n request.formData = {};\n for (const formDataParameter of operationSpec.formDataParameters) {\n const formDataParameterValue = getOperationArgumentValueFromParameter(\n operationArguments,\n formDataParameter,\n );\n if (formDataParameterValue !== undefined && formDataParameterValue !== null) {\n const formDataParameterPropertyName: string =\n formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);\n request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(\n formDataParameter.mapper,\n formDataParameterValue,\n getPathStringFromParameter(formDataParameter),\n updatedOptions,\n );\n }\n }\n }\n}\n\n/**\n * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself\n */\nfunction getXmlValueWithNamespace(\n xmlNamespace: string | undefined,\n xmlnsKey: string,\n typeName: string,\n serializedValue: any,\n options: RequiredSerializerOptions,\n): any {\n // Composite and Sequence schemas already got their root namespace set during serialization\n // We just need to add xmlns to the other schema types\n if (xmlNamespace && ![\"Composite\", \"Sequence\", \"Dictionary\"].includes(typeName)) {\n const result: any = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };\n return result;\n }\n\n return serializedValue;\n}\n\nfunction prepareXMLRootList(\n obj: any,\n elementName: string,\n xmlNamespaceKey?: string,\n xmlNamespace?: string,\n): { [key: string]: any[] } {\n if (!Array.isArray(obj)) {\n obj = [obj];\n }\n if (!xmlNamespaceKey || !xmlNamespace) {\n return { [elementName]: obj };\n }\n\n const result = { [elementName]: obj };\n result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };\n return result;\n}\n"]}