@azure/notification-hubs 2.0.2-alpha.20251003.1 → 2.0.2-alpha.20251006.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/serializers/registrationSerializer.js +1 -1
- package/dist/browser/serializers/registrationSerializer.js.map +1 -1
- package/dist/commonjs/serializers/registrationSerializer.js +1 -1
- package/dist/commonjs/serializers/registrationSerializer.js.map +1 -1
- package/dist/commonjs/tsdoc-metadata.json +1 -1
- package/dist/esm/serializers/registrationSerializer.js +1 -1
- package/dist/esm/serializers/registrationSerializer.js.map +1 -1
- package/dist/react-native/serializers/registrationSerializer.js +1 -1
- package/dist/react-native/serializers/registrationSerializer.js.map +1 -1
- package/package.json +1 -1
|
@@ -256,7 +256,7 @@ function getHeadersOrUndefined(value) {
|
|
|
256
256
|
return undefined;
|
|
257
257
|
}
|
|
258
258
|
const headerObj = {};
|
|
259
|
-
for (const { Header, Value } of value) {
|
|
259
|
+
for (const { Header, Value } of Array.isArray(value) ? value : [value]) {
|
|
260
260
|
headerObj[Header] = Value;
|
|
261
261
|
}
|
|
262
262
|
return headerObj;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registrationSerializer.js","sourceRoot":"","sources":["../../../src/serializers/registrationSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n AdmRegistrationDescription,\n AdmTemplateRegistrationDescription,\n AppleRegistrationDescription,\n AppleTemplateRegistrationDescription,\n BaiduRegistrationDescription,\n BaiduTemplateRegistrationDescription,\n BrowserRegistrationDescription,\n BrowserTemplateRegistrationDescription,\n GcmRegistrationDescription,\n GcmTemplateRegistrationDescription,\n FcmV1RegistrationDescription,\n FcmV1TemplateRegistrationDescription,\n MpnsRegistrationDescription,\n MpnsTemplateRegistrationDescription,\n RegistrationDescription,\n RegistrationDescriptionCommon,\n TemplateRegistrationDescription,\n XiaomiRegistrationDescription,\n XiaomiTemplateRegistrationDescription,\n WindowsRegistrationDescription,\n WindowsTemplateRegistrationDescription,\n} from \"../models/registration.js\";\nimport {\n getDateOrUndefined,\n getString,\n getStringOrUndefined,\n getTagsOrUndefined,\n isDefined,\n} from \"../utils/utils.js\";\nimport { parseXML, stringifyXML } from \"@azure/core-xml\";\nimport { RestError } from \"@azure/core-rest-pipeline\";\nimport { serializeToAtomXmlRequest } from \"../utils/xmlUtils.js\";\n\n/**\n * Represents a registration description parser from the incoming XML.\n */\nexport interface RegistrationDescriptionParser {\n /**\n * @internal\n * Creates a registration type from the incoming entry.\n */\n parseRegistrationEntry: (bodyText: string) => Promise<RegistrationDescription>;\n /**\n * @internal\n * Creates a list of registrations from an incoming ATOM XML Feed.\n */\n parseRegistrationFeed: (bodyText: string) => Promise<RegistrationDescription[]>;\n /**\n * @internal\n * Creates an Amazon Device Messaging (ADM) registration description from the incoming parsed XML.\n */\n createAdmRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AdmRegistrationDescription;\n /**\n * @internal\n * Creates an Amazon Device Messaging (ADM) template registration description from the incoming parsed XML.\n */\n createAdmTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AdmTemplateRegistrationDescription;\n /**\n * @internal\n * Creates an Apple Platform Notification Services (APNs) registration description from the incoming parsed XML.\n */\n createAppleRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AppleRegistrationDescription;\n /**\n * @internal\n * Creates an Apple Platform Notification Services (APNs) template registration description from the incoming parsed XML.\n */\n createAppleTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AppleTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Baidu registration description from the incoming parsed XML.\n */\n createBaiduRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BaiduRegistrationDescription;\n /**\n * @internal\n * Creates a Baidu template registration description from the incoming parsed XML.\n */\n createBaiduTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BaiduTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Web Push registration description from the incoming parsed XML.\n */\n createBrowserRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BrowserRegistrationDescription;\n /**\n * @internal\n * Creates a Web Push template registration description from the incoming parsed XML.\n */\n createBrowserTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BrowserTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Firebase V1 Cloud Messaging (FCM) registration description from the incoming parsed XML.\n */\n createFcmV1RegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => FcmV1RegistrationDescription;\n /**\n * @internal\n * Creates a Firebase V1 Cloud Messaging (FCM) template registration description from the incoming parsed XML.\n */\n createFcmV1TemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => FcmV1TemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Google Cloud Messaging (GCM) registration description from the incoming parsed XML.\n */\n createGcmRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => GcmRegistrationDescription;\n /**\n * @internal\n * Creates a Google Cloud Messaging (GCM) template registration description from the incoming parsed XML.\n */\n createGcmTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => GcmTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Microsoft Phone Notification Services (MPNS) registration description from the incoming parsed XML.\n */\n createMpnsRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => MpnsRegistrationDescription;\n /**\n * @internal\n * Creates a Microsoft Phone Notification Services (MPNS) template registration description from the incoming parsed XML.\n */\n createMpnsTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => MpnsTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Xiaomi registration description from the incoming parsed XML.\n */\n createXiaomiRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => XiaomiRegistrationDescription;\n /**\n * @internal\n * Creates a Xiaomi template registration description from the incoming parsed XML.\n */\n createXiaomiTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => XiaomiTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Windows Notification Services (WNS) registration description from the incoming parsed XML.\n */\n createWindowsRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => WindowsRegistrationDescription;\n /**\n * @internal\n * Creates a Windows Notification Services (WNS) template registration description from the incoming parsed XML.\n */\n createWindowsTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => WindowsTemplateRegistrationDescription;\n}\n\nexport const registrationDescriptionParser: RegistrationDescriptionParser = {\n /**\n * @internal\n * Creates a registration type from the incoming entry.\n */\n async parseRegistrationEntry(bodyText: string): Promise<RegistrationDescription> {\n const xml = await parseXML(bodyText, { includeRoot: true });\n delete xml.entry.content[\"$\"];\n const keyName = Object.keys(xml.entry.content)[0];\n const content = xml.entry.content[keyName];\n const methodName = `create${keyName}`;\n\n const method = this[methodName as keyof RegistrationDescriptionParser] as any;\n if (!methodName) {\n throw new RestError(`${keyName} is not a supported registration type`, { statusCode: 500 });\n }\n\n return method.call(this, content) as RegistrationDescription;\n },\n\n /**\n * @internal\n * Creates a list of registrations from an incoming ATOM XML Feed.\n */\n async parseRegistrationFeed(bodyText: string): Promise<RegistrationDescription[]> {\n const xml = await parseXML(bodyText, { includeRoot: true });\n const results: RegistrationDescription[] = [];\n if (!isDefined(xml.feed.entry)) {\n return results;\n }\n\n const entries = Array.isArray(xml.feed.entry) ? xml.feed.entry : [xml.feed.entry];\n\n for (const entry of entries) {\n delete entry.content[\"$\"];\n\n const keyName = Object.keys(entry.content)[0];\n const methodName = `create${keyName}`;\n const content = entry.content[keyName];\n const method = this[methodName as keyof RegistrationDescriptionParser] as any;\n if (!methodName) {\n throw new RestError(`${keyName} is not a supported registration type`, { statusCode: 500 });\n }\n\n results.push(method.call(this, content) as RegistrationDescription);\n }\n\n return results;\n },\n\n /**\n * @internal\n * Creates an ADM registration description from incoming XML property bag.\n */\n createAdmRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AdmRegistrationDescription {\n return {\n admRegistrationId: getString(\n rawRegistrationDescription[\"AdmRegistrationId\"],\n \"admRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Adm\",\n };\n },\n\n /**\n * @internal\n * Creates an ADM template registration description from incoming XML property bag.\n */\n createAdmTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AdmTemplateRegistrationDescription {\n return {\n ...this.createAdmRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"AdmTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates an Apple registration description from incoming XML property bag.\n */\n createAppleRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AppleRegistrationDescription {\n return {\n deviceToken: getString(rawRegistrationDescription[\"DeviceToken\"], \"deviceToken\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Apple\",\n };\n },\n\n /**\n * @internal\n * Creates an Apple template registration description from incoming XML property bag.\n */\n createAppleTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AppleTemplateRegistrationDescription {\n return {\n priority: getStringOrUndefined(rawRegistrationDescription[\"Priority\"])?.trim() as \"10\" | \"5\",\n apnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"ApnsHeaders\"]?.[\"ApnsHeader\"]),\n ...this.createAppleRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"AppleTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Baidu registration description from incoming XML property bag.\n */\n createBaiduRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BaiduRegistrationDescription {\n return {\n baiduChannelId: getString(\n rawRegistrationDescription[\"BaiduChannelId\"],\n \"baiduChannelId\",\n ).trim(),\n baiduUserId: getString(rawRegistrationDescription[\"BaiduUserId\"], \"baiduUserId\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Baidu\",\n };\n },\n\n /**\n * @internal\n * Creates a Baidu template registration description from incoming XML property bag.\n */\n createBaiduTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BaiduTemplateRegistrationDescription {\n return {\n ...this.createBaiduRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"BaiduTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Browser registration description from incoming XML property bag.\n */\n createBrowserRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BrowserRegistrationDescription {\n return {\n endpoint: getString(rawRegistrationDescription[\"Endpoint\"], \"endpoint\").trim(),\n p256dh: getString(rawRegistrationDescription[\"P256DH\"], \"p256dh\").trim(),\n auth: getString(rawRegistrationDescription[\"Auth\"], \"auth\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Browser\",\n };\n },\n\n /**\n * @internal\n * Creates a Browser template registration description from incoming XML property bag.\n */\n createBrowserTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BrowserTemplateRegistrationDescription {\n return {\n ...this.createBrowserRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"BrowserTemplate\",\n };\n },\n /**\n * @internal\n * Creates an GCM registration description from incoming XML property bag.\n */\n createFcmV1RegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): FcmV1RegistrationDescription {\n return {\n fcmV1RegistrationId: getString(\n rawRegistrationDescription[\"FcmV1RegistrationId\"],\n \"fcmV1RegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"FcmV1\",\n };\n },\n\n /**\n * @internal\n * Creates an FCM template registration description from incoming XML property bag.\n */\n createFcmV1TemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): FcmV1TemplateRegistrationDescription {\n return {\n ...this.createFcmV1RegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"FcmV1Template\",\n };\n },\n\n /**\n * @internal\n * Creates an GCM registration description from incoming XML property bag.\n */\n createGcmRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): GcmRegistrationDescription {\n return {\n gcmRegistrationId: getString(\n rawRegistrationDescription[\"GcmRegistrationId\"],\n \"gcmRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Gcm\",\n };\n },\n\n /**\n * @internal\n * Creates an FCM template registration description from incoming XML property bag.\n */\n createGcmTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): GcmTemplateRegistrationDescription {\n return {\n ...this.createGcmRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"GcmTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows Phone registration description from incoming XML property bag.\n */\n createMpnsRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): MpnsRegistrationDescription {\n return {\n channelUri: getString(rawRegistrationDescription[\"ChannelUri\"], \"channelUri\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Mpns\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows Phone template registration description from incoming XML property bag.\n */\n createMpnsTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): MpnsTemplateRegistrationDescription {\n return {\n mpnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"MpnsHeaders\"]?.[\"MpnsHeader\"]),\n ...this.createWindowsRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"MpnsTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Xiaomi registration description from incoming XML property bag.\n */\n createXiaomiRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): XiaomiRegistrationDescription {\n return {\n xiaomiRegistrationId: getString(\n rawRegistrationDescription[\"XiaomiRegistrationId\"],\n \"xiaomiRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Xiaomi\",\n };\n },\n\n /**\n * @internal\n * Creates a Xiaomi template registration description from incoming XML property bag.\n */\n createXiaomiTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): XiaomiTemplateRegistrationDescription {\n return {\n ...this.createXiaomiRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"XiaomiTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows registration description from incoming XML property bag.\n */\n createWindowsRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): WindowsRegistrationDescription {\n return {\n channelUri: getString(rawRegistrationDescription[\"ChannelUri\"], \"channelUri\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Windows\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows template registration description from incoming XML property bag.\n */\n createWindowsTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): WindowsTemplateRegistrationDescription {\n return {\n wnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"WnsHeaders\"]?.[\"WnsHeader\"]),\n ...this.createWindowsRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"WindowsTemplate\",\n };\n },\n};\n\nfunction getHeadersOrUndefined(\n value?: { Header: string; Value: string }[],\n): Record<string, string> | undefined {\n if (!isDefined(value)) {\n return undefined;\n }\n\n const headerObj: Record<string, string> = {};\n for (const { Header, Value } of value) {\n headerObj[Header] = Value;\n }\n\n return headerObj;\n}\n\nfunction createRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n): Omit<RegistrationDescriptionCommon, \"kind\"> {\n let pushVariables: Record<string, string> | undefined;\n const unparsed = getStringOrUndefined(rawRegistrationDescription[\"PushVariables\"])?.trim();\n if (unparsed) {\n pushVariables = JSON.parse(unparsed) as Record<string, string>;\n }\n\n return {\n registrationId: getStringOrUndefined(rawRegistrationDescription[\"RegistrationId\"])?.trim(),\n expirationTime: getDateOrUndefined(rawRegistrationDescription[\"ExpirationTime\"]),\n etag: getStringOrUndefined(rawRegistrationDescription[\"ETag\"])?.trim(),\n tags: getTagsOrUndefined(rawRegistrationDescription[\"Tags\"]),\n pushVariables: pushVariables,\n };\n}\n\nfunction createTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n): TemplateRegistrationDescription {\n return {\n bodyTemplate: getString(rawRegistrationDescription[\"BodyTemplate\"], \"bodyTemplate\").trim(),\n templateName: getStringOrUndefined(rawRegistrationDescription[\"TemplateName\"])?.trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n };\n}\n\n/**\n * @internal\n * Represents a serializer for all registration descriptions.\n */\nexport interface RegistrationDescriptionSerializer {\n /**\n * @internal\n * Serializes a registration description into an ATOM XML string.\n */\n serializeRegistrationDescription(description: RegistrationDescription): string;\n /**\n * @internal\n * Serializes an Amazon Device Messaging (ADM) registration description into an XML object for serialization.\n */\n serializeAdmRegistrationDescription(\n description: Omit<AdmRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Amazon Device Messaging (ADM) template registration description into an XML object for serialization.\n */\n serializeAdmTemplateRegistrationDescription(\n description: Omit<AdmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Apple registration description into an XML object for serialization.\n */\n serializeAppleRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Apple template registration description into an XML object for serialization.\n */\n serializeAppleTemplateRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Baidu registration description into an XML object for serialization.\n */\n serializeBaiduRegistrationDescription(\n description: Omit<BaiduRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Baidu template registration description into an XML object for serialization.\n */\n serializeBaiduTemplateRegistrationDescription(\n description: Omit<BaiduTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Web Push registration description into an XML object for serialization.\n */\n serializeBrowserRegistrationDescription(\n description: Omit<BrowserRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Web Push template registration description into an XML object for serialization.\n */\n serializeBrowserTemplateRegistrationDescription(\n description: Omit<BrowserTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) registration description into an XML object for serialization.\n */\n serializeFcmV1RegistrationDescription(\n description: Omit<FcmV1RegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) template registration description into an XML object for serialization.\n */\n serializeFcmV1TemplateRegistrationDescription(\n description: Omit<FcmV1TemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) registration description into an XML object for serialization.\n */\n serializeGcmRegistrationDescription(\n description: Omit<GcmRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) template registration description into an XML object for serialization.\n */\n serializeGcmTemplateRegistrationDescription(\n description: Omit<GcmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Phone registration description into an XML object for serialization.\n */\n serializeMpnsRegistrationDescription(\n description: Omit<MpnsRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Phone template registration description into an XML object for serialization.\n */\n serializeMpnsTemplateRegistrationDescription(\n description: Omit<MpnsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Xiaomi registration description into an XML object for serialization.\n */\n serializeXiaomiRegistrationDescription(\n description: Omit<XiaomiRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Xiaomi template registration description into an XML object for serialization.\n */\n serializeXiaomiTemplateRegistrationDescription(\n description: Omit<XiaomiTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Notification Services (WNS) registration description into an XML object for serialization.\n */\n serializeWindowsRegistrationDescription(\n description: Omit<WindowsRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Notification Services (WNS) template registration description into an XML object for serialization.\n */\n serializeWindowsTemplateRegistrationDescription(\n description: Omit<WindowsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n}\n\n/**\n * Represents a RegistrationDescription serializer.\n */\nexport const registrationDescriptionSerializer: RegistrationDescriptionSerializer = {\n serializeRegistrationDescription(description: RegistrationDescription): string {\n const rootName = `${description.kind}RegistrationDescription`;\n const methodName = `serialize${rootName}`;\n\n const method = this[methodName as keyof RegistrationDescriptionSerializer].bind(this) as (\n description: RegistrationDescription,\n ) => Record<string, any>;\n if (!isDefined(method)) {\n throw new RestError(`Undefined platform ${description.kind}`, { statusCode: 400 });\n }\n\n const registration = method(description) as Record<string, any>;\n const requestObject = serializeToAtomXmlRequest(rootName, registration);\n\n return stringifyXML(requestObject, { rootName: \"entry\" });\n },\n\n /**\n * @internal\n * Serializes an existing ADM registration description to an object for serialization.\n */\n serializeAdmRegistrationDescription(\n description: Omit<AdmRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n AdmRegistrationId: getString(description.admRegistrationId, \"admRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing ADM template registration description to an object for serialization.\n */\n serializeAdmTemplateRegistrationDescription(\n description: Omit<AdmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeAdmRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Apple registration description to an object for serialization.\n */\n serializeAppleRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n DeviceToken: getString(description.deviceToken, \"deviceToken\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Apple template registration description to an object for serialization.\n */\n serializeAppleTemplateRegistrationDescription(\n description: AppleTemplateRegistrationDescription,\n ): Record<string, any> {\n let apnsHeaders: Record<string, any> | undefined;\n if (description.apnsHeaders) {\n apnsHeaders = {\n ApnsHeader: [],\n };\n\n for (const header of Object.keys(description.apnsHeaders)) {\n apnsHeaders[\"ApnsHeader\"].push({\n Header: header.trim(),\n Value: description.apnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeAppleRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n Expiry: getStringOrUndefined(description.expiry)?.trim(),\n ApnsHeaders: apnsHeaders,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Baidu registration description to an object for serialization.\n */\n serializeBaiduRegistrationDescription(\n description: Omit<BaiduRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n BaiduChannelId: getString(description.baiduChannelId, \"baiduChannelId\").trim(),\n BaiduUserId: getString(description.baiduUserId, \"baiduUserId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Baidu template registration description to an object for serialization.\n */\n serializeBaiduTemplateRegistrationDescription(\n description: Omit<BaiduTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeBaiduRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Browser registration description to an object for serialization.\n */\n serializeBrowserRegistrationDescription(\n description: Omit<BrowserRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n Endpoint: description.endpoint,\n P256DH: description.p256dh,\n Auth: description.auth,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Browser template registration description to an object for serialization.\n */\n serializeBrowserTemplateRegistrationDescription(\n description: Omit<BrowserTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeBrowserRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing FCM V1 registration description to an object for serialization.\n */\n serializeFcmV1RegistrationDescription(\n description: Omit<FcmV1RegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n FcmV1RegistrationId: getString(description.fcmV1RegistrationId, \"fcmRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing FCM V1 template registration description to an object for serialization.\n */\n serializeFcmV1TemplateRegistrationDescription(\n description: Omit<FcmV1TemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeFcmV1RegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing GCM registration description to an object for serialization.\n */\n serializeGcmRegistrationDescription(\n description: Omit<GcmRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n GcmRegistrationId: getString(description.gcmRegistrationId, \"gcmRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing GCM template registration description to an object for serialization.\n */\n serializeGcmTemplateRegistrationDescription(\n description: Omit<GcmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeGcmRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * @deprecated Windows Phone is no longer supported.\n * Serializes an existing MPNS registration description to an object for serialization.\n */\n serializeMpnsRegistrationDescription(\n description: Omit<MpnsRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n ChannelUri: description.channelUri,\n };\n },\n\n /**\n * @internal\n * @deprecated Windows Phone is no longer supported.\n * Serializes an existing MPNS template registration description to an object for serialization.\n */\n serializeMpnsTemplateRegistrationDescription(\n description: Omit<MpnsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n let mpnsHeaders: Record<string, any> | undefined;\n if (description.mpnsHeaders) {\n mpnsHeaders = {\n MpnsHeader: [],\n };\n\n for (const header of Object.keys(description.mpnsHeaders)) {\n mpnsHeaders[\"MpnsHeader\"].push({\n Header: header.trim(),\n Value: description.mpnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeMpnsRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n MpnsHeaders: mpnsHeaders,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Xiaomi registration description to an object for serialization.\n */\n serializeXiaomiRegistrationDescription(\n description: Omit<XiaomiRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n XiaomiRegistrationId: getString(\n description.xiaomiRegistrationId,\n \"xiaomiRegistrationId\",\n ).trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Xiaomi template registration description to an object for serialization.\n */\n serializeXiaomiTemplateRegistrationDescription(\n description: Omit<XiaomiTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeXiaomiRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Windows registration description to an object for serialization.\n */\n serializeWindowsRegistrationDescription(\n description: Omit<WindowsRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n ChannelUri: description.channelUri,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Windows template registration description to an object for serialization.\n */\n serializeWindowsTemplateRegistrationDescription(\n description: Omit<WindowsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n let wnsHeaders: Record<string, any> | undefined;\n if (description.wnsHeaders) {\n wnsHeaders = {\n WnsHeader: [],\n };\n\n for (const header of Object.keys(description.wnsHeaders)) {\n wnsHeaders[\"WnsHeader\"].push({\n Header: header.trim(),\n Value: description.wnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeWindowsRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n WnsHeaders: wnsHeaders,\n };\n },\n};\n\nfunction serializeRegistrationDescription(\n description: Omit<RegistrationDescriptionCommon, \"kind\">,\n): Record<string, any> {\n let tags: string | undefined;\n if (description.tags) {\n tags = description.tags.join(\",\");\n }\n\n let pushVariables: string | undefined;\n if (description.pushVariables) {\n pushVariables = JSON.stringify(description.pushVariables);\n }\n\n return {\n RegistrationId: getStringOrUndefined(description.registrationId),\n Tags: tags,\n PushVariables: pushVariables,\n };\n}\n\nfunction serializeTemplateRegistrationDescription(\n description: TemplateRegistrationDescription,\n): Record<string, any> {\n return {\n BodyTemplate: { __cdata: description.bodyTemplate },\n TemplateName: getStringOrUndefined(description.templateName)?.trim(),\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"registrationSerializer.js","sourceRoot":"","sources":["../../../src/serializers/registrationSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n AdmRegistrationDescription,\n AdmTemplateRegistrationDescription,\n AppleRegistrationDescription,\n AppleTemplateRegistrationDescription,\n BaiduRegistrationDescription,\n BaiduTemplateRegistrationDescription,\n BrowserRegistrationDescription,\n BrowserTemplateRegistrationDescription,\n GcmRegistrationDescription,\n GcmTemplateRegistrationDescription,\n FcmV1RegistrationDescription,\n FcmV1TemplateRegistrationDescription,\n MpnsRegistrationDescription,\n MpnsTemplateRegistrationDescription,\n RegistrationDescription,\n RegistrationDescriptionCommon,\n TemplateRegistrationDescription,\n XiaomiRegistrationDescription,\n XiaomiTemplateRegistrationDescription,\n WindowsRegistrationDescription,\n WindowsTemplateRegistrationDescription,\n} from \"../models/registration.js\";\nimport {\n getDateOrUndefined,\n getString,\n getStringOrUndefined,\n getTagsOrUndefined,\n isDefined,\n} from \"../utils/utils.js\";\nimport { parseXML, stringifyXML } from \"@azure/core-xml\";\nimport { RestError } from \"@azure/core-rest-pipeline\";\nimport { serializeToAtomXmlRequest } from \"../utils/xmlUtils.js\";\n\n/**\n * Represents a registration description parser from the incoming XML.\n */\nexport interface RegistrationDescriptionParser {\n /**\n * @internal\n * Creates a registration type from the incoming entry.\n */\n parseRegistrationEntry: (bodyText: string) => Promise<RegistrationDescription>;\n /**\n * @internal\n * Creates a list of registrations from an incoming ATOM XML Feed.\n */\n parseRegistrationFeed: (bodyText: string) => Promise<RegistrationDescription[]>;\n /**\n * @internal\n * Creates an Amazon Device Messaging (ADM) registration description from the incoming parsed XML.\n */\n createAdmRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AdmRegistrationDescription;\n /**\n * @internal\n * Creates an Amazon Device Messaging (ADM) template registration description from the incoming parsed XML.\n */\n createAdmTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AdmTemplateRegistrationDescription;\n /**\n * @internal\n * Creates an Apple Platform Notification Services (APNs) registration description from the incoming parsed XML.\n */\n createAppleRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AppleRegistrationDescription;\n /**\n * @internal\n * Creates an Apple Platform Notification Services (APNs) template registration description from the incoming parsed XML.\n */\n createAppleTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AppleTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Baidu registration description from the incoming parsed XML.\n */\n createBaiduRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BaiduRegistrationDescription;\n /**\n * @internal\n * Creates a Baidu template registration description from the incoming parsed XML.\n */\n createBaiduTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BaiduTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Web Push registration description from the incoming parsed XML.\n */\n createBrowserRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BrowserRegistrationDescription;\n /**\n * @internal\n * Creates a Web Push template registration description from the incoming parsed XML.\n */\n createBrowserTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BrowserTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Firebase V1 Cloud Messaging (FCM) registration description from the incoming parsed XML.\n */\n createFcmV1RegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => FcmV1RegistrationDescription;\n /**\n * @internal\n * Creates a Firebase V1 Cloud Messaging (FCM) template registration description from the incoming parsed XML.\n */\n createFcmV1TemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => FcmV1TemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Google Cloud Messaging (GCM) registration description from the incoming parsed XML.\n */\n createGcmRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => GcmRegistrationDescription;\n /**\n * @internal\n * Creates a Google Cloud Messaging (GCM) template registration description from the incoming parsed XML.\n */\n createGcmTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => GcmTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Microsoft Phone Notification Services (MPNS) registration description from the incoming parsed XML.\n */\n createMpnsRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => MpnsRegistrationDescription;\n /**\n * @internal\n * Creates a Microsoft Phone Notification Services (MPNS) template registration description from the incoming parsed XML.\n */\n createMpnsTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => MpnsTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Xiaomi registration description from the incoming parsed XML.\n */\n createXiaomiRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => XiaomiRegistrationDescription;\n /**\n * @internal\n * Creates a Xiaomi template registration description from the incoming parsed XML.\n */\n createXiaomiTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => XiaomiTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Windows Notification Services (WNS) registration description from the incoming parsed XML.\n */\n createWindowsRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => WindowsRegistrationDescription;\n /**\n * @internal\n * Creates a Windows Notification Services (WNS) template registration description from the incoming parsed XML.\n */\n createWindowsTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => WindowsTemplateRegistrationDescription;\n}\n\nexport const registrationDescriptionParser: RegistrationDescriptionParser = {\n /**\n * @internal\n * Creates a registration type from the incoming entry.\n */\n async parseRegistrationEntry(bodyText: string): Promise<RegistrationDescription> {\n const xml = await parseXML(bodyText, { includeRoot: true });\n delete xml.entry.content[\"$\"];\n const keyName = Object.keys(xml.entry.content)[0];\n const content = xml.entry.content[keyName];\n const methodName = `create${keyName}`;\n\n const method = this[methodName as keyof RegistrationDescriptionParser] as any;\n if (!methodName) {\n throw new RestError(`${keyName} is not a supported registration type`, { statusCode: 500 });\n }\n\n return method.call(this, content) as RegistrationDescription;\n },\n\n /**\n * @internal\n * Creates a list of registrations from an incoming ATOM XML Feed.\n */\n async parseRegistrationFeed(bodyText: string): Promise<RegistrationDescription[]> {\n const xml = await parseXML(bodyText, { includeRoot: true });\n const results: RegistrationDescription[] = [];\n if (!isDefined(xml.feed.entry)) {\n return results;\n }\n\n const entries = Array.isArray(xml.feed.entry) ? xml.feed.entry : [xml.feed.entry];\n\n for (const entry of entries) {\n delete entry.content[\"$\"];\n\n const keyName = Object.keys(entry.content)[0];\n const methodName = `create${keyName}`;\n const content = entry.content[keyName];\n const method = this[methodName as keyof RegistrationDescriptionParser] as any;\n if (!methodName) {\n throw new RestError(`${keyName} is not a supported registration type`, { statusCode: 500 });\n }\n\n results.push(method.call(this, content) as RegistrationDescription);\n }\n\n return results;\n },\n\n /**\n * @internal\n * Creates an ADM registration description from incoming XML property bag.\n */\n createAdmRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AdmRegistrationDescription {\n return {\n admRegistrationId: getString(\n rawRegistrationDescription[\"AdmRegistrationId\"],\n \"admRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Adm\",\n };\n },\n\n /**\n * @internal\n * Creates an ADM template registration description from incoming XML property bag.\n */\n createAdmTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AdmTemplateRegistrationDescription {\n return {\n ...this.createAdmRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"AdmTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates an Apple registration description from incoming XML property bag.\n */\n createAppleRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AppleRegistrationDescription {\n return {\n deviceToken: getString(rawRegistrationDescription[\"DeviceToken\"], \"deviceToken\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Apple\",\n };\n },\n\n /**\n * @internal\n * Creates an Apple template registration description from incoming XML property bag.\n */\n createAppleTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AppleTemplateRegistrationDescription {\n return {\n priority: getStringOrUndefined(rawRegistrationDescription[\"Priority\"])?.trim() as \"10\" | \"5\",\n apnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"ApnsHeaders\"]?.[\"ApnsHeader\"]),\n ...this.createAppleRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"AppleTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Baidu registration description from incoming XML property bag.\n */\n createBaiduRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BaiduRegistrationDescription {\n return {\n baiduChannelId: getString(\n rawRegistrationDescription[\"BaiduChannelId\"],\n \"baiduChannelId\",\n ).trim(),\n baiduUserId: getString(rawRegistrationDescription[\"BaiduUserId\"], \"baiduUserId\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Baidu\",\n };\n },\n\n /**\n * @internal\n * Creates a Baidu template registration description from incoming XML property bag.\n */\n createBaiduTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BaiduTemplateRegistrationDescription {\n return {\n ...this.createBaiduRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"BaiduTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Browser registration description from incoming XML property bag.\n */\n createBrowserRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BrowserRegistrationDescription {\n return {\n endpoint: getString(rawRegistrationDescription[\"Endpoint\"], \"endpoint\").trim(),\n p256dh: getString(rawRegistrationDescription[\"P256DH\"], \"p256dh\").trim(),\n auth: getString(rawRegistrationDescription[\"Auth\"], \"auth\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Browser\",\n };\n },\n\n /**\n * @internal\n * Creates a Browser template registration description from incoming XML property bag.\n */\n createBrowserTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BrowserTemplateRegistrationDescription {\n return {\n ...this.createBrowserRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"BrowserTemplate\",\n };\n },\n /**\n * @internal\n * Creates an GCM registration description from incoming XML property bag.\n */\n createFcmV1RegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): FcmV1RegistrationDescription {\n return {\n fcmV1RegistrationId: getString(\n rawRegistrationDescription[\"FcmV1RegistrationId\"],\n \"fcmV1RegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"FcmV1\",\n };\n },\n\n /**\n * @internal\n * Creates an FCM template registration description from incoming XML property bag.\n */\n createFcmV1TemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): FcmV1TemplateRegistrationDescription {\n return {\n ...this.createFcmV1RegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"FcmV1Template\",\n };\n },\n\n /**\n * @internal\n * Creates an GCM registration description from incoming XML property bag.\n */\n createGcmRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): GcmRegistrationDescription {\n return {\n gcmRegistrationId: getString(\n rawRegistrationDescription[\"GcmRegistrationId\"],\n \"gcmRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Gcm\",\n };\n },\n\n /**\n * @internal\n * Creates an FCM template registration description from incoming XML property bag.\n */\n createGcmTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): GcmTemplateRegistrationDescription {\n return {\n ...this.createGcmRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"GcmTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows Phone registration description from incoming XML property bag.\n */\n createMpnsRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): MpnsRegistrationDescription {\n return {\n channelUri: getString(rawRegistrationDescription[\"ChannelUri\"], \"channelUri\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Mpns\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows Phone template registration description from incoming XML property bag.\n */\n createMpnsTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): MpnsTemplateRegistrationDescription {\n return {\n mpnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"MpnsHeaders\"]?.[\"MpnsHeader\"]),\n ...this.createWindowsRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"MpnsTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Xiaomi registration description from incoming XML property bag.\n */\n createXiaomiRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): XiaomiRegistrationDescription {\n return {\n xiaomiRegistrationId: getString(\n rawRegistrationDescription[\"XiaomiRegistrationId\"],\n \"xiaomiRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Xiaomi\",\n };\n },\n\n /**\n * @internal\n * Creates a Xiaomi template registration description from incoming XML property bag.\n */\n createXiaomiTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): XiaomiTemplateRegistrationDescription {\n return {\n ...this.createXiaomiRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"XiaomiTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows registration description from incoming XML property bag.\n */\n createWindowsRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): WindowsRegistrationDescription {\n return {\n channelUri: getString(rawRegistrationDescription[\"ChannelUri\"], \"channelUri\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Windows\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows template registration description from incoming XML property bag.\n */\n createWindowsTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): WindowsTemplateRegistrationDescription {\n return {\n wnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"WnsHeaders\"]?.[\"WnsHeader\"]),\n ...this.createWindowsRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"WindowsTemplate\",\n };\n },\n};\n\nfunction getHeadersOrUndefined(\n value?: { Header: string; Value: string }[] | { Header: string; Value: string },\n): Record<string, string> | undefined {\n if (!isDefined(value)) {\n return undefined;\n }\n\n const headerObj: Record<string, string> = {};\n for (const { Header, Value } of Array.isArray(value) ? value : [value]) {\n headerObj[Header] = Value;\n }\n\n return headerObj;\n}\n\nfunction createRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n): Omit<RegistrationDescriptionCommon, \"kind\"> {\n let pushVariables: Record<string, string> | undefined;\n const unparsed = getStringOrUndefined(rawRegistrationDescription[\"PushVariables\"])?.trim();\n if (unparsed) {\n pushVariables = JSON.parse(unparsed) as Record<string, string>;\n }\n\n return {\n registrationId: getStringOrUndefined(rawRegistrationDescription[\"RegistrationId\"])?.trim(),\n expirationTime: getDateOrUndefined(rawRegistrationDescription[\"ExpirationTime\"]),\n etag: getStringOrUndefined(rawRegistrationDescription[\"ETag\"])?.trim(),\n tags: getTagsOrUndefined(rawRegistrationDescription[\"Tags\"]),\n pushVariables: pushVariables,\n };\n}\n\nfunction createTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n): TemplateRegistrationDescription {\n return {\n bodyTemplate: getString(rawRegistrationDescription[\"BodyTemplate\"], \"bodyTemplate\").trim(),\n templateName: getStringOrUndefined(rawRegistrationDescription[\"TemplateName\"])?.trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n };\n}\n\n/**\n * @internal\n * Represents a serializer for all registration descriptions.\n */\nexport interface RegistrationDescriptionSerializer {\n /**\n * @internal\n * Serializes a registration description into an ATOM XML string.\n */\n serializeRegistrationDescription(description: RegistrationDescription): string;\n /**\n * @internal\n * Serializes an Amazon Device Messaging (ADM) registration description into an XML object for serialization.\n */\n serializeAdmRegistrationDescription(\n description: Omit<AdmRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Amazon Device Messaging (ADM) template registration description into an XML object for serialization.\n */\n serializeAdmTemplateRegistrationDescription(\n description: Omit<AdmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Apple registration description into an XML object for serialization.\n */\n serializeAppleRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Apple template registration description into an XML object for serialization.\n */\n serializeAppleTemplateRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Baidu registration description into an XML object for serialization.\n */\n serializeBaiduRegistrationDescription(\n description: Omit<BaiduRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Baidu template registration description into an XML object for serialization.\n */\n serializeBaiduTemplateRegistrationDescription(\n description: Omit<BaiduTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Web Push registration description into an XML object for serialization.\n */\n serializeBrowserRegistrationDescription(\n description: Omit<BrowserRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Web Push template registration description into an XML object for serialization.\n */\n serializeBrowserTemplateRegistrationDescription(\n description: Omit<BrowserTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) registration description into an XML object for serialization.\n */\n serializeFcmV1RegistrationDescription(\n description: Omit<FcmV1RegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) template registration description into an XML object for serialization.\n */\n serializeFcmV1TemplateRegistrationDescription(\n description: Omit<FcmV1TemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) registration description into an XML object for serialization.\n */\n serializeGcmRegistrationDescription(\n description: Omit<GcmRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) template registration description into an XML object for serialization.\n */\n serializeGcmTemplateRegistrationDescription(\n description: Omit<GcmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Phone registration description into an XML object for serialization.\n */\n serializeMpnsRegistrationDescription(\n description: Omit<MpnsRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Phone template registration description into an XML object for serialization.\n */\n serializeMpnsTemplateRegistrationDescription(\n description: Omit<MpnsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Xiaomi registration description into an XML object for serialization.\n */\n serializeXiaomiRegistrationDescription(\n description: Omit<XiaomiRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Xiaomi template registration description into an XML object for serialization.\n */\n serializeXiaomiTemplateRegistrationDescription(\n description: Omit<XiaomiTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Notification Services (WNS) registration description into an XML object for serialization.\n */\n serializeWindowsRegistrationDescription(\n description: Omit<WindowsRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Notification Services (WNS) template registration description into an XML object for serialization.\n */\n serializeWindowsTemplateRegistrationDescription(\n description: Omit<WindowsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n}\n\n/**\n * Represents a RegistrationDescription serializer.\n */\nexport const registrationDescriptionSerializer: RegistrationDescriptionSerializer = {\n serializeRegistrationDescription(description: RegistrationDescription): string {\n const rootName = `${description.kind}RegistrationDescription`;\n const methodName = `serialize${rootName}`;\n\n const method = this[methodName as keyof RegistrationDescriptionSerializer].bind(this) as (\n description: RegistrationDescription,\n ) => Record<string, any>;\n if (!isDefined(method)) {\n throw new RestError(`Undefined platform ${description.kind}`, { statusCode: 400 });\n }\n\n const registration = method(description) as Record<string, any>;\n const requestObject = serializeToAtomXmlRequest(rootName, registration);\n\n return stringifyXML(requestObject, { rootName: \"entry\" });\n },\n\n /**\n * @internal\n * Serializes an existing ADM registration description to an object for serialization.\n */\n serializeAdmRegistrationDescription(\n description: Omit<AdmRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n AdmRegistrationId: getString(description.admRegistrationId, \"admRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing ADM template registration description to an object for serialization.\n */\n serializeAdmTemplateRegistrationDescription(\n description: Omit<AdmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeAdmRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Apple registration description to an object for serialization.\n */\n serializeAppleRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n DeviceToken: getString(description.deviceToken, \"deviceToken\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Apple template registration description to an object for serialization.\n */\n serializeAppleTemplateRegistrationDescription(\n description: AppleTemplateRegistrationDescription,\n ): Record<string, any> {\n let apnsHeaders: Record<string, any> | undefined;\n if (description.apnsHeaders) {\n apnsHeaders = {\n ApnsHeader: [],\n };\n\n for (const header of Object.keys(description.apnsHeaders)) {\n apnsHeaders[\"ApnsHeader\"].push({\n Header: header.trim(),\n Value: description.apnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeAppleRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n Expiry: getStringOrUndefined(description.expiry)?.trim(),\n ApnsHeaders: apnsHeaders,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Baidu registration description to an object for serialization.\n */\n serializeBaiduRegistrationDescription(\n description: Omit<BaiduRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n BaiduChannelId: getString(description.baiduChannelId, \"baiduChannelId\").trim(),\n BaiduUserId: getString(description.baiduUserId, \"baiduUserId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Baidu template registration description to an object for serialization.\n */\n serializeBaiduTemplateRegistrationDescription(\n description: Omit<BaiduTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeBaiduRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Browser registration description to an object for serialization.\n */\n serializeBrowserRegistrationDescription(\n description: Omit<BrowserRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n Endpoint: description.endpoint,\n P256DH: description.p256dh,\n Auth: description.auth,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Browser template registration description to an object for serialization.\n */\n serializeBrowserTemplateRegistrationDescription(\n description: Omit<BrowserTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeBrowserRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing FCM V1 registration description to an object for serialization.\n */\n serializeFcmV1RegistrationDescription(\n description: Omit<FcmV1RegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n FcmV1RegistrationId: getString(description.fcmV1RegistrationId, \"fcmRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing FCM V1 template registration description to an object for serialization.\n */\n serializeFcmV1TemplateRegistrationDescription(\n description: Omit<FcmV1TemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeFcmV1RegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing GCM registration description to an object for serialization.\n */\n serializeGcmRegistrationDescription(\n description: Omit<GcmRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n GcmRegistrationId: getString(description.gcmRegistrationId, \"gcmRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing GCM template registration description to an object for serialization.\n */\n serializeGcmTemplateRegistrationDescription(\n description: Omit<GcmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeGcmRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * @deprecated Windows Phone is no longer supported.\n * Serializes an existing MPNS registration description to an object for serialization.\n */\n serializeMpnsRegistrationDescription(\n description: Omit<MpnsRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n ChannelUri: description.channelUri,\n };\n },\n\n /**\n * @internal\n * @deprecated Windows Phone is no longer supported.\n * Serializes an existing MPNS template registration description to an object for serialization.\n */\n serializeMpnsTemplateRegistrationDescription(\n description: Omit<MpnsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n let mpnsHeaders: Record<string, any> | undefined;\n if (description.mpnsHeaders) {\n mpnsHeaders = {\n MpnsHeader: [],\n };\n\n for (const header of Object.keys(description.mpnsHeaders)) {\n mpnsHeaders[\"MpnsHeader\"].push({\n Header: header.trim(),\n Value: description.mpnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeMpnsRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n MpnsHeaders: mpnsHeaders,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Xiaomi registration description to an object for serialization.\n */\n serializeXiaomiRegistrationDescription(\n description: Omit<XiaomiRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n XiaomiRegistrationId: getString(\n description.xiaomiRegistrationId,\n \"xiaomiRegistrationId\",\n ).trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Xiaomi template registration description to an object for serialization.\n */\n serializeXiaomiTemplateRegistrationDescription(\n description: Omit<XiaomiTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeXiaomiRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Windows registration description to an object for serialization.\n */\n serializeWindowsRegistrationDescription(\n description: Omit<WindowsRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n ChannelUri: description.channelUri,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Windows template registration description to an object for serialization.\n */\n serializeWindowsTemplateRegistrationDescription(\n description: Omit<WindowsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n let wnsHeaders: Record<string, any> | undefined;\n if (description.wnsHeaders) {\n wnsHeaders = {\n WnsHeader: [],\n };\n\n for (const header of Object.keys(description.wnsHeaders)) {\n wnsHeaders[\"WnsHeader\"].push({\n Header: header.trim(),\n Value: description.wnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeWindowsRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n WnsHeaders: wnsHeaders,\n };\n },\n};\n\nfunction serializeRegistrationDescription(\n description: Omit<RegistrationDescriptionCommon, \"kind\">,\n): Record<string, any> {\n let tags: string | undefined;\n if (description.tags) {\n tags = description.tags.join(\",\");\n }\n\n let pushVariables: string | undefined;\n if (description.pushVariables) {\n pushVariables = JSON.stringify(description.pushVariables);\n }\n\n return {\n RegistrationId: getStringOrUndefined(description.registrationId),\n Tags: tags,\n PushVariables: pushVariables,\n };\n}\n\nfunction serializeTemplateRegistrationDescription(\n description: TemplateRegistrationDescription,\n): Record<string, any> {\n return {\n BodyTemplate: { __cdata: description.bodyTemplate },\n TemplateName: getStringOrUndefined(description.templateName)?.trim(),\n };\n}\n"]}
|
|
@@ -259,7 +259,7 @@ function getHeadersOrUndefined(value) {
|
|
|
259
259
|
return undefined;
|
|
260
260
|
}
|
|
261
261
|
const headerObj = {};
|
|
262
|
-
for (const { Header, Value } of value) {
|
|
262
|
+
for (const { Header, Value } of Array.isArray(value) ? value : [value]) {
|
|
263
263
|
headerObj[Header] = Value;
|
|
264
264
|
}
|
|
265
265
|
return headerObj;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registrationSerializer.js","sourceRoot":"","sources":["../../../src/serializers/registrationSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n AdmRegistrationDescription,\n AdmTemplateRegistrationDescription,\n AppleRegistrationDescription,\n AppleTemplateRegistrationDescription,\n BaiduRegistrationDescription,\n BaiduTemplateRegistrationDescription,\n BrowserRegistrationDescription,\n BrowserTemplateRegistrationDescription,\n GcmRegistrationDescription,\n GcmTemplateRegistrationDescription,\n FcmV1RegistrationDescription,\n FcmV1TemplateRegistrationDescription,\n MpnsRegistrationDescription,\n MpnsTemplateRegistrationDescription,\n RegistrationDescription,\n RegistrationDescriptionCommon,\n TemplateRegistrationDescription,\n XiaomiRegistrationDescription,\n XiaomiTemplateRegistrationDescription,\n WindowsRegistrationDescription,\n WindowsTemplateRegistrationDescription,\n} from \"../models/registration.js\";\nimport {\n getDateOrUndefined,\n getString,\n getStringOrUndefined,\n getTagsOrUndefined,\n isDefined,\n} from \"../utils/utils.js\";\nimport { parseXML, stringifyXML } from \"@azure/core-xml\";\nimport { RestError } from \"@azure/core-rest-pipeline\";\nimport { serializeToAtomXmlRequest } from \"../utils/xmlUtils.js\";\n\n/**\n * Represents a registration description parser from the incoming XML.\n */\nexport interface RegistrationDescriptionParser {\n /**\n * @internal\n * Creates a registration type from the incoming entry.\n */\n parseRegistrationEntry: (bodyText: string) => Promise<RegistrationDescription>;\n /**\n * @internal\n * Creates a list of registrations from an incoming ATOM XML Feed.\n */\n parseRegistrationFeed: (bodyText: string) => Promise<RegistrationDescription[]>;\n /**\n * @internal\n * Creates an Amazon Device Messaging (ADM) registration description from the incoming parsed XML.\n */\n createAdmRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AdmRegistrationDescription;\n /**\n * @internal\n * Creates an Amazon Device Messaging (ADM) template registration description from the incoming parsed XML.\n */\n createAdmTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AdmTemplateRegistrationDescription;\n /**\n * @internal\n * Creates an Apple Platform Notification Services (APNs) registration description from the incoming parsed XML.\n */\n createAppleRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AppleRegistrationDescription;\n /**\n * @internal\n * Creates an Apple Platform Notification Services (APNs) template registration description from the incoming parsed XML.\n */\n createAppleTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AppleTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Baidu registration description from the incoming parsed XML.\n */\n createBaiduRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BaiduRegistrationDescription;\n /**\n * @internal\n * Creates a Baidu template registration description from the incoming parsed XML.\n */\n createBaiduTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BaiduTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Web Push registration description from the incoming parsed XML.\n */\n createBrowserRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BrowserRegistrationDescription;\n /**\n * @internal\n * Creates a Web Push template registration description from the incoming parsed XML.\n */\n createBrowserTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BrowserTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Firebase V1 Cloud Messaging (FCM) registration description from the incoming parsed XML.\n */\n createFcmV1RegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => FcmV1RegistrationDescription;\n /**\n * @internal\n * Creates a Firebase V1 Cloud Messaging (FCM) template registration description from the incoming parsed XML.\n */\n createFcmV1TemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => FcmV1TemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Google Cloud Messaging (GCM) registration description from the incoming parsed XML.\n */\n createGcmRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => GcmRegistrationDescription;\n /**\n * @internal\n * Creates a Google Cloud Messaging (GCM) template registration description from the incoming parsed XML.\n */\n createGcmTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => GcmTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Microsoft Phone Notification Services (MPNS) registration description from the incoming parsed XML.\n */\n createMpnsRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => MpnsRegistrationDescription;\n /**\n * @internal\n * Creates a Microsoft Phone Notification Services (MPNS) template registration description from the incoming parsed XML.\n */\n createMpnsTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => MpnsTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Xiaomi registration description from the incoming parsed XML.\n */\n createXiaomiRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => XiaomiRegistrationDescription;\n /**\n * @internal\n * Creates a Xiaomi template registration description from the incoming parsed XML.\n */\n createXiaomiTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => XiaomiTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Windows Notification Services (WNS) registration description from the incoming parsed XML.\n */\n createWindowsRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => WindowsRegistrationDescription;\n /**\n * @internal\n * Creates a Windows Notification Services (WNS) template registration description from the incoming parsed XML.\n */\n createWindowsTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => WindowsTemplateRegistrationDescription;\n}\n\nexport const registrationDescriptionParser: RegistrationDescriptionParser = {\n /**\n * @internal\n * Creates a registration type from the incoming entry.\n */\n async parseRegistrationEntry(bodyText: string): Promise<RegistrationDescription> {\n const xml = await parseXML(bodyText, { includeRoot: true });\n delete xml.entry.content[\"$\"];\n const keyName = Object.keys(xml.entry.content)[0];\n const content = xml.entry.content[keyName];\n const methodName = `create${keyName}`;\n\n const method = this[methodName as keyof RegistrationDescriptionParser] as any;\n if (!methodName) {\n throw new RestError(`${keyName} is not a supported registration type`, { statusCode: 500 });\n }\n\n return method.call(this, content) as RegistrationDescription;\n },\n\n /**\n * @internal\n * Creates a list of registrations from an incoming ATOM XML Feed.\n */\n async parseRegistrationFeed(bodyText: string): Promise<RegistrationDescription[]> {\n const xml = await parseXML(bodyText, { includeRoot: true });\n const results: RegistrationDescription[] = [];\n if (!isDefined(xml.feed.entry)) {\n return results;\n }\n\n const entries = Array.isArray(xml.feed.entry) ? xml.feed.entry : [xml.feed.entry];\n\n for (const entry of entries) {\n delete entry.content[\"$\"];\n\n const keyName = Object.keys(entry.content)[0];\n const methodName = `create${keyName}`;\n const content = entry.content[keyName];\n const method = this[methodName as keyof RegistrationDescriptionParser] as any;\n if (!methodName) {\n throw new RestError(`${keyName} is not a supported registration type`, { statusCode: 500 });\n }\n\n results.push(method.call(this, content) as RegistrationDescription);\n }\n\n return results;\n },\n\n /**\n * @internal\n * Creates an ADM registration description from incoming XML property bag.\n */\n createAdmRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AdmRegistrationDescription {\n return {\n admRegistrationId: getString(\n rawRegistrationDescription[\"AdmRegistrationId\"],\n \"admRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Adm\",\n };\n },\n\n /**\n * @internal\n * Creates an ADM template registration description from incoming XML property bag.\n */\n createAdmTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AdmTemplateRegistrationDescription {\n return {\n ...this.createAdmRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"AdmTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates an Apple registration description from incoming XML property bag.\n */\n createAppleRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AppleRegistrationDescription {\n return {\n deviceToken: getString(rawRegistrationDescription[\"DeviceToken\"], \"deviceToken\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Apple\",\n };\n },\n\n /**\n * @internal\n * Creates an Apple template registration description from incoming XML property bag.\n */\n createAppleTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AppleTemplateRegistrationDescription {\n return {\n priority: getStringOrUndefined(rawRegistrationDescription[\"Priority\"])?.trim() as \"10\" | \"5\",\n apnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"ApnsHeaders\"]?.[\"ApnsHeader\"]),\n ...this.createAppleRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"AppleTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Baidu registration description from incoming XML property bag.\n */\n createBaiduRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BaiduRegistrationDescription {\n return {\n baiduChannelId: getString(\n rawRegistrationDescription[\"BaiduChannelId\"],\n \"baiduChannelId\",\n ).trim(),\n baiduUserId: getString(rawRegistrationDescription[\"BaiduUserId\"], \"baiduUserId\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Baidu\",\n };\n },\n\n /**\n * @internal\n * Creates a Baidu template registration description from incoming XML property bag.\n */\n createBaiduTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BaiduTemplateRegistrationDescription {\n return {\n ...this.createBaiduRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"BaiduTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Browser registration description from incoming XML property bag.\n */\n createBrowserRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BrowserRegistrationDescription {\n return {\n endpoint: getString(rawRegistrationDescription[\"Endpoint\"], \"endpoint\").trim(),\n p256dh: getString(rawRegistrationDescription[\"P256DH\"], \"p256dh\").trim(),\n auth: getString(rawRegistrationDescription[\"Auth\"], \"auth\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Browser\",\n };\n },\n\n /**\n * @internal\n * Creates a Browser template registration description from incoming XML property bag.\n */\n createBrowserTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BrowserTemplateRegistrationDescription {\n return {\n ...this.createBrowserRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"BrowserTemplate\",\n };\n },\n /**\n * @internal\n * Creates an GCM registration description from incoming XML property bag.\n */\n createFcmV1RegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): FcmV1RegistrationDescription {\n return {\n fcmV1RegistrationId: getString(\n rawRegistrationDescription[\"FcmV1RegistrationId\"],\n \"fcmV1RegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"FcmV1\",\n };\n },\n\n /**\n * @internal\n * Creates an FCM template registration description from incoming XML property bag.\n */\n createFcmV1TemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): FcmV1TemplateRegistrationDescription {\n return {\n ...this.createFcmV1RegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"FcmV1Template\",\n };\n },\n\n /**\n * @internal\n * Creates an GCM registration description from incoming XML property bag.\n */\n createGcmRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): GcmRegistrationDescription {\n return {\n gcmRegistrationId: getString(\n rawRegistrationDescription[\"GcmRegistrationId\"],\n \"gcmRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Gcm\",\n };\n },\n\n /**\n * @internal\n * Creates an FCM template registration description from incoming XML property bag.\n */\n createGcmTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): GcmTemplateRegistrationDescription {\n return {\n ...this.createGcmRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"GcmTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows Phone registration description from incoming XML property bag.\n */\n createMpnsRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): MpnsRegistrationDescription {\n return {\n channelUri: getString(rawRegistrationDescription[\"ChannelUri\"], \"channelUri\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Mpns\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows Phone template registration description from incoming XML property bag.\n */\n createMpnsTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): MpnsTemplateRegistrationDescription {\n return {\n mpnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"MpnsHeaders\"]?.[\"MpnsHeader\"]),\n ...this.createWindowsRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"MpnsTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Xiaomi registration description from incoming XML property bag.\n */\n createXiaomiRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): XiaomiRegistrationDescription {\n return {\n xiaomiRegistrationId: getString(\n rawRegistrationDescription[\"XiaomiRegistrationId\"],\n \"xiaomiRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Xiaomi\",\n };\n },\n\n /**\n * @internal\n * Creates a Xiaomi template registration description from incoming XML property bag.\n */\n createXiaomiTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): XiaomiTemplateRegistrationDescription {\n return {\n ...this.createXiaomiRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"XiaomiTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows registration description from incoming XML property bag.\n */\n createWindowsRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): WindowsRegistrationDescription {\n return {\n channelUri: getString(rawRegistrationDescription[\"ChannelUri\"], \"channelUri\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Windows\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows template registration description from incoming XML property bag.\n */\n createWindowsTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): WindowsTemplateRegistrationDescription {\n return {\n wnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"WnsHeaders\"]?.[\"WnsHeader\"]),\n ...this.createWindowsRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"WindowsTemplate\",\n };\n },\n};\n\nfunction getHeadersOrUndefined(\n value?: { Header: string; Value: string }[],\n): Record<string, string> | undefined {\n if (!isDefined(value)) {\n return undefined;\n }\n\n const headerObj: Record<string, string> = {};\n for (const { Header, Value } of value) {\n headerObj[Header] = Value;\n }\n\n return headerObj;\n}\n\nfunction createRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n): Omit<RegistrationDescriptionCommon, \"kind\"> {\n let pushVariables: Record<string, string> | undefined;\n const unparsed = getStringOrUndefined(rawRegistrationDescription[\"PushVariables\"])?.trim();\n if (unparsed) {\n pushVariables = JSON.parse(unparsed) as Record<string, string>;\n }\n\n return {\n registrationId: getStringOrUndefined(rawRegistrationDescription[\"RegistrationId\"])?.trim(),\n expirationTime: getDateOrUndefined(rawRegistrationDescription[\"ExpirationTime\"]),\n etag: getStringOrUndefined(rawRegistrationDescription[\"ETag\"])?.trim(),\n tags: getTagsOrUndefined(rawRegistrationDescription[\"Tags\"]),\n pushVariables: pushVariables,\n };\n}\n\nfunction createTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n): TemplateRegistrationDescription {\n return {\n bodyTemplate: getString(rawRegistrationDescription[\"BodyTemplate\"], \"bodyTemplate\").trim(),\n templateName: getStringOrUndefined(rawRegistrationDescription[\"TemplateName\"])?.trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n };\n}\n\n/**\n * @internal\n * Represents a serializer for all registration descriptions.\n */\nexport interface RegistrationDescriptionSerializer {\n /**\n * @internal\n * Serializes a registration description into an ATOM XML string.\n */\n serializeRegistrationDescription(description: RegistrationDescription): string;\n /**\n * @internal\n * Serializes an Amazon Device Messaging (ADM) registration description into an XML object for serialization.\n */\n serializeAdmRegistrationDescription(\n description: Omit<AdmRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Amazon Device Messaging (ADM) template registration description into an XML object for serialization.\n */\n serializeAdmTemplateRegistrationDescription(\n description: Omit<AdmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Apple registration description into an XML object for serialization.\n */\n serializeAppleRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Apple template registration description into an XML object for serialization.\n */\n serializeAppleTemplateRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Baidu registration description into an XML object for serialization.\n */\n serializeBaiduRegistrationDescription(\n description: Omit<BaiduRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Baidu template registration description into an XML object for serialization.\n */\n serializeBaiduTemplateRegistrationDescription(\n description: Omit<BaiduTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Web Push registration description into an XML object for serialization.\n */\n serializeBrowserRegistrationDescription(\n description: Omit<BrowserRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Web Push template registration description into an XML object for serialization.\n */\n serializeBrowserTemplateRegistrationDescription(\n description: Omit<BrowserTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) registration description into an XML object for serialization.\n */\n serializeFcmV1RegistrationDescription(\n description: Omit<FcmV1RegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) template registration description into an XML object for serialization.\n */\n serializeFcmV1TemplateRegistrationDescription(\n description: Omit<FcmV1TemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) registration description into an XML object for serialization.\n */\n serializeGcmRegistrationDescription(\n description: Omit<GcmRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) template registration description into an XML object for serialization.\n */\n serializeGcmTemplateRegistrationDescription(\n description: Omit<GcmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Phone registration description into an XML object for serialization.\n */\n serializeMpnsRegistrationDescription(\n description: Omit<MpnsRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Phone template registration description into an XML object for serialization.\n */\n serializeMpnsTemplateRegistrationDescription(\n description: Omit<MpnsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Xiaomi registration description into an XML object for serialization.\n */\n serializeXiaomiRegistrationDescription(\n description: Omit<XiaomiRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Xiaomi template registration description into an XML object for serialization.\n */\n serializeXiaomiTemplateRegistrationDescription(\n description: Omit<XiaomiTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Notification Services (WNS) registration description into an XML object for serialization.\n */\n serializeWindowsRegistrationDescription(\n description: Omit<WindowsRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Notification Services (WNS) template registration description into an XML object for serialization.\n */\n serializeWindowsTemplateRegistrationDescription(\n description: Omit<WindowsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n}\n\n/**\n * Represents a RegistrationDescription serializer.\n */\nexport const registrationDescriptionSerializer: RegistrationDescriptionSerializer = {\n serializeRegistrationDescription(description: RegistrationDescription): string {\n const rootName = `${description.kind}RegistrationDescription`;\n const methodName = `serialize${rootName}`;\n\n const method = this[methodName as keyof RegistrationDescriptionSerializer].bind(this) as (\n description: RegistrationDescription,\n ) => Record<string, any>;\n if (!isDefined(method)) {\n throw new RestError(`Undefined platform ${description.kind}`, { statusCode: 400 });\n }\n\n const registration = method(description) as Record<string, any>;\n const requestObject = serializeToAtomXmlRequest(rootName, registration);\n\n return stringifyXML(requestObject, { rootName: \"entry\" });\n },\n\n /**\n * @internal\n * Serializes an existing ADM registration description to an object for serialization.\n */\n serializeAdmRegistrationDescription(\n description: Omit<AdmRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n AdmRegistrationId: getString(description.admRegistrationId, \"admRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing ADM template registration description to an object for serialization.\n */\n serializeAdmTemplateRegistrationDescription(\n description: Omit<AdmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeAdmRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Apple registration description to an object for serialization.\n */\n serializeAppleRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n DeviceToken: getString(description.deviceToken, \"deviceToken\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Apple template registration description to an object for serialization.\n */\n serializeAppleTemplateRegistrationDescription(\n description: AppleTemplateRegistrationDescription,\n ): Record<string, any> {\n let apnsHeaders: Record<string, any> | undefined;\n if (description.apnsHeaders) {\n apnsHeaders = {\n ApnsHeader: [],\n };\n\n for (const header of Object.keys(description.apnsHeaders)) {\n apnsHeaders[\"ApnsHeader\"].push({\n Header: header.trim(),\n Value: description.apnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeAppleRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n Expiry: getStringOrUndefined(description.expiry)?.trim(),\n ApnsHeaders: apnsHeaders,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Baidu registration description to an object for serialization.\n */\n serializeBaiduRegistrationDescription(\n description: Omit<BaiduRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n BaiduChannelId: getString(description.baiduChannelId, \"baiduChannelId\").trim(),\n BaiduUserId: getString(description.baiduUserId, \"baiduUserId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Baidu template registration description to an object for serialization.\n */\n serializeBaiduTemplateRegistrationDescription(\n description: Omit<BaiduTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeBaiduRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Browser registration description to an object for serialization.\n */\n serializeBrowserRegistrationDescription(\n description: Omit<BrowserRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n Endpoint: description.endpoint,\n P256DH: description.p256dh,\n Auth: description.auth,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Browser template registration description to an object for serialization.\n */\n serializeBrowserTemplateRegistrationDescription(\n description: Omit<BrowserTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeBrowserRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing FCM V1 registration description to an object for serialization.\n */\n serializeFcmV1RegistrationDescription(\n description: Omit<FcmV1RegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n FcmV1RegistrationId: getString(description.fcmV1RegistrationId, \"fcmRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing FCM V1 template registration description to an object for serialization.\n */\n serializeFcmV1TemplateRegistrationDescription(\n description: Omit<FcmV1TemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeFcmV1RegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing GCM registration description to an object for serialization.\n */\n serializeGcmRegistrationDescription(\n description: Omit<GcmRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n GcmRegistrationId: getString(description.gcmRegistrationId, \"gcmRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing GCM template registration description to an object for serialization.\n */\n serializeGcmTemplateRegistrationDescription(\n description: Omit<GcmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeGcmRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * @deprecated Windows Phone is no longer supported.\n * Serializes an existing MPNS registration description to an object for serialization.\n */\n serializeMpnsRegistrationDescription(\n description: Omit<MpnsRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n ChannelUri: description.channelUri,\n };\n },\n\n /**\n * @internal\n * @deprecated Windows Phone is no longer supported.\n * Serializes an existing MPNS template registration description to an object for serialization.\n */\n serializeMpnsTemplateRegistrationDescription(\n description: Omit<MpnsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n let mpnsHeaders: Record<string, any> | undefined;\n if (description.mpnsHeaders) {\n mpnsHeaders = {\n MpnsHeader: [],\n };\n\n for (const header of Object.keys(description.mpnsHeaders)) {\n mpnsHeaders[\"MpnsHeader\"].push({\n Header: header.trim(),\n Value: description.mpnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeMpnsRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n MpnsHeaders: mpnsHeaders,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Xiaomi registration description to an object for serialization.\n */\n serializeXiaomiRegistrationDescription(\n description: Omit<XiaomiRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n XiaomiRegistrationId: getString(\n description.xiaomiRegistrationId,\n \"xiaomiRegistrationId\",\n ).trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Xiaomi template registration description to an object for serialization.\n */\n serializeXiaomiTemplateRegistrationDescription(\n description: Omit<XiaomiTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeXiaomiRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Windows registration description to an object for serialization.\n */\n serializeWindowsRegistrationDescription(\n description: Omit<WindowsRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n ChannelUri: description.channelUri,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Windows template registration description to an object for serialization.\n */\n serializeWindowsTemplateRegistrationDescription(\n description: Omit<WindowsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n let wnsHeaders: Record<string, any> | undefined;\n if (description.wnsHeaders) {\n wnsHeaders = {\n WnsHeader: [],\n };\n\n for (const header of Object.keys(description.wnsHeaders)) {\n wnsHeaders[\"WnsHeader\"].push({\n Header: header.trim(),\n Value: description.wnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeWindowsRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n WnsHeaders: wnsHeaders,\n };\n },\n};\n\nfunction serializeRegistrationDescription(\n description: Omit<RegistrationDescriptionCommon, \"kind\">,\n): Record<string, any> {\n let tags: string | undefined;\n if (description.tags) {\n tags = description.tags.join(\",\");\n }\n\n let pushVariables: string | undefined;\n if (description.pushVariables) {\n pushVariables = JSON.stringify(description.pushVariables);\n }\n\n return {\n RegistrationId: getStringOrUndefined(description.registrationId),\n Tags: tags,\n PushVariables: pushVariables,\n };\n}\n\nfunction serializeTemplateRegistrationDescription(\n description: TemplateRegistrationDescription,\n): Record<string, any> {\n return {\n BodyTemplate: { __cdata: description.bodyTemplate },\n TemplateName: getStringOrUndefined(description.templateName)?.trim(),\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"registrationSerializer.js","sourceRoot":"","sources":["../../../src/serializers/registrationSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n AdmRegistrationDescription,\n AdmTemplateRegistrationDescription,\n AppleRegistrationDescription,\n AppleTemplateRegistrationDescription,\n BaiduRegistrationDescription,\n BaiduTemplateRegistrationDescription,\n BrowserRegistrationDescription,\n BrowserTemplateRegistrationDescription,\n GcmRegistrationDescription,\n GcmTemplateRegistrationDescription,\n FcmV1RegistrationDescription,\n FcmV1TemplateRegistrationDescription,\n MpnsRegistrationDescription,\n MpnsTemplateRegistrationDescription,\n RegistrationDescription,\n RegistrationDescriptionCommon,\n TemplateRegistrationDescription,\n XiaomiRegistrationDescription,\n XiaomiTemplateRegistrationDescription,\n WindowsRegistrationDescription,\n WindowsTemplateRegistrationDescription,\n} from \"../models/registration.js\";\nimport {\n getDateOrUndefined,\n getString,\n getStringOrUndefined,\n getTagsOrUndefined,\n isDefined,\n} from \"../utils/utils.js\";\nimport { parseXML, stringifyXML } from \"@azure/core-xml\";\nimport { RestError } from \"@azure/core-rest-pipeline\";\nimport { serializeToAtomXmlRequest } from \"../utils/xmlUtils.js\";\n\n/**\n * Represents a registration description parser from the incoming XML.\n */\nexport interface RegistrationDescriptionParser {\n /**\n * @internal\n * Creates a registration type from the incoming entry.\n */\n parseRegistrationEntry: (bodyText: string) => Promise<RegistrationDescription>;\n /**\n * @internal\n * Creates a list of registrations from an incoming ATOM XML Feed.\n */\n parseRegistrationFeed: (bodyText: string) => Promise<RegistrationDescription[]>;\n /**\n * @internal\n * Creates an Amazon Device Messaging (ADM) registration description from the incoming parsed XML.\n */\n createAdmRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AdmRegistrationDescription;\n /**\n * @internal\n * Creates an Amazon Device Messaging (ADM) template registration description from the incoming parsed XML.\n */\n createAdmTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AdmTemplateRegistrationDescription;\n /**\n * @internal\n * Creates an Apple Platform Notification Services (APNs) registration description from the incoming parsed XML.\n */\n createAppleRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AppleRegistrationDescription;\n /**\n * @internal\n * Creates an Apple Platform Notification Services (APNs) template registration description from the incoming parsed XML.\n */\n createAppleTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AppleTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Baidu registration description from the incoming parsed XML.\n */\n createBaiduRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BaiduRegistrationDescription;\n /**\n * @internal\n * Creates a Baidu template registration description from the incoming parsed XML.\n */\n createBaiduTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BaiduTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Web Push registration description from the incoming parsed XML.\n */\n createBrowserRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BrowserRegistrationDescription;\n /**\n * @internal\n * Creates a Web Push template registration description from the incoming parsed XML.\n */\n createBrowserTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BrowserTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Firebase V1 Cloud Messaging (FCM) registration description from the incoming parsed XML.\n */\n createFcmV1RegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => FcmV1RegistrationDescription;\n /**\n * @internal\n * Creates a Firebase V1 Cloud Messaging (FCM) template registration description from the incoming parsed XML.\n */\n createFcmV1TemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => FcmV1TemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Google Cloud Messaging (GCM) registration description from the incoming parsed XML.\n */\n createGcmRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => GcmRegistrationDescription;\n /**\n * @internal\n * Creates a Google Cloud Messaging (GCM) template registration description from the incoming parsed XML.\n */\n createGcmTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => GcmTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Microsoft Phone Notification Services (MPNS) registration description from the incoming parsed XML.\n */\n createMpnsRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => MpnsRegistrationDescription;\n /**\n * @internal\n * Creates a Microsoft Phone Notification Services (MPNS) template registration description from the incoming parsed XML.\n */\n createMpnsTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => MpnsTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Xiaomi registration description from the incoming parsed XML.\n */\n createXiaomiRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => XiaomiRegistrationDescription;\n /**\n * @internal\n * Creates a Xiaomi template registration description from the incoming parsed XML.\n */\n createXiaomiTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => XiaomiTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Windows Notification Services (WNS) registration description from the incoming parsed XML.\n */\n createWindowsRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => WindowsRegistrationDescription;\n /**\n * @internal\n * Creates a Windows Notification Services (WNS) template registration description from the incoming parsed XML.\n */\n createWindowsTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => WindowsTemplateRegistrationDescription;\n}\n\nexport const registrationDescriptionParser: RegistrationDescriptionParser = {\n /**\n * @internal\n * Creates a registration type from the incoming entry.\n */\n async parseRegistrationEntry(bodyText: string): Promise<RegistrationDescription> {\n const xml = await parseXML(bodyText, { includeRoot: true });\n delete xml.entry.content[\"$\"];\n const keyName = Object.keys(xml.entry.content)[0];\n const content = xml.entry.content[keyName];\n const methodName = `create${keyName}`;\n\n const method = this[methodName as keyof RegistrationDescriptionParser] as any;\n if (!methodName) {\n throw new RestError(`${keyName} is not a supported registration type`, { statusCode: 500 });\n }\n\n return method.call(this, content) as RegistrationDescription;\n },\n\n /**\n * @internal\n * Creates a list of registrations from an incoming ATOM XML Feed.\n */\n async parseRegistrationFeed(bodyText: string): Promise<RegistrationDescription[]> {\n const xml = await parseXML(bodyText, { includeRoot: true });\n const results: RegistrationDescription[] = [];\n if (!isDefined(xml.feed.entry)) {\n return results;\n }\n\n const entries = Array.isArray(xml.feed.entry) ? xml.feed.entry : [xml.feed.entry];\n\n for (const entry of entries) {\n delete entry.content[\"$\"];\n\n const keyName = Object.keys(entry.content)[0];\n const methodName = `create${keyName}`;\n const content = entry.content[keyName];\n const method = this[methodName as keyof RegistrationDescriptionParser] as any;\n if (!methodName) {\n throw new RestError(`${keyName} is not a supported registration type`, { statusCode: 500 });\n }\n\n results.push(method.call(this, content) as RegistrationDescription);\n }\n\n return results;\n },\n\n /**\n * @internal\n * Creates an ADM registration description from incoming XML property bag.\n */\n createAdmRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AdmRegistrationDescription {\n return {\n admRegistrationId: getString(\n rawRegistrationDescription[\"AdmRegistrationId\"],\n \"admRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Adm\",\n };\n },\n\n /**\n * @internal\n * Creates an ADM template registration description from incoming XML property bag.\n */\n createAdmTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AdmTemplateRegistrationDescription {\n return {\n ...this.createAdmRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"AdmTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates an Apple registration description from incoming XML property bag.\n */\n createAppleRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AppleRegistrationDescription {\n return {\n deviceToken: getString(rawRegistrationDescription[\"DeviceToken\"], \"deviceToken\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Apple\",\n };\n },\n\n /**\n * @internal\n * Creates an Apple template registration description from incoming XML property bag.\n */\n createAppleTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AppleTemplateRegistrationDescription {\n return {\n priority: getStringOrUndefined(rawRegistrationDescription[\"Priority\"])?.trim() as \"10\" | \"5\",\n apnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"ApnsHeaders\"]?.[\"ApnsHeader\"]),\n ...this.createAppleRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"AppleTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Baidu registration description from incoming XML property bag.\n */\n createBaiduRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BaiduRegistrationDescription {\n return {\n baiduChannelId: getString(\n rawRegistrationDescription[\"BaiduChannelId\"],\n \"baiduChannelId\",\n ).trim(),\n baiduUserId: getString(rawRegistrationDescription[\"BaiduUserId\"], \"baiduUserId\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Baidu\",\n };\n },\n\n /**\n * @internal\n * Creates a Baidu template registration description from incoming XML property bag.\n */\n createBaiduTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BaiduTemplateRegistrationDescription {\n return {\n ...this.createBaiduRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"BaiduTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Browser registration description from incoming XML property bag.\n */\n createBrowserRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BrowserRegistrationDescription {\n return {\n endpoint: getString(rawRegistrationDescription[\"Endpoint\"], \"endpoint\").trim(),\n p256dh: getString(rawRegistrationDescription[\"P256DH\"], \"p256dh\").trim(),\n auth: getString(rawRegistrationDescription[\"Auth\"], \"auth\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Browser\",\n };\n },\n\n /**\n * @internal\n * Creates a Browser template registration description from incoming XML property bag.\n */\n createBrowserTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BrowserTemplateRegistrationDescription {\n return {\n ...this.createBrowserRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"BrowserTemplate\",\n };\n },\n /**\n * @internal\n * Creates an GCM registration description from incoming XML property bag.\n */\n createFcmV1RegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): FcmV1RegistrationDescription {\n return {\n fcmV1RegistrationId: getString(\n rawRegistrationDescription[\"FcmV1RegistrationId\"],\n \"fcmV1RegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"FcmV1\",\n };\n },\n\n /**\n * @internal\n * Creates an FCM template registration description from incoming XML property bag.\n */\n createFcmV1TemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): FcmV1TemplateRegistrationDescription {\n return {\n ...this.createFcmV1RegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"FcmV1Template\",\n };\n },\n\n /**\n * @internal\n * Creates an GCM registration description from incoming XML property bag.\n */\n createGcmRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): GcmRegistrationDescription {\n return {\n gcmRegistrationId: getString(\n rawRegistrationDescription[\"GcmRegistrationId\"],\n \"gcmRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Gcm\",\n };\n },\n\n /**\n * @internal\n * Creates an FCM template registration description from incoming XML property bag.\n */\n createGcmTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): GcmTemplateRegistrationDescription {\n return {\n ...this.createGcmRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"GcmTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows Phone registration description from incoming XML property bag.\n */\n createMpnsRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): MpnsRegistrationDescription {\n return {\n channelUri: getString(rawRegistrationDescription[\"ChannelUri\"], \"channelUri\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Mpns\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows Phone template registration description from incoming XML property bag.\n */\n createMpnsTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): MpnsTemplateRegistrationDescription {\n return {\n mpnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"MpnsHeaders\"]?.[\"MpnsHeader\"]),\n ...this.createWindowsRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"MpnsTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Xiaomi registration description from incoming XML property bag.\n */\n createXiaomiRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): XiaomiRegistrationDescription {\n return {\n xiaomiRegistrationId: getString(\n rawRegistrationDescription[\"XiaomiRegistrationId\"],\n \"xiaomiRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Xiaomi\",\n };\n },\n\n /**\n * @internal\n * Creates a Xiaomi template registration description from incoming XML property bag.\n */\n createXiaomiTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): XiaomiTemplateRegistrationDescription {\n return {\n ...this.createXiaomiRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"XiaomiTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows registration description from incoming XML property bag.\n */\n createWindowsRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): WindowsRegistrationDescription {\n return {\n channelUri: getString(rawRegistrationDescription[\"ChannelUri\"], \"channelUri\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Windows\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows template registration description from incoming XML property bag.\n */\n createWindowsTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): WindowsTemplateRegistrationDescription {\n return {\n wnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"WnsHeaders\"]?.[\"WnsHeader\"]),\n ...this.createWindowsRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"WindowsTemplate\",\n };\n },\n};\n\nfunction getHeadersOrUndefined(\n value?: { Header: string; Value: string }[] | { Header: string; Value: string },\n): Record<string, string> | undefined {\n if (!isDefined(value)) {\n return undefined;\n }\n\n const headerObj: Record<string, string> = {};\n for (const { Header, Value } of Array.isArray(value) ? value : [value]) {\n headerObj[Header] = Value;\n }\n\n return headerObj;\n}\n\nfunction createRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n): Omit<RegistrationDescriptionCommon, \"kind\"> {\n let pushVariables: Record<string, string> | undefined;\n const unparsed = getStringOrUndefined(rawRegistrationDescription[\"PushVariables\"])?.trim();\n if (unparsed) {\n pushVariables = JSON.parse(unparsed) as Record<string, string>;\n }\n\n return {\n registrationId: getStringOrUndefined(rawRegistrationDescription[\"RegistrationId\"])?.trim(),\n expirationTime: getDateOrUndefined(rawRegistrationDescription[\"ExpirationTime\"]),\n etag: getStringOrUndefined(rawRegistrationDescription[\"ETag\"])?.trim(),\n tags: getTagsOrUndefined(rawRegistrationDescription[\"Tags\"]),\n pushVariables: pushVariables,\n };\n}\n\nfunction createTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n): TemplateRegistrationDescription {\n return {\n bodyTemplate: getString(rawRegistrationDescription[\"BodyTemplate\"], \"bodyTemplate\").trim(),\n templateName: getStringOrUndefined(rawRegistrationDescription[\"TemplateName\"])?.trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n };\n}\n\n/**\n * @internal\n * Represents a serializer for all registration descriptions.\n */\nexport interface RegistrationDescriptionSerializer {\n /**\n * @internal\n * Serializes a registration description into an ATOM XML string.\n */\n serializeRegistrationDescription(description: RegistrationDescription): string;\n /**\n * @internal\n * Serializes an Amazon Device Messaging (ADM) registration description into an XML object for serialization.\n */\n serializeAdmRegistrationDescription(\n description: Omit<AdmRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Amazon Device Messaging (ADM) template registration description into an XML object for serialization.\n */\n serializeAdmTemplateRegistrationDescription(\n description: Omit<AdmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Apple registration description into an XML object for serialization.\n */\n serializeAppleRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Apple template registration description into an XML object for serialization.\n */\n serializeAppleTemplateRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Baidu registration description into an XML object for serialization.\n */\n serializeBaiduRegistrationDescription(\n description: Omit<BaiduRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Baidu template registration description into an XML object for serialization.\n */\n serializeBaiduTemplateRegistrationDescription(\n description: Omit<BaiduTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Web Push registration description into an XML object for serialization.\n */\n serializeBrowserRegistrationDescription(\n description: Omit<BrowserRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Web Push template registration description into an XML object for serialization.\n */\n serializeBrowserTemplateRegistrationDescription(\n description: Omit<BrowserTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) registration description into an XML object for serialization.\n */\n serializeFcmV1RegistrationDescription(\n description: Omit<FcmV1RegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) template registration description into an XML object for serialization.\n */\n serializeFcmV1TemplateRegistrationDescription(\n description: Omit<FcmV1TemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) registration description into an XML object for serialization.\n */\n serializeGcmRegistrationDescription(\n description: Omit<GcmRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) template registration description into an XML object for serialization.\n */\n serializeGcmTemplateRegistrationDescription(\n description: Omit<GcmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Phone registration description into an XML object for serialization.\n */\n serializeMpnsRegistrationDescription(\n description: Omit<MpnsRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Phone template registration description into an XML object for serialization.\n */\n serializeMpnsTemplateRegistrationDescription(\n description: Omit<MpnsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Xiaomi registration description into an XML object for serialization.\n */\n serializeXiaomiRegistrationDescription(\n description: Omit<XiaomiRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Xiaomi template registration description into an XML object for serialization.\n */\n serializeXiaomiTemplateRegistrationDescription(\n description: Omit<XiaomiTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Notification Services (WNS) registration description into an XML object for serialization.\n */\n serializeWindowsRegistrationDescription(\n description: Omit<WindowsRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Notification Services (WNS) template registration description into an XML object for serialization.\n */\n serializeWindowsTemplateRegistrationDescription(\n description: Omit<WindowsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n}\n\n/**\n * Represents a RegistrationDescription serializer.\n */\nexport const registrationDescriptionSerializer: RegistrationDescriptionSerializer = {\n serializeRegistrationDescription(description: RegistrationDescription): string {\n const rootName = `${description.kind}RegistrationDescription`;\n const methodName = `serialize${rootName}`;\n\n const method = this[methodName as keyof RegistrationDescriptionSerializer].bind(this) as (\n description: RegistrationDescription,\n ) => Record<string, any>;\n if (!isDefined(method)) {\n throw new RestError(`Undefined platform ${description.kind}`, { statusCode: 400 });\n }\n\n const registration = method(description) as Record<string, any>;\n const requestObject = serializeToAtomXmlRequest(rootName, registration);\n\n return stringifyXML(requestObject, { rootName: \"entry\" });\n },\n\n /**\n * @internal\n * Serializes an existing ADM registration description to an object for serialization.\n */\n serializeAdmRegistrationDescription(\n description: Omit<AdmRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n AdmRegistrationId: getString(description.admRegistrationId, \"admRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing ADM template registration description to an object for serialization.\n */\n serializeAdmTemplateRegistrationDescription(\n description: Omit<AdmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeAdmRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Apple registration description to an object for serialization.\n */\n serializeAppleRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n DeviceToken: getString(description.deviceToken, \"deviceToken\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Apple template registration description to an object for serialization.\n */\n serializeAppleTemplateRegistrationDescription(\n description: AppleTemplateRegistrationDescription,\n ): Record<string, any> {\n let apnsHeaders: Record<string, any> | undefined;\n if (description.apnsHeaders) {\n apnsHeaders = {\n ApnsHeader: [],\n };\n\n for (const header of Object.keys(description.apnsHeaders)) {\n apnsHeaders[\"ApnsHeader\"].push({\n Header: header.trim(),\n Value: description.apnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeAppleRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n Expiry: getStringOrUndefined(description.expiry)?.trim(),\n ApnsHeaders: apnsHeaders,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Baidu registration description to an object for serialization.\n */\n serializeBaiduRegistrationDescription(\n description: Omit<BaiduRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n BaiduChannelId: getString(description.baiduChannelId, \"baiduChannelId\").trim(),\n BaiduUserId: getString(description.baiduUserId, \"baiduUserId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Baidu template registration description to an object for serialization.\n */\n serializeBaiduTemplateRegistrationDescription(\n description: Omit<BaiduTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeBaiduRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Browser registration description to an object for serialization.\n */\n serializeBrowserRegistrationDescription(\n description: Omit<BrowserRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n Endpoint: description.endpoint,\n P256DH: description.p256dh,\n Auth: description.auth,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Browser template registration description to an object for serialization.\n */\n serializeBrowserTemplateRegistrationDescription(\n description: Omit<BrowserTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeBrowserRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing FCM V1 registration description to an object for serialization.\n */\n serializeFcmV1RegistrationDescription(\n description: Omit<FcmV1RegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n FcmV1RegistrationId: getString(description.fcmV1RegistrationId, \"fcmRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing FCM V1 template registration description to an object for serialization.\n */\n serializeFcmV1TemplateRegistrationDescription(\n description: Omit<FcmV1TemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeFcmV1RegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing GCM registration description to an object for serialization.\n */\n serializeGcmRegistrationDescription(\n description: Omit<GcmRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n GcmRegistrationId: getString(description.gcmRegistrationId, \"gcmRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing GCM template registration description to an object for serialization.\n */\n serializeGcmTemplateRegistrationDescription(\n description: Omit<GcmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeGcmRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * @deprecated Windows Phone is no longer supported.\n * Serializes an existing MPNS registration description to an object for serialization.\n */\n serializeMpnsRegistrationDescription(\n description: Omit<MpnsRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n ChannelUri: description.channelUri,\n };\n },\n\n /**\n * @internal\n * @deprecated Windows Phone is no longer supported.\n * Serializes an existing MPNS template registration description to an object for serialization.\n */\n serializeMpnsTemplateRegistrationDescription(\n description: Omit<MpnsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n let mpnsHeaders: Record<string, any> | undefined;\n if (description.mpnsHeaders) {\n mpnsHeaders = {\n MpnsHeader: [],\n };\n\n for (const header of Object.keys(description.mpnsHeaders)) {\n mpnsHeaders[\"MpnsHeader\"].push({\n Header: header.trim(),\n Value: description.mpnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeMpnsRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n MpnsHeaders: mpnsHeaders,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Xiaomi registration description to an object for serialization.\n */\n serializeXiaomiRegistrationDescription(\n description: Omit<XiaomiRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n XiaomiRegistrationId: getString(\n description.xiaomiRegistrationId,\n \"xiaomiRegistrationId\",\n ).trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Xiaomi template registration description to an object for serialization.\n */\n serializeXiaomiTemplateRegistrationDescription(\n description: Omit<XiaomiTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeXiaomiRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Windows registration description to an object for serialization.\n */\n serializeWindowsRegistrationDescription(\n description: Omit<WindowsRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n ChannelUri: description.channelUri,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Windows template registration description to an object for serialization.\n */\n serializeWindowsTemplateRegistrationDescription(\n description: Omit<WindowsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n let wnsHeaders: Record<string, any> | undefined;\n if (description.wnsHeaders) {\n wnsHeaders = {\n WnsHeader: [],\n };\n\n for (const header of Object.keys(description.wnsHeaders)) {\n wnsHeaders[\"WnsHeader\"].push({\n Header: header.trim(),\n Value: description.wnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeWindowsRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n WnsHeaders: wnsHeaders,\n };\n },\n};\n\nfunction serializeRegistrationDescription(\n description: Omit<RegistrationDescriptionCommon, \"kind\">,\n): Record<string, any> {\n let tags: string | undefined;\n if (description.tags) {\n tags = description.tags.join(\",\");\n }\n\n let pushVariables: string | undefined;\n if (description.pushVariables) {\n pushVariables = JSON.stringify(description.pushVariables);\n }\n\n return {\n RegistrationId: getStringOrUndefined(description.registrationId),\n Tags: tags,\n PushVariables: pushVariables,\n };\n}\n\nfunction serializeTemplateRegistrationDescription(\n description: TemplateRegistrationDescription,\n): Record<string, any> {\n return {\n BodyTemplate: { __cdata: description.bodyTemplate },\n TemplateName: getStringOrUndefined(description.templateName)?.trim(),\n };\n}\n"]}
|
|
@@ -256,7 +256,7 @@ function getHeadersOrUndefined(value) {
|
|
|
256
256
|
return undefined;
|
|
257
257
|
}
|
|
258
258
|
const headerObj = {};
|
|
259
|
-
for (const { Header, Value } of value) {
|
|
259
|
+
for (const { Header, Value } of Array.isArray(value) ? value : [value]) {
|
|
260
260
|
headerObj[Header] = Value;
|
|
261
261
|
}
|
|
262
262
|
return headerObj;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registrationSerializer.js","sourceRoot":"","sources":["../../../src/serializers/registrationSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n AdmRegistrationDescription,\n AdmTemplateRegistrationDescription,\n AppleRegistrationDescription,\n AppleTemplateRegistrationDescription,\n BaiduRegistrationDescription,\n BaiduTemplateRegistrationDescription,\n BrowserRegistrationDescription,\n BrowserTemplateRegistrationDescription,\n GcmRegistrationDescription,\n GcmTemplateRegistrationDescription,\n FcmV1RegistrationDescription,\n FcmV1TemplateRegistrationDescription,\n MpnsRegistrationDescription,\n MpnsTemplateRegistrationDescription,\n RegistrationDescription,\n RegistrationDescriptionCommon,\n TemplateRegistrationDescription,\n XiaomiRegistrationDescription,\n XiaomiTemplateRegistrationDescription,\n WindowsRegistrationDescription,\n WindowsTemplateRegistrationDescription,\n} from \"../models/registration.js\";\nimport {\n getDateOrUndefined,\n getString,\n getStringOrUndefined,\n getTagsOrUndefined,\n isDefined,\n} from \"../utils/utils.js\";\nimport { parseXML, stringifyXML } from \"@azure/core-xml\";\nimport { RestError } from \"@azure/core-rest-pipeline\";\nimport { serializeToAtomXmlRequest } from \"../utils/xmlUtils.js\";\n\n/**\n * Represents a registration description parser from the incoming XML.\n */\nexport interface RegistrationDescriptionParser {\n /**\n * @internal\n * Creates a registration type from the incoming entry.\n */\n parseRegistrationEntry: (bodyText: string) => Promise<RegistrationDescription>;\n /**\n * @internal\n * Creates a list of registrations from an incoming ATOM XML Feed.\n */\n parseRegistrationFeed: (bodyText: string) => Promise<RegistrationDescription[]>;\n /**\n * @internal\n * Creates an Amazon Device Messaging (ADM) registration description from the incoming parsed XML.\n */\n createAdmRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AdmRegistrationDescription;\n /**\n * @internal\n * Creates an Amazon Device Messaging (ADM) template registration description from the incoming parsed XML.\n */\n createAdmTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AdmTemplateRegistrationDescription;\n /**\n * @internal\n * Creates an Apple Platform Notification Services (APNs) registration description from the incoming parsed XML.\n */\n createAppleRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AppleRegistrationDescription;\n /**\n * @internal\n * Creates an Apple Platform Notification Services (APNs) template registration description from the incoming parsed XML.\n */\n createAppleTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AppleTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Baidu registration description from the incoming parsed XML.\n */\n createBaiduRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BaiduRegistrationDescription;\n /**\n * @internal\n * Creates a Baidu template registration description from the incoming parsed XML.\n */\n createBaiduTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BaiduTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Web Push registration description from the incoming parsed XML.\n */\n createBrowserRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BrowserRegistrationDescription;\n /**\n * @internal\n * Creates a Web Push template registration description from the incoming parsed XML.\n */\n createBrowserTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BrowserTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Firebase V1 Cloud Messaging (FCM) registration description from the incoming parsed XML.\n */\n createFcmV1RegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => FcmV1RegistrationDescription;\n /**\n * @internal\n * Creates a Firebase V1 Cloud Messaging (FCM) template registration description from the incoming parsed XML.\n */\n createFcmV1TemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => FcmV1TemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Google Cloud Messaging (GCM) registration description from the incoming parsed XML.\n */\n createGcmRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => GcmRegistrationDescription;\n /**\n * @internal\n * Creates a Google Cloud Messaging (GCM) template registration description from the incoming parsed XML.\n */\n createGcmTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => GcmTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Microsoft Phone Notification Services (MPNS) registration description from the incoming parsed XML.\n */\n createMpnsRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => MpnsRegistrationDescription;\n /**\n * @internal\n * Creates a Microsoft Phone Notification Services (MPNS) template registration description from the incoming parsed XML.\n */\n createMpnsTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => MpnsTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Xiaomi registration description from the incoming parsed XML.\n */\n createXiaomiRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => XiaomiRegistrationDescription;\n /**\n * @internal\n * Creates a Xiaomi template registration description from the incoming parsed XML.\n */\n createXiaomiTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => XiaomiTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Windows Notification Services (WNS) registration description from the incoming parsed XML.\n */\n createWindowsRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => WindowsRegistrationDescription;\n /**\n * @internal\n * Creates a Windows Notification Services (WNS) template registration description from the incoming parsed XML.\n */\n createWindowsTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => WindowsTemplateRegistrationDescription;\n}\n\nexport const registrationDescriptionParser: RegistrationDescriptionParser = {\n /**\n * @internal\n * Creates a registration type from the incoming entry.\n */\n async parseRegistrationEntry(bodyText: string): Promise<RegistrationDescription> {\n const xml = await parseXML(bodyText, { includeRoot: true });\n delete xml.entry.content[\"$\"];\n const keyName = Object.keys(xml.entry.content)[0];\n const content = xml.entry.content[keyName];\n const methodName = `create${keyName}`;\n\n const method = this[methodName as keyof RegistrationDescriptionParser] as any;\n if (!methodName) {\n throw new RestError(`${keyName} is not a supported registration type`, { statusCode: 500 });\n }\n\n return method.call(this, content) as RegistrationDescription;\n },\n\n /**\n * @internal\n * Creates a list of registrations from an incoming ATOM XML Feed.\n */\n async parseRegistrationFeed(bodyText: string): Promise<RegistrationDescription[]> {\n const xml = await parseXML(bodyText, { includeRoot: true });\n const results: RegistrationDescription[] = [];\n if (!isDefined(xml.feed.entry)) {\n return results;\n }\n\n const entries = Array.isArray(xml.feed.entry) ? xml.feed.entry : [xml.feed.entry];\n\n for (const entry of entries) {\n delete entry.content[\"$\"];\n\n const keyName = Object.keys(entry.content)[0];\n const methodName = `create${keyName}`;\n const content = entry.content[keyName];\n const method = this[methodName as keyof RegistrationDescriptionParser] as any;\n if (!methodName) {\n throw new RestError(`${keyName} is not a supported registration type`, { statusCode: 500 });\n }\n\n results.push(method.call(this, content) as RegistrationDescription);\n }\n\n return results;\n },\n\n /**\n * @internal\n * Creates an ADM registration description from incoming XML property bag.\n */\n createAdmRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AdmRegistrationDescription {\n return {\n admRegistrationId: getString(\n rawRegistrationDescription[\"AdmRegistrationId\"],\n \"admRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Adm\",\n };\n },\n\n /**\n * @internal\n * Creates an ADM template registration description from incoming XML property bag.\n */\n createAdmTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AdmTemplateRegistrationDescription {\n return {\n ...this.createAdmRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"AdmTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates an Apple registration description from incoming XML property bag.\n */\n createAppleRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AppleRegistrationDescription {\n return {\n deviceToken: getString(rawRegistrationDescription[\"DeviceToken\"], \"deviceToken\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Apple\",\n };\n },\n\n /**\n * @internal\n * Creates an Apple template registration description from incoming XML property bag.\n */\n createAppleTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AppleTemplateRegistrationDescription {\n return {\n priority: getStringOrUndefined(rawRegistrationDescription[\"Priority\"])?.trim() as \"10\" | \"5\",\n apnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"ApnsHeaders\"]?.[\"ApnsHeader\"]),\n ...this.createAppleRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"AppleTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Baidu registration description from incoming XML property bag.\n */\n createBaiduRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BaiduRegistrationDescription {\n return {\n baiduChannelId: getString(\n rawRegistrationDescription[\"BaiduChannelId\"],\n \"baiduChannelId\",\n ).trim(),\n baiduUserId: getString(rawRegistrationDescription[\"BaiduUserId\"], \"baiduUserId\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Baidu\",\n };\n },\n\n /**\n * @internal\n * Creates a Baidu template registration description from incoming XML property bag.\n */\n createBaiduTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BaiduTemplateRegistrationDescription {\n return {\n ...this.createBaiduRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"BaiduTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Browser registration description from incoming XML property bag.\n */\n createBrowserRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BrowserRegistrationDescription {\n return {\n endpoint: getString(rawRegistrationDescription[\"Endpoint\"], \"endpoint\").trim(),\n p256dh: getString(rawRegistrationDescription[\"P256DH\"], \"p256dh\").trim(),\n auth: getString(rawRegistrationDescription[\"Auth\"], \"auth\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Browser\",\n };\n },\n\n /**\n * @internal\n * Creates a Browser template registration description from incoming XML property bag.\n */\n createBrowserTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BrowserTemplateRegistrationDescription {\n return {\n ...this.createBrowserRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"BrowserTemplate\",\n };\n },\n /**\n * @internal\n * Creates an GCM registration description from incoming XML property bag.\n */\n createFcmV1RegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): FcmV1RegistrationDescription {\n return {\n fcmV1RegistrationId: getString(\n rawRegistrationDescription[\"FcmV1RegistrationId\"],\n \"fcmV1RegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"FcmV1\",\n };\n },\n\n /**\n * @internal\n * Creates an FCM template registration description from incoming XML property bag.\n */\n createFcmV1TemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): FcmV1TemplateRegistrationDescription {\n return {\n ...this.createFcmV1RegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"FcmV1Template\",\n };\n },\n\n /**\n * @internal\n * Creates an GCM registration description from incoming XML property bag.\n */\n createGcmRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): GcmRegistrationDescription {\n return {\n gcmRegistrationId: getString(\n rawRegistrationDescription[\"GcmRegistrationId\"],\n \"gcmRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Gcm\",\n };\n },\n\n /**\n * @internal\n * Creates an FCM template registration description from incoming XML property bag.\n */\n createGcmTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): GcmTemplateRegistrationDescription {\n return {\n ...this.createGcmRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"GcmTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows Phone registration description from incoming XML property bag.\n */\n createMpnsRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): MpnsRegistrationDescription {\n return {\n channelUri: getString(rawRegistrationDescription[\"ChannelUri\"], \"channelUri\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Mpns\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows Phone template registration description from incoming XML property bag.\n */\n createMpnsTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): MpnsTemplateRegistrationDescription {\n return {\n mpnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"MpnsHeaders\"]?.[\"MpnsHeader\"]),\n ...this.createWindowsRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"MpnsTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Xiaomi registration description from incoming XML property bag.\n */\n createXiaomiRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): XiaomiRegistrationDescription {\n return {\n xiaomiRegistrationId: getString(\n rawRegistrationDescription[\"XiaomiRegistrationId\"],\n \"xiaomiRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Xiaomi\",\n };\n },\n\n /**\n * @internal\n * Creates a Xiaomi template registration description from incoming XML property bag.\n */\n createXiaomiTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): XiaomiTemplateRegistrationDescription {\n return {\n ...this.createXiaomiRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"XiaomiTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows registration description from incoming XML property bag.\n */\n createWindowsRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): WindowsRegistrationDescription {\n return {\n channelUri: getString(rawRegistrationDescription[\"ChannelUri\"], \"channelUri\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Windows\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows template registration description from incoming XML property bag.\n */\n createWindowsTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): WindowsTemplateRegistrationDescription {\n return {\n wnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"WnsHeaders\"]?.[\"WnsHeader\"]),\n ...this.createWindowsRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"WindowsTemplate\",\n };\n },\n};\n\nfunction getHeadersOrUndefined(\n value?: { Header: string; Value: string }[],\n): Record<string, string> | undefined {\n if (!isDefined(value)) {\n return undefined;\n }\n\n const headerObj: Record<string, string> = {};\n for (const { Header, Value } of value) {\n headerObj[Header] = Value;\n }\n\n return headerObj;\n}\n\nfunction createRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n): Omit<RegistrationDescriptionCommon, \"kind\"> {\n let pushVariables: Record<string, string> | undefined;\n const unparsed = getStringOrUndefined(rawRegistrationDescription[\"PushVariables\"])?.trim();\n if (unparsed) {\n pushVariables = JSON.parse(unparsed) as Record<string, string>;\n }\n\n return {\n registrationId: getStringOrUndefined(rawRegistrationDescription[\"RegistrationId\"])?.trim(),\n expirationTime: getDateOrUndefined(rawRegistrationDescription[\"ExpirationTime\"]),\n etag: getStringOrUndefined(rawRegistrationDescription[\"ETag\"])?.trim(),\n tags: getTagsOrUndefined(rawRegistrationDescription[\"Tags\"]),\n pushVariables: pushVariables,\n };\n}\n\nfunction createTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n): TemplateRegistrationDescription {\n return {\n bodyTemplate: getString(rawRegistrationDescription[\"BodyTemplate\"], \"bodyTemplate\").trim(),\n templateName: getStringOrUndefined(rawRegistrationDescription[\"TemplateName\"])?.trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n };\n}\n\n/**\n * @internal\n * Represents a serializer for all registration descriptions.\n */\nexport interface RegistrationDescriptionSerializer {\n /**\n * @internal\n * Serializes a registration description into an ATOM XML string.\n */\n serializeRegistrationDescription(description: RegistrationDescription): string;\n /**\n * @internal\n * Serializes an Amazon Device Messaging (ADM) registration description into an XML object for serialization.\n */\n serializeAdmRegistrationDescription(\n description: Omit<AdmRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Amazon Device Messaging (ADM) template registration description into an XML object for serialization.\n */\n serializeAdmTemplateRegistrationDescription(\n description: Omit<AdmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Apple registration description into an XML object for serialization.\n */\n serializeAppleRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Apple template registration description into an XML object for serialization.\n */\n serializeAppleTemplateRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Baidu registration description into an XML object for serialization.\n */\n serializeBaiduRegistrationDescription(\n description: Omit<BaiduRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Baidu template registration description into an XML object for serialization.\n */\n serializeBaiduTemplateRegistrationDescription(\n description: Omit<BaiduTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Web Push registration description into an XML object for serialization.\n */\n serializeBrowserRegistrationDescription(\n description: Omit<BrowserRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Web Push template registration description into an XML object for serialization.\n */\n serializeBrowserTemplateRegistrationDescription(\n description: Omit<BrowserTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) registration description into an XML object for serialization.\n */\n serializeFcmV1RegistrationDescription(\n description: Omit<FcmV1RegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) template registration description into an XML object for serialization.\n */\n serializeFcmV1TemplateRegistrationDescription(\n description: Omit<FcmV1TemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) registration description into an XML object for serialization.\n */\n serializeGcmRegistrationDescription(\n description: Omit<GcmRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) template registration description into an XML object for serialization.\n */\n serializeGcmTemplateRegistrationDescription(\n description: Omit<GcmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Phone registration description into an XML object for serialization.\n */\n serializeMpnsRegistrationDescription(\n description: Omit<MpnsRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Phone template registration description into an XML object for serialization.\n */\n serializeMpnsTemplateRegistrationDescription(\n description: Omit<MpnsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Xiaomi registration description into an XML object for serialization.\n */\n serializeXiaomiRegistrationDescription(\n description: Omit<XiaomiRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Xiaomi template registration description into an XML object for serialization.\n */\n serializeXiaomiTemplateRegistrationDescription(\n description: Omit<XiaomiTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Notification Services (WNS) registration description into an XML object for serialization.\n */\n serializeWindowsRegistrationDescription(\n description: Omit<WindowsRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Notification Services (WNS) template registration description into an XML object for serialization.\n */\n serializeWindowsTemplateRegistrationDescription(\n description: Omit<WindowsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n}\n\n/**\n * Represents a RegistrationDescription serializer.\n */\nexport const registrationDescriptionSerializer: RegistrationDescriptionSerializer = {\n serializeRegistrationDescription(description: RegistrationDescription): string {\n const rootName = `${description.kind}RegistrationDescription`;\n const methodName = `serialize${rootName}`;\n\n const method = this[methodName as keyof RegistrationDescriptionSerializer].bind(this) as (\n description: RegistrationDescription,\n ) => Record<string, any>;\n if (!isDefined(method)) {\n throw new RestError(`Undefined platform ${description.kind}`, { statusCode: 400 });\n }\n\n const registration = method(description) as Record<string, any>;\n const requestObject = serializeToAtomXmlRequest(rootName, registration);\n\n return stringifyXML(requestObject, { rootName: \"entry\" });\n },\n\n /**\n * @internal\n * Serializes an existing ADM registration description to an object for serialization.\n */\n serializeAdmRegistrationDescription(\n description: Omit<AdmRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n AdmRegistrationId: getString(description.admRegistrationId, \"admRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing ADM template registration description to an object for serialization.\n */\n serializeAdmTemplateRegistrationDescription(\n description: Omit<AdmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeAdmRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Apple registration description to an object for serialization.\n */\n serializeAppleRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n DeviceToken: getString(description.deviceToken, \"deviceToken\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Apple template registration description to an object for serialization.\n */\n serializeAppleTemplateRegistrationDescription(\n description: AppleTemplateRegistrationDescription,\n ): Record<string, any> {\n let apnsHeaders: Record<string, any> | undefined;\n if (description.apnsHeaders) {\n apnsHeaders = {\n ApnsHeader: [],\n };\n\n for (const header of Object.keys(description.apnsHeaders)) {\n apnsHeaders[\"ApnsHeader\"].push({\n Header: header.trim(),\n Value: description.apnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeAppleRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n Expiry: getStringOrUndefined(description.expiry)?.trim(),\n ApnsHeaders: apnsHeaders,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Baidu registration description to an object for serialization.\n */\n serializeBaiduRegistrationDescription(\n description: Omit<BaiduRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n BaiduChannelId: getString(description.baiduChannelId, \"baiduChannelId\").trim(),\n BaiduUserId: getString(description.baiduUserId, \"baiduUserId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Baidu template registration description to an object for serialization.\n */\n serializeBaiduTemplateRegistrationDescription(\n description: Omit<BaiduTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeBaiduRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Browser registration description to an object for serialization.\n */\n serializeBrowserRegistrationDescription(\n description: Omit<BrowserRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n Endpoint: description.endpoint,\n P256DH: description.p256dh,\n Auth: description.auth,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Browser template registration description to an object for serialization.\n */\n serializeBrowserTemplateRegistrationDescription(\n description: Omit<BrowserTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeBrowserRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing FCM V1 registration description to an object for serialization.\n */\n serializeFcmV1RegistrationDescription(\n description: Omit<FcmV1RegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n FcmV1RegistrationId: getString(description.fcmV1RegistrationId, \"fcmRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing FCM V1 template registration description to an object for serialization.\n */\n serializeFcmV1TemplateRegistrationDescription(\n description: Omit<FcmV1TemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeFcmV1RegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing GCM registration description to an object for serialization.\n */\n serializeGcmRegistrationDescription(\n description: Omit<GcmRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n GcmRegistrationId: getString(description.gcmRegistrationId, \"gcmRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing GCM template registration description to an object for serialization.\n */\n serializeGcmTemplateRegistrationDescription(\n description: Omit<GcmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeGcmRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * @deprecated Windows Phone is no longer supported.\n * Serializes an existing MPNS registration description to an object for serialization.\n */\n serializeMpnsRegistrationDescription(\n description: Omit<MpnsRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n ChannelUri: description.channelUri,\n };\n },\n\n /**\n * @internal\n * @deprecated Windows Phone is no longer supported.\n * Serializes an existing MPNS template registration description to an object for serialization.\n */\n serializeMpnsTemplateRegistrationDescription(\n description: Omit<MpnsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n let mpnsHeaders: Record<string, any> | undefined;\n if (description.mpnsHeaders) {\n mpnsHeaders = {\n MpnsHeader: [],\n };\n\n for (const header of Object.keys(description.mpnsHeaders)) {\n mpnsHeaders[\"MpnsHeader\"].push({\n Header: header.trim(),\n Value: description.mpnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeMpnsRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n MpnsHeaders: mpnsHeaders,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Xiaomi registration description to an object for serialization.\n */\n serializeXiaomiRegistrationDescription(\n description: Omit<XiaomiRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n XiaomiRegistrationId: getString(\n description.xiaomiRegistrationId,\n \"xiaomiRegistrationId\",\n ).trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Xiaomi template registration description to an object for serialization.\n */\n serializeXiaomiTemplateRegistrationDescription(\n description: Omit<XiaomiTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeXiaomiRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Windows registration description to an object for serialization.\n */\n serializeWindowsRegistrationDescription(\n description: Omit<WindowsRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n ChannelUri: description.channelUri,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Windows template registration description to an object for serialization.\n */\n serializeWindowsTemplateRegistrationDescription(\n description: Omit<WindowsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n let wnsHeaders: Record<string, any> | undefined;\n if (description.wnsHeaders) {\n wnsHeaders = {\n WnsHeader: [],\n };\n\n for (const header of Object.keys(description.wnsHeaders)) {\n wnsHeaders[\"WnsHeader\"].push({\n Header: header.trim(),\n Value: description.wnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeWindowsRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n WnsHeaders: wnsHeaders,\n };\n },\n};\n\nfunction serializeRegistrationDescription(\n description: Omit<RegistrationDescriptionCommon, \"kind\">,\n): Record<string, any> {\n let tags: string | undefined;\n if (description.tags) {\n tags = description.tags.join(\",\");\n }\n\n let pushVariables: string | undefined;\n if (description.pushVariables) {\n pushVariables = JSON.stringify(description.pushVariables);\n }\n\n return {\n RegistrationId: getStringOrUndefined(description.registrationId),\n Tags: tags,\n PushVariables: pushVariables,\n };\n}\n\nfunction serializeTemplateRegistrationDescription(\n description: TemplateRegistrationDescription,\n): Record<string, any> {\n return {\n BodyTemplate: { __cdata: description.bodyTemplate },\n TemplateName: getStringOrUndefined(description.templateName)?.trim(),\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"registrationSerializer.js","sourceRoot":"","sources":["../../../src/serializers/registrationSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n AdmRegistrationDescription,\n AdmTemplateRegistrationDescription,\n AppleRegistrationDescription,\n AppleTemplateRegistrationDescription,\n BaiduRegistrationDescription,\n BaiduTemplateRegistrationDescription,\n BrowserRegistrationDescription,\n BrowserTemplateRegistrationDescription,\n GcmRegistrationDescription,\n GcmTemplateRegistrationDescription,\n FcmV1RegistrationDescription,\n FcmV1TemplateRegistrationDescription,\n MpnsRegistrationDescription,\n MpnsTemplateRegistrationDescription,\n RegistrationDescription,\n RegistrationDescriptionCommon,\n TemplateRegistrationDescription,\n XiaomiRegistrationDescription,\n XiaomiTemplateRegistrationDescription,\n WindowsRegistrationDescription,\n WindowsTemplateRegistrationDescription,\n} from \"../models/registration.js\";\nimport {\n getDateOrUndefined,\n getString,\n getStringOrUndefined,\n getTagsOrUndefined,\n isDefined,\n} from \"../utils/utils.js\";\nimport { parseXML, stringifyXML } from \"@azure/core-xml\";\nimport { RestError } from \"@azure/core-rest-pipeline\";\nimport { serializeToAtomXmlRequest } from \"../utils/xmlUtils.js\";\n\n/**\n * Represents a registration description parser from the incoming XML.\n */\nexport interface RegistrationDescriptionParser {\n /**\n * @internal\n * Creates a registration type from the incoming entry.\n */\n parseRegistrationEntry: (bodyText: string) => Promise<RegistrationDescription>;\n /**\n * @internal\n * Creates a list of registrations from an incoming ATOM XML Feed.\n */\n parseRegistrationFeed: (bodyText: string) => Promise<RegistrationDescription[]>;\n /**\n * @internal\n * Creates an Amazon Device Messaging (ADM) registration description from the incoming parsed XML.\n */\n createAdmRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AdmRegistrationDescription;\n /**\n * @internal\n * Creates an Amazon Device Messaging (ADM) template registration description from the incoming parsed XML.\n */\n createAdmTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AdmTemplateRegistrationDescription;\n /**\n * @internal\n * Creates an Apple Platform Notification Services (APNs) registration description from the incoming parsed XML.\n */\n createAppleRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AppleRegistrationDescription;\n /**\n * @internal\n * Creates an Apple Platform Notification Services (APNs) template registration description from the incoming parsed XML.\n */\n createAppleTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AppleTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Baidu registration description from the incoming parsed XML.\n */\n createBaiduRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BaiduRegistrationDescription;\n /**\n * @internal\n * Creates a Baidu template registration description from the incoming parsed XML.\n */\n createBaiduTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BaiduTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Web Push registration description from the incoming parsed XML.\n */\n createBrowserRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BrowserRegistrationDescription;\n /**\n * @internal\n * Creates a Web Push template registration description from the incoming parsed XML.\n */\n createBrowserTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BrowserTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Firebase V1 Cloud Messaging (FCM) registration description from the incoming parsed XML.\n */\n createFcmV1RegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => FcmV1RegistrationDescription;\n /**\n * @internal\n * Creates a Firebase V1 Cloud Messaging (FCM) template registration description from the incoming parsed XML.\n */\n createFcmV1TemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => FcmV1TemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Google Cloud Messaging (GCM) registration description from the incoming parsed XML.\n */\n createGcmRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => GcmRegistrationDescription;\n /**\n * @internal\n * Creates a Google Cloud Messaging (GCM) template registration description from the incoming parsed XML.\n */\n createGcmTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => GcmTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Microsoft Phone Notification Services (MPNS) registration description from the incoming parsed XML.\n */\n createMpnsRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => MpnsRegistrationDescription;\n /**\n * @internal\n * Creates a Microsoft Phone Notification Services (MPNS) template registration description from the incoming parsed XML.\n */\n createMpnsTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => MpnsTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Xiaomi registration description from the incoming parsed XML.\n */\n createXiaomiRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => XiaomiRegistrationDescription;\n /**\n * @internal\n * Creates a Xiaomi template registration description from the incoming parsed XML.\n */\n createXiaomiTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => XiaomiTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Windows Notification Services (WNS) registration description from the incoming parsed XML.\n */\n createWindowsRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => WindowsRegistrationDescription;\n /**\n * @internal\n * Creates a Windows Notification Services (WNS) template registration description from the incoming parsed XML.\n */\n createWindowsTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => WindowsTemplateRegistrationDescription;\n}\n\nexport const registrationDescriptionParser: RegistrationDescriptionParser = {\n /**\n * @internal\n * Creates a registration type from the incoming entry.\n */\n async parseRegistrationEntry(bodyText: string): Promise<RegistrationDescription> {\n const xml = await parseXML(bodyText, { includeRoot: true });\n delete xml.entry.content[\"$\"];\n const keyName = Object.keys(xml.entry.content)[0];\n const content = xml.entry.content[keyName];\n const methodName = `create${keyName}`;\n\n const method = this[methodName as keyof RegistrationDescriptionParser] as any;\n if (!methodName) {\n throw new RestError(`${keyName} is not a supported registration type`, { statusCode: 500 });\n }\n\n return method.call(this, content) as RegistrationDescription;\n },\n\n /**\n * @internal\n * Creates a list of registrations from an incoming ATOM XML Feed.\n */\n async parseRegistrationFeed(bodyText: string): Promise<RegistrationDescription[]> {\n const xml = await parseXML(bodyText, { includeRoot: true });\n const results: RegistrationDescription[] = [];\n if (!isDefined(xml.feed.entry)) {\n return results;\n }\n\n const entries = Array.isArray(xml.feed.entry) ? xml.feed.entry : [xml.feed.entry];\n\n for (const entry of entries) {\n delete entry.content[\"$\"];\n\n const keyName = Object.keys(entry.content)[0];\n const methodName = `create${keyName}`;\n const content = entry.content[keyName];\n const method = this[methodName as keyof RegistrationDescriptionParser] as any;\n if (!methodName) {\n throw new RestError(`${keyName} is not a supported registration type`, { statusCode: 500 });\n }\n\n results.push(method.call(this, content) as RegistrationDescription);\n }\n\n return results;\n },\n\n /**\n * @internal\n * Creates an ADM registration description from incoming XML property bag.\n */\n createAdmRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AdmRegistrationDescription {\n return {\n admRegistrationId: getString(\n rawRegistrationDescription[\"AdmRegistrationId\"],\n \"admRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Adm\",\n };\n },\n\n /**\n * @internal\n * Creates an ADM template registration description from incoming XML property bag.\n */\n createAdmTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AdmTemplateRegistrationDescription {\n return {\n ...this.createAdmRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"AdmTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates an Apple registration description from incoming XML property bag.\n */\n createAppleRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AppleRegistrationDescription {\n return {\n deviceToken: getString(rawRegistrationDescription[\"DeviceToken\"], \"deviceToken\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Apple\",\n };\n },\n\n /**\n * @internal\n * Creates an Apple template registration description from incoming XML property bag.\n */\n createAppleTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AppleTemplateRegistrationDescription {\n return {\n priority: getStringOrUndefined(rawRegistrationDescription[\"Priority\"])?.trim() as \"10\" | \"5\",\n apnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"ApnsHeaders\"]?.[\"ApnsHeader\"]),\n ...this.createAppleRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"AppleTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Baidu registration description from incoming XML property bag.\n */\n createBaiduRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BaiduRegistrationDescription {\n return {\n baiduChannelId: getString(\n rawRegistrationDescription[\"BaiduChannelId\"],\n \"baiduChannelId\",\n ).trim(),\n baiduUserId: getString(rawRegistrationDescription[\"BaiduUserId\"], \"baiduUserId\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Baidu\",\n };\n },\n\n /**\n * @internal\n * Creates a Baidu template registration description from incoming XML property bag.\n */\n createBaiduTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BaiduTemplateRegistrationDescription {\n return {\n ...this.createBaiduRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"BaiduTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Browser registration description from incoming XML property bag.\n */\n createBrowserRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BrowserRegistrationDescription {\n return {\n endpoint: getString(rawRegistrationDescription[\"Endpoint\"], \"endpoint\").trim(),\n p256dh: getString(rawRegistrationDescription[\"P256DH\"], \"p256dh\").trim(),\n auth: getString(rawRegistrationDescription[\"Auth\"], \"auth\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Browser\",\n };\n },\n\n /**\n * @internal\n * Creates a Browser template registration description from incoming XML property bag.\n */\n createBrowserTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BrowserTemplateRegistrationDescription {\n return {\n ...this.createBrowserRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"BrowserTemplate\",\n };\n },\n /**\n * @internal\n * Creates an GCM registration description from incoming XML property bag.\n */\n createFcmV1RegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): FcmV1RegistrationDescription {\n return {\n fcmV1RegistrationId: getString(\n rawRegistrationDescription[\"FcmV1RegistrationId\"],\n \"fcmV1RegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"FcmV1\",\n };\n },\n\n /**\n * @internal\n * Creates an FCM template registration description from incoming XML property bag.\n */\n createFcmV1TemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): FcmV1TemplateRegistrationDescription {\n return {\n ...this.createFcmV1RegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"FcmV1Template\",\n };\n },\n\n /**\n * @internal\n * Creates an GCM registration description from incoming XML property bag.\n */\n createGcmRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): GcmRegistrationDescription {\n return {\n gcmRegistrationId: getString(\n rawRegistrationDescription[\"GcmRegistrationId\"],\n \"gcmRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Gcm\",\n };\n },\n\n /**\n * @internal\n * Creates an FCM template registration description from incoming XML property bag.\n */\n createGcmTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): GcmTemplateRegistrationDescription {\n return {\n ...this.createGcmRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"GcmTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows Phone registration description from incoming XML property bag.\n */\n createMpnsRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): MpnsRegistrationDescription {\n return {\n channelUri: getString(rawRegistrationDescription[\"ChannelUri\"], \"channelUri\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Mpns\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows Phone template registration description from incoming XML property bag.\n */\n createMpnsTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): MpnsTemplateRegistrationDescription {\n return {\n mpnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"MpnsHeaders\"]?.[\"MpnsHeader\"]),\n ...this.createWindowsRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"MpnsTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Xiaomi registration description from incoming XML property bag.\n */\n createXiaomiRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): XiaomiRegistrationDescription {\n return {\n xiaomiRegistrationId: getString(\n rawRegistrationDescription[\"XiaomiRegistrationId\"],\n \"xiaomiRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Xiaomi\",\n };\n },\n\n /**\n * @internal\n * Creates a Xiaomi template registration description from incoming XML property bag.\n */\n createXiaomiTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): XiaomiTemplateRegistrationDescription {\n return {\n ...this.createXiaomiRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"XiaomiTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows registration description from incoming XML property bag.\n */\n createWindowsRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): WindowsRegistrationDescription {\n return {\n channelUri: getString(rawRegistrationDescription[\"ChannelUri\"], \"channelUri\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Windows\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows template registration description from incoming XML property bag.\n */\n createWindowsTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): WindowsTemplateRegistrationDescription {\n return {\n wnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"WnsHeaders\"]?.[\"WnsHeader\"]),\n ...this.createWindowsRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"WindowsTemplate\",\n };\n },\n};\n\nfunction getHeadersOrUndefined(\n value?: { Header: string; Value: string }[] | { Header: string; Value: string },\n): Record<string, string> | undefined {\n if (!isDefined(value)) {\n return undefined;\n }\n\n const headerObj: Record<string, string> = {};\n for (const { Header, Value } of Array.isArray(value) ? value : [value]) {\n headerObj[Header] = Value;\n }\n\n return headerObj;\n}\n\nfunction createRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n): Omit<RegistrationDescriptionCommon, \"kind\"> {\n let pushVariables: Record<string, string> | undefined;\n const unparsed = getStringOrUndefined(rawRegistrationDescription[\"PushVariables\"])?.trim();\n if (unparsed) {\n pushVariables = JSON.parse(unparsed) as Record<string, string>;\n }\n\n return {\n registrationId: getStringOrUndefined(rawRegistrationDescription[\"RegistrationId\"])?.trim(),\n expirationTime: getDateOrUndefined(rawRegistrationDescription[\"ExpirationTime\"]),\n etag: getStringOrUndefined(rawRegistrationDescription[\"ETag\"])?.trim(),\n tags: getTagsOrUndefined(rawRegistrationDescription[\"Tags\"]),\n pushVariables: pushVariables,\n };\n}\n\nfunction createTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n): TemplateRegistrationDescription {\n return {\n bodyTemplate: getString(rawRegistrationDescription[\"BodyTemplate\"], \"bodyTemplate\").trim(),\n templateName: getStringOrUndefined(rawRegistrationDescription[\"TemplateName\"])?.trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n };\n}\n\n/**\n * @internal\n * Represents a serializer for all registration descriptions.\n */\nexport interface RegistrationDescriptionSerializer {\n /**\n * @internal\n * Serializes a registration description into an ATOM XML string.\n */\n serializeRegistrationDescription(description: RegistrationDescription): string;\n /**\n * @internal\n * Serializes an Amazon Device Messaging (ADM) registration description into an XML object for serialization.\n */\n serializeAdmRegistrationDescription(\n description: Omit<AdmRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Amazon Device Messaging (ADM) template registration description into an XML object for serialization.\n */\n serializeAdmTemplateRegistrationDescription(\n description: Omit<AdmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Apple registration description into an XML object for serialization.\n */\n serializeAppleRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Apple template registration description into an XML object for serialization.\n */\n serializeAppleTemplateRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Baidu registration description into an XML object for serialization.\n */\n serializeBaiduRegistrationDescription(\n description: Omit<BaiduRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Baidu template registration description into an XML object for serialization.\n */\n serializeBaiduTemplateRegistrationDescription(\n description: Omit<BaiduTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Web Push registration description into an XML object for serialization.\n */\n serializeBrowserRegistrationDescription(\n description: Omit<BrowserRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Web Push template registration description into an XML object for serialization.\n */\n serializeBrowserTemplateRegistrationDescription(\n description: Omit<BrowserTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) registration description into an XML object for serialization.\n */\n serializeFcmV1RegistrationDescription(\n description: Omit<FcmV1RegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) template registration description into an XML object for serialization.\n */\n serializeFcmV1TemplateRegistrationDescription(\n description: Omit<FcmV1TemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) registration description into an XML object for serialization.\n */\n serializeGcmRegistrationDescription(\n description: Omit<GcmRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) template registration description into an XML object for serialization.\n */\n serializeGcmTemplateRegistrationDescription(\n description: Omit<GcmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Phone registration description into an XML object for serialization.\n */\n serializeMpnsRegistrationDescription(\n description: Omit<MpnsRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Phone template registration description into an XML object for serialization.\n */\n serializeMpnsTemplateRegistrationDescription(\n description: Omit<MpnsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Xiaomi registration description into an XML object for serialization.\n */\n serializeXiaomiRegistrationDescription(\n description: Omit<XiaomiRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Xiaomi template registration description into an XML object for serialization.\n */\n serializeXiaomiTemplateRegistrationDescription(\n description: Omit<XiaomiTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Notification Services (WNS) registration description into an XML object for serialization.\n */\n serializeWindowsRegistrationDescription(\n description: Omit<WindowsRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Notification Services (WNS) template registration description into an XML object for serialization.\n */\n serializeWindowsTemplateRegistrationDescription(\n description: Omit<WindowsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n}\n\n/**\n * Represents a RegistrationDescription serializer.\n */\nexport const registrationDescriptionSerializer: RegistrationDescriptionSerializer = {\n serializeRegistrationDescription(description: RegistrationDescription): string {\n const rootName = `${description.kind}RegistrationDescription`;\n const methodName = `serialize${rootName}`;\n\n const method = this[methodName as keyof RegistrationDescriptionSerializer].bind(this) as (\n description: RegistrationDescription,\n ) => Record<string, any>;\n if (!isDefined(method)) {\n throw new RestError(`Undefined platform ${description.kind}`, { statusCode: 400 });\n }\n\n const registration = method(description) as Record<string, any>;\n const requestObject = serializeToAtomXmlRequest(rootName, registration);\n\n return stringifyXML(requestObject, { rootName: \"entry\" });\n },\n\n /**\n * @internal\n * Serializes an existing ADM registration description to an object for serialization.\n */\n serializeAdmRegistrationDescription(\n description: Omit<AdmRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n AdmRegistrationId: getString(description.admRegistrationId, \"admRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing ADM template registration description to an object for serialization.\n */\n serializeAdmTemplateRegistrationDescription(\n description: Omit<AdmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeAdmRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Apple registration description to an object for serialization.\n */\n serializeAppleRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n DeviceToken: getString(description.deviceToken, \"deviceToken\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Apple template registration description to an object for serialization.\n */\n serializeAppleTemplateRegistrationDescription(\n description: AppleTemplateRegistrationDescription,\n ): Record<string, any> {\n let apnsHeaders: Record<string, any> | undefined;\n if (description.apnsHeaders) {\n apnsHeaders = {\n ApnsHeader: [],\n };\n\n for (const header of Object.keys(description.apnsHeaders)) {\n apnsHeaders[\"ApnsHeader\"].push({\n Header: header.trim(),\n Value: description.apnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeAppleRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n Expiry: getStringOrUndefined(description.expiry)?.trim(),\n ApnsHeaders: apnsHeaders,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Baidu registration description to an object for serialization.\n */\n serializeBaiduRegistrationDescription(\n description: Omit<BaiduRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n BaiduChannelId: getString(description.baiduChannelId, \"baiduChannelId\").trim(),\n BaiduUserId: getString(description.baiduUserId, \"baiduUserId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Baidu template registration description to an object for serialization.\n */\n serializeBaiduTemplateRegistrationDescription(\n description: Omit<BaiduTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeBaiduRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Browser registration description to an object for serialization.\n */\n serializeBrowserRegistrationDescription(\n description: Omit<BrowserRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n Endpoint: description.endpoint,\n P256DH: description.p256dh,\n Auth: description.auth,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Browser template registration description to an object for serialization.\n */\n serializeBrowserTemplateRegistrationDescription(\n description: Omit<BrowserTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeBrowserRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing FCM V1 registration description to an object for serialization.\n */\n serializeFcmV1RegistrationDescription(\n description: Omit<FcmV1RegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n FcmV1RegistrationId: getString(description.fcmV1RegistrationId, \"fcmRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing FCM V1 template registration description to an object for serialization.\n */\n serializeFcmV1TemplateRegistrationDescription(\n description: Omit<FcmV1TemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeFcmV1RegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing GCM registration description to an object for serialization.\n */\n serializeGcmRegistrationDescription(\n description: Omit<GcmRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n GcmRegistrationId: getString(description.gcmRegistrationId, \"gcmRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing GCM template registration description to an object for serialization.\n */\n serializeGcmTemplateRegistrationDescription(\n description: Omit<GcmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeGcmRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * @deprecated Windows Phone is no longer supported.\n * Serializes an existing MPNS registration description to an object for serialization.\n */\n serializeMpnsRegistrationDescription(\n description: Omit<MpnsRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n ChannelUri: description.channelUri,\n };\n },\n\n /**\n * @internal\n * @deprecated Windows Phone is no longer supported.\n * Serializes an existing MPNS template registration description to an object for serialization.\n */\n serializeMpnsTemplateRegistrationDescription(\n description: Omit<MpnsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n let mpnsHeaders: Record<string, any> | undefined;\n if (description.mpnsHeaders) {\n mpnsHeaders = {\n MpnsHeader: [],\n };\n\n for (const header of Object.keys(description.mpnsHeaders)) {\n mpnsHeaders[\"MpnsHeader\"].push({\n Header: header.trim(),\n Value: description.mpnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeMpnsRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n MpnsHeaders: mpnsHeaders,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Xiaomi registration description to an object for serialization.\n */\n serializeXiaomiRegistrationDescription(\n description: Omit<XiaomiRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n XiaomiRegistrationId: getString(\n description.xiaomiRegistrationId,\n \"xiaomiRegistrationId\",\n ).trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Xiaomi template registration description to an object for serialization.\n */\n serializeXiaomiTemplateRegistrationDescription(\n description: Omit<XiaomiTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeXiaomiRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Windows registration description to an object for serialization.\n */\n serializeWindowsRegistrationDescription(\n description: Omit<WindowsRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n ChannelUri: description.channelUri,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Windows template registration description to an object for serialization.\n */\n serializeWindowsTemplateRegistrationDescription(\n description: Omit<WindowsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n let wnsHeaders: Record<string, any> | undefined;\n if (description.wnsHeaders) {\n wnsHeaders = {\n WnsHeader: [],\n };\n\n for (const header of Object.keys(description.wnsHeaders)) {\n wnsHeaders[\"WnsHeader\"].push({\n Header: header.trim(),\n Value: description.wnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeWindowsRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n WnsHeaders: wnsHeaders,\n };\n },\n};\n\nfunction serializeRegistrationDescription(\n description: Omit<RegistrationDescriptionCommon, \"kind\">,\n): Record<string, any> {\n let tags: string | undefined;\n if (description.tags) {\n tags = description.tags.join(\",\");\n }\n\n let pushVariables: string | undefined;\n if (description.pushVariables) {\n pushVariables = JSON.stringify(description.pushVariables);\n }\n\n return {\n RegistrationId: getStringOrUndefined(description.registrationId),\n Tags: tags,\n PushVariables: pushVariables,\n };\n}\n\nfunction serializeTemplateRegistrationDescription(\n description: TemplateRegistrationDescription,\n): Record<string, any> {\n return {\n BodyTemplate: { __cdata: description.bodyTemplate },\n TemplateName: getStringOrUndefined(description.templateName)?.trim(),\n };\n}\n"]}
|
|
@@ -256,7 +256,7 @@ function getHeadersOrUndefined(value) {
|
|
|
256
256
|
return undefined;
|
|
257
257
|
}
|
|
258
258
|
const headerObj = {};
|
|
259
|
-
for (const { Header, Value } of value) {
|
|
259
|
+
for (const { Header, Value } of Array.isArray(value) ? value : [value]) {
|
|
260
260
|
headerObj[Header] = Value;
|
|
261
261
|
}
|
|
262
262
|
return headerObj;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registrationSerializer.js","sourceRoot":"","sources":["../../../src/serializers/registrationSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n AdmRegistrationDescription,\n AdmTemplateRegistrationDescription,\n AppleRegistrationDescription,\n AppleTemplateRegistrationDescription,\n BaiduRegistrationDescription,\n BaiduTemplateRegistrationDescription,\n BrowserRegistrationDescription,\n BrowserTemplateRegistrationDescription,\n GcmRegistrationDescription,\n GcmTemplateRegistrationDescription,\n FcmV1RegistrationDescription,\n FcmV1TemplateRegistrationDescription,\n MpnsRegistrationDescription,\n MpnsTemplateRegistrationDescription,\n RegistrationDescription,\n RegistrationDescriptionCommon,\n TemplateRegistrationDescription,\n XiaomiRegistrationDescription,\n XiaomiTemplateRegistrationDescription,\n WindowsRegistrationDescription,\n WindowsTemplateRegistrationDescription,\n} from \"../models/registration.js\";\nimport {\n getDateOrUndefined,\n getString,\n getStringOrUndefined,\n getTagsOrUndefined,\n isDefined,\n} from \"../utils/utils.js\";\nimport { parseXML, stringifyXML } from \"@azure/core-xml\";\nimport { RestError } from \"@azure/core-rest-pipeline\";\nimport { serializeToAtomXmlRequest } from \"../utils/xmlUtils.js\";\n\n/**\n * Represents a registration description parser from the incoming XML.\n */\nexport interface RegistrationDescriptionParser {\n /**\n * @internal\n * Creates a registration type from the incoming entry.\n */\n parseRegistrationEntry: (bodyText: string) => Promise<RegistrationDescription>;\n /**\n * @internal\n * Creates a list of registrations from an incoming ATOM XML Feed.\n */\n parseRegistrationFeed: (bodyText: string) => Promise<RegistrationDescription[]>;\n /**\n * @internal\n * Creates an Amazon Device Messaging (ADM) registration description from the incoming parsed XML.\n */\n createAdmRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AdmRegistrationDescription;\n /**\n * @internal\n * Creates an Amazon Device Messaging (ADM) template registration description from the incoming parsed XML.\n */\n createAdmTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AdmTemplateRegistrationDescription;\n /**\n * @internal\n * Creates an Apple Platform Notification Services (APNs) registration description from the incoming parsed XML.\n */\n createAppleRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AppleRegistrationDescription;\n /**\n * @internal\n * Creates an Apple Platform Notification Services (APNs) template registration description from the incoming parsed XML.\n */\n createAppleTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AppleTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Baidu registration description from the incoming parsed XML.\n */\n createBaiduRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BaiduRegistrationDescription;\n /**\n * @internal\n * Creates a Baidu template registration description from the incoming parsed XML.\n */\n createBaiduTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BaiduTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Web Push registration description from the incoming parsed XML.\n */\n createBrowserRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BrowserRegistrationDescription;\n /**\n * @internal\n * Creates a Web Push template registration description from the incoming parsed XML.\n */\n createBrowserTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BrowserTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Firebase V1 Cloud Messaging (FCM) registration description from the incoming parsed XML.\n */\n createFcmV1RegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => FcmV1RegistrationDescription;\n /**\n * @internal\n * Creates a Firebase V1 Cloud Messaging (FCM) template registration description from the incoming parsed XML.\n */\n createFcmV1TemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => FcmV1TemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Google Cloud Messaging (GCM) registration description from the incoming parsed XML.\n */\n createGcmRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => GcmRegistrationDescription;\n /**\n * @internal\n * Creates a Google Cloud Messaging (GCM) template registration description from the incoming parsed XML.\n */\n createGcmTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => GcmTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Microsoft Phone Notification Services (MPNS) registration description from the incoming parsed XML.\n */\n createMpnsRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => MpnsRegistrationDescription;\n /**\n * @internal\n * Creates a Microsoft Phone Notification Services (MPNS) template registration description from the incoming parsed XML.\n */\n createMpnsTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => MpnsTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Xiaomi registration description from the incoming parsed XML.\n */\n createXiaomiRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => XiaomiRegistrationDescription;\n /**\n * @internal\n * Creates a Xiaomi template registration description from the incoming parsed XML.\n */\n createXiaomiTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => XiaomiTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Windows Notification Services (WNS) registration description from the incoming parsed XML.\n */\n createWindowsRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => WindowsRegistrationDescription;\n /**\n * @internal\n * Creates a Windows Notification Services (WNS) template registration description from the incoming parsed XML.\n */\n createWindowsTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => WindowsTemplateRegistrationDescription;\n}\n\nexport const registrationDescriptionParser: RegistrationDescriptionParser = {\n /**\n * @internal\n * Creates a registration type from the incoming entry.\n */\n async parseRegistrationEntry(bodyText: string): Promise<RegistrationDescription> {\n const xml = await parseXML(bodyText, { includeRoot: true });\n delete xml.entry.content[\"$\"];\n const keyName = Object.keys(xml.entry.content)[0];\n const content = xml.entry.content[keyName];\n const methodName = `create${keyName}`;\n\n const method = this[methodName as keyof RegistrationDescriptionParser] as any;\n if (!methodName) {\n throw new RestError(`${keyName} is not a supported registration type`, { statusCode: 500 });\n }\n\n return method.call(this, content) as RegistrationDescription;\n },\n\n /**\n * @internal\n * Creates a list of registrations from an incoming ATOM XML Feed.\n */\n async parseRegistrationFeed(bodyText: string): Promise<RegistrationDescription[]> {\n const xml = await parseXML(bodyText, { includeRoot: true });\n const results: RegistrationDescription[] = [];\n if (!isDefined(xml.feed.entry)) {\n return results;\n }\n\n const entries = Array.isArray(xml.feed.entry) ? xml.feed.entry : [xml.feed.entry];\n\n for (const entry of entries) {\n delete entry.content[\"$\"];\n\n const keyName = Object.keys(entry.content)[0];\n const methodName = `create${keyName}`;\n const content = entry.content[keyName];\n const method = this[methodName as keyof RegistrationDescriptionParser] as any;\n if (!methodName) {\n throw new RestError(`${keyName} is not a supported registration type`, { statusCode: 500 });\n }\n\n results.push(method.call(this, content) as RegistrationDescription);\n }\n\n return results;\n },\n\n /**\n * @internal\n * Creates an ADM registration description from incoming XML property bag.\n */\n createAdmRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AdmRegistrationDescription {\n return {\n admRegistrationId: getString(\n rawRegistrationDescription[\"AdmRegistrationId\"],\n \"admRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Adm\",\n };\n },\n\n /**\n * @internal\n * Creates an ADM template registration description from incoming XML property bag.\n */\n createAdmTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AdmTemplateRegistrationDescription {\n return {\n ...this.createAdmRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"AdmTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates an Apple registration description from incoming XML property bag.\n */\n createAppleRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AppleRegistrationDescription {\n return {\n deviceToken: getString(rawRegistrationDescription[\"DeviceToken\"], \"deviceToken\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Apple\",\n };\n },\n\n /**\n * @internal\n * Creates an Apple template registration description from incoming XML property bag.\n */\n createAppleTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AppleTemplateRegistrationDescription {\n return {\n priority: getStringOrUndefined(rawRegistrationDescription[\"Priority\"])?.trim() as \"10\" | \"5\",\n apnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"ApnsHeaders\"]?.[\"ApnsHeader\"]),\n ...this.createAppleRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"AppleTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Baidu registration description from incoming XML property bag.\n */\n createBaiduRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BaiduRegistrationDescription {\n return {\n baiduChannelId: getString(\n rawRegistrationDescription[\"BaiduChannelId\"],\n \"baiduChannelId\",\n ).trim(),\n baiduUserId: getString(rawRegistrationDescription[\"BaiduUserId\"], \"baiduUserId\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Baidu\",\n };\n },\n\n /**\n * @internal\n * Creates a Baidu template registration description from incoming XML property bag.\n */\n createBaiduTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BaiduTemplateRegistrationDescription {\n return {\n ...this.createBaiduRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"BaiduTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Browser registration description from incoming XML property bag.\n */\n createBrowserRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BrowserRegistrationDescription {\n return {\n endpoint: getString(rawRegistrationDescription[\"Endpoint\"], \"endpoint\").trim(),\n p256dh: getString(rawRegistrationDescription[\"P256DH\"], \"p256dh\").trim(),\n auth: getString(rawRegistrationDescription[\"Auth\"], \"auth\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Browser\",\n };\n },\n\n /**\n * @internal\n * Creates a Browser template registration description from incoming XML property bag.\n */\n createBrowserTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BrowserTemplateRegistrationDescription {\n return {\n ...this.createBrowserRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"BrowserTemplate\",\n };\n },\n /**\n * @internal\n * Creates an GCM registration description from incoming XML property bag.\n */\n createFcmV1RegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): FcmV1RegistrationDescription {\n return {\n fcmV1RegistrationId: getString(\n rawRegistrationDescription[\"FcmV1RegistrationId\"],\n \"fcmV1RegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"FcmV1\",\n };\n },\n\n /**\n * @internal\n * Creates an FCM template registration description from incoming XML property bag.\n */\n createFcmV1TemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): FcmV1TemplateRegistrationDescription {\n return {\n ...this.createFcmV1RegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"FcmV1Template\",\n };\n },\n\n /**\n * @internal\n * Creates an GCM registration description from incoming XML property bag.\n */\n createGcmRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): GcmRegistrationDescription {\n return {\n gcmRegistrationId: getString(\n rawRegistrationDescription[\"GcmRegistrationId\"],\n \"gcmRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Gcm\",\n };\n },\n\n /**\n * @internal\n * Creates an FCM template registration description from incoming XML property bag.\n */\n createGcmTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): GcmTemplateRegistrationDescription {\n return {\n ...this.createGcmRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"GcmTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows Phone registration description from incoming XML property bag.\n */\n createMpnsRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): MpnsRegistrationDescription {\n return {\n channelUri: getString(rawRegistrationDescription[\"ChannelUri\"], \"channelUri\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Mpns\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows Phone template registration description from incoming XML property bag.\n */\n createMpnsTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): MpnsTemplateRegistrationDescription {\n return {\n mpnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"MpnsHeaders\"]?.[\"MpnsHeader\"]),\n ...this.createWindowsRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"MpnsTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Xiaomi registration description from incoming XML property bag.\n */\n createXiaomiRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): XiaomiRegistrationDescription {\n return {\n xiaomiRegistrationId: getString(\n rawRegistrationDescription[\"XiaomiRegistrationId\"],\n \"xiaomiRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Xiaomi\",\n };\n },\n\n /**\n * @internal\n * Creates a Xiaomi template registration description from incoming XML property bag.\n */\n createXiaomiTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): XiaomiTemplateRegistrationDescription {\n return {\n ...this.createXiaomiRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"XiaomiTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows registration description from incoming XML property bag.\n */\n createWindowsRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): WindowsRegistrationDescription {\n return {\n channelUri: getString(rawRegistrationDescription[\"ChannelUri\"], \"channelUri\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Windows\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows template registration description from incoming XML property bag.\n */\n createWindowsTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): WindowsTemplateRegistrationDescription {\n return {\n wnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"WnsHeaders\"]?.[\"WnsHeader\"]),\n ...this.createWindowsRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"WindowsTemplate\",\n };\n },\n};\n\nfunction getHeadersOrUndefined(\n value?: { Header: string; Value: string }[],\n): Record<string, string> | undefined {\n if (!isDefined(value)) {\n return undefined;\n }\n\n const headerObj: Record<string, string> = {};\n for (const { Header, Value } of value) {\n headerObj[Header] = Value;\n }\n\n return headerObj;\n}\n\nfunction createRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n): Omit<RegistrationDescriptionCommon, \"kind\"> {\n let pushVariables: Record<string, string> | undefined;\n const unparsed = getStringOrUndefined(rawRegistrationDescription[\"PushVariables\"])?.trim();\n if (unparsed) {\n pushVariables = JSON.parse(unparsed) as Record<string, string>;\n }\n\n return {\n registrationId: getStringOrUndefined(rawRegistrationDescription[\"RegistrationId\"])?.trim(),\n expirationTime: getDateOrUndefined(rawRegistrationDescription[\"ExpirationTime\"]),\n etag: getStringOrUndefined(rawRegistrationDescription[\"ETag\"])?.trim(),\n tags: getTagsOrUndefined(rawRegistrationDescription[\"Tags\"]),\n pushVariables: pushVariables,\n };\n}\n\nfunction createTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n): TemplateRegistrationDescription {\n return {\n bodyTemplate: getString(rawRegistrationDescription[\"BodyTemplate\"], \"bodyTemplate\").trim(),\n templateName: getStringOrUndefined(rawRegistrationDescription[\"TemplateName\"])?.trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n };\n}\n\n/**\n * @internal\n * Represents a serializer for all registration descriptions.\n */\nexport interface RegistrationDescriptionSerializer {\n /**\n * @internal\n * Serializes a registration description into an ATOM XML string.\n */\n serializeRegistrationDescription(description: RegistrationDescription): string;\n /**\n * @internal\n * Serializes an Amazon Device Messaging (ADM) registration description into an XML object for serialization.\n */\n serializeAdmRegistrationDescription(\n description: Omit<AdmRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Amazon Device Messaging (ADM) template registration description into an XML object for serialization.\n */\n serializeAdmTemplateRegistrationDescription(\n description: Omit<AdmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Apple registration description into an XML object for serialization.\n */\n serializeAppleRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Apple template registration description into an XML object for serialization.\n */\n serializeAppleTemplateRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Baidu registration description into an XML object for serialization.\n */\n serializeBaiduRegistrationDescription(\n description: Omit<BaiduRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Baidu template registration description into an XML object for serialization.\n */\n serializeBaiduTemplateRegistrationDescription(\n description: Omit<BaiduTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Web Push registration description into an XML object for serialization.\n */\n serializeBrowserRegistrationDescription(\n description: Omit<BrowserRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Web Push template registration description into an XML object for serialization.\n */\n serializeBrowserTemplateRegistrationDescription(\n description: Omit<BrowserTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) registration description into an XML object for serialization.\n */\n serializeFcmV1RegistrationDescription(\n description: Omit<FcmV1RegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) template registration description into an XML object for serialization.\n */\n serializeFcmV1TemplateRegistrationDescription(\n description: Omit<FcmV1TemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) registration description into an XML object for serialization.\n */\n serializeGcmRegistrationDescription(\n description: Omit<GcmRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) template registration description into an XML object for serialization.\n */\n serializeGcmTemplateRegistrationDescription(\n description: Omit<GcmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Phone registration description into an XML object for serialization.\n */\n serializeMpnsRegistrationDescription(\n description: Omit<MpnsRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Phone template registration description into an XML object for serialization.\n */\n serializeMpnsTemplateRegistrationDescription(\n description: Omit<MpnsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Xiaomi registration description into an XML object for serialization.\n */\n serializeXiaomiRegistrationDescription(\n description: Omit<XiaomiRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Xiaomi template registration description into an XML object for serialization.\n */\n serializeXiaomiTemplateRegistrationDescription(\n description: Omit<XiaomiTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Notification Services (WNS) registration description into an XML object for serialization.\n */\n serializeWindowsRegistrationDescription(\n description: Omit<WindowsRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Notification Services (WNS) template registration description into an XML object for serialization.\n */\n serializeWindowsTemplateRegistrationDescription(\n description: Omit<WindowsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n}\n\n/**\n * Represents a RegistrationDescription serializer.\n */\nexport const registrationDescriptionSerializer: RegistrationDescriptionSerializer = {\n serializeRegistrationDescription(description: RegistrationDescription): string {\n const rootName = `${description.kind}RegistrationDescription`;\n const methodName = `serialize${rootName}`;\n\n const method = this[methodName as keyof RegistrationDescriptionSerializer].bind(this) as (\n description: RegistrationDescription,\n ) => Record<string, any>;\n if (!isDefined(method)) {\n throw new RestError(`Undefined platform ${description.kind}`, { statusCode: 400 });\n }\n\n const registration = method(description) as Record<string, any>;\n const requestObject = serializeToAtomXmlRequest(rootName, registration);\n\n return stringifyXML(requestObject, { rootName: \"entry\" });\n },\n\n /**\n * @internal\n * Serializes an existing ADM registration description to an object for serialization.\n */\n serializeAdmRegistrationDescription(\n description: Omit<AdmRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n AdmRegistrationId: getString(description.admRegistrationId, \"admRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing ADM template registration description to an object for serialization.\n */\n serializeAdmTemplateRegistrationDescription(\n description: Omit<AdmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeAdmRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Apple registration description to an object for serialization.\n */\n serializeAppleRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n DeviceToken: getString(description.deviceToken, \"deviceToken\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Apple template registration description to an object for serialization.\n */\n serializeAppleTemplateRegistrationDescription(\n description: AppleTemplateRegistrationDescription,\n ): Record<string, any> {\n let apnsHeaders: Record<string, any> | undefined;\n if (description.apnsHeaders) {\n apnsHeaders = {\n ApnsHeader: [],\n };\n\n for (const header of Object.keys(description.apnsHeaders)) {\n apnsHeaders[\"ApnsHeader\"].push({\n Header: header.trim(),\n Value: description.apnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeAppleRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n Expiry: getStringOrUndefined(description.expiry)?.trim(),\n ApnsHeaders: apnsHeaders,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Baidu registration description to an object for serialization.\n */\n serializeBaiduRegistrationDescription(\n description: Omit<BaiduRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n BaiduChannelId: getString(description.baiduChannelId, \"baiduChannelId\").trim(),\n BaiduUserId: getString(description.baiduUserId, \"baiduUserId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Baidu template registration description to an object for serialization.\n */\n serializeBaiduTemplateRegistrationDescription(\n description: Omit<BaiduTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeBaiduRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Browser registration description to an object for serialization.\n */\n serializeBrowserRegistrationDescription(\n description: Omit<BrowserRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n Endpoint: description.endpoint,\n P256DH: description.p256dh,\n Auth: description.auth,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Browser template registration description to an object for serialization.\n */\n serializeBrowserTemplateRegistrationDescription(\n description: Omit<BrowserTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeBrowserRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing FCM V1 registration description to an object for serialization.\n */\n serializeFcmV1RegistrationDescription(\n description: Omit<FcmV1RegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n FcmV1RegistrationId: getString(description.fcmV1RegistrationId, \"fcmRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing FCM V1 template registration description to an object for serialization.\n */\n serializeFcmV1TemplateRegistrationDescription(\n description: Omit<FcmV1TemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeFcmV1RegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing GCM registration description to an object for serialization.\n */\n serializeGcmRegistrationDescription(\n description: Omit<GcmRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n GcmRegistrationId: getString(description.gcmRegistrationId, \"gcmRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing GCM template registration description to an object for serialization.\n */\n serializeGcmTemplateRegistrationDescription(\n description: Omit<GcmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeGcmRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * @deprecated Windows Phone is no longer supported.\n * Serializes an existing MPNS registration description to an object for serialization.\n */\n serializeMpnsRegistrationDescription(\n description: Omit<MpnsRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n ChannelUri: description.channelUri,\n };\n },\n\n /**\n * @internal\n * @deprecated Windows Phone is no longer supported.\n * Serializes an existing MPNS template registration description to an object for serialization.\n */\n serializeMpnsTemplateRegistrationDescription(\n description: Omit<MpnsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n let mpnsHeaders: Record<string, any> | undefined;\n if (description.mpnsHeaders) {\n mpnsHeaders = {\n MpnsHeader: [],\n };\n\n for (const header of Object.keys(description.mpnsHeaders)) {\n mpnsHeaders[\"MpnsHeader\"].push({\n Header: header.trim(),\n Value: description.mpnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeMpnsRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n MpnsHeaders: mpnsHeaders,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Xiaomi registration description to an object for serialization.\n */\n serializeXiaomiRegistrationDescription(\n description: Omit<XiaomiRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n XiaomiRegistrationId: getString(\n description.xiaomiRegistrationId,\n \"xiaomiRegistrationId\",\n ).trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Xiaomi template registration description to an object for serialization.\n */\n serializeXiaomiTemplateRegistrationDescription(\n description: Omit<XiaomiTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeXiaomiRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Windows registration description to an object for serialization.\n */\n serializeWindowsRegistrationDescription(\n description: Omit<WindowsRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n ChannelUri: description.channelUri,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Windows template registration description to an object for serialization.\n */\n serializeWindowsTemplateRegistrationDescription(\n description: Omit<WindowsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n let wnsHeaders: Record<string, any> | undefined;\n if (description.wnsHeaders) {\n wnsHeaders = {\n WnsHeader: [],\n };\n\n for (const header of Object.keys(description.wnsHeaders)) {\n wnsHeaders[\"WnsHeader\"].push({\n Header: header.trim(),\n Value: description.wnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeWindowsRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n WnsHeaders: wnsHeaders,\n };\n },\n};\n\nfunction serializeRegistrationDescription(\n description: Omit<RegistrationDescriptionCommon, \"kind\">,\n): Record<string, any> {\n let tags: string | undefined;\n if (description.tags) {\n tags = description.tags.join(\",\");\n }\n\n let pushVariables: string | undefined;\n if (description.pushVariables) {\n pushVariables = JSON.stringify(description.pushVariables);\n }\n\n return {\n RegistrationId: getStringOrUndefined(description.registrationId),\n Tags: tags,\n PushVariables: pushVariables,\n };\n}\n\nfunction serializeTemplateRegistrationDescription(\n description: TemplateRegistrationDescription,\n): Record<string, any> {\n return {\n BodyTemplate: { __cdata: description.bodyTemplate },\n TemplateName: getStringOrUndefined(description.templateName)?.trim(),\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"registrationSerializer.js","sourceRoot":"","sources":["../../../src/serializers/registrationSerializer.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAyBlC,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAgJjE,MAAM,CAAC,MAAM,6BAA6B,GAAkC;IAC1E;;;OAGG;IACH,KAAK,CAAC,sBAAsB,CAAC,QAAgB;QAC3C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,SAAS,OAAO,EAAE,CAAC;QAEtC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAiD,CAAQ,CAAC;QAC9E,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,SAAS,CAAC,GAAG,OAAO,uCAAuC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9F,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAA4B,CAAC;IAC/D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,qBAAqB,CAAC,QAAgB;QAC1C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,OAAO,GAA8B,EAAE,CAAC;QAC9C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAE1B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,UAAU,GAAG,SAAS,OAAO,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAiD,CAAQ,CAAC;YAC9E,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,SAAS,CAAC,GAAG,OAAO,uCAAuC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;YAC9F,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAA4B,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,gCAAgC,CAC9B,0BAA+C;QAE/C,OAAO;YACL,iBAAiB,EAAE,SAAS,CAC1B,0BAA0B,CAAC,mBAAmB,CAAC,EAC/C,mBAAmB,CACpB,CAAC,IAAI,EAAE;YACR,GAAG,6BAA6B,CAAC,0BAA0B,CAAC;YAC5D,IAAI,EAAE,KAAK;SACZ,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,wCAAwC,CACtC,0BAA+C;QAE/C,OAAO;YACL,GAAG,IAAI,CAAC,gCAAgC,CAAC,0BAA0B,CAAC;YACpE,GAAG,qCAAqC,CAAC,0BAA0B,CAAC;YACpE,IAAI,EAAE,aAAa;SACpB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,kCAAkC,CAChC,0BAA+C;QAE/C,OAAO;YACL,WAAW,EAAE,SAAS,CAAC,0BAA0B,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE;YACvF,GAAG,6BAA6B,CAAC,0BAA0B,CAAC;YAC5D,IAAI,EAAE,OAAO;SACd,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,0CAA0C,CACxC,0BAA+C;QAE/C,OAAO;YACL,QAAQ,EAAE,oBAAoB,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAgB;YAC5F,WAAW,EAAE,qBAAqB,CAAC,0BAA0B,CAAC,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;YAC7F,GAAG,IAAI,CAAC,kCAAkC,CAAC,0BAA0B,CAAC;YACtE,GAAG,qCAAqC,CAAC,0BAA0B,CAAC;YACpE,IAAI,EAAE,eAAe;SACtB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,kCAAkC,CAChC,0BAA+C;QAE/C,OAAO;YACL,cAAc,EAAE,SAAS,CACvB,0BAA0B,CAAC,gBAAgB,CAAC,EAC5C,gBAAgB,CACjB,CAAC,IAAI,EAAE;YACR,WAAW,EAAE,SAAS,CAAC,0BAA0B,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE;YACvF,GAAG,6BAA6B,CAAC,0BAA0B,CAAC;YAC5D,IAAI,EAAE,OAAO;SACd,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,0CAA0C,CACxC,0BAA+C;QAE/C,OAAO;YACL,GAAG,IAAI,CAAC,kCAAkC,CAAC,0BAA0B,CAAC;YACtE,GAAG,qCAAqC,CAAC,0BAA0B,CAAC;YACpE,IAAI,EAAE,eAAe;SACtB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,oCAAoC,CAClC,0BAA+C;QAE/C,OAAO;YACL,QAAQ,EAAE,SAAS,CAAC,0BAA0B,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE;YAC9E,MAAM,EAAE,SAAS,CAAC,0BAA0B,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE;YACxE,IAAI,EAAE,SAAS,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;YAClE,GAAG,6BAA6B,CAAC,0BAA0B,CAAC;YAC5D,IAAI,EAAE,SAAS;SAChB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,4CAA4C,CAC1C,0BAA+C;QAE/C,OAAO;YACL,GAAG,IAAI,CAAC,oCAAoC,CAAC,0BAA0B,CAAC;YACxE,GAAG,qCAAqC,CAAC,0BAA0B,CAAC;YACpE,IAAI,EAAE,iBAAiB;SACxB,CAAC;IACJ,CAAC;IACD;;;OAGG;IACH,kCAAkC,CAChC,0BAA+C;QAE/C,OAAO;YACL,mBAAmB,EAAE,SAAS,CAC5B,0BAA0B,CAAC,qBAAqB,CAAC,EACjD,qBAAqB,CACtB,CAAC,IAAI,EAAE;YACR,GAAG,6BAA6B,CAAC,0BAA0B,CAAC;YAC5D,IAAI,EAAE,OAAO;SACd,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,0CAA0C,CACxC,0BAA+C;QAE/C,OAAO;YACL,GAAG,IAAI,CAAC,kCAAkC,CAAC,0BAA0B,CAAC;YACtE,GAAG,qCAAqC,CAAC,0BAA0B,CAAC;YACpE,IAAI,EAAE,eAAe;SACtB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,gCAAgC,CAC9B,0BAA+C;QAE/C,OAAO;YACL,iBAAiB,EAAE,SAAS,CAC1B,0BAA0B,CAAC,mBAAmB,CAAC,EAC/C,mBAAmB,CACpB,CAAC,IAAI,EAAE;YACR,GAAG,6BAA6B,CAAC,0BAA0B,CAAC;YAC5D,IAAI,EAAE,KAAK;SACZ,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,wCAAwC,CACtC,0BAA+C;QAE/C,OAAO;YACL,GAAG,IAAI,CAAC,gCAAgC,CAAC,0BAA0B,CAAC;YACpE,GAAG,qCAAqC,CAAC,0BAA0B,CAAC;YACpE,IAAI,EAAE,aAAa;SACpB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,iCAAiC,CAC/B,0BAA+C;QAE/C,OAAO;YACL,UAAU,EAAE,SAAS,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC,IAAI,EAAE;YACpF,GAAG,6BAA6B,CAAC,0BAA0B,CAAC;YAC5D,IAAI,EAAE,MAAM;SACb,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,yCAAyC,CACvC,0BAA+C;QAE/C,OAAO;YACL,WAAW,EAAE,qBAAqB,CAAC,0BAA0B,CAAC,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;YAC7F,GAAG,IAAI,CAAC,oCAAoC,CAAC,0BAA0B,CAAC;YACxE,GAAG,qCAAqC,CAAC,0BAA0B,CAAC;YACpE,IAAI,EAAE,cAAc;SACrB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,mCAAmC,CACjC,0BAA+C;QAE/C,OAAO;YACL,oBAAoB,EAAE,SAAS,CAC7B,0BAA0B,CAAC,sBAAsB,CAAC,EAClD,sBAAsB,CACvB,CAAC,IAAI,EAAE;YACR,GAAG,6BAA6B,CAAC,0BAA0B,CAAC;YAC5D,IAAI,EAAE,QAAQ;SACf,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,2CAA2C,CACzC,0BAA+C;QAE/C,OAAO;YACL,GAAG,IAAI,CAAC,mCAAmC,CAAC,0BAA0B,CAAC;YACvE,GAAG,qCAAqC,CAAC,0BAA0B,CAAC;YACpE,IAAI,EAAE,gBAAgB;SACvB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,oCAAoC,CAClC,0BAA+C;QAE/C,OAAO;YACL,UAAU,EAAE,SAAS,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC,IAAI,EAAE;YACpF,GAAG,6BAA6B,CAAC,0BAA0B,CAAC;YAC5D,IAAI,EAAE,SAAS;SAChB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,4CAA4C,CAC1C,0BAA+C;QAE/C,OAAO;YACL,UAAU,EAAE,qBAAqB,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;YAC1F,GAAG,IAAI,CAAC,oCAAoC,CAAC,0BAA0B,CAAC;YACxE,GAAG,qCAAqC,CAAC,0BAA0B,CAAC;YACpE,IAAI,EAAE,iBAAiB;SACxB,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,qBAAqB,CAC5B,KAA+E;IAE/E,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACvE,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,6BAA6B,CACpC,0BAA+C;IAE/C,IAAI,aAAiD,CAAC;IACtD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,0BAA0B,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC3F,IAAI,QAAQ,EAAE,CAAC;QACb,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAA2B,CAAC;IACjE,CAAC;IAED,OAAO;QACL,cAAc,EAAE,oBAAoB,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE;QAC1F,cAAc,EAAE,kBAAkB,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;QAChF,IAAI,EAAE,oBAAoB,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE;QACtE,IAAI,EAAE,kBAAkB,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;QAC5D,aAAa,EAAE,aAAa;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,qCAAqC,CAC5C,0BAA+C;IAE/C,OAAO;QACL,YAAY,EAAE,SAAS,CAAC,0BAA0B,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC,CAAC,IAAI,EAAE;QAC1F,YAAY,EAAE,oBAAoB,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE;QACtF,GAAG,6BAA6B,CAAC,0BAA0B,CAAC;KAC7D,CAAC;AACJ,CAAC;AA4ID;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAsC;IAClF,gCAAgC,CAAC,WAAoC;QACnE,MAAM,QAAQ,GAAG,GAAG,WAAW,CAAC,IAAI,yBAAyB,CAAC;QAC9D,MAAM,UAAU,GAAG,YAAY,QAAQ,EAAE,CAAC;QAE1C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAqD,CAAC,CAAC,IAAI,CAAC,IAAI,CAE5D,CAAC;QACzB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,SAAS,CAAC,sBAAsB,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAwB,CAAC;QAChE,MAAM,aAAa,GAAG,yBAAyB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAExE,OAAO,YAAY,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED;;;OAGG;IACH,mCAAmC,CACjC,WAAqD;QAErD,OAAO;YACL,GAAG,gCAAgC,CAAC,WAAW,CAAC;YAChD,iBAAiB,EAAE,SAAS,CAAC,WAAW,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,IAAI,EAAE;SACxF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,2CAA2C,CACzC,WAA6D;QAE7D,OAAO;YACL,GAAG,IAAI,CAAC,mCAAmC,CAAC,WAAW,CAAC;YACxD,GAAG,wCAAwC,CAAC,WAAW,CAAC;SACzD,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,qCAAqC,CACnC,WAAuD;QAEvD,OAAO;YACL,GAAG,gCAAgC,CAAC,WAAW,CAAC;YAChD,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE;SACtE,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,6CAA6C,CAC3C,WAAiD;QAEjD,IAAI,WAA4C,CAAC;QACjD,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;YAC5B,WAAW,GAAG;gBACZ,UAAU,EAAE,EAAE;aACf,CAAC;YAEF,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1D,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;oBAC7B,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;oBACrB,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;iBAC9C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO;YACL,GAAG,IAAI,CAAC,qCAAqC,CAAC,WAAW,CAAC;YAC1D,GAAG,wCAAwC,CAAC,WAAW,CAAC;YACxD,MAAM,EAAE,oBAAoB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE;YACxD,WAAW,EAAE,WAAW;SACzB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,qCAAqC,CACnC,WAAuD;QAEvD,OAAO;YACL,GAAG,gCAAgC,CAAC,WAAW,CAAC;YAChD,cAAc,EAAE,SAAS,CAAC,WAAW,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC,IAAI,EAAE;YAC9E,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE;SACtE,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,6CAA6C,CAC3C,WAA+D;QAE/D,OAAO;YACL,GAAG,IAAI,CAAC,qCAAqC,CAAC,WAAW,CAAC;YAC1D,GAAG,wCAAwC,CAAC,WAAW,CAAC;SACzD,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,uCAAuC,CACrC,WAAyD;QAEzD,OAAO;YACL,GAAG,gCAAgC,CAAC,WAAW,CAAC;YAChD,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,IAAI,EAAE,WAAW,CAAC,IAAI;SACvB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,+CAA+C,CAC7C,WAAiE;QAEjE,OAAO;YACL,GAAG,IAAI,CAAC,uCAAuC,CAAC,WAAW,CAAC;YAC5D,GAAG,wCAAwC,CAAC,WAAW,CAAC;SACzD,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,qCAAqC,CACnC,WAAuD;QAEvD,OAAO;YACL,GAAG,gCAAgC,CAAC,WAAW,CAAC;YAChD,mBAAmB,EAAE,SAAS,CAAC,WAAW,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,IAAI,EAAE;SAC5F,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,6CAA6C,CAC3C,WAA+D;QAE/D,OAAO;YACL,GAAG,IAAI,CAAC,qCAAqC,CAAC,WAAW,CAAC;YAC1D,GAAG,wCAAwC,CAAC,WAAW,CAAC;SACzD,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,mCAAmC,CACjC,WAAqD;QAErD,OAAO;YACL,GAAG,gCAAgC,CAAC,WAAW,CAAC;YAChD,iBAAiB,EAAE,SAAS,CAAC,WAAW,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,IAAI,EAAE;SACxF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,2CAA2C,CACzC,WAA6D;QAE7D,OAAO;YACL,GAAG,IAAI,CAAC,mCAAmC,CAAC,WAAW,CAAC;YACxD,GAAG,wCAAwC,CAAC,WAAW,CAAC;SACzD,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,oCAAoC,CAClC,WAAsD;QAEtD,OAAO;YACL,GAAG,gCAAgC,CAAC,WAAW,CAAC;YAChD,UAAU,EAAE,WAAW,CAAC,UAAU;SACnC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,4CAA4C,CAC1C,WAA8D;QAE9D,IAAI,WAA4C,CAAC;QACjD,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;YAC5B,WAAW,GAAG;gBACZ,UAAU,EAAE,EAAE;aACf,CAAC;YAEF,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1D,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;oBAC7B,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;oBACrB,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;iBAC9C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO;YACL,GAAG,IAAI,CAAC,oCAAoC,CAAC,WAAW,CAAC;YACzD,GAAG,wCAAwC,CAAC,WAAW,CAAC;YACxD,WAAW,EAAE,WAAW;SACzB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,sCAAsC,CACpC,WAAwD;QAExD,OAAO;YACL,GAAG,gCAAgC,CAAC,WAAW,CAAC;YAChD,oBAAoB,EAAE,SAAS,CAC7B,WAAW,CAAC,oBAAoB,EAChC,sBAAsB,CACvB,CAAC,IAAI,EAAE;SACT,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,8CAA8C,CAC5C,WAAgE;QAEhE,OAAO;YACL,GAAG,IAAI,CAAC,sCAAsC,CAAC,WAAW,CAAC;YAC3D,GAAG,wCAAwC,CAAC,WAAW,CAAC;SACzD,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,uCAAuC,CACrC,WAAyD;QAEzD,OAAO;YACL,GAAG,gCAAgC,CAAC,WAAW,CAAC;YAChD,UAAU,EAAE,WAAW,CAAC,UAAU;SACnC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,+CAA+C,CAC7C,WAAiE;QAEjE,IAAI,UAA2C,CAAC;QAChD,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;YAC3B,UAAU,GAAG;gBACX,SAAS,EAAE,EAAE;aACd,CAAC;YAEF,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzD,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;oBAC3B,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;oBACrB,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;iBAC7C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO;YACL,GAAG,IAAI,CAAC,uCAAuC,CAAC,WAAW,CAAC;YAC5D,GAAG,wCAAwC,CAAC,WAAW,CAAC;YACxD,UAAU,EAAE,UAAU;SACvB,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,SAAS,gCAAgC,CACvC,WAAwD;IAExD,IAAI,IAAwB,CAAC;IAC7B,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,aAAiC,CAAC;IACtC,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;QAC9B,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO;QACL,cAAc,EAAE,oBAAoB,CAAC,WAAW,CAAC,cAAc,CAAC;QAChE,IAAI,EAAE,IAAI;QACV,aAAa,EAAE,aAAa;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,wCAAwC,CAC/C,WAA4C;IAE5C,OAAO;QACL,YAAY,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,YAAY,EAAE;QACnD,YAAY,EAAE,oBAAoB,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE;KACrE,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n AdmRegistrationDescription,\n AdmTemplateRegistrationDescription,\n AppleRegistrationDescription,\n AppleTemplateRegistrationDescription,\n BaiduRegistrationDescription,\n BaiduTemplateRegistrationDescription,\n BrowserRegistrationDescription,\n BrowserTemplateRegistrationDescription,\n GcmRegistrationDescription,\n GcmTemplateRegistrationDescription,\n FcmV1RegistrationDescription,\n FcmV1TemplateRegistrationDescription,\n MpnsRegistrationDescription,\n MpnsTemplateRegistrationDescription,\n RegistrationDescription,\n RegistrationDescriptionCommon,\n TemplateRegistrationDescription,\n XiaomiRegistrationDescription,\n XiaomiTemplateRegistrationDescription,\n WindowsRegistrationDescription,\n WindowsTemplateRegistrationDescription,\n} from \"../models/registration.js\";\nimport {\n getDateOrUndefined,\n getString,\n getStringOrUndefined,\n getTagsOrUndefined,\n isDefined,\n} from \"../utils/utils.js\";\nimport { parseXML, stringifyXML } from \"@azure/core-xml\";\nimport { RestError } from \"@azure/core-rest-pipeline\";\nimport { serializeToAtomXmlRequest } from \"../utils/xmlUtils.js\";\n\n/**\n * Represents a registration description parser from the incoming XML.\n */\nexport interface RegistrationDescriptionParser {\n /**\n * @internal\n * Creates a registration type from the incoming entry.\n */\n parseRegistrationEntry: (bodyText: string) => Promise<RegistrationDescription>;\n /**\n * @internal\n * Creates a list of registrations from an incoming ATOM XML Feed.\n */\n parseRegistrationFeed: (bodyText: string) => Promise<RegistrationDescription[]>;\n /**\n * @internal\n * Creates an Amazon Device Messaging (ADM) registration description from the incoming parsed XML.\n */\n createAdmRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AdmRegistrationDescription;\n /**\n * @internal\n * Creates an Amazon Device Messaging (ADM) template registration description from the incoming parsed XML.\n */\n createAdmTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AdmTemplateRegistrationDescription;\n /**\n * @internal\n * Creates an Apple Platform Notification Services (APNs) registration description from the incoming parsed XML.\n */\n createAppleRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AppleRegistrationDescription;\n /**\n * @internal\n * Creates an Apple Platform Notification Services (APNs) template registration description from the incoming parsed XML.\n */\n createAppleTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => AppleTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Baidu registration description from the incoming parsed XML.\n */\n createBaiduRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BaiduRegistrationDescription;\n /**\n * @internal\n * Creates a Baidu template registration description from the incoming parsed XML.\n */\n createBaiduTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BaiduTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Web Push registration description from the incoming parsed XML.\n */\n createBrowserRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BrowserRegistrationDescription;\n /**\n * @internal\n * Creates a Web Push template registration description from the incoming parsed XML.\n */\n createBrowserTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => BrowserTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Firebase V1 Cloud Messaging (FCM) registration description from the incoming parsed XML.\n */\n createFcmV1RegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => FcmV1RegistrationDescription;\n /**\n * @internal\n * Creates a Firebase V1 Cloud Messaging (FCM) template registration description from the incoming parsed XML.\n */\n createFcmV1TemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => FcmV1TemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Google Cloud Messaging (GCM) registration description from the incoming parsed XML.\n */\n createGcmRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => GcmRegistrationDescription;\n /**\n * @internal\n * Creates a Google Cloud Messaging (GCM) template registration description from the incoming parsed XML.\n */\n createGcmTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => GcmTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Microsoft Phone Notification Services (MPNS) registration description from the incoming parsed XML.\n */\n createMpnsRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => MpnsRegistrationDescription;\n /**\n * @internal\n * Creates a Microsoft Phone Notification Services (MPNS) template registration description from the incoming parsed XML.\n */\n createMpnsTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => MpnsTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Xiaomi registration description from the incoming parsed XML.\n */\n createXiaomiRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => XiaomiRegistrationDescription;\n /**\n * @internal\n * Creates a Xiaomi template registration description from the incoming parsed XML.\n */\n createXiaomiTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => XiaomiTemplateRegistrationDescription;\n /**\n * @internal\n * Creates a Windows Notification Services (WNS) registration description from the incoming parsed XML.\n */\n createWindowsRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => WindowsRegistrationDescription;\n /**\n * @internal\n * Creates a Windows Notification Services (WNS) template registration description from the incoming parsed XML.\n */\n createWindowsTemplateRegistrationDescription: (\n rawRegistrationDescription: Record<string, any>,\n ) => WindowsTemplateRegistrationDescription;\n}\n\nexport const registrationDescriptionParser: RegistrationDescriptionParser = {\n /**\n * @internal\n * Creates a registration type from the incoming entry.\n */\n async parseRegistrationEntry(bodyText: string): Promise<RegistrationDescription> {\n const xml = await parseXML(bodyText, { includeRoot: true });\n delete xml.entry.content[\"$\"];\n const keyName = Object.keys(xml.entry.content)[0];\n const content = xml.entry.content[keyName];\n const methodName = `create${keyName}`;\n\n const method = this[methodName as keyof RegistrationDescriptionParser] as any;\n if (!methodName) {\n throw new RestError(`${keyName} is not a supported registration type`, { statusCode: 500 });\n }\n\n return method.call(this, content) as RegistrationDescription;\n },\n\n /**\n * @internal\n * Creates a list of registrations from an incoming ATOM XML Feed.\n */\n async parseRegistrationFeed(bodyText: string): Promise<RegistrationDescription[]> {\n const xml = await parseXML(bodyText, { includeRoot: true });\n const results: RegistrationDescription[] = [];\n if (!isDefined(xml.feed.entry)) {\n return results;\n }\n\n const entries = Array.isArray(xml.feed.entry) ? xml.feed.entry : [xml.feed.entry];\n\n for (const entry of entries) {\n delete entry.content[\"$\"];\n\n const keyName = Object.keys(entry.content)[0];\n const methodName = `create${keyName}`;\n const content = entry.content[keyName];\n const method = this[methodName as keyof RegistrationDescriptionParser] as any;\n if (!methodName) {\n throw new RestError(`${keyName} is not a supported registration type`, { statusCode: 500 });\n }\n\n results.push(method.call(this, content) as RegistrationDescription);\n }\n\n return results;\n },\n\n /**\n * @internal\n * Creates an ADM registration description from incoming XML property bag.\n */\n createAdmRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AdmRegistrationDescription {\n return {\n admRegistrationId: getString(\n rawRegistrationDescription[\"AdmRegistrationId\"],\n \"admRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Adm\",\n };\n },\n\n /**\n * @internal\n * Creates an ADM template registration description from incoming XML property bag.\n */\n createAdmTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AdmTemplateRegistrationDescription {\n return {\n ...this.createAdmRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"AdmTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates an Apple registration description from incoming XML property bag.\n */\n createAppleRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AppleRegistrationDescription {\n return {\n deviceToken: getString(rawRegistrationDescription[\"DeviceToken\"], \"deviceToken\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Apple\",\n };\n },\n\n /**\n * @internal\n * Creates an Apple template registration description from incoming XML property bag.\n */\n createAppleTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): AppleTemplateRegistrationDescription {\n return {\n priority: getStringOrUndefined(rawRegistrationDescription[\"Priority\"])?.trim() as \"10\" | \"5\",\n apnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"ApnsHeaders\"]?.[\"ApnsHeader\"]),\n ...this.createAppleRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"AppleTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Baidu registration description from incoming XML property bag.\n */\n createBaiduRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BaiduRegistrationDescription {\n return {\n baiduChannelId: getString(\n rawRegistrationDescription[\"BaiduChannelId\"],\n \"baiduChannelId\",\n ).trim(),\n baiduUserId: getString(rawRegistrationDescription[\"BaiduUserId\"], \"baiduUserId\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Baidu\",\n };\n },\n\n /**\n * @internal\n * Creates a Baidu template registration description from incoming XML property bag.\n */\n createBaiduTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BaiduTemplateRegistrationDescription {\n return {\n ...this.createBaiduRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"BaiduTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Browser registration description from incoming XML property bag.\n */\n createBrowserRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BrowserRegistrationDescription {\n return {\n endpoint: getString(rawRegistrationDescription[\"Endpoint\"], \"endpoint\").trim(),\n p256dh: getString(rawRegistrationDescription[\"P256DH\"], \"p256dh\").trim(),\n auth: getString(rawRegistrationDescription[\"Auth\"], \"auth\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Browser\",\n };\n },\n\n /**\n * @internal\n * Creates a Browser template registration description from incoming XML property bag.\n */\n createBrowserTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): BrowserTemplateRegistrationDescription {\n return {\n ...this.createBrowserRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"BrowserTemplate\",\n };\n },\n /**\n * @internal\n * Creates an GCM registration description from incoming XML property bag.\n */\n createFcmV1RegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): FcmV1RegistrationDescription {\n return {\n fcmV1RegistrationId: getString(\n rawRegistrationDescription[\"FcmV1RegistrationId\"],\n \"fcmV1RegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"FcmV1\",\n };\n },\n\n /**\n * @internal\n * Creates an FCM template registration description from incoming XML property bag.\n */\n createFcmV1TemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): FcmV1TemplateRegistrationDescription {\n return {\n ...this.createFcmV1RegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"FcmV1Template\",\n };\n },\n\n /**\n * @internal\n * Creates an GCM registration description from incoming XML property bag.\n */\n createGcmRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): GcmRegistrationDescription {\n return {\n gcmRegistrationId: getString(\n rawRegistrationDescription[\"GcmRegistrationId\"],\n \"gcmRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Gcm\",\n };\n },\n\n /**\n * @internal\n * Creates an FCM template registration description from incoming XML property bag.\n */\n createGcmTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): GcmTemplateRegistrationDescription {\n return {\n ...this.createGcmRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"GcmTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows Phone registration description from incoming XML property bag.\n */\n createMpnsRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): MpnsRegistrationDescription {\n return {\n channelUri: getString(rawRegistrationDescription[\"ChannelUri\"], \"channelUri\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Mpns\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows Phone template registration description from incoming XML property bag.\n */\n createMpnsTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): MpnsTemplateRegistrationDescription {\n return {\n mpnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"MpnsHeaders\"]?.[\"MpnsHeader\"]),\n ...this.createWindowsRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"MpnsTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Xiaomi registration description from incoming XML property bag.\n */\n createXiaomiRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): XiaomiRegistrationDescription {\n return {\n xiaomiRegistrationId: getString(\n rawRegistrationDescription[\"XiaomiRegistrationId\"],\n \"xiaomiRegistrationId\",\n ).trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Xiaomi\",\n };\n },\n\n /**\n * @internal\n * Creates a Xiaomi template registration description from incoming XML property bag.\n */\n createXiaomiTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): XiaomiTemplateRegistrationDescription {\n return {\n ...this.createXiaomiRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"XiaomiTemplate\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows registration description from incoming XML property bag.\n */\n createWindowsRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): WindowsRegistrationDescription {\n return {\n channelUri: getString(rawRegistrationDescription[\"ChannelUri\"], \"channelUri\").trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n kind: \"Windows\",\n };\n },\n\n /**\n * @internal\n * Creates a Windows template registration description from incoming XML property bag.\n */\n createWindowsTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n ): WindowsTemplateRegistrationDescription {\n return {\n wnsHeaders: getHeadersOrUndefined(rawRegistrationDescription[\"WnsHeaders\"]?.[\"WnsHeader\"]),\n ...this.createWindowsRegistrationDescription(rawRegistrationDescription),\n ...createTemplateRegistrationDescription(rawRegistrationDescription),\n kind: \"WindowsTemplate\",\n };\n },\n};\n\nfunction getHeadersOrUndefined(\n value?: { Header: string; Value: string }[] | { Header: string; Value: string },\n): Record<string, string> | undefined {\n if (!isDefined(value)) {\n return undefined;\n }\n\n const headerObj: Record<string, string> = {};\n for (const { Header, Value } of Array.isArray(value) ? value : [value]) {\n headerObj[Header] = Value;\n }\n\n return headerObj;\n}\n\nfunction createRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n): Omit<RegistrationDescriptionCommon, \"kind\"> {\n let pushVariables: Record<string, string> | undefined;\n const unparsed = getStringOrUndefined(rawRegistrationDescription[\"PushVariables\"])?.trim();\n if (unparsed) {\n pushVariables = JSON.parse(unparsed) as Record<string, string>;\n }\n\n return {\n registrationId: getStringOrUndefined(rawRegistrationDescription[\"RegistrationId\"])?.trim(),\n expirationTime: getDateOrUndefined(rawRegistrationDescription[\"ExpirationTime\"]),\n etag: getStringOrUndefined(rawRegistrationDescription[\"ETag\"])?.trim(),\n tags: getTagsOrUndefined(rawRegistrationDescription[\"Tags\"]),\n pushVariables: pushVariables,\n };\n}\n\nfunction createTemplateRegistrationDescription(\n rawRegistrationDescription: Record<string, any>,\n): TemplateRegistrationDescription {\n return {\n bodyTemplate: getString(rawRegistrationDescription[\"BodyTemplate\"], \"bodyTemplate\").trim(),\n templateName: getStringOrUndefined(rawRegistrationDescription[\"TemplateName\"])?.trim(),\n ...createRegistrationDescription(rawRegistrationDescription),\n };\n}\n\n/**\n * @internal\n * Represents a serializer for all registration descriptions.\n */\nexport interface RegistrationDescriptionSerializer {\n /**\n * @internal\n * Serializes a registration description into an ATOM XML string.\n */\n serializeRegistrationDescription(description: RegistrationDescription): string;\n /**\n * @internal\n * Serializes an Amazon Device Messaging (ADM) registration description into an XML object for serialization.\n */\n serializeAdmRegistrationDescription(\n description: Omit<AdmRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Amazon Device Messaging (ADM) template registration description into an XML object for serialization.\n */\n serializeAdmTemplateRegistrationDescription(\n description: Omit<AdmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Apple registration description into an XML object for serialization.\n */\n serializeAppleRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes an Apple template registration description into an XML object for serialization.\n */\n serializeAppleTemplateRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Baidu registration description into an XML object for serialization.\n */\n serializeBaiduRegistrationDescription(\n description: Omit<BaiduRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Baidu template registration description into an XML object for serialization.\n */\n serializeBaiduTemplateRegistrationDescription(\n description: Omit<BaiduTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Web Push registration description into an XML object for serialization.\n */\n serializeBrowserRegistrationDescription(\n description: Omit<BrowserRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Web Push template registration description into an XML object for serialization.\n */\n serializeBrowserTemplateRegistrationDescription(\n description: Omit<BrowserTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) registration description into an XML object for serialization.\n */\n serializeFcmV1RegistrationDescription(\n description: Omit<FcmV1RegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) template registration description into an XML object for serialization.\n */\n serializeFcmV1TemplateRegistrationDescription(\n description: Omit<FcmV1TemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) registration description into an XML object for serialization.\n */\n serializeGcmRegistrationDescription(\n description: Omit<GcmRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Google Cloud Messaging (GCM) template registration description into an XML object for serialization.\n */\n serializeGcmTemplateRegistrationDescription(\n description: Omit<GcmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Phone registration description into an XML object for serialization.\n */\n serializeMpnsRegistrationDescription(\n description: Omit<MpnsRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Phone template registration description into an XML object for serialization.\n */\n serializeMpnsTemplateRegistrationDescription(\n description: Omit<MpnsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Xiaomi registration description into an XML object for serialization.\n */\n serializeXiaomiRegistrationDescription(\n description: Omit<XiaomiRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Xiaomi template registration description into an XML object for serialization.\n */\n serializeXiaomiTemplateRegistrationDescription(\n description: Omit<XiaomiTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Notification Services (WNS) registration description into an XML object for serialization.\n */\n serializeWindowsRegistrationDescription(\n description: Omit<WindowsRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n /**\n * @internal\n * Serializes a Windows Notification Services (WNS) template registration description into an XML object for serialization.\n */\n serializeWindowsTemplateRegistrationDescription(\n description: Omit<WindowsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any>;\n}\n\n/**\n * Represents a RegistrationDescription serializer.\n */\nexport const registrationDescriptionSerializer: RegistrationDescriptionSerializer = {\n serializeRegistrationDescription(description: RegistrationDescription): string {\n const rootName = `${description.kind}RegistrationDescription`;\n const methodName = `serialize${rootName}`;\n\n const method = this[methodName as keyof RegistrationDescriptionSerializer].bind(this) as (\n description: RegistrationDescription,\n ) => Record<string, any>;\n if (!isDefined(method)) {\n throw new RestError(`Undefined platform ${description.kind}`, { statusCode: 400 });\n }\n\n const registration = method(description) as Record<string, any>;\n const requestObject = serializeToAtomXmlRequest(rootName, registration);\n\n return stringifyXML(requestObject, { rootName: \"entry\" });\n },\n\n /**\n * @internal\n * Serializes an existing ADM registration description to an object for serialization.\n */\n serializeAdmRegistrationDescription(\n description: Omit<AdmRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n AdmRegistrationId: getString(description.admRegistrationId, \"admRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing ADM template registration description to an object for serialization.\n */\n serializeAdmTemplateRegistrationDescription(\n description: Omit<AdmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeAdmRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Apple registration description to an object for serialization.\n */\n serializeAppleRegistrationDescription(\n description: Omit<AppleRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n DeviceToken: getString(description.deviceToken, \"deviceToken\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Apple template registration description to an object for serialization.\n */\n serializeAppleTemplateRegistrationDescription(\n description: AppleTemplateRegistrationDescription,\n ): Record<string, any> {\n let apnsHeaders: Record<string, any> | undefined;\n if (description.apnsHeaders) {\n apnsHeaders = {\n ApnsHeader: [],\n };\n\n for (const header of Object.keys(description.apnsHeaders)) {\n apnsHeaders[\"ApnsHeader\"].push({\n Header: header.trim(),\n Value: description.apnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeAppleRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n Expiry: getStringOrUndefined(description.expiry)?.trim(),\n ApnsHeaders: apnsHeaders,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Baidu registration description to an object for serialization.\n */\n serializeBaiduRegistrationDescription(\n description: Omit<BaiduRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n BaiduChannelId: getString(description.baiduChannelId, \"baiduChannelId\").trim(),\n BaiduUserId: getString(description.baiduUserId, \"baiduUserId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Baidu template registration description to an object for serialization.\n */\n serializeBaiduTemplateRegistrationDescription(\n description: Omit<BaiduTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeBaiduRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Browser registration description to an object for serialization.\n */\n serializeBrowserRegistrationDescription(\n description: Omit<BrowserRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n Endpoint: description.endpoint,\n P256DH: description.p256dh,\n Auth: description.auth,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Browser template registration description to an object for serialization.\n */\n serializeBrowserTemplateRegistrationDescription(\n description: Omit<BrowserTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeBrowserRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing FCM V1 registration description to an object for serialization.\n */\n serializeFcmV1RegistrationDescription(\n description: Omit<FcmV1RegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n FcmV1RegistrationId: getString(description.fcmV1RegistrationId, \"fcmRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing FCM V1 template registration description to an object for serialization.\n */\n serializeFcmV1TemplateRegistrationDescription(\n description: Omit<FcmV1TemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeFcmV1RegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing GCM registration description to an object for serialization.\n */\n serializeGcmRegistrationDescription(\n description: Omit<GcmRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n GcmRegistrationId: getString(description.gcmRegistrationId, \"gcmRegistrationId\").trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing GCM template registration description to an object for serialization.\n */\n serializeGcmTemplateRegistrationDescription(\n description: Omit<GcmTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeGcmRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * @deprecated Windows Phone is no longer supported.\n * Serializes an existing MPNS registration description to an object for serialization.\n */\n serializeMpnsRegistrationDescription(\n description: Omit<MpnsRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n ChannelUri: description.channelUri,\n };\n },\n\n /**\n * @internal\n * @deprecated Windows Phone is no longer supported.\n * Serializes an existing MPNS template registration description to an object for serialization.\n */\n serializeMpnsTemplateRegistrationDescription(\n description: Omit<MpnsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n let mpnsHeaders: Record<string, any> | undefined;\n if (description.mpnsHeaders) {\n mpnsHeaders = {\n MpnsHeader: [],\n };\n\n for (const header of Object.keys(description.mpnsHeaders)) {\n mpnsHeaders[\"MpnsHeader\"].push({\n Header: header.trim(),\n Value: description.mpnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeMpnsRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n MpnsHeaders: mpnsHeaders,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Xiaomi registration description to an object for serialization.\n */\n serializeXiaomiRegistrationDescription(\n description: Omit<XiaomiRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n XiaomiRegistrationId: getString(\n description.xiaomiRegistrationId,\n \"xiaomiRegistrationId\",\n ).trim(),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Xiaomi template registration description to an object for serialization.\n */\n serializeXiaomiTemplateRegistrationDescription(\n description: Omit<XiaomiTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...this.serializeXiaomiRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n };\n },\n\n /**\n * @internal\n * Serializes an existing Windows registration description to an object for serialization.\n */\n serializeWindowsRegistrationDescription(\n description: Omit<WindowsRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n return {\n ...serializeRegistrationDescription(description),\n ChannelUri: description.channelUri,\n };\n },\n\n /**\n * @internal\n * Serializes an existing Windows template registration description to an object for serialization.\n */\n serializeWindowsTemplateRegistrationDescription(\n description: Omit<WindowsTemplateRegistrationDescription, \"kind\">,\n ): Record<string, any> {\n let wnsHeaders: Record<string, any> | undefined;\n if (description.wnsHeaders) {\n wnsHeaders = {\n WnsHeader: [],\n };\n\n for (const header of Object.keys(description.wnsHeaders)) {\n wnsHeaders[\"WnsHeader\"].push({\n Header: header.trim(),\n Value: description.wnsHeaders[header].trim(),\n });\n }\n }\n\n return {\n ...this.serializeWindowsRegistrationDescription(description),\n ...serializeTemplateRegistrationDescription(description),\n WnsHeaders: wnsHeaders,\n };\n },\n};\n\nfunction serializeRegistrationDescription(\n description: Omit<RegistrationDescriptionCommon, \"kind\">,\n): Record<string, any> {\n let tags: string | undefined;\n if (description.tags) {\n tags = description.tags.join(\",\");\n }\n\n let pushVariables: string | undefined;\n if (description.pushVariables) {\n pushVariables = JSON.stringify(description.pushVariables);\n }\n\n return {\n RegistrationId: getStringOrUndefined(description.registrationId),\n Tags: tags,\n PushVariables: pushVariables,\n };\n}\n\nfunction serializeTemplateRegistrationDescription(\n description: TemplateRegistrationDescription,\n): Record<string, any> {\n return {\n BodyTemplate: { __cdata: description.bodyTemplate },\n TemplateName: getStringOrUndefined(description.templateName)?.trim(),\n };\n}\n"]}
|
package/package.json
CHANGED