@azure/core-client 1.10.0 → 1.10.1-alpha.20250730.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/authorizeRequestOnClaimChallenge.js +2 -3
- package/dist/browser/authorizeRequestOnClaimChallenge.js.map +1 -1
- package/dist/browser/authorizeRequestOnTenantChallenge.js +6 -4
- package/dist/browser/authorizeRequestOnTenantChallenge.js.map +1 -1
- package/dist/browser/deserializationPolicy.js +16 -19
- package/dist/browser/deserializationPolicy.js.map +1 -1
- package/dist/browser/pipeline.js +1 -1
- package/dist/browser/pipeline.js.map +1 -1
- package/dist/browser/serializationPolicy.js +8 -10
- package/dist/browser/serializationPolicy.js.map +1 -1
- package/dist/browser/serializer.js +22 -23
- package/dist/browser/serializer.js.map +1 -1
- package/dist/browser/serviceClient.js +31 -7
- package/dist/browser/serviceClient.js.map +1 -1
- package/dist/browser/urlHelpers.js +2 -4
- package/dist/browser/urlHelpers.js.map +1 -1
- package/dist/browser/utils.js +23 -10
- package/dist/browser/utils.js.map +1 -1
- package/dist/commonjs/authorizeRequestOnClaimChallenge.js +2 -3
- package/dist/commonjs/authorizeRequestOnClaimChallenge.js.map +1 -1
- package/dist/commonjs/authorizeRequestOnTenantChallenge.js +6 -4
- package/dist/commonjs/authorizeRequestOnTenantChallenge.js.map +1 -1
- package/dist/commonjs/deserializationPolicy.js +16 -19
- package/dist/commonjs/deserializationPolicy.js.map +1 -1
- package/dist/commonjs/pipeline.js +1 -1
- package/dist/commonjs/pipeline.js.map +1 -1
- package/dist/commonjs/serializationPolicy.js +8 -10
- package/dist/commonjs/serializationPolicy.js.map +1 -1
- package/dist/commonjs/serializer.js +22 -23
- package/dist/commonjs/serializer.js.map +1 -1
- package/dist/commonjs/serviceClient.js +31 -7
- package/dist/commonjs/serviceClient.js.map +1 -1
- package/dist/commonjs/state.d.ts +1 -1
- package/dist/commonjs/tsdoc-metadata.json +11 -11
- package/dist/commonjs/urlHelpers.js +2 -4
- package/dist/commonjs/urlHelpers.js.map +1 -1
- package/dist/commonjs/utils.js +23 -10
- package/dist/commonjs/utils.js.map +1 -1
- package/dist/esm/authorizeRequestOnClaimChallenge.js +2 -3
- package/dist/esm/authorizeRequestOnClaimChallenge.js.map +1 -1
- package/dist/esm/authorizeRequestOnTenantChallenge.js +6 -4
- package/dist/esm/authorizeRequestOnTenantChallenge.js.map +1 -1
- package/dist/esm/deserializationPolicy.js +16 -19
- package/dist/esm/deserializationPolicy.js.map +1 -1
- package/dist/esm/pipeline.js +1 -1
- package/dist/esm/pipeline.js.map +1 -1
- package/dist/esm/serializationPolicy.js +8 -10
- package/dist/esm/serializationPolicy.js.map +1 -1
- package/dist/esm/serializer.js +22 -23
- package/dist/esm/serializer.js.map +1 -1
- package/dist/esm/serviceClient.js +31 -7
- package/dist/esm/serviceClient.js.map +1 -1
- package/dist/esm/urlHelpers.js +2 -4
- package/dist/esm/urlHelpers.js.map +1 -1
- package/dist/esm/utils.js +23 -10
- package/dist/esm/utils.js.map +1 -1
- package/dist/react-native/authorizeRequestOnClaimChallenge.js +2 -3
- package/dist/react-native/authorizeRequestOnClaimChallenge.js.map +1 -1
- package/dist/react-native/authorizeRequestOnTenantChallenge.js +6 -4
- package/dist/react-native/authorizeRequestOnTenantChallenge.js.map +1 -1
- package/dist/react-native/deserializationPolicy.js +16 -19
- package/dist/react-native/deserializationPolicy.js.map +1 -1
- package/dist/react-native/pipeline.js +1 -1
- package/dist/react-native/pipeline.js.map +1 -1
- package/dist/react-native/serializationPolicy.js +8 -10
- package/dist/react-native/serializationPolicy.js.map +1 -1
- package/dist/react-native/serializer.js +22 -23
- package/dist/react-native/serializer.js.map +1 -1
- package/dist/react-native/serviceClient.js +31 -7
- package/dist/react-native/serviceClient.js.map +1 -1
- package/dist/react-native/urlHelpers.js +2 -4
- package/dist/react-native/urlHelpers.js.map +1 -1
- package/dist/react-native/utils.js +23 -10
- package/dist/react-native/utils.js.map +1 -1
- package/package.json +4 -4
|
@@ -18,8 +18,8 @@ export function serializationPolicy(options = {}) {
|
|
|
18
18
|
name: serializationPolicyName,
|
|
19
19
|
async sendRequest(request, next) {
|
|
20
20
|
const operationInfo = getOperationRequestInfo(request);
|
|
21
|
-
const operationSpec = operationInfo
|
|
22
|
-
const operationArguments = operationInfo
|
|
21
|
+
const operationSpec = operationInfo?.operationSpec;
|
|
22
|
+
const operationArguments = operationInfo?.operationArguments;
|
|
23
23
|
if (operationSpec && operationArguments) {
|
|
24
24
|
serializeHeaders(request, operationArguments, operationSpec);
|
|
25
25
|
serializeRequestBody(request, operationArguments, operationSpec, stringifyXML);
|
|
@@ -32,7 +32,6 @@ export function serializationPolicy(options = {}) {
|
|
|
32
32
|
* @internal
|
|
33
33
|
*/
|
|
34
34
|
export function serializeHeaders(request, operationArguments, operationSpec) {
|
|
35
|
-
var _a, _b;
|
|
36
35
|
if (operationSpec.headerParameters) {
|
|
37
36
|
for (const headerParameter of operationSpec.headerParameters) {
|
|
38
37
|
let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter);
|
|
@@ -51,7 +50,7 @@ export function serializeHeaders(request, operationArguments, operationSpec) {
|
|
|
51
50
|
}
|
|
52
51
|
}
|
|
53
52
|
}
|
|
54
|
-
const customHeaders =
|
|
53
|
+
const customHeaders = operationArguments.options?.requestOptions?.customHeaders;
|
|
55
54
|
if (customHeaders) {
|
|
56
55
|
for (const customHeaderName of Object.keys(customHeaders)) {
|
|
57
56
|
request.headers.set(customHeaderName, customHeaders[customHeaderName]);
|
|
@@ -64,13 +63,12 @@ export function serializeHeaders(request, operationArguments, operationSpec) {
|
|
|
64
63
|
export function serializeRequestBody(request, operationArguments, operationSpec, stringifyXML = function () {
|
|
65
64
|
throw new Error("XML serialization unsupported!");
|
|
66
65
|
}) {
|
|
67
|
-
|
|
68
|
-
const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;
|
|
66
|
+
const serializerOptions = operationArguments.options?.serializerOptions;
|
|
69
67
|
const updatedOptions = {
|
|
70
68
|
xml: {
|
|
71
|
-
rootName:
|
|
72
|
-
includeRoot:
|
|
73
|
-
xmlCharKey:
|
|
69
|
+
rootName: serializerOptions?.xml.rootName ?? "",
|
|
70
|
+
includeRoot: serializerOptions?.xml.includeRoot ?? false,
|
|
71
|
+
xmlCharKey: serializerOptions?.xml.xmlCharKey ?? XML_CHARKEY,
|
|
74
72
|
},
|
|
75
73
|
};
|
|
76
74
|
const xmlCharKey = updatedOptions.xml.xmlCharKey;
|
|
@@ -100,7 +98,7 @@ export function serializeRequestBody(request, operationArguments, operationSpec,
|
|
|
100
98
|
}
|
|
101
99
|
}
|
|
102
100
|
else if (typeName === MapperTypeNames.String &&
|
|
103
|
-
(
|
|
101
|
+
(operationSpec.contentType?.match("text/plain") || operationSpec.mediaType === "text")) {
|
|
104
102
|
// the String serializer has validated that request body is a string
|
|
105
103
|
// so just send the string.
|
|
106
104
|
return;
|
|
@@ -1 +1 @@
|
|
|
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 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"]}
|
|
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 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"]}
|
package/dist/esm/serializer.js
CHANGED
|
@@ -4,6 +4,8 @@ import * as base64 from "./base64.js";
|
|
|
4
4
|
import { XML_ATTRKEY, XML_CHARKEY } from "./interfaces.js";
|
|
5
5
|
import { isDuration, isValidUuid } from "./utils.js";
|
|
6
6
|
class SerializerImpl {
|
|
7
|
+
modelMappers;
|
|
8
|
+
isXML;
|
|
7
9
|
constructor(modelMappers = {}, isXML = false) {
|
|
8
10
|
this.modelMappers = modelMappers;
|
|
9
11
|
this.isXML = isXML;
|
|
@@ -70,12 +72,11 @@ class SerializerImpl {
|
|
|
70
72
|
* @returns A valid serialized Javascript object
|
|
71
73
|
*/
|
|
72
74
|
serialize(mapper, object, objectName, options = { xml: {} }) {
|
|
73
|
-
var _a, _b, _c;
|
|
74
75
|
const updatedOptions = {
|
|
75
76
|
xml: {
|
|
76
|
-
rootName:
|
|
77
|
-
includeRoot:
|
|
78
|
-
xmlCharKey:
|
|
77
|
+
rootName: options.xml.rootName ?? "",
|
|
78
|
+
includeRoot: options.xml.includeRoot ?? false,
|
|
79
|
+
xmlCharKey: options.xml.xmlCharKey ?? XML_CHARKEY,
|
|
79
80
|
},
|
|
80
81
|
};
|
|
81
82
|
let payload = {};
|
|
@@ -157,14 +158,13 @@ class SerializerImpl {
|
|
|
157
158
|
* @returns A valid deserialized Javascript object
|
|
158
159
|
*/
|
|
159
160
|
deserialize(mapper, responseBody, objectName, options = { xml: {} }) {
|
|
160
|
-
var _a, _b, _c, _d;
|
|
161
161
|
const updatedOptions = {
|
|
162
162
|
xml: {
|
|
163
|
-
rootName:
|
|
164
|
-
includeRoot:
|
|
165
|
-
xmlCharKey:
|
|
163
|
+
rootName: options.xml.rootName ?? "",
|
|
164
|
+
includeRoot: options.xml.includeRoot ?? false,
|
|
165
|
+
xmlCharKey: options.xml.xmlCharKey ?? XML_CHARKEY,
|
|
166
166
|
},
|
|
167
|
-
ignoreUnknownProperties:
|
|
167
|
+
ignoreUnknownProperties: options.ignoreUnknownProperties ?? false,
|
|
168
168
|
};
|
|
169
169
|
if (responseBody === undefined || responseBody === null) {
|
|
170
170
|
if (this.isXML && mapper.type.name === "Sequence" && !mapper.xmlIsWrapped) {
|
|
@@ -430,7 +430,6 @@ function serializeDateTypes(typeName, value, objectName) {
|
|
|
430
430
|
return value;
|
|
431
431
|
}
|
|
432
432
|
function serializeSequenceType(serializer, mapper, object, objectName, isXml, options) {
|
|
433
|
-
var _a;
|
|
434
433
|
if (!Array.isArray(object)) {
|
|
435
434
|
throw new Error(`${objectName} must be of type Array.`);
|
|
436
435
|
}
|
|
@@ -443,7 +442,7 @@ function serializeSequenceType(serializer, mapper, object, objectName, isXml, op
|
|
|
443
442
|
// not have *all* properties declared (like uberParent),
|
|
444
443
|
// so let's try to look up the full definition by name.
|
|
445
444
|
if (elementType.type.name === "Composite" && elementType.type.className) {
|
|
446
|
-
elementType =
|
|
445
|
+
elementType = serializer.modelMappers[elementType.type.className] ?? elementType;
|
|
447
446
|
}
|
|
448
447
|
const tempArray = [];
|
|
449
448
|
for (let i = 0; i < object.length; i++) {
|
|
@@ -453,7 +452,7 @@ function serializeSequenceType(serializer, mapper, object, objectName, isXml, op
|
|
|
453
452
|
? `xmlns:${elementType.xmlNamespacePrefix}`
|
|
454
453
|
: "xmlns";
|
|
455
454
|
if (elementType.type.name === "Composite") {
|
|
456
|
-
tempArray[i] =
|
|
455
|
+
tempArray[i] = { ...serializedValue };
|
|
457
456
|
tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };
|
|
458
457
|
}
|
|
459
458
|
else {
|
|
@@ -502,7 +501,7 @@ function resolveAdditionalProperties(serializer, mapper, objectName) {
|
|
|
502
501
|
const additionalProperties = mapper.type.additionalProperties;
|
|
503
502
|
if (!additionalProperties && mapper.type.className) {
|
|
504
503
|
const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
|
|
505
|
-
return modelMapper
|
|
504
|
+
return modelMapper?.type.additionalProperties;
|
|
506
505
|
}
|
|
507
506
|
return additionalProperties;
|
|
508
507
|
}
|
|
@@ -531,7 +530,7 @@ function resolveModelProperties(serializer, mapper, objectName) {
|
|
|
531
530
|
if (!modelMapper) {
|
|
532
531
|
throw new Error(`mapper() cannot be null or undefined for model "${mapper.type.className}".`);
|
|
533
532
|
}
|
|
534
|
-
modelProps = modelMapper
|
|
533
|
+
modelProps = modelMapper?.type.modelProperties;
|
|
535
534
|
if (!modelProps) {
|
|
536
535
|
throw new Error(`modelProperties cannot be null or undefined in the ` +
|
|
537
536
|
`mapper "${JSON.stringify(modelMapper)}" of type "${mapper.type.className}" for object "${objectName}".`);
|
|
@@ -579,7 +578,10 @@ function serializeCompositeType(serializer, mapper, object, objectName, isXml, o
|
|
|
579
578
|
const xmlnsKey = mapper.xmlNamespacePrefix
|
|
580
579
|
? `xmlns:${mapper.xmlNamespacePrefix}`
|
|
581
580
|
: "xmlns";
|
|
582
|
-
parentObject[XML_ATTRKEY] =
|
|
581
|
+
parentObject[XML_ATTRKEY] = {
|
|
582
|
+
...parentObject[XML_ATTRKEY],
|
|
583
|
+
[xmlnsKey]: mapper.xmlNamespace,
|
|
584
|
+
};
|
|
583
585
|
}
|
|
584
586
|
const propertyObjectName = propertyMapper.serializedName !== ""
|
|
585
587
|
? objectName + "." + propertyMapper.serializedName
|
|
@@ -637,7 +639,7 @@ function getXmlObjectValue(propertyMapper, serializedValue, isXml, options) {
|
|
|
637
639
|
return serializedValue;
|
|
638
640
|
}
|
|
639
641
|
else {
|
|
640
|
-
const result =
|
|
642
|
+
const result = { ...serializedValue };
|
|
641
643
|
result[XML_ATTRKEY] = xmlNamespace;
|
|
642
644
|
return result;
|
|
643
645
|
}
|
|
@@ -651,8 +653,7 @@ function isSpecialXmlProperty(propertyName, options) {
|
|
|
651
653
|
return [XML_ATTRKEY, options.xml.xmlCharKey].includes(propertyName);
|
|
652
654
|
}
|
|
653
655
|
function deserializeCompositeType(serializer, mapper, responseBody, objectName, options) {
|
|
654
|
-
|
|
655
|
-
const xmlCharKey = (_a = options.xml.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
|
|
656
|
+
const xmlCharKey = options.xml.xmlCharKey ?? XML_CHARKEY;
|
|
656
657
|
if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {
|
|
657
658
|
mapper = getPolymorphicMapper(serializer, mapper, responseBody, "serializedName");
|
|
658
659
|
}
|
|
@@ -711,7 +712,7 @@ function deserializeCompositeType(serializer, mapper, responseBody, objectName,
|
|
|
711
712
|
xmlName is "Cors" and xmlElementName is"CorsRule".
|
|
712
713
|
*/
|
|
713
714
|
const wrapped = responseBody[xmlName];
|
|
714
|
-
const elementList =
|
|
715
|
+
const elementList = wrapped?.[xmlElementName] ?? [];
|
|
715
716
|
instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName, options);
|
|
716
717
|
handledPropertyNames.push(xmlName);
|
|
717
718
|
}
|
|
@@ -819,7 +820,6 @@ function deserializeDictionaryType(serializer, mapper, responseBody, objectName,
|
|
|
819
820
|
return responseBody;
|
|
820
821
|
}
|
|
821
822
|
function deserializeSequenceType(serializer, mapper, responseBody, objectName, options) {
|
|
822
|
-
var _a;
|
|
823
823
|
let element = mapper.type.element;
|
|
824
824
|
if (!element || typeof element !== "object") {
|
|
825
825
|
throw new Error(`element" metadata for an Array must be defined in the ` +
|
|
@@ -834,7 +834,7 @@ function deserializeSequenceType(serializer, mapper, responseBody, objectName, o
|
|
|
834
834
|
// not have *all* properties declared (like uberParent),
|
|
835
835
|
// so let's try to look up the full definition by name.
|
|
836
836
|
if (element.type.name === "Composite" && element.type.className) {
|
|
837
|
-
element =
|
|
837
|
+
element = serializer.modelMappers[element.type.className] ?? element;
|
|
838
838
|
}
|
|
839
839
|
const tempArray = [];
|
|
840
840
|
for (let i = 0; i < responseBody.length; i++) {
|
|
@@ -867,7 +867,6 @@ function getIndexDiscriminator(discriminators, discriminatorValue, typeName) {
|
|
|
867
867
|
return undefined;
|
|
868
868
|
}
|
|
869
869
|
function getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) {
|
|
870
|
-
var _a;
|
|
871
870
|
const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
|
|
872
871
|
if (polymorphicDiscriminator) {
|
|
873
872
|
let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];
|
|
@@ -877,7 +876,7 @@ function getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyNam
|
|
|
877
876
|
discriminatorName = discriminatorName.replace(/\\/gi, "");
|
|
878
877
|
}
|
|
879
878
|
const discriminatorValue = object[discriminatorName];
|
|
880
|
-
const typeName =
|
|
879
|
+
const typeName = mapper.type.uberParent ?? mapper.type.className;
|
|
881
880
|
if (typeof discriminatorValue === "string" && typeName) {
|
|
882
881
|
const polymorphicMapper = getIndexDiscriminator(serializer.modelMappers.discriminators, discriminatorValue, typeName);
|
|
883
882
|
if (polymorphicMapper) {
|