@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.
- package/dist/browser/authorizeRequestOnTenantChallenge.js +1 -2
- package/dist/browser/authorizeRequestOnTenantChallenge.js.map +1 -1
- package/dist/browser/base64.d.ts +1 -5
- package/dist/browser/base64.js +6 -14
- package/dist/browser/base64.js.map +1 -1
- package/dist/browser/interfaceHelpers.js +1 -2
- package/dist/browser/interfaceHelpers.js.map +1 -1
- package/dist/browser/operationHelpers.js +8 -4
- package/dist/browser/operationHelpers.js.map +1 -1
- package/dist/browser/serializationPolicy.js +1 -1
- package/dist/browser/serializationPolicy.js.map +1 -1
- package/dist/browser/serializer.js +32 -11
- package/dist/browser/serializer.js.map +1 -1
- package/dist/browser/serviceClient.js +2 -2
- package/dist/browser/serviceClient.js.map +1 -1
- package/dist/browser/{state.d.ts → state-web.d.mts} +1 -1
- package/dist/browser/{state.js → state-web.mjs} +1 -1
- package/dist/browser/state-web.mjs.map +1 -0
- package/dist/browser/urlHelpers.js +2 -1
- package/dist/browser/urlHelpers.js.map +1 -1
- package/dist/commonjs/authorizeRequestOnTenantChallenge.js +1 -2
- package/dist/commonjs/authorizeRequestOnTenantChallenge.js.map +1 -1
- package/dist/commonjs/base64.d.ts +1 -1
- package/dist/commonjs/base64.js +6 -6
- package/dist/commonjs/base64.js.map +1 -1
- package/dist/commonjs/interfaceHelpers.js +1 -2
- package/dist/commonjs/interfaceHelpers.js.map +1 -1
- package/dist/commonjs/operationHelpers.js +10 -6
- package/dist/commonjs/operationHelpers.js.map +1 -1
- package/dist/commonjs/serializationPolicy.js +1 -1
- package/dist/commonjs/serializationPolicy.js.map +1 -1
- package/dist/commonjs/serializer.js +32 -11
- package/dist/commonjs/serializer.js.map +1 -1
- package/dist/commonjs/serviceClient.js +2 -2
- package/dist/commonjs/serviceClient.js.map +1 -1
- package/dist/commonjs/{state.d.ts → state-cjs.d.ts} +1 -1
- package/dist/commonjs/{state.js → state-cjs.js} +1 -1
- package/dist/commonjs/state-cjs.js.map +1 -0
- package/dist/commonjs/tsdoc-metadata.json +1 -1
- package/dist/commonjs/urlHelpers.js +2 -1
- package/dist/commonjs/urlHelpers.js.map +1 -1
- package/dist/esm/authorizeRequestOnClaimChallenge.js +67 -44
- package/dist/esm/authorizeRequestOnClaimChallenge.js.map +1 -7
- package/dist/esm/authorizeRequestOnTenantChallenge.js +97 -72
- package/dist/esm/authorizeRequestOnTenantChallenge.js.map +1 -7
- package/dist/esm/base64.d.ts +1 -1
- package/dist/esm/base64.js +32 -15
- package/dist/esm/base64.js.map +1 -7
- package/dist/esm/deserializationPolicy.js +202 -205
- package/dist/esm/deserializationPolicy.js.map +1 -7
- package/dist/esm/httpClientCache.js +8 -8
- package/dist/esm/httpClientCache.js.map +1 -7
- package/dist/esm/index.js +11 -31
- package/dist/esm/index.js.map +1 -7
- package/dist/esm/interfaceHelpers.js +34 -23
- package/dist/esm/interfaceHelpers.js.map +1 -7
- package/dist/esm/interfaces.js +11 -6
- package/dist/esm/interfaces.js.map +1 -7
- package/dist/esm/log.js +4 -4
- package/dist/esm/log.js.map +1 -7
- package/dist/esm/operationHelpers.js +86 -73
- package/dist/esm/operationHelpers.js.map +1 -7
- package/dist/esm/pipeline.js +23 -22
- package/dist/esm/pipeline.js.map +1 -7
- package/dist/esm/serializationPolicy.js +134 -163
- package/dist/esm/serializationPolicy.js.map +1 -7
- package/dist/esm/serializer.js +877 -812
- package/dist/esm/serializer.js.map +1 -7
- package/dist/esm/serviceClient.js +150 -151
- package/dist/esm/serviceClient.js.map +1 -7
- package/dist/esm/state-cjs.d.ts +8 -0
- package/dist/esm/state-cjs.js +9 -0
- package/dist/esm/state-cjs.js.map +1 -0
- package/dist/esm/state.js +10 -5
- package/dist/esm/state.js.map +1 -7
- package/dist/esm/urlHelpers.js +207 -199
- package/dist/esm/urlHelpers.js.map +1 -7
- package/dist/esm/utils.js +118 -64
- package/dist/esm/utils.js.map +1 -7
- package/dist/react-native/authorizeRequestOnTenantChallenge.js +1 -2
- package/dist/react-native/authorizeRequestOnTenantChallenge.js.map +1 -1
- package/dist/react-native/base64.d.ts +1 -1
- package/dist/react-native/base64.js +6 -6
- package/dist/react-native/base64.js.map +1 -1
- package/dist/react-native/interfaceHelpers.js +1 -2
- package/dist/react-native/interfaceHelpers.js.map +1 -1
- package/dist/react-native/operationHelpers.js +8 -4
- package/dist/react-native/operationHelpers.js.map +1 -1
- package/dist/react-native/serializationPolicy.js +1 -1
- package/dist/react-native/serializationPolicy.js.map +1 -1
- package/dist/react-native/serializer.js +32 -11
- package/dist/react-native/serializer.js.map +1 -1
- package/dist/react-native/serviceClient.js +2 -2
- package/dist/react-native/serviceClient.js.map +1 -1
- package/dist/react-native/state-web.d.mts +8 -0
- package/dist/react-native/state-web.mjs +9 -0
- package/dist/react-native/state-web.mjs.map +1 -0
- package/dist/react-native/urlHelpers.js +2 -1
- package/dist/react-native/urlHelpers.js.map +1 -1
- package/package.json +31 -17
- package/dist/browser/state.js.map +0 -1
- package/dist/commonjs/state.js.map +0 -1
- package/dist/react-native/state.d.ts +0 -8
- package/dist/react-native/state.js +0 -10
- 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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
57
|
-
|
|
60
|
+
/**
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
export function serializeRequestBody(request, operationArguments, operationSpec, stringifyXML = function () {
|
|
64
|
+
throw new Error("XML serialization unsupported!");
|
|
58
65
|
}) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
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
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
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
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
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
|
-
|
|
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":"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","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"]}
|