@rpcbase/server 0.639.0 → 0.640.0
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/accountDeletion.d.ts.map +1 -1
- package/dist/applyRouteLoaders.d.ts.map +1 -1
- package/dist/{email-6gJ8ibKp.js → email-CXD08Xm7.js} +368 -281
- package/dist/email-CXD08Xm7.js.map +1 -0
- package/dist/fileReferences-Dcv9PTqD.js.map +1 -1
- package/dist/{handler-Dy_L6_-U.js → handler-Bwmvm0pQ.js} +5 -4
- package/dist/handler-Bwmvm0pQ.js.map +1 -0
- package/dist/{handler-DOLNpMkW.js → handler-CMEIng_C.js} +2 -2
- package/dist/handler-CMEIng_C.js.map +1 -0
- package/dist/{handler-DlRmqucR.js → handler-Cb8opBxn.js} +2 -2
- package/dist/handler-Cb8opBxn.js.map +1 -0
- package/dist/{handler-BkGfOJ1l.js → handler-F-JQoj8x.js} +5 -4
- package/dist/handler-F-JQoj8x.js.map +1 -0
- package/dist/index.js +4341 -2307
- package/dist/index.js.map +1 -1
- package/dist/initServer.d.ts.map +1 -1
- package/dist/node-C1tH2rT4.js.map +1 -1
- package/dist/notifications.js +2 -2
- package/dist/queryWindow-RHVy3D0L.js.map +1 -1
- package/dist/rts/index.js +1 -1
- package/dist/rts/index.js.map +1 -1
- package/dist/{schemas-LLeSMkcz.js → schemas-BzNluG2q.js} +2393 -1137
- package/dist/schemas-BzNluG2q.js.map +1 -0
- package/dist/shared-B1VLaHsk.js.map +1 -1
- package/dist/uploads/api/file-uploads/fileReferences.d.ts +3 -2
- package/dist/uploads/api/file-uploads/fileReferences.d.ts.map +1 -1
- package/dist/uploads/api/file-uploads/imageVariantsPostProcessor.d.ts.map +1 -1
- package/dist/uploads/api/file-uploads/shared.d.ts +2 -2
- package/dist/uploads/api/file-uploads/shared.d.ts.map +1 -1
- package/dist/uploads/api/files/handlers/deleteFile.d.ts.map +1 -1
- package/dist/uploads/api/files/handlers/getFile.d.ts.map +1 -1
- package/dist/uploads/worker.js +3 -2
- package/dist/uploads/worker.js.map +1 -1
- package/dist/uploads.js +2 -2
- package/package.json +24 -14
- package/dist/email-6gJ8ibKp.js.map +0 -1
- package/dist/handler-BkGfOJ1l.js.map +0 -1
- package/dist/handler-DOLNpMkW.js.map +0 -1
- package/dist/handler-DlRmqucR.js.map +0 -1
- package/dist/handler-Dy_L6_-U.js.map +0 -1
- package/dist/schemas-LLeSMkcz.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-CXD08Xm7.js","names":["exports","Webhook"],"sources":["../../../node_modules/postal-mime/src/decode-strings.js","../../../node_modules/postal-mime/src/pass-through-decoder.js","../../../node_modules/postal-mime/src/base64-decoder.js","../../../node_modules/postal-mime/src/qp-decoder.js","../../../node_modules/postal-mime/src/mime-node.js","../../../node_modules/postal-mime/src/html-entities.js","../../../node_modules/postal-mime/src/text-format.js","../../../node_modules/postal-mime/src/address-parser.js","../../../node_modules/postal-mime/src/base64-encoder.js","../../../node_modules/postal-mime/src/postal-mime.js","../../../node_modules/@stablelib/base64/lib/base64.js","../../../node_modules/fast-sha256/sha256.js","../../../node_modules/standardwebhooks/dist/timing_safe_equal.js","../../../node_modules/standardwebhooks/dist/index.js","../../../node_modules/resend/dist/index.mjs","../src/email.ts"],"sourcesContent":["export const textEncoder = new TextEncoder();\n\nconst base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst base64Lookup = new Uint8Array(256);\nfor (let i = 0; i < base64Chars.length; i++) {\n base64Lookup[base64Chars.charCodeAt(i)] = i;\n}\n\nexport function decodeBase64(base64) {\n let bufferLength = Math.ceil(base64.length / 4) * 3;\n const len = base64.length;\n\n let p = 0;\n\n if (base64.length % 4 === 3) {\n bufferLength--;\n } else if (base64.length % 4 === 2) {\n bufferLength -= 2;\n } else if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arrayBuffer = new ArrayBuffer(bufferLength);\n const bytes = new Uint8Array(arrayBuffer);\n\n for (let i = 0; i < len; i += 4) {\n let encoded1 = base64Lookup[base64.charCodeAt(i)];\n let encoded2 = base64Lookup[base64.charCodeAt(i + 1)];\n let encoded3 = base64Lookup[base64.charCodeAt(i + 2)];\n let encoded4 = base64Lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arrayBuffer;\n}\n\n// Charset aliases that the WHATWG Encoding Standard (and thus TextDecoder in\n// browsers and Workers) does not recognize, but that map cleanly to a supported\n// encoding. Node's ICU-backed TextDecoder resolves these natively; strict WHATWG\n// runtimes would otherwise throw and fall back to windows-1252, emitting mojibake.\n// eg. Hebrew bodies declared as the logical (iso-8859-8-i) or explicit (iso-8859-8-e)\n// variants decode to the same code points as iso-8859-8.\nconst charsetAliases = new Map([\n ['iso-8859-8-i', 'iso-8859-8'],\n ['iso-8859-8-e', 'iso-8859-8']\n]);\n\nexport function getDecoder(charset) {\n charset = (charset || 'utf8').trim().toLowerCase();\n charset = charsetAliases.get(charset) || charset;\n\n let decoder;\n\n try {\n decoder = new TextDecoder(charset);\n } catch (err) {\n decoder = new TextDecoder('windows-1252');\n }\n\n return decoder;\n}\n\n/**\n * Converts a Blob into an ArrayBuffer\n * @param {Blob} blob Blob to convert\n * @returns {ArrayBuffer} Converted value\n */\nexport async function blobToArrayBuffer(blob) {\n if ('arrayBuffer' in blob) {\n return await blob.arrayBuffer();\n }\n\n const fr = new FileReader();\n\n return new Promise((resolve, reject) => {\n fr.onload = function (e) {\n resolve(e.target.result);\n };\n\n fr.onerror = function (e) {\n reject(fr.error);\n };\n\n fr.readAsArrayBuffer(blob);\n });\n}\n\nexport function getHex(c) {\n if (\n (c >= 0x30 /* 0 */ && c <= 0x39) /* 9 */ ||\n (c >= 0x61 /* a */ && c <= 0x66) /* f */ ||\n (c >= 0x41 /* A */ && c <= 0x46) /* F */\n ) {\n return String.fromCharCode(c);\n }\n return false;\n}\n\n/**\n * Decode a complete mime word encoded string\n *\n * @param {String} str Mime word encoded string\n * @return {String} Decoded unicode string\n */\nexport function decodeWord(charset, encoding, str) {\n // RFC2231 added language tag to the encoding\n // see: https://tools.ietf.org/html/rfc2231#section-5\n // this implementation silently ignores this tag\n let splitPos = charset.indexOf('*');\n if (splitPos >= 0) {\n charset = charset.substr(0, splitPos);\n }\n\n encoding = encoding.toUpperCase();\n\n let byteStr;\n\n if (encoding === 'Q') {\n str = str\n // remove spaces between = and hex char, this might indicate invalidly applied line splitting\n .replace(/=\\s+([0-9a-fA-F])/g, '=$1')\n // convert all underscores to spaces\n .replace(/[_\\s]/g, ' ');\n\n let buf = textEncoder.encode(str);\n let encodedBytes = [];\n for (let i = 0, len = buf.length; i < len; i++) {\n let c = buf[i];\n if (i <= len - 2 && c === 0x3d /* = */) {\n let c1 = getHex(buf[i + 1]);\n let c2 = getHex(buf[i + 2]);\n if (c1 && c2) {\n let c = parseInt(c1 + c2, 16);\n encodedBytes.push(c);\n i += 2;\n continue;\n }\n }\n encodedBytes.push(c);\n }\n byteStr = new ArrayBuffer(encodedBytes.length);\n let dataView = new DataView(byteStr);\n for (let i = 0, len = encodedBytes.length; i < len; i++) {\n dataView.setUint8(i, encodedBytes[i]);\n }\n } else if (encoding === 'B') {\n byteStr = decodeBase64(str.replace(/[^a-zA-Z0-9\\+\\/=]+/g, ''));\n } else {\n // keep as is, convert ArrayBuffer to unicode string, assume utf8\n byteStr = textEncoder.encode(str);\n }\n\n return getDecoder(charset).decode(byteStr);\n}\n\nexport function decodeWords(str) {\n let joinString = true;\n let done = false;\n\n while (!done) {\n let result = (str || '')\n .toString()\n // find base64 words that can be joined\n .replace(\n /(=\\?([^?]+)\\?[Bb]\\?([^?]*)\\?=)\\s*(?==\\?([^?]+)\\?[Bb]\\?[^?]*\\?=)/g,\n (match, left, chLeft, encodedLeftStr, chRight) => {\n if (!joinString) {\n return match;\n }\n // only mark b64 chunks to be joined if charsets match and left side does not end with =\n if (chLeft === chRight && encodedLeftStr.length % 4 === 0 && !/=$/.test(encodedLeftStr)) {\n // set a joiner marker\n return left + '__\\x00JOIN\\x00__';\n }\n\n return match;\n }\n )\n // find QP words that can be joined\n .replace(\n /(=\\?([^?]+)\\?[Qq]\\?[^?]*\\?=)\\s*(?==\\?([^?]+)\\?[Qq]\\?[^?]*\\?=)/g,\n (match, left, chLeft, chRight) => {\n if (!joinString) {\n return match;\n }\n // only mark QP chunks to be joined if charsets match\n if (chLeft === chRight) {\n // set a joiner marker\n return left + '__\\x00JOIN\\x00__';\n }\n return match;\n }\n )\n // join base64 encoded words\n .replace(/(\\?=)?__\\x00JOIN\\x00__(=\\?([^?]+)\\?[QqBb]\\?)?/g, '')\n // remove spaces between mime encoded words\n .replace(/(=\\?[^?]+\\?[QqBb]\\?[^?]*\\?=)\\s+(?==\\?[^?]+\\?[QqBb]\\?[^?]*\\?=)/g, '$1')\n // decode words\n .replace(/=\\?([\\w_\\-*]+)\\?([QqBb])\\?([^?]*)\\?=/g, (m, charset, encoding, text) =>\n decodeWord(charset, encoding, text)\n );\n\n if (joinString && result.indexOf('\\ufffd') >= 0) {\n // text contains \\ufffd (EF BF BD), so unicode conversion failed, retry without joining strings\n joinString = false;\n } else {\n return result;\n }\n }\n}\n\nexport function decodeURIComponentWithCharset(encodedStr, charset) {\n charset = charset || 'utf-8';\n\n let encodedBytes = [];\n for (let i = 0; i < encodedStr.length; i++) {\n let c = encodedStr.charAt(i);\n if (c === '%' && /^[a-f0-9]{2}/i.test(encodedStr.substr(i + 1, 2))) {\n // encoded sequence\n let byte = encodedStr.substr(i + 1, 2);\n i += 2;\n encodedBytes.push(parseInt(byte, 16));\n } else if (c.charCodeAt(0) > 126) {\n c = textEncoder.encode(c);\n for (let j = 0; j < c.length; j++) {\n encodedBytes.push(c[j]);\n }\n } else {\n // \"normal\" char\n encodedBytes.push(c.charCodeAt(0));\n }\n }\n\n const byteStr = new ArrayBuffer(encodedBytes.length);\n const dataView = new DataView(byteStr);\n for (let i = 0, len = encodedBytes.length; i < len; i++) {\n dataView.setUint8(i, encodedBytes[i]);\n }\n\n return getDecoder(charset).decode(byteStr);\n}\n\nexport function decodeParameterValueContinuations(header) {\n // handle parameter value continuations\n // https://tools.ietf.org/html/rfc2231#section-3\n\n // preprocess values\n let paramKeys = new Map();\n\n Object.keys(header.params).forEach(key => {\n let match = key.match(/\\*((\\d+)\\*?)?$/);\n if (!match) {\n // nothing to do here, does not seem like a continuation param\n return;\n }\n\n let actualKey = key.substr(0, match.index).toLowerCase();\n let nr = Number(match[2]) || 0;\n\n let paramVal;\n if (!paramKeys.has(actualKey)) {\n paramVal = {\n charset: false,\n values: []\n };\n paramKeys.set(actualKey, paramVal);\n } else {\n paramVal = paramKeys.get(actualKey);\n }\n\n let value = header.params[key];\n if (nr === 0 && match[0].charAt(match[0].length - 1) === '*' && (match = value.match(/^([^']*)'[^']*'(.*)$/))) {\n paramVal.charset = match[1] || 'utf-8';\n value = match[2];\n }\n\n paramVal.values.push({ nr, value });\n\n // remove the old reference\n delete header.params[key];\n });\n\n paramKeys.forEach((paramVal, key) => {\n header.params[key] = decodeURIComponentWithCharset(\n paramVal.values\n .sort((a, b) => a.nr - b.nr)\n .map(a => a.value)\n .join(''),\n paramVal.charset\n );\n });\n}\n","import { blobToArrayBuffer } from './decode-strings.js';\n\nexport default class PassThroughDecoder {\n constructor() {\n this.chunks = [];\n }\n\n update(line) {\n this.chunks.push(line);\n this.chunks.push('\\n');\n }\n\n finalize() {\n // convert an array of arraybuffers into a blob and then back into a single arraybuffer\n return blobToArrayBuffer(new Blob(this.chunks, { type: 'application/octet-stream' }));\n }\n}\n","import { decodeBase64, blobToArrayBuffer } from './decode-strings.js';\n\nexport default class Base64Decoder {\n constructor(opts) {\n opts = opts || {};\n\n this.decoder = opts.decoder || new TextDecoder();\n\n this.maxChunkSize = 100 * 1024;\n\n this.chunks = [];\n\n this.remainder = '';\n }\n\n update(buffer) {\n let str = this.decoder.decode(buffer);\n\n str = str.replace(/[^a-zA-Z0-9+\\/]+/g, '');\n\n this.remainder += str;\n\n if (this.remainder.length >= this.maxChunkSize) {\n let allowedBytes = Math.floor(this.remainder.length / 4) * 4;\n let base64Str;\n\n if (allowedBytes === this.remainder.length) {\n base64Str = this.remainder;\n this.remainder = '';\n } else {\n base64Str = this.remainder.substr(0, allowedBytes);\n this.remainder = this.remainder.substr(allowedBytes);\n }\n\n if (base64Str.length) {\n this.chunks.push(decodeBase64(base64Str));\n }\n }\n }\n\n finalize() {\n if (this.remainder && !/^=+$/.test(this.remainder)) {\n this.chunks.push(decodeBase64(this.remainder));\n }\n\n return blobToArrayBuffer(new Blob(this.chunks, { type: 'application/octet-stream' }));\n }\n}\n","import { blobToArrayBuffer } from './decode-strings.js';\n\n// Regex patterns compiled once for performance\nconst VALID_QP_REGEX = /^=[a-f0-9]{2}$/i;\nconst QP_SPLIT_REGEX = /(?==[a-f0-9]{2})/i;\nconst SOFT_LINE_BREAK_REGEX = /=\\r?\\n/g;\nconst PARTIAL_QP_ENDING_REGEX = /=[a-fA-F0-9]?$/;\n\nexport default class QPDecoder {\n constructor(opts) {\n opts = opts || {};\n\n this.decoder = opts.decoder || new TextDecoder();\n\n this.maxChunkSize = 100 * 1024;\n\n this.remainder = '';\n\n this.chunks = [];\n }\n\n decodeQPBytes(encodedBytes) {\n let buf = new ArrayBuffer(encodedBytes.length);\n let dataView = new DataView(buf);\n for (let i = 0, len = encodedBytes.length; i < len; i++) {\n dataView.setUint8(i, parseInt(encodedBytes[i], 16));\n }\n return buf;\n }\n\n decodeChunks(str) {\n // unwrap newlines\n str = str.replace(SOFT_LINE_BREAK_REGEX, '');\n\n let list = str.split(QP_SPLIT_REGEX);\n let encodedBytes = [];\n for (let part of list) {\n if (part.charAt(0) !== '=') {\n if (encodedBytes.length) {\n this.chunks.push(this.decodeQPBytes(encodedBytes));\n encodedBytes = [];\n }\n this.chunks.push(part);\n continue;\n }\n\n if (part.length === 3) {\n // Validate that this is actually a valid QP sequence\n if (VALID_QP_REGEX.test(part)) {\n encodedBytes.push(part.substr(1));\n } else {\n // Not a valid QP sequence, treat as literal text\n if (encodedBytes.length) {\n this.chunks.push(this.decodeQPBytes(encodedBytes));\n encodedBytes = [];\n }\n this.chunks.push(part);\n }\n continue;\n }\n\n if (part.length > 3) {\n // First 3 chars should be a valid QP sequence\n const firstThree = part.substr(0, 3);\n if (VALID_QP_REGEX.test(firstThree)) {\n encodedBytes.push(part.substr(1, 2));\n this.chunks.push(this.decodeQPBytes(encodedBytes));\n encodedBytes = [];\n\n part = part.substr(3);\n this.chunks.push(part);\n } else {\n // Not a valid QP sequence, treat entire part as literal\n if (encodedBytes.length) {\n this.chunks.push(this.decodeQPBytes(encodedBytes));\n encodedBytes = [];\n }\n this.chunks.push(part);\n }\n }\n }\n if (encodedBytes.length) {\n this.chunks.push(this.decodeQPBytes(encodedBytes));\n }\n }\n\n update(buffer) {\n // expect full lines, so add line terminator as well\n let str = this.decoder.decode(buffer) + '\\n';\n\n str = this.remainder + str;\n\n if (str.length < this.maxChunkSize) {\n this.remainder = str;\n return;\n }\n\n this.remainder = '';\n\n let partialEnding = str.match(PARTIAL_QP_ENDING_REGEX);\n if (partialEnding) {\n if (partialEnding.index === 0) {\n this.remainder = str;\n return;\n }\n this.remainder = str.substr(partialEnding.index);\n str = str.substr(0, partialEnding.index);\n }\n\n this.decodeChunks(str);\n }\n\n finalize() {\n if (this.remainder.length) {\n this.decodeChunks(this.remainder);\n this.remainder = '';\n }\n\n // convert an array of arraybuffers into a blob and then back into a single arraybuffer\n return blobToArrayBuffer(new Blob(this.chunks, { type: 'application/octet-stream' }));\n }\n}\n","import { getDecoder, decodeParameterValueContinuations, textEncoder } from './decode-strings.js';\nimport PassThroughDecoder from './pass-through-decoder.js';\nimport Base64Decoder from './base64-decoder.js';\nimport QPDecoder from './qp-decoder.js';\n\nconst defaultDecoder = getDecoder();\n\nexport default class MimeNode {\n constructor(options) {\n this.options = options || {};\n\n this.postalMime = this.options.postalMime;\n\n this.root = !!this.options.parentNode;\n this.childNodes = [];\n\n if (this.options.parentNode) {\n this.parentNode = this.options.parentNode;\n\n this.depth = this.parentNode.depth + 1;\n if (this.depth > this.options.maxNestingDepth) {\n throw new Error(`Maximum MIME nesting depth of ${this.options.maxNestingDepth} levels exceeded`);\n }\n\n this.options.parentNode.childNodes.push(this);\n } else {\n this.depth = 0;\n }\n\n this.state = 'header';\n\n this.headerLines = [];\n this.headerSize = 0;\n\n // RFC 2046 Section 5.1.5: multipart/digest defaults to message/rfc822\n const parentMultipartType = this.options.parentMultipartType || null;\n const defaultContentType = parentMultipartType === 'digest' ? 'message/rfc822' : 'text/plain';\n\n this.contentType = {\n value: defaultContentType,\n default: true\n };\n\n this.contentTransferEncoding = {\n value: '8bit'\n };\n\n this.contentDisposition = {\n value: ''\n };\n\n this.headers = [];\n\n this.contentDecoder = false;\n }\n\n setupContentDecoder(transferEncoding) {\n if (/base64/i.test(transferEncoding)) {\n this.contentDecoder = new Base64Decoder();\n } else if (/quoted-printable/i.test(transferEncoding)) {\n this.contentDecoder = new QPDecoder({ decoder: getDecoder(this.contentType.parsed.params.charset) });\n } else {\n this.contentDecoder = new PassThroughDecoder();\n }\n }\n\n async finalize() {\n if (this.state === 'finished') {\n return;\n }\n\n if (this.state === 'header') {\n this.processHeaders();\n }\n\n // remove self from boundary listing\n let boundaries = this.postalMime.boundaries;\n for (let i = boundaries.length - 1; i >= 0; i--) {\n let boundary = boundaries[i];\n if (boundary.node === this) {\n boundaries.splice(i, 1);\n break;\n }\n }\n\n await this.finalizeChildNodes();\n\n this.content = this.contentDecoder ? await this.contentDecoder.finalize() : null;\n\n // The decoder buffers every body line it received, so keeping it around\n // retains a second copy of the content for the lifetime of the node.\n // Nothing reads it once the node is finished, so release it here.\n this.contentDecoder = false;\n\n this.state = 'finished';\n }\n\n async finalizeChildNodes() {\n for (let childNode of this.childNodes) {\n await childNode.finalize();\n }\n }\n\n // Strip RFC 822 comments (parenthesized text) from structured header values\n stripComments(str) {\n let result = '';\n let depth = 0;\n let escaped = false;\n let inQuote = false;\n\n for (let i = 0; i < str.length; i++) {\n const chr = str.charAt(i);\n\n if (escaped) {\n if (depth === 0) {\n result += chr;\n }\n escaped = false;\n continue;\n }\n\n if (chr === '\\\\') {\n escaped = true;\n if (depth === 0) {\n result += chr;\n }\n continue;\n }\n\n if (chr === '\"' && depth === 0) {\n inQuote = !inQuote;\n result += chr;\n continue;\n }\n\n if (!inQuote) {\n if (chr === '(') {\n depth++;\n continue;\n }\n if (chr === ')' && depth > 0) {\n depth--;\n continue;\n }\n }\n\n if (depth === 0) {\n result += chr;\n }\n }\n\n return result;\n }\n\n parseStructuredHeader(str) {\n // Strip RFC 822 comments before parsing\n str = this.stripComments(str);\n\n let response = {\n value: false,\n params: {}\n };\n\n let key = false;\n let value = '';\n let stage = 'value';\n\n let quote = false;\n let escaped = false;\n let chr;\n\n for (let i = 0, len = str.length; i < len; i++) {\n chr = str.charAt(i);\n switch (stage) {\n case 'key':\n if (chr === '=') {\n key = value.trim().toLowerCase();\n stage = 'value';\n value = '';\n break;\n }\n value += chr;\n break;\n case 'value':\n if (escaped) {\n value += chr;\n } else if (chr === '\\\\') {\n escaped = true;\n continue;\n } else if (quote && chr === quote) {\n quote = false;\n } else if (!quote && chr === '\"') {\n quote = chr;\n } else if (!quote && chr === ';') {\n if (key === false) {\n response.value = value.trim();\n } else {\n response.params[key] = value.trim();\n }\n stage = 'key';\n value = '';\n } else {\n value += chr;\n }\n escaped = false;\n break;\n }\n }\n\n // finalize remainder\n value = value.trim();\n if (stage === 'value') {\n if (key === false) {\n // default value\n response.value = value;\n } else {\n // subkey value\n response.params[key] = value;\n }\n } else if (value) {\n // treat as key without value, see emptykey:\n // Header-Key: somevalue; key=value; emptykey\n response.params[value.toLowerCase()] = '';\n }\n\n if (response.value) {\n response.value = response.value.toLowerCase();\n }\n\n // convert Parameter Value Continuations into single strings\n decodeParameterValueContinuations(response);\n\n return response;\n }\n\n decodeFlowedText(str, delSp) {\n return (\n str\n .split(/\\r?\\n/)\n // remove soft linebreaks\n // soft linebreaks are added after space symbols\n .reduce((previousValue, currentValue) => {\n if (previousValue.endsWith(' ') && previousValue !== '-- ' && !previousValue.endsWith('\\n-- ')) {\n if (delSp) {\n // delsp adds space to text to be able to fold it\n // these spaces can be removed once the text is unfolded\n return previousValue.slice(0, -1) + currentValue;\n } else {\n return previousValue + currentValue;\n }\n } else {\n return previousValue + '\\n' + currentValue;\n }\n })\n // remove whitespace stuffing\n // http://tools.ietf.org/html/rfc3676#section-4.4\n .replace(/^ /gm, '')\n );\n }\n\n getTextContent() {\n if (!this.content) {\n return '';\n }\n\n let str = getDecoder(this.contentType.parsed.params.charset).decode(this.content);\n\n if (/^flowed$/i.test(this.contentType.parsed.params.format)) {\n str = this.decodeFlowedText(str, /^yes$/i.test(this.contentType.parsed.params.delsp));\n }\n\n return str;\n }\n\n processHeaders() {\n // First pass: merge folded headers (backward iteration)\n for (let i = this.headerLines.length - 1; i >= 0; i--) {\n let line = this.headerLines[i];\n if (i && /^\\s/.test(line)) {\n this.headerLines[i - 1] += '\\n' + line;\n this.headerLines.splice(i, 1);\n }\n }\n\n // Initialize rawHeaderLines to store unmodified lines\n this.rawHeaderLines = [];\n\n // Second pass: process headers (MUST be backward to maintain this.headers order)\n // The existing code iterates backward and postal-mime.js calls .reverse()\n // We must preserve this behavior to avoid breaking changes\n for (let i = this.headerLines.length - 1; i >= 0; i--) {\n let rawLine = this.headerLines[i];\n\n // Extract key from raw line for rawHeaderLines\n let sep = rawLine.indexOf(':');\n let rawKey = sep < 0 ? rawLine.trim() : rawLine.substr(0, sep).trim();\n\n // Store raw line with lowercase key\n this.rawHeaderLines.push({\n key: rawKey.toLowerCase(),\n line: rawLine\n });\n\n // Normalize for this.headers (existing behavior - order preserved)\n let normalizedLine = rawLine.replace(/\\s+/g, ' ');\n sep = normalizedLine.indexOf(':');\n let key = sep < 0 ? normalizedLine.trim() : normalizedLine.substr(0, sep).trim();\n let value = sep < 0 ? '' : normalizedLine.substr(sep + 1).trim();\n this.headers.push({ key: key.toLowerCase(), originalKey: key, value });\n\n switch (key.toLowerCase()) {\n case 'content-type':\n if (this.contentType.default) {\n this.contentType = { value, parsed: {} };\n }\n break;\n case 'content-transfer-encoding':\n this.contentTransferEncoding = { value, parsed: {} };\n break;\n case 'content-disposition':\n this.contentDisposition = { value, parsed: {} };\n break;\n case 'content-id':\n this.contentId = value;\n break;\n case 'content-description':\n this.contentDescription = value;\n break;\n }\n }\n\n this.contentType.parsed = this.parseStructuredHeader(this.contentType.value);\n this.contentType.multipart = /^multipart\\//i.test(this.contentType.parsed.value)\n ? this.contentType.parsed.value.substr(this.contentType.parsed.value.indexOf('/') + 1)\n : false;\n\n if (this.contentType.multipart && this.contentType.parsed.params.boundary) {\n // add self to boundary terminator listing\n this.postalMime.boundaries.push({\n value: textEncoder.encode(this.contentType.parsed.params.boundary),\n node: this\n });\n }\n\n this.contentDisposition.parsed = this.parseStructuredHeader(this.contentDisposition.value);\n\n this.contentTransferEncoding.encoding = this.contentTransferEncoding.value\n .toLowerCase()\n .split(/[^\\w-]/)\n .shift();\n\n this.setupContentDecoder(this.contentTransferEncoding.encoding);\n }\n\n feed(line) {\n switch (this.state) {\n case 'header':\n if (!line.length) {\n this.state = 'body';\n return this.processHeaders();\n }\n\n this.headerSize += line.length;\n\n if (this.headerSize > this.options.maxHeadersSize) {\n let error = new Error(`Maximum header size of ${this.options.maxHeadersSize} bytes exceeded`);\n throw error;\n }\n\n this.headerLines.push(defaultDecoder.decode(line));\n break;\n case 'body': {\n // add line to body\n this.contentDecoder.update(line);\n }\n }\n }\n}\n","// Entity map from https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references\nexport const htmlEntities = {\n 'Æ': '\\u00C6',\n 'Æ': '\\u00C6',\n '&': '\\u0026',\n '&': '\\u0026',\n 'Á': '\\u00C1',\n 'Á': '\\u00C1',\n 'Ă': '\\u0102',\n 'Â': '\\u00C2',\n 'Â': '\\u00C2',\n 'А': '\\u0410',\n '𝔄': '\\uD835\\uDD04',\n 'À': '\\u00C0',\n 'À': '\\u00C0',\n 'Α': '\\u0391',\n 'Ā': '\\u0100',\n '⩓': '\\u2A53',\n 'Ą': '\\u0104',\n '𝔸': '\\uD835\\uDD38',\n '⁡': '\\u2061',\n 'Å': '\\u00C5',\n 'Å': '\\u00C5',\n '𝒜': '\\uD835\\uDC9C',\n '≔': '\\u2254',\n 'Ã': '\\u00C3',\n 'Ã': '\\u00C3',\n 'Ä': '\\u00C4',\n 'Ä': '\\u00C4',\n '∖': '\\u2216',\n '⫧': '\\u2AE7',\n '⌆': '\\u2306',\n 'Б': '\\u0411',\n '∵': '\\u2235',\n 'ℬ': '\\u212C',\n 'Β': '\\u0392',\n '𝔅': '\\uD835\\uDD05',\n '𝔹': '\\uD835\\uDD39',\n '˘': '\\u02D8',\n 'ℬ': '\\u212C',\n '≎': '\\u224E',\n 'Ч': '\\u0427',\n '©': '\\u00A9',\n '©': '\\u00A9',\n 'Ć': '\\u0106',\n '⋒': '\\u22D2',\n 'ⅅ': '\\u2145',\n 'ℭ': '\\u212D',\n 'Č': '\\u010C',\n 'Ç': '\\u00C7',\n 'Ç': '\\u00C7',\n 'Ĉ': '\\u0108',\n '∰': '\\u2230',\n 'Ċ': '\\u010A',\n '¸': '\\u00B8',\n '·': '\\u00B7',\n 'ℭ': '\\u212D',\n 'Χ': '\\u03A7',\n '⊙': '\\u2299',\n '⊖': '\\u2296',\n '⊕': '\\u2295',\n '⊗': '\\u2297',\n '∲': '\\u2232',\n '”': '\\u201D',\n '’': '\\u2019',\n '∷': '\\u2237',\n '⩴': '\\u2A74',\n '≡': '\\u2261',\n '∯': '\\u222F',\n '∮': '\\u222E',\n 'ℂ': '\\u2102',\n '∐': '\\u2210',\n '∳': '\\u2233',\n '⨯': '\\u2A2F',\n '𝒞': '\\uD835\\uDC9E',\n '⋓': '\\u22D3',\n '≍': '\\u224D',\n 'ⅅ': '\\u2145',\n '⤑': '\\u2911',\n 'Ђ': '\\u0402',\n 'Ѕ': '\\u0405',\n 'Џ': '\\u040F',\n '‡': '\\u2021',\n '↡': '\\u21A1',\n '⫤': '\\u2AE4',\n 'Ď': '\\u010E',\n 'Д': '\\u0414',\n '∇': '\\u2207',\n 'Δ': '\\u0394',\n '𝔇': '\\uD835\\uDD07',\n '´': '\\u00B4',\n '˙': '\\u02D9',\n '˝': '\\u02DD',\n '`': '\\u0060',\n '˜': '\\u02DC',\n '⋄': '\\u22C4',\n 'ⅆ': '\\u2146',\n '𝔻': '\\uD835\\uDD3B',\n '¨': '\\u00A8',\n '⃜': '\\u20DC',\n '≐': '\\u2250',\n '∯': '\\u222F',\n '¨': '\\u00A8',\n '⇓': '\\u21D3',\n '⇐': '\\u21D0',\n '⇔': '\\u21D4',\n '⫤': '\\u2AE4',\n '⟸': '\\u27F8',\n '⟺': '\\u27FA',\n '⟹': '\\u27F9',\n '⇒': '\\u21D2',\n '⊨': '\\u22A8',\n '⇑': '\\u21D1',\n '⇕': '\\u21D5',\n '∥': '\\u2225',\n '↓': '\\u2193',\n '⤓': '\\u2913',\n '⇵': '\\u21F5',\n '̑': '\\u0311',\n '⥐': '\\u2950',\n '⥞': '\\u295E',\n '↽': '\\u21BD',\n '⥖': '\\u2956',\n '⥟': '\\u295F',\n '⇁': '\\u21C1',\n '⥗': '\\u2957',\n '⊤': '\\u22A4',\n '↧': '\\u21A7',\n '⇓': '\\u21D3',\n '𝒟': '\\uD835\\uDC9F',\n 'Đ': '\\u0110',\n 'Ŋ': '\\u014A',\n 'Ð': '\\u00D0',\n 'Ð': '\\u00D0',\n 'É': '\\u00C9',\n 'É': '\\u00C9',\n 'Ě': '\\u011A',\n 'Ê': '\\u00CA',\n 'Ê': '\\u00CA',\n 'Э': '\\u042D',\n 'Ė': '\\u0116',\n '𝔈': '\\uD835\\uDD08',\n 'È': '\\u00C8',\n 'È': '\\u00C8',\n '∈': '\\u2208',\n 'Ē': '\\u0112',\n '◻': '\\u25FB',\n '▫': '\\u25AB',\n 'Ę': '\\u0118',\n '𝔼': '\\uD835\\uDD3C',\n 'Ε': '\\u0395',\n '⩵': '\\u2A75',\n '≂': '\\u2242',\n '⇌': '\\u21CC',\n 'ℰ': '\\u2130',\n '⩳': '\\u2A73',\n 'Η': '\\u0397',\n 'Ë': '\\u00CB',\n 'Ë': '\\u00CB',\n '∃': '\\u2203',\n 'ⅇ': '\\u2147',\n 'Ф': '\\u0424',\n '𝔉': '\\uD835\\uDD09',\n '◼': '\\u25FC',\n '▪': '\\u25AA',\n '𝔽': '\\uD835\\uDD3D',\n '∀': '\\u2200',\n 'ℱ': '\\u2131',\n 'ℱ': '\\u2131',\n 'Ѓ': '\\u0403',\n '>': '\\u003E',\n '>': '\\u003E',\n 'Γ': '\\u0393',\n 'Ϝ': '\\u03DC',\n 'Ğ': '\\u011E',\n 'Ģ': '\\u0122',\n 'Ĝ': '\\u011C',\n 'Г': '\\u0413',\n 'Ġ': '\\u0120',\n '𝔊': '\\uD835\\uDD0A',\n '⋙': '\\u22D9',\n '𝔾': '\\uD835\\uDD3E',\n '≥': '\\u2265',\n '⋛': '\\u22DB',\n '≧': '\\u2267',\n '⪢': '\\u2AA2',\n '≷': '\\u2277',\n '⩾': '\\u2A7E',\n '≳': '\\u2273',\n '𝒢': '\\uD835\\uDCA2',\n '≫': '\\u226B',\n 'Ъ': '\\u042A',\n 'ˇ': '\\u02C7',\n '^': '\\u005E',\n 'Ĥ': '\\u0124',\n 'ℌ': '\\u210C',\n 'ℋ': '\\u210B',\n 'ℍ': '\\u210D',\n '─': '\\u2500',\n 'ℋ': '\\u210B',\n 'Ħ': '\\u0126',\n '≎': '\\u224E',\n '≏': '\\u224F',\n 'Е': '\\u0415',\n 'IJ': '\\u0132',\n 'Ё': '\\u0401',\n 'Í': '\\u00CD',\n 'Í': '\\u00CD',\n 'Î': '\\u00CE',\n 'Î': '\\u00CE',\n 'И': '\\u0418',\n 'İ': '\\u0130',\n 'ℑ': '\\u2111',\n 'Ì': '\\u00CC',\n 'Ì': '\\u00CC',\n 'ℑ': '\\u2111',\n 'Ī': '\\u012A',\n 'ⅈ': '\\u2148',\n '⇒': '\\u21D2',\n '∬': '\\u222C',\n '∫': '\\u222B',\n '⋂': '\\u22C2',\n '⁣': '\\u2063',\n '⁢': '\\u2062',\n 'Į': '\\u012E',\n '𝕀': '\\uD835\\uDD40',\n 'Ι': '\\u0399',\n 'ℐ': '\\u2110',\n 'Ĩ': '\\u0128',\n 'І': '\\u0406',\n 'Ï': '\\u00CF',\n 'Ï': '\\u00CF',\n 'Ĵ': '\\u0134',\n 'Й': '\\u0419',\n '𝔍': '\\uD835\\uDD0D',\n '𝕁': '\\uD835\\uDD41',\n '𝒥': '\\uD835\\uDCA5',\n 'Ј': '\\u0408',\n 'Є': '\\u0404',\n 'Х': '\\u0425',\n 'Ќ': '\\u040C',\n 'Κ': '\\u039A',\n 'Ķ': '\\u0136',\n 'К': '\\u041A',\n '𝔎': '\\uD835\\uDD0E',\n '𝕂': '\\uD835\\uDD42',\n '𝒦': '\\uD835\\uDCA6',\n 'Љ': '\\u0409',\n '<': '\\u003C',\n '<': '\\u003C',\n 'Ĺ': '\\u0139',\n 'Λ': '\\u039B',\n '⟪': '\\u27EA',\n 'ℒ': '\\u2112',\n '↞': '\\u219E',\n 'Ľ': '\\u013D',\n 'Ļ': '\\u013B',\n 'Л': '\\u041B',\n '⟨': '\\u27E8',\n '←': '\\u2190',\n '⇤': '\\u21E4',\n '⇆': '\\u21C6',\n '⌈': '\\u2308',\n '⟦': '\\u27E6',\n '⥡': '\\u2961',\n '⇃': '\\u21C3',\n '⥙': '\\u2959',\n '⌊': '\\u230A',\n '↔': '\\u2194',\n '⥎': '\\u294E',\n '⊣': '\\u22A3',\n '↤': '\\u21A4',\n '⥚': '\\u295A',\n '⊲': '\\u22B2',\n '⧏': '\\u29CF',\n '⊴': '\\u22B4',\n '⥑': '\\u2951',\n '⥠': '\\u2960',\n '↿': '\\u21BF',\n '⥘': '\\u2958',\n '↼': '\\u21BC',\n '⥒': '\\u2952',\n '⇐': '\\u21D0',\n '⇔': '\\u21D4',\n '⋚': '\\u22DA',\n '≦': '\\u2266',\n '≶': '\\u2276',\n '⪡': '\\u2AA1',\n '⩽': '\\u2A7D',\n '≲': '\\u2272',\n '𝔏': '\\uD835\\uDD0F',\n '⋘': '\\u22D8',\n '⇚': '\\u21DA',\n 'Ŀ': '\\u013F',\n '⟵': '\\u27F5',\n '⟷': '\\u27F7',\n '⟶': '\\u27F6',\n '⟸': '\\u27F8',\n '⟺': '\\u27FA',\n '⟹': '\\u27F9',\n '𝕃': '\\uD835\\uDD43',\n '↙': '\\u2199',\n '↘': '\\u2198',\n 'ℒ': '\\u2112',\n '↰': '\\u21B0',\n 'Ł': '\\u0141',\n '≪': '\\u226A',\n '⤅': '\\u2905',\n 'М': '\\u041C',\n ' ': '\\u205F',\n 'ℳ': '\\u2133',\n '𝔐': '\\uD835\\uDD10',\n '∓': '\\u2213',\n '𝕄': '\\uD835\\uDD44',\n 'ℳ': '\\u2133',\n 'Μ': '\\u039C',\n 'Њ': '\\u040A',\n 'Ń': '\\u0143',\n 'Ň': '\\u0147',\n 'Ņ': '\\u0145',\n 'Н': '\\u041D',\n '​': '\\u200B',\n '​': '\\u200B',\n '​': '\\u200B',\n '​': '\\u200B',\n '≫': '\\u226B',\n '≪': '\\u226A',\n '
': '\\u000A',\n '𝔑': '\\uD835\\uDD11',\n '⁠': '\\u2060',\n ' ': '\\u00A0',\n 'ℕ': '\\u2115',\n '⫬': '\\u2AEC',\n '≢': '\\u2262',\n '≭': '\\u226D',\n '∦': '\\u2226',\n '∉': '\\u2209',\n '≠': '\\u2260',\n '≂̸': '\\u2242\\u0338',\n '∄': '\\u2204',\n '≯': '\\u226F',\n '≱': '\\u2271',\n '≧̸': '\\u2267\\u0338',\n '≫̸': '\\u226B\\u0338',\n '≹': '\\u2279',\n '⩾̸': '\\u2A7E\\u0338',\n '≵': '\\u2275',\n '≎̸': '\\u224E\\u0338',\n '≏̸': '\\u224F\\u0338',\n '⋪': '\\u22EA',\n '⧏̸': '\\u29CF\\u0338',\n '⋬': '\\u22EC',\n '≮': '\\u226E',\n '≰': '\\u2270',\n '≸': '\\u2278',\n '≪̸': '\\u226A\\u0338',\n '⩽̸': '\\u2A7D\\u0338',\n '≴': '\\u2274',\n '⪢̸': '\\u2AA2\\u0338',\n '⪡̸': '\\u2AA1\\u0338',\n '⊀': '\\u2280',\n '⪯̸': '\\u2AAF\\u0338',\n '⋠': '\\u22E0',\n '∌': '\\u220C',\n '⋫': '\\u22EB',\n '⧐̸': '\\u29D0\\u0338',\n '⋭': '\\u22ED',\n '⊏̸': '\\u228F\\u0338',\n '⋢': '\\u22E2',\n '⊐̸': '\\u2290\\u0338',\n '⋣': '\\u22E3',\n '⊂⃒': '\\u2282\\u20D2',\n '⊈': '\\u2288',\n '⊁': '\\u2281',\n '⪰̸': '\\u2AB0\\u0338',\n '⋡': '\\u22E1',\n '≿̸': '\\u227F\\u0338',\n '⊃⃒': '\\u2283\\u20D2',\n '⊉': '\\u2289',\n '≁': '\\u2241',\n '≄': '\\u2244',\n '≇': '\\u2247',\n '≉': '\\u2249',\n '∤': '\\u2224',\n '𝒩': '\\uD835\\uDCA9',\n 'Ñ': '\\u00D1',\n 'Ñ': '\\u00D1',\n 'Ν': '\\u039D',\n 'Œ': '\\u0152',\n 'Ó': '\\u00D3',\n 'Ó': '\\u00D3',\n 'Ô': '\\u00D4',\n 'Ô': '\\u00D4',\n 'О': '\\u041E',\n 'Ő': '\\u0150',\n '𝔒': '\\uD835\\uDD12',\n 'Ò': '\\u00D2',\n 'Ò': '\\u00D2',\n 'Ō': '\\u014C',\n 'Ω': '\\u03A9',\n 'Ο': '\\u039F',\n '𝕆': '\\uD835\\uDD46',\n '“': '\\u201C',\n '‘': '\\u2018',\n '⩔': '\\u2A54',\n '𝒪': '\\uD835\\uDCAA',\n 'Ø': '\\u00D8',\n 'Ø': '\\u00D8',\n 'Õ': '\\u00D5',\n 'Õ': '\\u00D5',\n '⨷': '\\u2A37',\n 'Ö': '\\u00D6',\n 'Ö': '\\u00D6',\n '‾': '\\u203E',\n '⏞': '\\u23DE',\n '⎴': '\\u23B4',\n '⏜': '\\u23DC',\n '∂': '\\u2202',\n 'П': '\\u041F',\n '𝔓': '\\uD835\\uDD13',\n 'Φ': '\\u03A6',\n 'Π': '\\u03A0',\n '±': '\\u00B1',\n 'ℌ': '\\u210C',\n 'ℙ': '\\u2119',\n '⪻': '\\u2ABB',\n '≺': '\\u227A',\n '⪯': '\\u2AAF',\n '≼': '\\u227C',\n '≾': '\\u227E',\n '″': '\\u2033',\n '∏': '\\u220F',\n '∷': '\\u2237',\n '∝': '\\u221D',\n '𝒫': '\\uD835\\uDCAB',\n 'Ψ': '\\u03A8',\n '"': '\\u0022',\n '"': '\\u0022',\n '𝔔': '\\uD835\\uDD14',\n 'ℚ': '\\u211A',\n '𝒬': '\\uD835\\uDCAC',\n '⤐': '\\u2910',\n '®': '\\u00AE',\n '®': '\\u00AE',\n 'Ŕ': '\\u0154',\n '⟫': '\\u27EB',\n '↠': '\\u21A0',\n '⤖': '\\u2916',\n 'Ř': '\\u0158',\n 'Ŗ': '\\u0156',\n 'Р': '\\u0420',\n 'ℜ': '\\u211C',\n '∋': '\\u220B',\n '⇋': '\\u21CB',\n '⥯': '\\u296F',\n 'ℜ': '\\u211C',\n 'Ρ': '\\u03A1',\n '⟩': '\\u27E9',\n '→': '\\u2192',\n '⇥': '\\u21E5',\n '⇄': '\\u21C4',\n '⌉': '\\u2309',\n '⟧': '\\u27E7',\n '⥝': '\\u295D',\n '⇂': '\\u21C2',\n '⥕': '\\u2955',\n '⌋': '\\u230B',\n '⊢': '\\u22A2',\n '↦': '\\u21A6',\n '⥛': '\\u295B',\n '⊳': '\\u22B3',\n '⧐': '\\u29D0',\n '⊵': '\\u22B5',\n '⥏': '\\u294F',\n '⥜': '\\u295C',\n '↾': '\\u21BE',\n '⥔': '\\u2954',\n '⇀': '\\u21C0',\n '⥓': '\\u2953',\n '⇒': '\\u21D2',\n 'ℝ': '\\u211D',\n '⥰': '\\u2970',\n '⇛': '\\u21DB',\n 'ℛ': '\\u211B',\n '↱': '\\u21B1',\n '⧴': '\\u29F4',\n 'Щ': '\\u0429',\n 'Ш': '\\u0428',\n 'Ь': '\\u042C',\n 'Ś': '\\u015A',\n '⪼': '\\u2ABC',\n 'Š': '\\u0160',\n 'Ş': '\\u015E',\n 'Ŝ': '\\u015C',\n 'С': '\\u0421',\n '𝔖': '\\uD835\\uDD16',\n '↓': '\\u2193',\n '←': '\\u2190',\n '→': '\\u2192',\n '↑': '\\u2191',\n 'Σ': '\\u03A3',\n '∘': '\\u2218',\n '𝕊': '\\uD835\\uDD4A',\n '√': '\\u221A',\n '□': '\\u25A1',\n '⊓': '\\u2293',\n '⊏': '\\u228F',\n '⊑': '\\u2291',\n '⊐': '\\u2290',\n '⊒': '\\u2292',\n '⊔': '\\u2294',\n '𝒮': '\\uD835\\uDCAE',\n '⋆': '\\u22C6',\n '⋐': '\\u22D0',\n '⋐': '\\u22D0',\n '⊆': '\\u2286',\n '≻': '\\u227B',\n '⪰': '\\u2AB0',\n '≽': '\\u227D',\n '≿': '\\u227F',\n '∋': '\\u220B',\n '∑': '\\u2211',\n '⋑': '\\u22D1',\n '⊃': '\\u2283',\n '⊇': '\\u2287',\n '⋑': '\\u22D1',\n 'Þ': '\\u00DE',\n 'Þ': '\\u00DE',\n '™': '\\u2122',\n 'Ћ': '\\u040B',\n 'Ц': '\\u0426',\n '	': '\\u0009',\n 'Τ': '\\u03A4',\n 'Ť': '\\u0164',\n 'Ţ': '\\u0162',\n 'Т': '\\u0422',\n '𝔗': '\\uD835\\uDD17',\n '∴': '\\u2234',\n 'Θ': '\\u0398',\n '  ': '\\u205F\\u200A',\n ' ': '\\u2009',\n '∼': '\\u223C',\n '≃': '\\u2243',\n '≅': '\\u2245',\n '≈': '\\u2248',\n '𝕋': '\\uD835\\uDD4B',\n '⃛': '\\u20DB',\n '𝒯': '\\uD835\\uDCAF',\n 'Ŧ': '\\u0166',\n 'Ú': '\\u00DA',\n 'Ú': '\\u00DA',\n '↟': '\\u219F',\n '⥉': '\\u2949',\n 'Ў': '\\u040E',\n 'Ŭ': '\\u016C',\n 'Û': '\\u00DB',\n 'Û': '\\u00DB',\n 'У': '\\u0423',\n 'Ű': '\\u0170',\n '𝔘': '\\uD835\\uDD18',\n 'Ù': '\\u00D9',\n 'Ù': '\\u00D9',\n 'Ū': '\\u016A',\n '_': '\\u005F',\n '⏟': '\\u23DF',\n '⎵': '\\u23B5',\n '⏝': '\\u23DD',\n '⋃': '\\u22C3',\n '⊎': '\\u228E',\n 'Ų': '\\u0172',\n '𝕌': '\\uD835\\uDD4C',\n '↑': '\\u2191',\n '⤒': '\\u2912',\n '⇅': '\\u21C5',\n '↕': '\\u2195',\n '⥮': '\\u296E',\n '⊥': '\\u22A5',\n '↥': '\\u21A5',\n '⇑': '\\u21D1',\n '⇕': '\\u21D5',\n '↖': '\\u2196',\n '↗': '\\u2197',\n 'ϒ': '\\u03D2',\n 'Υ': '\\u03A5',\n 'Ů': '\\u016E',\n '𝒰': '\\uD835\\uDCB0',\n 'Ũ': '\\u0168',\n 'Ü': '\\u00DC',\n 'Ü': '\\u00DC',\n '⊫': '\\u22AB',\n '⫫': '\\u2AEB',\n 'В': '\\u0412',\n '⊩': '\\u22A9',\n '⫦': '\\u2AE6',\n '⋁': '\\u22C1',\n '‖': '\\u2016',\n '‖': '\\u2016',\n '∣': '\\u2223',\n '|': '\\u007C',\n '❘': '\\u2758',\n '≀': '\\u2240',\n ' ': '\\u200A',\n '𝔙': '\\uD835\\uDD19',\n '𝕍': '\\uD835\\uDD4D',\n '𝒱': '\\uD835\\uDCB1',\n '⊪': '\\u22AA',\n 'Ŵ': '\\u0174',\n '⋀': '\\u22C0',\n '𝔚': '\\uD835\\uDD1A',\n '𝕎': '\\uD835\\uDD4E',\n '𝒲': '\\uD835\\uDCB2',\n '𝔛': '\\uD835\\uDD1B',\n 'Ξ': '\\u039E',\n '𝕏': '\\uD835\\uDD4F',\n '𝒳': '\\uD835\\uDCB3',\n 'Я': '\\u042F',\n 'Ї': '\\u0407',\n 'Ю': '\\u042E',\n 'Ý': '\\u00DD',\n 'Ý': '\\u00DD',\n 'Ŷ': '\\u0176',\n 'Ы': '\\u042B',\n '𝔜': '\\uD835\\uDD1C',\n '𝕐': '\\uD835\\uDD50',\n '𝒴': '\\uD835\\uDCB4',\n 'Ÿ': '\\u0178',\n 'Ж': '\\u0416',\n 'Ź': '\\u0179',\n 'Ž': '\\u017D',\n 'З': '\\u0417',\n 'Ż': '\\u017B',\n '​': '\\u200B',\n 'Ζ': '\\u0396',\n 'ℨ': '\\u2128',\n 'ℤ': '\\u2124',\n '𝒵': '\\uD835\\uDCB5',\n 'á': '\\u00E1',\n 'á': '\\u00E1',\n 'ă': '\\u0103',\n '∾': '\\u223E',\n '∾̳': '\\u223E\\u0333',\n '∿': '\\u223F',\n 'â': '\\u00E2',\n 'â': '\\u00E2',\n '´': '\\u00B4',\n '´': '\\u00B4',\n 'а': '\\u0430',\n 'æ': '\\u00E6',\n 'æ': '\\u00E6',\n '⁡': '\\u2061',\n '𝔞': '\\uD835\\uDD1E',\n 'à': '\\u00E0',\n 'à': '\\u00E0',\n 'ℵ': '\\u2135',\n 'ℵ': '\\u2135',\n 'α': '\\u03B1',\n 'ā': '\\u0101',\n '⨿': '\\u2A3F',\n '&': '\\u0026',\n '&': '\\u0026',\n '∧': '\\u2227',\n '⩕': '\\u2A55',\n '⩜': '\\u2A5C',\n '⩘': '\\u2A58',\n '⩚': '\\u2A5A',\n '∠': '\\u2220',\n '⦤': '\\u29A4',\n '∠': '\\u2220',\n '∡': '\\u2221',\n '⦨': '\\u29A8',\n '⦩': '\\u29A9',\n '⦪': '\\u29AA',\n '⦫': '\\u29AB',\n '⦬': '\\u29AC',\n '⦭': '\\u29AD',\n '⦮': '\\u29AE',\n '⦯': '\\u29AF',\n '∟': '\\u221F',\n '⊾': '\\u22BE',\n '⦝': '\\u299D',\n '∢': '\\u2222',\n 'Å': '\\u00C5',\n '⍼': '\\u237C',\n 'ą': '\\u0105',\n '𝕒': '\\uD835\\uDD52',\n '≈': '\\u2248',\n '⩰': '\\u2A70',\n '⩯': '\\u2A6F',\n '≊': '\\u224A',\n '≋': '\\u224B',\n ''': '\\u0027',\n '≈': '\\u2248',\n '≊': '\\u224A',\n 'å': '\\u00E5',\n 'å': '\\u00E5',\n '𝒶': '\\uD835\\uDCB6',\n '*': '\\u002A',\n '≈': '\\u2248',\n '≍': '\\u224D',\n 'ã': '\\u00E3',\n 'ã': '\\u00E3',\n 'ä': '\\u00E4',\n 'ä': '\\u00E4',\n '∳': '\\u2233',\n '⨑': '\\u2A11',\n '⫭': '\\u2AED',\n '≌': '\\u224C',\n '϶': '\\u03F6',\n '‵': '\\u2035',\n '∽': '\\u223D',\n '⋍': '\\u22CD',\n '⊽': '\\u22BD',\n '⌅': '\\u2305',\n '⌅': '\\u2305',\n '⎵': '\\u23B5',\n '⎶': '\\u23B6',\n '≌': '\\u224C',\n 'б': '\\u0431',\n '„': '\\u201E',\n '∵': '\\u2235',\n '∵': '\\u2235',\n '⦰': '\\u29B0',\n '϶': '\\u03F6',\n 'ℬ': '\\u212C',\n 'β': '\\u03B2',\n 'ℶ': '\\u2136',\n '≬': '\\u226C',\n '𝔟': '\\uD835\\uDD1F',\n '⋂': '\\u22C2',\n '◯': '\\u25EF',\n '⋃': '\\u22C3',\n '⨀': '\\u2A00',\n '⨁': '\\u2A01',\n '⨂': '\\u2A02',\n '⨆': '\\u2A06',\n '★': '\\u2605',\n '▽': '\\u25BD',\n '△': '\\u25B3',\n '⨄': '\\u2A04',\n '⋁': '\\u22C1',\n '⋀': '\\u22C0',\n '⤍': '\\u290D',\n '⧫': '\\u29EB',\n '▪': '\\u25AA',\n '▴': '\\u25B4',\n '▾': '\\u25BE',\n '◂': '\\u25C2',\n '▸': '\\u25B8',\n '␣': '\\u2423',\n '▒': '\\u2592',\n '░': '\\u2591',\n '▓': '\\u2593',\n '█': '\\u2588',\n '=⃥': '\\u003D\\u20E5',\n '≡⃥': '\\u2261\\u20E5',\n '⌐': '\\u2310',\n '𝕓': '\\uD835\\uDD53',\n '⊥': '\\u22A5',\n '⊥': '\\u22A5',\n '⋈': '\\u22C8',\n '╗': '\\u2557',\n '╔': '\\u2554',\n '╖': '\\u2556',\n '╓': '\\u2553',\n '═': '\\u2550',\n '╦': '\\u2566',\n '╩': '\\u2569',\n '╤': '\\u2564',\n '╧': '\\u2567',\n '╝': '\\u255D',\n '╚': '\\u255A',\n '╜': '\\u255C',\n '╙': '\\u2559',\n '║': '\\u2551',\n '╬': '\\u256C',\n '╣': '\\u2563',\n '╠': '\\u2560',\n '╫': '\\u256B',\n '╢': '\\u2562',\n '╟': '\\u255F',\n '⧉': '\\u29C9',\n '╕': '\\u2555',\n '╒': '\\u2552',\n '┐': '\\u2510',\n '┌': '\\u250C',\n '─': '\\u2500',\n '╥': '\\u2565',\n '╨': '\\u2568',\n '┬': '\\u252C',\n '┴': '\\u2534',\n '⊟': '\\u229F',\n '⊞': '\\u229E',\n '⊠': '\\u22A0',\n '╛': '\\u255B',\n '╘': '\\u2558',\n '┘': '\\u2518',\n '└': '\\u2514',\n '│': '\\u2502',\n '╪': '\\u256A',\n '╡': '\\u2561',\n '╞': '\\u255E',\n '┼': '\\u253C',\n '┤': '\\u2524',\n '├': '\\u251C',\n '‵': '\\u2035',\n '˘': '\\u02D8',\n '¦': '\\u00A6',\n '¦': '\\u00A6',\n '𝒷': '\\uD835\\uDCB7',\n '⁏': '\\u204F',\n '∽': '\\u223D',\n '⋍': '\\u22CD',\n '\': '\\u005C',\n '⧅': '\\u29C5',\n '⟈': '\\u27C8',\n '•': '\\u2022',\n '•': '\\u2022',\n '≎': '\\u224E',\n '⪮': '\\u2AAE',\n '≏': '\\u224F',\n '≏': '\\u224F',\n 'ć': '\\u0107',\n '∩': '\\u2229',\n '⩄': '\\u2A44',\n '⩉': '\\u2A49',\n '⩋': '\\u2A4B',\n '⩇': '\\u2A47',\n '⩀': '\\u2A40',\n '∩︀': '\\u2229\\uFE00',\n '⁁': '\\u2041',\n 'ˇ': '\\u02C7',\n '⩍': '\\u2A4D',\n 'č': '\\u010D',\n 'ç': '\\u00E7',\n 'ç': '\\u00E7',\n 'ĉ': '\\u0109',\n '⩌': '\\u2A4C',\n '⩐': '\\u2A50',\n 'ċ': '\\u010B',\n '¸': '\\u00B8',\n '¸': '\\u00B8',\n '⦲': '\\u29B2',\n '¢': '\\u00A2',\n '¢': '\\u00A2',\n '·': '\\u00B7',\n '𝔠': '\\uD835\\uDD20',\n 'ч': '\\u0447',\n '✓': '\\u2713',\n '✓': '\\u2713',\n 'χ': '\\u03C7',\n '○': '\\u25CB',\n '⧃': '\\u29C3',\n 'ˆ': '\\u02C6',\n '≗': '\\u2257',\n '↺': '\\u21BA',\n '↻': '\\u21BB',\n '®': '\\u00AE',\n 'Ⓢ': '\\u24C8',\n '⊛': '\\u229B',\n '⊚': '\\u229A',\n '⊝': '\\u229D',\n '≗': '\\u2257',\n '⨐': '\\u2A10',\n '⫯': '\\u2AEF',\n '⧂': '\\u29C2',\n '♣': '\\u2663',\n '♣': '\\u2663',\n ':': '\\u003A',\n '≔': '\\u2254',\n '≔': '\\u2254',\n ',': '\\u002C',\n '@': '\\u0040',\n '∁': '\\u2201',\n '∘': '\\u2218',\n '∁': '\\u2201',\n 'ℂ': '\\u2102',\n '≅': '\\u2245',\n '⩭': '\\u2A6D',\n '∮': '\\u222E',\n '𝕔': '\\uD835\\uDD54',\n '∐': '\\u2210',\n '©': '\\u00A9',\n '©': '\\u00A9',\n '℗': '\\u2117',\n '↵': '\\u21B5',\n '✗': '\\u2717',\n '𝒸': '\\uD835\\uDCB8',\n '⫏': '\\u2ACF',\n '⫑': '\\u2AD1',\n '⫐': '\\u2AD0',\n '⫒': '\\u2AD2',\n '⋯': '\\u22EF',\n '⤸': '\\u2938',\n '⤵': '\\u2935',\n '⋞': '\\u22DE',\n '⋟': '\\u22DF',\n '↶': '\\u21B6',\n '⤽': '\\u293D',\n '∪': '\\u222A',\n '⩈': '\\u2A48',\n '⩆': '\\u2A46',\n '⩊': '\\u2A4A',\n '⊍': '\\u228D',\n '⩅': '\\u2A45',\n '∪︀': '\\u222A\\uFE00',\n '↷': '\\u21B7',\n '⤼': '\\u293C',\n '⋞': '\\u22DE',\n '⋟': '\\u22DF',\n '⋎': '\\u22CE',\n '⋏': '\\u22CF',\n '¤': '\\u00A4',\n '¤': '\\u00A4',\n '↶': '\\u21B6',\n '↷': '\\u21B7',\n '⋎': '\\u22CE',\n '⋏': '\\u22CF',\n '∲': '\\u2232',\n '∱': '\\u2231',\n '⌭': '\\u232D',\n '⇓': '\\u21D3',\n '⥥': '\\u2965',\n '†': '\\u2020',\n 'ℸ': '\\u2138',\n '↓': '\\u2193',\n '‐': '\\u2010',\n '⊣': '\\u22A3',\n '⤏': '\\u290F',\n '˝': '\\u02DD',\n 'ď': '\\u010F',\n 'д': '\\u0434',\n 'ⅆ': '\\u2146',\n '‡': '\\u2021',\n '⇊': '\\u21CA',\n '⩷': '\\u2A77',\n '°': '\\u00B0',\n '°': '\\u00B0',\n 'δ': '\\u03B4',\n '⦱': '\\u29B1',\n '⥿': '\\u297F',\n '𝔡': '\\uD835\\uDD21',\n '⇃': '\\u21C3',\n '⇂': '\\u21C2',\n '⋄': '\\u22C4',\n '⋄': '\\u22C4',\n '♦': '\\u2666',\n '♦': '\\u2666',\n '¨': '\\u00A8',\n 'ϝ': '\\u03DD',\n '⋲': '\\u22F2',\n '÷': '\\u00F7',\n '÷': '\\u00F7',\n '÷': '\\u00F7',\n '⋇': '\\u22C7',\n '⋇': '\\u22C7',\n 'ђ': '\\u0452',\n '⌞': '\\u231E',\n '⌍': '\\u230D',\n '$': '\\u0024',\n '𝕕': '\\uD835\\uDD55',\n '˙': '\\u02D9',\n '≐': '\\u2250',\n '≑': '\\u2251',\n '∸': '\\u2238',\n '∔': '\\u2214',\n '⊡': '\\u22A1',\n '⌆': '\\u2306',\n '↓': '\\u2193',\n '⇊': '\\u21CA',\n '⇃': '\\u21C3',\n '⇂': '\\u21C2',\n '⤐': '\\u2910',\n '⌟': '\\u231F',\n '⌌': '\\u230C',\n '𝒹': '\\uD835\\uDCB9',\n 'ѕ': '\\u0455',\n '⧶': '\\u29F6',\n 'đ': '\\u0111',\n '⋱': '\\u22F1',\n '▿': '\\u25BF',\n '▾': '\\u25BE',\n '⇵': '\\u21F5',\n '⥯': '\\u296F',\n '⦦': '\\u29A6',\n 'џ': '\\u045F',\n '⟿': '\\u27FF',\n '⩷': '\\u2A77',\n '≑': '\\u2251',\n 'é': '\\u00E9',\n 'é': '\\u00E9',\n '⩮': '\\u2A6E',\n 'ě': '\\u011B',\n '≖': '\\u2256',\n 'ê': '\\u00EA',\n 'ê': '\\u00EA',\n '≕': '\\u2255',\n 'э': '\\u044D',\n 'ė': '\\u0117',\n 'ⅇ': '\\u2147',\n '≒': '\\u2252',\n '𝔢': '\\uD835\\uDD22',\n '⪚': '\\u2A9A',\n 'è': '\\u00E8',\n 'è': '\\u00E8',\n '⪖': '\\u2A96',\n '⪘': '\\u2A98',\n '⪙': '\\u2A99',\n '⏧': '\\u23E7',\n 'ℓ': '\\u2113',\n '⪕': '\\u2A95',\n '⪗': '\\u2A97',\n 'ē': '\\u0113',\n '∅': '\\u2205',\n '∅': '\\u2205',\n '∅': '\\u2205',\n ' ': '\\u2004',\n ' ': '\\u2005',\n ' ': '\\u2003',\n 'ŋ': '\\u014B',\n ' ': '\\u2002',\n 'ę': '\\u0119',\n '𝕖': '\\uD835\\uDD56',\n '⋕': '\\u22D5',\n '⧣': '\\u29E3',\n '⩱': '\\u2A71',\n 'ε': '\\u03B5',\n 'ε': '\\u03B5',\n 'ϵ': '\\u03F5',\n '≖': '\\u2256',\n '≕': '\\u2255',\n '≂': '\\u2242',\n '⪖': '\\u2A96',\n '⪕': '\\u2A95',\n '=': '\\u003D',\n '≟': '\\u225F',\n '≡': '\\u2261',\n '⩸': '\\u2A78',\n '⧥': '\\u29E5',\n '≓': '\\u2253',\n '⥱': '\\u2971',\n 'ℯ': '\\u212F',\n '≐': '\\u2250',\n '≂': '\\u2242',\n 'η': '\\u03B7',\n 'ð': '\\u00F0',\n 'ð': '\\u00F0',\n 'ë': '\\u00EB',\n 'ë': '\\u00EB',\n '€': '\\u20AC',\n '!': '\\u0021',\n '∃': '\\u2203',\n 'ℰ': '\\u2130',\n 'ⅇ': '\\u2147',\n '≒': '\\u2252',\n 'ф': '\\u0444',\n '♀': '\\u2640',\n 'ffi': '\\uFB03',\n 'ff': '\\uFB00',\n 'ffl': '\\uFB04',\n '𝔣': '\\uD835\\uDD23',\n 'fi': '\\uFB01',\n 'fj': '\\u0066\\u006A',\n '♭': '\\u266D',\n 'fl': '\\uFB02',\n '▱': '\\u25B1',\n 'ƒ': '\\u0192',\n '𝕗': '\\uD835\\uDD57',\n '∀': '\\u2200',\n '⋔': '\\u22D4',\n '⫙': '\\u2AD9',\n '⨍': '\\u2A0D',\n '½': '\\u00BD',\n '½': '\\u00BD',\n '⅓': '\\u2153',\n '¼': '\\u00BC',\n '¼': '\\u00BC',\n '⅕': '\\u2155',\n '⅙': '\\u2159',\n '⅛': '\\u215B',\n '⅔': '\\u2154',\n '⅖': '\\u2156',\n '¾': '\\u00BE',\n '¾': '\\u00BE',\n '⅗': '\\u2157',\n '⅜': '\\u215C',\n '⅘': '\\u2158',\n '⅚': '\\u215A',\n '⅝': '\\u215D',\n '⅞': '\\u215E',\n '⁄': '\\u2044',\n '⌢': '\\u2322',\n '𝒻': '\\uD835\\uDCBB',\n '≧': '\\u2267',\n '⪌': '\\u2A8C',\n 'ǵ': '\\u01F5',\n 'γ': '\\u03B3',\n 'ϝ': '\\u03DD',\n '⪆': '\\u2A86',\n 'ğ': '\\u011F',\n 'ĝ': '\\u011D',\n 'г': '\\u0433',\n 'ġ': '\\u0121',\n '≥': '\\u2265',\n '⋛': '\\u22DB',\n '≥': '\\u2265',\n '≧': '\\u2267',\n '⩾': '\\u2A7E',\n '⩾': '\\u2A7E',\n '⪩': '\\u2AA9',\n '⪀': '\\u2A80',\n '⪂': '\\u2A82',\n '⪄': '\\u2A84',\n '⋛︀': '\\u22DB\\uFE00',\n '⪔': '\\u2A94',\n '𝔤': '\\uD835\\uDD24',\n '≫': '\\u226B',\n '⋙': '\\u22D9',\n 'ℷ': '\\u2137',\n 'ѓ': '\\u0453',\n '≷': '\\u2277',\n '⪒': '\\u2A92',\n '⪥': '\\u2AA5',\n '⪤': '\\u2AA4',\n '≩': '\\u2269',\n '⪊': '\\u2A8A',\n '⪊': '\\u2A8A',\n '⪈': '\\u2A88',\n '⪈': '\\u2A88',\n '≩': '\\u2269',\n '⋧': '\\u22E7',\n '𝕘': '\\uD835\\uDD58',\n '`': '\\u0060',\n 'ℊ': '\\u210A',\n '≳': '\\u2273',\n '⪎': '\\u2A8E',\n '⪐': '\\u2A90',\n '>': '\\u003E',\n '>': '\\u003E',\n '⪧': '\\u2AA7',\n '⩺': '\\u2A7A',\n '⋗': '\\u22D7',\n '⦕': '\\u2995',\n '⩼': '\\u2A7C',\n '⪆': '\\u2A86',\n '⥸': '\\u2978',\n '⋗': '\\u22D7',\n '⋛': '\\u22DB',\n '⪌': '\\u2A8C',\n '≷': '\\u2277',\n '≳': '\\u2273',\n '≩︀': '\\u2269\\uFE00',\n '≩︀': '\\u2269\\uFE00',\n '⇔': '\\u21D4',\n ' ': '\\u200A',\n '½': '\\u00BD',\n 'ℋ': '\\u210B',\n 'ъ': '\\u044A',\n '↔': '\\u2194',\n '⥈': '\\u2948',\n '↭': '\\u21AD',\n 'ℏ': '\\u210F',\n 'ĥ': '\\u0125',\n '♥': '\\u2665',\n '♥': '\\u2665',\n '…': '\\u2026',\n '⊹': '\\u22B9',\n '𝔥': '\\uD835\\uDD25',\n '⤥': '\\u2925',\n '⤦': '\\u2926',\n '⇿': '\\u21FF',\n '∻': '\\u223B',\n '↩': '\\u21A9',\n '↪': '\\u21AA',\n '𝕙': '\\uD835\\uDD59',\n '―': '\\u2015',\n '𝒽': '\\uD835\\uDCBD',\n 'ℏ': '\\u210F',\n 'ħ': '\\u0127',\n '⁃': '\\u2043',\n '‐': '\\u2010',\n 'í': '\\u00ED',\n 'í': '\\u00ED',\n '⁣': '\\u2063',\n 'î': '\\u00EE',\n 'î': '\\u00EE',\n 'и': '\\u0438',\n 'е': '\\u0435',\n '¡': '\\u00A1',\n '¡': '\\u00A1',\n '⇔': '\\u21D4',\n '𝔦': '\\uD835\\uDD26',\n 'ì': '\\u00EC',\n 'ì': '\\u00EC',\n 'ⅈ': '\\u2148',\n '⨌': '\\u2A0C',\n '∭': '\\u222D',\n '⧜': '\\u29DC',\n '℩': '\\u2129',\n 'ij': '\\u0133',\n 'ī': '\\u012B',\n 'ℑ': '\\u2111',\n 'ℐ': '\\u2110',\n 'ℑ': '\\u2111',\n 'ı': '\\u0131',\n '⊷': '\\u22B7',\n 'Ƶ': '\\u01B5',\n '∈': '\\u2208',\n '℅': '\\u2105',\n '∞': '\\u221E',\n '⧝': '\\u29DD',\n 'ı': '\\u0131',\n '∫': '\\u222B',\n '⊺': '\\u22BA',\n 'ℤ': '\\u2124',\n '⊺': '\\u22BA',\n '⨗': '\\u2A17',\n '⨼': '\\u2A3C',\n 'ё': '\\u0451',\n 'į': '\\u012F',\n '𝕚': '\\uD835\\uDD5A',\n 'ι': '\\u03B9',\n '⨼': '\\u2A3C',\n '¿': '\\u00BF',\n '¿': '\\u00BF',\n '𝒾': '\\uD835\\uDCBE',\n '∈': '\\u2208',\n '⋹': '\\u22F9',\n '⋵': '\\u22F5',\n '⋴': '\\u22F4',\n '⋳': '\\u22F3',\n '∈': '\\u2208',\n '⁢': '\\u2062',\n 'ĩ': '\\u0129',\n 'і': '\\u0456',\n 'ï': '\\u00EF',\n 'ï': '\\u00EF',\n 'ĵ': '\\u0135',\n 'й': '\\u0439',\n '𝔧': '\\uD835\\uDD27',\n 'ȷ': '\\u0237',\n '𝕛': '\\uD835\\uDD5B',\n '𝒿': '\\uD835\\uDCBF',\n 'ј': '\\u0458',\n 'є': '\\u0454',\n 'κ': '\\u03BA',\n 'ϰ': '\\u03F0',\n 'ķ': '\\u0137',\n 'к': '\\u043A',\n '𝔨': '\\uD835\\uDD28',\n 'ĸ': '\\u0138',\n 'х': '\\u0445',\n 'ќ': '\\u045C',\n '𝕜': '\\uD835\\uDD5C',\n '𝓀': '\\uD835\\uDCC0',\n '⇚': '\\u21DA',\n '⇐': '\\u21D0',\n '⤛': '\\u291B',\n '⤎': '\\u290E',\n '≦': '\\u2266',\n '⪋': '\\u2A8B',\n '⥢': '\\u2962',\n 'ĺ': '\\u013A',\n '⦴': '\\u29B4',\n 'ℒ': '\\u2112',\n 'λ': '\\u03BB',\n '⟨': '\\u27E8',\n '⦑': '\\u2991',\n '⟨': '\\u27E8',\n '⪅': '\\u2A85',\n '«': '\\u00AB',\n '«': '\\u00AB',\n '←': '\\u2190',\n '⇤': '\\u21E4',\n '⤟': '\\u291F',\n '⤝': '\\u291D',\n '↩': '\\u21A9',\n '↫': '\\u21AB',\n '⤹': '\\u2939',\n '⥳': '\\u2973',\n '↢': '\\u21A2',\n '⪫': '\\u2AAB',\n '⤙': '\\u2919',\n '⪭': '\\u2AAD',\n '⪭︀': '\\u2AAD\\uFE00',\n '⤌': '\\u290C',\n '❲': '\\u2772',\n '{': '\\u007B',\n '[': '\\u005B',\n '⦋': '\\u298B',\n '⦏': '\\u298F',\n '⦍': '\\u298D',\n 'ľ': '\\u013E',\n 'ļ': '\\u013C',\n '⌈': '\\u2308',\n '{': '\\u007B',\n 'л': '\\u043B',\n '⤶': '\\u2936',\n '“': '\\u201C',\n '„': '\\u201E',\n '⥧': '\\u2967',\n '⥋': '\\u294B',\n '↲': '\\u21B2',\n '≤': '\\u2264',\n '←': '\\u2190',\n '↢': '\\u21A2',\n '↽': '\\u21BD',\n '↼': '\\u21BC',\n '⇇': '\\u21C7',\n '↔': '\\u2194',\n '⇆': '\\u21C6',\n '⇋': '\\u21CB',\n '↭': '\\u21AD',\n '⋋': '\\u22CB',\n '⋚': '\\u22DA',\n '≤': '\\u2264',\n '≦': '\\u2266',\n '⩽': '\\u2A7D',\n '⩽': '\\u2A7D',\n '⪨': '\\u2AA8',\n '⩿': '\\u2A7F',\n '⪁': '\\u2A81',\n '⪃': '\\u2A83',\n '⋚︀': '\\u22DA\\uFE00',\n '⪓': '\\u2A93',\n '⪅': '\\u2A85',\n '⋖': '\\u22D6',\n '⋚': '\\u22DA',\n '⪋': '\\u2A8B',\n '≶': '\\u2276',\n '≲': '\\u2272',\n '⥼': '\\u297C',\n '⌊': '\\u230A',\n '𝔩': '\\uD835\\uDD29',\n '≶': '\\u2276',\n '⪑': '\\u2A91',\n '↽': '\\u21BD',\n '↼': '\\u21BC',\n '⥪': '\\u296A',\n '▄': '\\u2584',\n 'љ': '\\u0459',\n '≪': '\\u226A',\n '⇇': '\\u21C7',\n '⌞': '\\u231E',\n '⥫': '\\u296B',\n '◺': '\\u25FA',\n 'ŀ': '\\u0140',\n '⎰': '\\u23B0',\n '⎰': '\\u23B0',\n '≨': '\\u2268',\n '⪉': '\\u2A89',\n '⪉': '\\u2A89',\n '⪇': '\\u2A87',\n '⪇': '\\u2A87',\n '≨': '\\u2268',\n '⋦': '\\u22E6',\n '⟬': '\\u27EC',\n '⇽': '\\u21FD',\n '⟦': '\\u27E6',\n '⟵': '\\u27F5',\n '⟷': '\\u27F7',\n '⟼': '\\u27FC',\n '⟶': '\\u27F6',\n '↫': '\\u21AB',\n '↬': '\\u21AC',\n '⦅': '\\u2985',\n '𝕝': '\\uD835\\uDD5D',\n '⨭': '\\u2A2D',\n '⨴': '\\u2A34',\n '∗': '\\u2217',\n '_': '\\u005F',\n '◊': '\\u25CA',\n '◊': '\\u25CA',\n '⧫': '\\u29EB',\n '(': '\\u0028',\n '⦓': '\\u2993',\n '⇆': '\\u21C6',\n '⌟': '\\u231F',\n '⇋': '\\u21CB',\n '⥭': '\\u296D',\n '‎': '\\u200E',\n '⊿': '\\u22BF',\n '‹': '\\u2039',\n '𝓁': '\\uD835\\uDCC1',\n '↰': '\\u21B0',\n '≲': '\\u2272',\n '⪍': '\\u2A8D',\n '⪏': '\\u2A8F',\n '[': '\\u005B',\n '‘': '\\u2018',\n '‚': '\\u201A',\n 'ł': '\\u0142',\n '<': '\\u003C',\n '<': '\\u003C',\n '⪦': '\\u2AA6',\n '⩹': '\\u2A79',\n '⋖': '\\u22D6',\n '⋋': '\\u22CB',\n '⋉': '\\u22C9',\n '⥶': '\\u2976',\n '⩻': '\\u2A7B',\n '⦖': '\\u2996',\n '◃': '\\u25C3',\n '⊴': '\\u22B4',\n '◂': '\\u25C2',\n '⥊': '\\u294A',\n '⥦': '\\u2966',\n '≨︀': '\\u2268\\uFE00',\n '≨︀': '\\u2268\\uFE00',\n '∺': '\\u223A',\n '¯': '\\u00AF',\n '¯': '\\u00AF',\n '♂': '\\u2642',\n '✠': '\\u2720',\n '✠': '\\u2720',\n '↦': '\\u21A6',\n '↦': '\\u21A6',\n '↧': '\\u21A7',\n '↤': '\\u21A4',\n '↥': '\\u21A5',\n '▮': '\\u25AE',\n '⨩': '\\u2A29',\n 'м': '\\u043C',\n '—': '\\u2014',\n '∡': '\\u2221',\n '𝔪': '\\uD835\\uDD2A',\n '℧': '\\u2127',\n 'µ': '\\u00B5',\n 'µ': '\\u00B5',\n '∣': '\\u2223',\n '*': '\\u002A',\n '⫰': '\\u2AF0',\n '·': '\\u00B7',\n '·': '\\u00B7',\n '−': '\\u2212',\n '⊟': '\\u229F',\n '∸': '\\u2238',\n '⨪': '\\u2A2A',\n '⫛': '\\u2ADB',\n '…': '\\u2026',\n '∓': '\\u2213',\n '⊧': '\\u22A7',\n '𝕞': '\\uD835\\uDD5E',\n '∓': '\\u2213',\n '𝓂': '\\uD835\\uDCC2',\n '∾': '\\u223E',\n 'μ': '\\u03BC',\n '⊸': '\\u22B8',\n '⊸': '\\u22B8',\n '⋙̸': '\\u22D9\\u0338',\n '≫⃒': '\\u226B\\u20D2',\n '≫̸': '\\u226B\\u0338',\n '⇍': '\\u21CD',\n '⇎': '\\u21CE',\n '⋘̸': '\\u22D8\\u0338',\n '≪⃒': '\\u226A\\u20D2',\n '≪̸': '\\u226A\\u0338',\n '⇏': '\\u21CF',\n '⊯': '\\u22AF',\n '⊮': '\\u22AE',\n '∇': '\\u2207',\n 'ń': '\\u0144',\n '∠⃒': '\\u2220\\u20D2',\n '≉': '\\u2249',\n '⩰̸': '\\u2A70\\u0338',\n '≋̸': '\\u224B\\u0338',\n 'ʼn': '\\u0149',\n '≉': '\\u2249',\n '♮': '\\u266E',\n '♮': '\\u266E',\n 'ℕ': '\\u2115',\n ' ': '\\u00A0',\n ' ': '\\u00A0',\n '≎̸': '\\u224E\\u0338',\n '≏̸': '\\u224F\\u0338',\n '⩃': '\\u2A43',\n 'ň': '\\u0148',\n 'ņ': '\\u0146',\n '≇': '\\u2247',\n '⩭̸': '\\u2A6D\\u0338',\n '⩂': '\\u2A42',\n 'н': '\\u043D',\n '–': '\\u2013',\n '≠': '\\u2260',\n '⇗': '\\u21D7',\n '⤤': '\\u2924',\n '↗': '\\u2197',\n '↗': '\\u2197',\n '≐̸': '\\u2250\\u0338',\n '≢': '\\u2262',\n '⤨': '\\u2928',\n '≂̸': '\\u2242\\u0338',\n '∄': '\\u2204',\n '∄': '\\u2204',\n '𝔫': '\\uD835\\uDD2B',\n '≧̸': '\\u2267\\u0338',\n '≱': '\\u2271',\n '≱': '\\u2271',\n '≧̸': '\\u2267\\u0338',\n '⩾̸': '\\u2A7E\\u0338',\n '⩾̸': '\\u2A7E\\u0338',\n '≵': '\\u2275',\n '≯': '\\u226F',\n '≯': '\\u226F',\n '⇎': '\\u21CE',\n '↮': '\\u21AE',\n '⫲': '\\u2AF2',\n '∋': '\\u220B',\n '⋼': '\\u22FC',\n '⋺': '\\u22FA',\n '∋': '\\u220B',\n 'њ': '\\u045A',\n '⇍': '\\u21CD',\n '≦̸': '\\u2266\\u0338',\n '↚': '\\u219A',\n '‥': '\\u2025',\n '≰': '\\u2270',\n '↚': '\\u219A',\n '↮': '\\u21AE',\n '≰': '\\u2270',\n '≦̸': '\\u2266\\u0338',\n '⩽̸': '\\u2A7D\\u0338',\n '⩽̸': '\\u2A7D\\u0338',\n '≮': '\\u226E',\n '≴': '\\u2274',\n '≮': '\\u226E',\n '⋪': '\\u22EA',\n '⋬': '\\u22EC',\n '∤': '\\u2224',\n '𝕟': '\\uD835\\uDD5F',\n '¬': '\\u00AC',\n '¬': '\\u00AC',\n '∉': '\\u2209',\n '⋹̸': '\\u22F9\\u0338',\n '⋵̸': '\\u22F5\\u0338',\n '∉': '\\u2209',\n '⋷': '\\u22F7',\n '⋶': '\\u22F6',\n '∌': '\\u220C',\n '∌': '\\u220C',\n '⋾': '\\u22FE',\n '⋽': '\\u22FD',\n '∦': '\\u2226',\n '∦': '\\u2226',\n '⫽⃥': '\\u2AFD\\u20E5',\n '∂̸': '\\u2202\\u0338',\n '⨔': '\\u2A14',\n '⊀': '\\u2280',\n '⋠': '\\u22E0',\n '⪯̸': '\\u2AAF\\u0338',\n '⊀': '\\u2280',\n '⪯̸': '\\u2AAF\\u0338',\n '⇏': '\\u21CF',\n '↛': '\\u219B',\n '⤳̸': '\\u2933\\u0338',\n '↝̸': '\\u219D\\u0338',\n '↛': '\\u219B',\n '⋫': '\\u22EB',\n '⋭': '\\u22ED',\n '⊁': '\\u2281',\n '⋡': '\\u22E1',\n '⪰̸': '\\u2AB0\\u0338',\n '𝓃': '\\uD835\\uDCC3',\n '∤': '\\u2224',\n '∦': '\\u2226',\n '≁': '\\u2241',\n '≄': '\\u2244',\n '≄': '\\u2244',\n '∤': '\\u2224',\n '∦': '\\u2226',\n '⋢': '\\u22E2',\n '⋣': '\\u22E3',\n '⊄': '\\u2284',\n '⫅̸': '\\u2AC5\\u0338',\n '⊈': '\\u2288',\n '⊂⃒': '\\u2282\\u20D2',\n '⊈': '\\u2288',\n '⫅̸': '\\u2AC5\\u0338',\n '⊁': '\\u2281',\n '⪰̸': '\\u2AB0\\u0338',\n '⊅': '\\u2285',\n '⫆̸': '\\u2AC6\\u0338',\n '⊉': '\\u2289',\n '⊃⃒': '\\u2283\\u20D2',\n '⊉': '\\u2289',\n '⫆̸': '\\u2AC6\\u0338',\n '≹': '\\u2279',\n 'ñ': '\\u00F1',\n 'ñ': '\\u00F1',\n '≸': '\\u2278',\n '⋪': '\\u22EA',\n '⋬': '\\u22EC',\n '⋫': '\\u22EB',\n '⋭': '\\u22ED',\n 'ν': '\\u03BD',\n '#': '\\u0023',\n '№': '\\u2116',\n ' ': '\\u2007',\n '⊭': '\\u22AD',\n '⤄': '\\u2904',\n '≍⃒': '\\u224D\\u20D2',\n '⊬': '\\u22AC',\n '≥⃒': '\\u2265\\u20D2',\n '>⃒': '\\u003E\\u20D2',\n '⧞': '\\u29DE',\n '⤂': '\\u2902',\n '≤⃒': '\\u2264\\u20D2',\n '<⃒': '\\u003C\\u20D2',\n '⊴⃒': '\\u22B4\\u20D2',\n '⤃': '\\u2903',\n '⊵⃒': '\\u22B5\\u20D2',\n '∼⃒': '\\u223C\\u20D2',\n '⇖': '\\u21D6',\n '⤣': '\\u2923',\n '↖': '\\u2196',\n '↖': '\\u2196',\n '⤧': '\\u2927',\n 'Ⓢ': '\\u24C8',\n 'ó': '\\u00F3',\n 'ó': '\\u00F3',\n '⊛': '\\u229B',\n '⊚': '\\u229A',\n 'ô': '\\u00F4',\n 'ô': '\\u00F4',\n 'о': '\\u043E',\n '⊝': '\\u229D',\n 'ő': '\\u0151',\n '⨸': '\\u2A38',\n '⊙': '\\u2299',\n '⦼': '\\u29BC',\n 'œ': '\\u0153',\n '⦿': '\\u29BF',\n '𝔬': '\\uD835\\uDD2C',\n '˛': '\\u02DB',\n 'ò': '\\u00F2',\n 'ò': '\\u00F2',\n '⧁': '\\u29C1',\n '⦵': '\\u29B5',\n 'Ω': '\\u03A9',\n '∮': '\\u222E',\n '↺': '\\u21BA',\n '⦾': '\\u29BE',\n '⦻': '\\u29BB',\n '‾': '\\u203E',\n '⧀': '\\u29C0',\n 'ō': '\\u014D',\n 'ω': '\\u03C9',\n 'ο': '\\u03BF',\n '⦶': '\\u29B6',\n '⊖': '\\u2296',\n '𝕠': '\\uD835\\uDD60',\n '⦷': '\\u29B7',\n '⦹': '\\u29B9',\n '⊕': '\\u2295',\n '∨': '\\u2228',\n '↻': '\\u21BB',\n '⩝': '\\u2A5D',\n 'ℴ': '\\u2134',\n 'ℴ': '\\u2134',\n 'ª': '\\u00AA',\n 'ª': '\\u00AA',\n 'º': '\\u00BA',\n 'º': '\\u00BA',\n '⊶': '\\u22B6',\n '⩖': '\\u2A56',\n '⩗': '\\u2A57',\n '⩛': '\\u2A5B',\n 'ℴ': '\\u2134',\n 'ø': '\\u00F8',\n 'ø': '\\u00F8',\n '⊘': '\\u2298',\n 'õ': '\\u00F5',\n 'õ': '\\u00F5',\n '⊗': '\\u2297',\n '⨶': '\\u2A36',\n 'ö': '\\u00F6',\n 'ö': '\\u00F6',\n '⌽': '\\u233D',\n '∥': '\\u2225',\n '¶': '\\u00B6',\n '¶': '\\u00B6',\n '∥': '\\u2225',\n '⫳': '\\u2AF3',\n '⫽': '\\u2AFD',\n '∂': '\\u2202',\n 'п': '\\u043F',\n '%': '\\u0025',\n '.': '\\u002E',\n '‰': '\\u2030',\n '⊥': '\\u22A5',\n '‱': '\\u2031',\n '𝔭': '\\uD835\\uDD2D',\n 'φ': '\\u03C6',\n 'ϕ': '\\u03D5',\n 'ℳ': '\\u2133',\n '☎': '\\u260E',\n 'π': '\\u03C0',\n '⋔': '\\u22D4',\n 'ϖ': '\\u03D6',\n 'ℏ': '\\u210F',\n 'ℎ': '\\u210E',\n 'ℏ': '\\u210F',\n '+': '\\u002B',\n '⨣': '\\u2A23',\n '⊞': '\\u229E',\n '⨢': '\\u2A22',\n '∔': '\\u2214',\n '⨥': '\\u2A25',\n '⩲': '\\u2A72',\n '±': '\\u00B1',\n '±': '\\u00B1',\n '⨦': '\\u2A26',\n '⨧': '\\u2A27',\n '±': '\\u00B1',\n '⨕': '\\u2A15',\n '𝕡': '\\uD835\\uDD61',\n '£': '\\u00A3',\n '£': '\\u00A3',\n '≺': '\\u227A',\n '⪳': '\\u2AB3',\n '⪷': '\\u2AB7',\n '≼': '\\u227C',\n '⪯': '\\u2AAF',\n '≺': '\\u227A',\n '⪷': '\\u2AB7',\n '≼': '\\u227C',\n '⪯': '\\u2AAF',\n '⪹': '\\u2AB9',\n '⪵': '\\u2AB5',\n '⋨': '\\u22E8',\n '≾': '\\u227E',\n '′': '\\u2032',\n 'ℙ': '\\u2119',\n '⪵': '\\u2AB5',\n '⪹': '\\u2AB9',\n '⋨': '\\u22E8',\n '∏': '\\u220F',\n '⌮': '\\u232E',\n '⌒': '\\u2312',\n '⌓': '\\u2313',\n '∝': '\\u221D',\n '∝': '\\u221D',\n '≾': '\\u227E',\n '⊰': '\\u22B0',\n '𝓅': '\\uD835\\uDCC5',\n 'ψ': '\\u03C8',\n ' ': '\\u2008',\n '𝔮': '\\uD835\\uDD2E',\n '⨌': '\\u2A0C',\n '𝕢': '\\uD835\\uDD62',\n '⁗': '\\u2057',\n '𝓆': '\\uD835\\uDCC6',\n 'ℍ': '\\u210D',\n '⨖': '\\u2A16',\n '?': '\\u003F',\n '≟': '\\u225F',\n '"': '\\u0022',\n '"': '\\u0022',\n '⇛': '\\u21DB',\n '⇒': '\\u21D2',\n '⤜': '\\u291C',\n '⤏': '\\u290F',\n '⥤': '\\u2964',\n '∽̱': '\\u223D\\u0331',\n 'ŕ': '\\u0155',\n '√': '\\u221A',\n '⦳': '\\u29B3',\n '⟩': '\\u27E9',\n '⦒': '\\u2992',\n '⦥': '\\u29A5',\n '⟩': '\\u27E9',\n '»': '\\u00BB',\n '»': '\\u00BB',\n '→': '\\u2192',\n '⥵': '\\u2975',\n '⇥': '\\u21E5',\n '⤠': '\\u2920',\n '⤳': '\\u2933',\n '⤞': '\\u291E',\n '↪': '\\u21AA',\n '↬': '\\u21AC',\n '⥅': '\\u2945',\n '⥴': '\\u2974',\n '↣': '\\u21A3',\n '↝': '\\u219D',\n '⤚': '\\u291A',\n '∶': '\\u2236',\n 'ℚ': '\\u211A',\n '⤍': '\\u290D',\n '❳': '\\u2773',\n '}': '\\u007D',\n ']': '\\u005D',\n '⦌': '\\u298C',\n '⦎': '\\u298E',\n '⦐': '\\u2990',\n 'ř': '\\u0159',\n 'ŗ': '\\u0157',\n '⌉': '\\u2309',\n '}': '\\u007D',\n 'р': '\\u0440',\n '⤷': '\\u2937',\n '⥩': '\\u2969',\n '”': '\\u201D',\n '”': '\\u201D',\n '↳': '\\u21B3',\n 'ℜ': '\\u211C',\n 'ℛ': '\\u211B',\n 'ℜ': '\\u211C',\n 'ℝ': '\\u211D',\n '▭': '\\u25AD',\n '®': '\\u00AE',\n '®': '\\u00AE',\n '⥽': '\\u297D',\n '⌋': '\\u230B',\n '𝔯': '\\uD835\\uDD2F',\n '⇁': '\\u21C1',\n '⇀': '\\u21C0',\n '⥬': '\\u296C',\n 'ρ': '\\u03C1',\n 'ϱ': '\\u03F1',\n '→': '\\u2192',\n '↣': '\\u21A3',\n '⇁': '\\u21C1',\n '⇀': '\\u21C0',\n '⇄': '\\u21C4',\n '⇌': '\\u21CC',\n '⇉': '\\u21C9',\n '↝': '\\u219D',\n '⋌': '\\u22CC',\n '˚': '\\u02DA',\n '≓': '\\u2253',\n '⇄': '\\u21C4',\n '⇌': '\\u21CC',\n '‏': '\\u200F',\n '⎱': '\\u23B1',\n '⎱': '\\u23B1',\n '⫮': '\\u2AEE',\n '⟭': '\\u27ED',\n '⇾': '\\u21FE',\n '⟧': '\\u27E7',\n '⦆': '\\u2986',\n '𝕣': '\\uD835\\uDD63',\n '⨮': '\\u2A2E',\n '⨵': '\\u2A35',\n ')': '\\u0029',\n '⦔': '\\u2994',\n '⨒': '\\u2A12',\n '⇉': '\\u21C9',\n '›': '\\u203A',\n '𝓇': '\\uD835\\uDCC7',\n '↱': '\\u21B1',\n ']': '\\u005D',\n '’': '\\u2019',\n '’': '\\u2019',\n '⋌': '\\u22CC',\n '⋊': '\\u22CA',\n '▹': '\\u25B9',\n '⊵': '\\u22B5',\n '▸': '\\u25B8',\n '⧎': '\\u29CE',\n '⥨': '\\u2968',\n '℞': '\\u211E',\n 'ś': '\\u015B',\n '‚': '\\u201A',\n '≻': '\\u227B',\n '⪴': '\\u2AB4',\n '⪸': '\\u2AB8',\n 'š': '\\u0161',\n '≽': '\\u227D',\n '⪰': '\\u2AB0',\n 'ş': '\\u015F',\n 'ŝ': '\\u015D',\n '⪶': '\\u2AB6',\n '⪺': '\\u2ABA',\n '⋩': '\\u22E9',\n '⨓': '\\u2A13',\n '≿': '\\u227F',\n 'с': '\\u0441',\n '⋅': '\\u22C5',\n '⊡': '\\u22A1',\n '⩦': '\\u2A66',\n '⇘': '\\u21D8',\n '⤥': '\\u2925',\n '↘': '\\u2198',\n '↘': '\\u2198',\n '§': '\\u00A7',\n '§': '\\u00A7',\n ';': '\\u003B',\n '⤩': '\\u2929',\n '∖': '\\u2216',\n '∖': '\\u2216',\n '✶': '\\u2736',\n '𝔰': '\\uD835\\uDD30',\n '⌢': '\\u2322',\n '♯': '\\u266F',\n 'щ': '\\u0449',\n 'ш': '\\u0448',\n '∣': '\\u2223',\n '∥': '\\u2225',\n '­': '\\u00AD',\n '­': '\\u00AD',\n 'σ': '\\u03C3',\n 'ς': '\\u03C2',\n 'ς': '\\u03C2',\n '∼': '\\u223C',\n '⩪': '\\u2A6A',\n '≃': '\\u2243',\n '≃': '\\u2243',\n '⪞': '\\u2A9E',\n '⪠': '\\u2AA0',\n '⪝': '\\u2A9D',\n '⪟': '\\u2A9F',\n '≆': '\\u2246',\n '⨤': '\\u2A24',\n '⥲': '\\u2972',\n '←': '\\u2190',\n '∖': '\\u2216',\n '⨳': '\\u2A33',\n '⧤': '\\u29E4',\n '∣': '\\u2223',\n '⌣': '\\u2323',\n '⪪': '\\u2AAA',\n '⪬': '\\u2AAC',\n '⪬︀': '\\u2AAC\\uFE00',\n 'ь': '\\u044C',\n '/': '\\u002F',\n '⧄': '\\u29C4',\n '⌿': '\\u233F',\n '𝕤': '\\uD835\\uDD64',\n '♠': '\\u2660',\n '♠': '\\u2660',\n '∥': '\\u2225',\n '⊓': '\\u2293',\n '⊓︀': '\\u2293\\uFE00',\n '⊔': '\\u2294',\n '⊔︀': '\\u2294\\uFE00',\n '⊏': '\\u228F',\n '⊑': '\\u2291',\n '⊏': '\\u228F',\n '⊑': '\\u2291',\n '⊐': '\\u2290',\n '⊒': '\\u2292',\n '⊐': '\\u2290',\n '⊒': '\\u2292',\n '□': '\\u25A1',\n '□': '\\u25A1',\n '▪': '\\u25AA',\n '▪': '\\u25AA',\n '→': '\\u2192',\n '𝓈': '\\uD835\\uDCC8',\n '∖': '\\u2216',\n '⌣': '\\u2323',\n '⋆': '\\u22C6',\n '☆': '\\u2606',\n '★': '\\u2605',\n 'ϵ': '\\u03F5',\n 'ϕ': '\\u03D5',\n '¯': '\\u00AF',\n '⊂': '\\u2282',\n '⫅': '\\u2AC5',\n '⪽': '\\u2ABD',\n '⊆': '\\u2286',\n '⫃': '\\u2AC3',\n '⫁': '\\u2AC1',\n '⫋': '\\u2ACB',\n '⊊': '\\u228A',\n '⪿': '\\u2ABF',\n '⥹': '\\u2979',\n '⊂': '\\u2282',\n '⊆': '\\u2286',\n '⫅': '\\u2AC5',\n '⊊': '\\u228A',\n '⫋': '\\u2ACB',\n '⫇': '\\u2AC7',\n '⫕': '\\u2AD5',\n '⫓': '\\u2AD3',\n '≻': '\\u227B',\n '⪸': '\\u2AB8',\n '≽': '\\u227D',\n '⪰': '\\u2AB0',\n '⪺': '\\u2ABA',\n '⪶': '\\u2AB6',\n '⋩': '\\u22E9',\n '≿': '\\u227F',\n '∑': '\\u2211',\n '♪': '\\u266A',\n '¹': '\\u00B9',\n '¹': '\\u00B9',\n '²': '\\u00B2',\n '²': '\\u00B2',\n '³': '\\u00B3',\n '³': '\\u00B3',\n '⊃': '\\u2283',\n '⫆': '\\u2AC6',\n '⪾': '\\u2ABE',\n '⫘': '\\u2AD8',\n '⊇': '\\u2287',\n '⫄': '\\u2AC4',\n '⟉': '\\u27C9',\n '⫗': '\\u2AD7',\n '⥻': '\\u297B',\n '⫂': '\\u2AC2',\n '⫌': '\\u2ACC',\n '⊋': '\\u228B',\n '⫀': '\\u2AC0',\n '⊃': '\\u2283',\n '⊇': '\\u2287',\n '⫆': '\\u2AC6',\n '⊋': '\\u228B',\n '⫌': '\\u2ACC',\n '⫈': '\\u2AC8',\n '⫔': '\\u2AD4',\n '⫖': '\\u2AD6',\n '⇙': '\\u21D9',\n '⤦': '\\u2926',\n '↙': '\\u2199',\n '↙': '\\u2199',\n '⤪': '\\u292A',\n 'ß': '\\u00DF',\n 'ß': '\\u00DF',\n '⌖': '\\u2316',\n 'τ': '\\u03C4',\n '⎴': '\\u23B4',\n 'ť': '\\u0165',\n 'ţ': '\\u0163',\n 'т': '\\u0442',\n '⃛': '\\u20DB',\n '⌕': '\\u2315',\n '𝔱': '\\uD835\\uDD31',\n '∴': '\\u2234',\n '∴': '\\u2234',\n 'θ': '\\u03B8',\n 'ϑ': '\\u03D1',\n 'ϑ': '\\u03D1',\n '≈': '\\u2248',\n '∼': '\\u223C',\n ' ': '\\u2009',\n '≈': '\\u2248',\n '∼': '\\u223C',\n 'þ': '\\u00FE',\n 'þ': '\\u00FE',\n '˜': '\\u02DC',\n '×': '\\u00D7',\n '×': '\\u00D7',\n '⊠': '\\u22A0',\n '⨱': '\\u2A31',\n '⨰': '\\u2A30',\n '∭': '\\u222D',\n '⤨': '\\u2928',\n '⊤': '\\u22A4',\n '⌶': '\\u2336',\n '⫱': '\\u2AF1',\n '𝕥': '\\uD835\\uDD65',\n '⫚': '\\u2ADA',\n '⤩': '\\u2929',\n '‴': '\\u2034',\n '™': '\\u2122',\n '▵': '\\u25B5',\n '▿': '\\u25BF',\n '◃': '\\u25C3',\n '⊴': '\\u22B4',\n '≜': '\\u225C',\n '▹': '\\u25B9',\n '⊵': '\\u22B5',\n '◬': '\\u25EC',\n '≜': '\\u225C',\n '⨺': '\\u2A3A',\n '⨹': '\\u2A39',\n '⧍': '\\u29CD',\n '⨻': '\\u2A3B',\n '⏢': '\\u23E2',\n '𝓉': '\\uD835\\uDCC9',\n 'ц': '\\u0446',\n 'ћ': '\\u045B',\n 'ŧ': '\\u0167',\n '≬': '\\u226C',\n '↞': '\\u219E',\n '↠': '\\u21A0',\n '⇑': '\\u21D1',\n '⥣': '\\u2963',\n 'ú': '\\u00FA',\n 'ú': '\\u00FA',\n '↑': '\\u2191',\n 'ў': '\\u045E',\n 'ŭ': '\\u016D',\n 'û': '\\u00FB',\n 'û': '\\u00FB',\n 'у': '\\u0443',\n '⇅': '\\u21C5',\n 'ű': '\\u0171',\n '⥮': '\\u296E',\n '⥾': '\\u297E',\n '𝔲': '\\uD835\\uDD32',\n 'ù': '\\u00F9',\n 'ù': '\\u00F9',\n '↿': '\\u21BF',\n '↾': '\\u21BE',\n '▀': '\\u2580',\n '⌜': '\\u231C',\n '⌜': '\\u231C',\n '⌏': '\\u230F',\n '◸': '\\u25F8',\n 'ū': '\\u016B',\n '¨': '\\u00A8',\n '¨': '\\u00A8',\n 'ų': '\\u0173',\n '𝕦': '\\uD835\\uDD66',\n '↑': '\\u2191',\n '↕': '\\u2195',\n '↿': '\\u21BF',\n '↾': '\\u21BE',\n '⊎': '\\u228E',\n 'υ': '\\u03C5',\n 'ϒ': '\\u03D2',\n 'υ': '\\u03C5',\n '⇈': '\\u21C8',\n '⌝': '\\u231D',\n '⌝': '\\u231D',\n '⌎': '\\u230E',\n 'ů': '\\u016F',\n '◹': '\\u25F9',\n '𝓊': '\\uD835\\uDCCA',\n '⋰': '\\u22F0',\n 'ũ': '\\u0169',\n '▵': '\\u25B5',\n '▴': '\\u25B4',\n '⇈': '\\u21C8',\n 'ü': '\\u00FC',\n 'ü': '\\u00FC',\n '⦧': '\\u29A7',\n '⇕': '\\u21D5',\n '⫨': '\\u2AE8',\n '⫩': '\\u2AE9',\n '⊨': '\\u22A8',\n '⦜': '\\u299C',\n 'ϵ': '\\u03F5',\n 'ϰ': '\\u03F0',\n '∅': '\\u2205',\n 'ϕ': '\\u03D5',\n 'ϖ': '\\u03D6',\n '∝': '\\u221D',\n '↕': '\\u2195',\n 'ϱ': '\\u03F1',\n 'ς': '\\u03C2',\n '⊊︀': '\\u228A\\uFE00',\n '⫋︀': '\\u2ACB\\uFE00',\n '⊋︀': '\\u228B\\uFE00',\n '⫌︀': '\\u2ACC\\uFE00',\n 'ϑ': '\\u03D1',\n '⊲': '\\u22B2',\n '⊳': '\\u22B3',\n 'в': '\\u0432',\n '⊢': '\\u22A2',\n '∨': '\\u2228',\n '⊻': '\\u22BB',\n '≚': '\\u225A',\n '⋮': '\\u22EE',\n '|': '\\u007C',\n '|': '\\u007C',\n '𝔳': '\\uD835\\uDD33',\n '⊲': '\\u22B2',\n '⊂⃒': '\\u2282\\u20D2',\n '⊃⃒': '\\u2283\\u20D2',\n '𝕧': '\\uD835\\uDD67',\n '∝': '\\u221D',\n '⊳': '\\u22B3',\n '𝓋': '\\uD835\\uDCCB',\n '⫋︀': '\\u2ACB\\uFE00',\n '⊊︀': '\\u228A\\uFE00',\n '⫌︀': '\\u2ACC\\uFE00',\n '⊋︀': '\\u228B\\uFE00',\n '⦚': '\\u299A',\n 'ŵ': '\\u0175',\n '⩟': '\\u2A5F',\n '∧': '\\u2227',\n '≙': '\\u2259',\n '℘': '\\u2118',\n '𝔴': '\\uD835\\uDD34',\n '𝕨': '\\uD835\\uDD68',\n '℘': '\\u2118',\n '≀': '\\u2240',\n '≀': '\\u2240',\n '𝓌': '\\uD835\\uDCCC',\n '⋂': '\\u22C2',\n '◯': '\\u25EF',\n '⋃': '\\u22C3',\n '▽': '\\u25BD',\n '𝔵': '\\uD835\\uDD35',\n '⟺': '\\u27FA',\n '⟷': '\\u27F7',\n 'ξ': '\\u03BE',\n '⟸': '\\u27F8',\n '⟵': '\\u27F5',\n '⟼': '\\u27FC',\n '⋻': '\\u22FB',\n '⨀': '\\u2A00',\n '𝕩': '\\uD835\\uDD69',\n '⨁': '\\u2A01',\n '⨂': '\\u2A02',\n '⟹': '\\u27F9',\n '⟶': '\\u27F6',\n '𝓍': '\\uD835\\uDCCD',\n '⨆': '\\u2A06',\n '⨄': '\\u2A04',\n '△': '\\u25B3',\n '⋁': '\\u22C1',\n '⋀': '\\u22C0',\n 'ý': '\\u00FD',\n 'ý': '\\u00FD',\n 'я': '\\u044F',\n 'ŷ': '\\u0177',\n 'ы': '\\u044B',\n '¥': '\\u00A5',\n '¥': '\\u00A5',\n '𝔶': '\\uD835\\uDD36',\n 'ї': '\\u0457',\n '𝕪': '\\uD835\\uDD6A',\n '𝓎': '\\uD835\\uDCCE',\n 'ю': '\\u044E',\n 'ÿ': '\\u00FF',\n 'ÿ': '\\u00FF',\n 'ź': '\\u017A',\n 'ž': '\\u017E',\n 'з': '\\u0437',\n 'ż': '\\u017C',\n 'ℨ': '\\u2128',\n 'ζ': '\\u03B6',\n '𝔷': '\\uD835\\uDD37',\n 'ж': '\\u0436',\n '⇝': '\\u21DD',\n '𝕫': '\\uD835\\uDD6B',\n '𝓏': '\\uD835\\uDCCF',\n '‍': '\\u200D',\n '‌': '\\u200C'\n};\n\nexport default htmlEntities;\n","import htmlEntities from './html-entities.js';\n\nexport function decodeHTMLEntities(str) {\n return str.replace(/&(#\\d+|#x[a-f0-9]+|[a-z]+\\d*);?/gi, (match, entity) => {\n if (typeof htmlEntities[match] === 'string') {\n return htmlEntities[match];\n }\n\n if (entity.charAt(0) !== '#' || match.charAt(match.length - 1) !== ';') {\n // keep as is, invalid or unknown sequence\n return match;\n }\n\n let codePoint;\n if (entity.charAt(1) === 'x') {\n // hex\n codePoint = parseInt(entity.substr(2), 16);\n } else {\n // dec\n codePoint = parseInt(entity.substr(1), 10);\n }\n\n let output = '';\n\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n // Invalid range, return a replacement character instead\n return '\\uFFFD';\n }\n\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n\n output += String.fromCharCode(codePoint);\n\n return output;\n });\n}\n\nexport function escapeHtml(str) {\n return str.trim().replace(/[<>\"'?&]/g, c => {\n let hex = c.charCodeAt(0).toString(16);\n if (hex.length < 2) {\n hex = '0' + hex;\n }\n return '&#x' + hex.toUpperCase() + ';';\n });\n}\n\nexport function textToHtml(str) {\n let html = escapeHtml(str).replace(/\\n/g, '<br />');\n return '<div>' + html + '</div>';\n}\n\nexport function htmlToText(str) {\n str = str\n // we can't process tags on multiple lines so remove newlines first\n .replace(/\\r?\\n/g, '\\u0001')\n .replace(/<\\!\\-\\-.*?\\-\\->/gi, ' ')\n\n .replace(/<br\\b[^>]*>/gi, '\\n')\n .replace(/<\\/?(p|div|table|tr|td|th)\\b[^>]*>/gi, '\\n\\n')\n .replace(/<script\\b[^>]*>.*?<\\/script\\b[^>]*>/gi, ' ')\n .replace(/^.*<body\\b[^>]*>/i, '')\n .replace(/^.*<\\/head\\b[^>]*>/i, '')\n .replace(/^.*<\\!doctype\\b[^>]*>/i, '')\n .replace(/<\\/body\\b[^>]*>.*$/i, '')\n .replace(/<\\/html\\b[^>]*>.*$/i, '')\n\n .replace(/<a\\b[^>]*href\\s*=\\s*[\"']?([^\\s\"']+)[^>]*>/gi, ' ($1) ')\n\n .replace(/<\\/?(span|em|i|strong|b|u|a)\\b[^>]*>/gi, '')\n\n .replace(/<li\\b[^>]*>[\\n\\u0001\\s]*/gi, '* ')\n\n .replace(/<hr\\b[^>]*>/g, '\\n-------------\\n')\n\n .replace(/<[^>]*>/g, ' ')\n\n // convert linebreak placeholders back to newlines\n .replace(/\\u0001/g, '\\n')\n\n .replace(/[ \\t]+/g, ' ')\n\n .replace(/^\\s+$/gm, '')\n\n .replace(/\\n\\n+/g, '\\n\\n')\n .replace(/^\\n+/, '\\n')\n .replace(/\\n+$/, '\\n');\n\n str = decodeHTMLEntities(str);\n\n return str;\n}\n\nfunction formatTextAddress(address) {\n return []\n .concat(address.name || [])\n .concat(address.name ? `<${address.address}>` : address.address)\n .join(' ');\n}\n\nfunction formatTextAddresses(addresses) {\n let parts = [];\n\n let processAddress = (address, partCounter) => {\n if (partCounter) {\n parts.push(', ');\n }\n\n if (address.group) {\n let groupStart = `${address.name}:`;\n let groupEnd = `;`;\n\n parts.push(groupStart);\n address.group.forEach(processAddress);\n parts.push(groupEnd);\n } else {\n parts.push(formatTextAddress(address));\n }\n };\n\n addresses.forEach(processAddress);\n\n return parts.join('');\n}\n\nfunction formatHtmlAddress(address) {\n return `<a href=\"mailto:${escapeHtml(address.address)}\" class=\"postal-email-address\">${escapeHtml(address.name || `<${address.address}>`)}</a>`;\n}\n\nfunction formatHtmlAddresses(addresses) {\n let parts = [];\n\n let processAddress = (address, partCounter) => {\n if (partCounter) {\n parts.push('<span class=\"postal-email-address-separator\">, </span>');\n }\n\n if (address.group) {\n let groupStart = `<span class=\"postal-email-address-group\">${escapeHtml(address.name)}:</span>`;\n let groupEnd = `<span class=\"postal-email-address-group\">;</span>`;\n\n parts.push(groupStart);\n address.group.forEach(processAddress);\n parts.push(groupEnd);\n } else {\n parts.push(formatHtmlAddress(address));\n }\n };\n\n addresses.forEach(processAddress);\n\n return parts.join(' ');\n}\n\nfunction foldLines(str, lineLength, afterSpace) {\n str = (str || '').toString();\n lineLength = lineLength || 76;\n\n let pos = 0,\n len = str.length,\n result = '',\n line,\n match;\n\n while (pos < len) {\n line = str.substr(pos, lineLength);\n if (line.length < lineLength) {\n result += line;\n break;\n }\n if ((match = line.match(/^[^\\n\\r]*(\\r?\\n|\\r)/))) {\n line = match[0];\n result += line;\n pos += line.length;\n continue;\n } else if (\n (match = line.match(/(\\s+)[^\\s]*$/)) &&\n match[0].length - (afterSpace ? (match[1] || '').length : 0) < line.length\n ) {\n line = line.substr(0, line.length - (match[0].length - (afterSpace ? (match[1] || '').length : 0)));\n } else if ((match = str.substr(pos + line.length).match(/^[^\\s]+(\\s*)/))) {\n line = line + match[0].substr(0, match[0].length - (!afterSpace ? (match[1] || '').length : 0));\n }\n\n result += line;\n pos += line.length;\n if (pos < len) {\n result += '\\r\\n';\n }\n }\n\n return result;\n}\n\nexport function formatTextHeader(message) {\n let rows = [];\n\n if (message.from) {\n rows.push({ key: 'From', val: formatTextAddress(message.from) });\n }\n\n if (message.subject) {\n rows.push({ key: 'Subject', val: message.subject });\n }\n\n if (message.date) {\n let dateOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n\n let dateStr =\n typeof Intl === 'undefined'\n ? message.date\n : new Intl.DateTimeFormat('default', dateOptions).format(new Date(message.date));\n\n rows.push({ key: 'Date', val: dateStr });\n }\n\n if (message.to && message.to.length) {\n rows.push({ key: 'To', val: formatTextAddresses(message.to) });\n }\n\n if (message.cc && message.cc.length) {\n rows.push({ key: 'Cc', val: formatTextAddresses(message.cc) });\n }\n\n if (message.bcc && message.bcc.length) {\n rows.push({ key: 'Bcc', val: formatTextAddresses(message.bcc) });\n }\n\n // Align keys and values by adding space between these two\n // Also make sure that the separator line is as long as the longest line\n // Should end up with something like this:\n /*\n -----------------------------\n From: xx xx <xxx@xxx.com>\n Subject: Example Subject\n Date: 16/02/2021, 02:57:06\n To: not@found.com\n -----------------------------\n */\n\n let maxKeyLength = rows\n .map(r => r.key.length)\n .reduce((acc, cur) => {\n return cur > acc ? cur : acc;\n }, 0);\n\n rows = rows.flatMap(row => {\n let sepLen = maxKeyLength - row.key.length;\n let prefix = `${row.key}: ${' '.repeat(sepLen)}`;\n let emptyPrefix = `${' '.repeat(row.key.length + 1)} ${' '.repeat(sepLen)}`;\n\n let foldedLines = foldLines(row.val, 80, true)\n .split(/\\r?\\n/)\n .map(line => line.trim());\n\n return foldedLines.map((line, i) => `${i ? emptyPrefix : prefix}${line}`);\n });\n\n let maxLineLength = rows\n .map(r => r.length)\n .reduce((acc, cur) => {\n return cur > acc ? cur : acc;\n }, 0);\n\n let lineMarker = '-'.repeat(maxLineLength);\n\n let template = `\n${lineMarker}\n${rows.join('\\n')}\n${lineMarker}\n`;\n\n return template;\n}\n\nexport function formatHtmlHeader(message) {\n let rows = [];\n\n if (message.from) {\n rows.push(\n `<div class=\"postal-email-header-key\">From</div><div class=\"postal-email-header-value\">${formatHtmlAddress(message.from)}</div>`\n );\n }\n\n if (message.subject) {\n rows.push(\n `<div class=\"postal-email-header-key\">Subject</div><div class=\"postal-email-header-value postal-email-header-subject\">${escapeHtml(\n message.subject\n )}</div>`\n );\n }\n\n if (message.date) {\n let dateOptions = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: false\n };\n\n let dateStr =\n typeof Intl === 'undefined'\n ? message.date\n : new Intl.DateTimeFormat('default', dateOptions).format(new Date(message.date));\n\n rows.push(\n `<div class=\"postal-email-header-key\">Date</div><div class=\"postal-email-header-value postal-email-header-date\" data-date=\"${escapeHtml(\n message.date\n )}\">${escapeHtml(dateStr)}</div>`\n );\n }\n\n if (message.to && message.to.length) {\n rows.push(\n `<div class=\"postal-email-header-key\">To</div><div class=\"postal-email-header-value\">${formatHtmlAddresses(message.to)}</div>`\n );\n }\n\n if (message.cc && message.cc.length) {\n rows.push(\n `<div class=\"postal-email-header-key\">Cc</div><div class=\"postal-email-header-value\">${formatHtmlAddresses(message.cc)}</div>`\n );\n }\n\n if (message.bcc && message.bcc.length) {\n rows.push(\n `<div class=\"postal-email-header-key\">Bcc</div><div class=\"postal-email-header-value\">${formatHtmlAddresses(message.bcc)}</div>`\n );\n }\n\n let template = `<div class=\"postal-email-header\">${rows.length ? '<div class=\"postal-email-header-row\">' : ''}${rows.join(\n '</div>\\n<div class=\"postal-email-header-row\">'\n )}${rows.length ? '</div>' : ''}</div>`;\n\n return template;\n}\n","import { decodeWords } from './decode-strings.js';\n\n/**\n * Converts tokens for a single address into an address object\n *\n * @param {Array} tokens Tokens object\n * @param {Number} depth Current recursion depth for nested group protection\n * @return {Object} Address object\n */\nfunction _handleAddress(tokens, depth) {\n let isGroup = false;\n let state = 'text';\n let address;\n let addresses = [];\n let data = {\n address: [],\n comment: [],\n group: [],\n text: [],\n textWasQuoted: [] // Track which text tokens came from inside quotes\n };\n let i;\n let len;\n let insideQuotes = false; // Track if we're currently inside a quoted string\n\n // Filter out <addresses>, (comments) and regular text\n for (i = 0, len = tokens.length; i < len; i++) {\n let token = tokens[i];\n let prevToken = i ? tokens[i - 1] : null;\n if (token.type === 'operator') {\n switch (token.value) {\n case '<':\n state = 'address';\n insideQuotes = false;\n break;\n case '(':\n state = 'comment';\n insideQuotes = false;\n break;\n case ':':\n state = 'group';\n isGroup = true;\n insideQuotes = false;\n break;\n case '\"':\n // Track quote state for text tokens\n insideQuotes = !insideQuotes;\n state = 'text';\n break;\n default:\n state = 'text';\n insideQuotes = false;\n break;\n }\n } else if (token.value) {\n if (state === 'address') {\n // handle use case where unquoted name includes a \"<\"\n // Apple Mail truncates everything between an unexpected < and an address\n // and so will we\n token.value = token.value.replace(/^[^<]*<\\s*/, '');\n }\n\n if (prevToken && prevToken.noBreak && data[state].length) {\n // join values\n data[state][data[state].length - 1] += token.value;\n if (state === 'text' && insideQuotes) {\n data.textWasQuoted[data.textWasQuoted.length - 1] = true;\n }\n } else {\n data[state].push(token.value);\n if (state === 'text') {\n data.textWasQuoted.push(insideQuotes);\n }\n }\n }\n }\n\n // If there is no text but a comment, replace the two\n if (!data.text.length && data.comment.length) {\n data.text = data.comment;\n data.comment = [];\n }\n\n if (isGroup) {\n // http://tools.ietf.org/html/rfc2822#appendix-A.1.3\n data.text = data.text.join(' ');\n\n // Parse group members, but flatten any nested groups (RFC 5322 doesn't allow nesting)\n let groupMembers = [];\n if (data.group.length) {\n let parsedGroup = addressParser(data.group.join(','), { _depth: depth + 1 });\n // Flatten: if any member is itself a group, extract its members into the sequence\n parsedGroup.forEach(member => {\n if (member.group) {\n // Nested group detected - flatten it by adding its members directly\n groupMembers = groupMembers.concat(member.group);\n } else {\n groupMembers.push(member);\n }\n });\n }\n\n addresses.push({\n name: decodeWords(data.text || (address && address.name)),\n group: groupMembers\n });\n } else {\n // If no address was found, try to detect one from regular text\n if (!data.address.length && data.text.length) {\n for (i = data.text.length - 1; i >= 0; i--) {\n // Security fix: Do not extract email addresses from quoted strings\n // RFC 5321 allows @ inside quoted local-parts like \"user@domain\"@example.com\n // Extracting emails from quoted text leads to misrouting vulnerabilities\n if (!data.textWasQuoted[i] && data.text[i].match(/^[^@\\s]+@[^@\\s]+$/)) {\n data.address = data.text.splice(i, 1);\n data.textWasQuoted.splice(i, 1);\n break;\n }\n }\n\n let _regexHandler = function (address) {\n if (!data.address.length) {\n data.address = [address.trim()];\n return ' ';\n } else {\n return address;\n }\n };\n\n // still no address\n if (!data.address.length) {\n for (i = data.text.length - 1; i >= 0; i--) {\n // Security fix: Do not extract email addresses from quoted strings\n if (!data.textWasQuoted[i]) {\n // fixed the regex to parse email address correctly when email address has more than one @\n data.text[i] = data.text[i].replace(/\\s*\\b[^@\\s]+@[^\\s]+\\b\\s*/, _regexHandler).trim();\n if (data.address.length) {\n break;\n }\n }\n }\n }\n }\n\n // If there's still no text but a comment exists, replace the two\n if (!data.text.length && data.comment.length) {\n data.text = data.comment;\n data.comment = [];\n }\n\n // Keep only the first address occurrence, push others to regular text\n if (data.address.length > 1) {\n data.text = data.text.concat(data.address.splice(1));\n }\n\n // Join values with spaces\n data.text = data.text.join(' ');\n data.address = data.address.join(' ');\n\n if (!data.address && /^=\\?[^=]+?=$/.test(data.text.trim())) {\n // try to extract words from text content\n const decodedText = decodeWords(data.text);\n // Security: only re-parse if decoded text contains angle-bracket addresses.\n // Without this, a bare encoded email (e.g. =?utf-8?B?dGVzdEBldmlsLmNv?=)\n // would be fabricated into an address from attacker-controlled input.\n if (/<[^<>]+@[^<>]+>/.test(decodedText)) {\n const parsedSubAddresses = addressParser(decodedText);\n if (parsedSubAddresses && parsedSubAddresses.length) {\n return parsedSubAddresses;\n }\n }\n // No usable address found - treat decoded text as display name only\n return [{ address: '', name: decodedText }];\n }\n\n address = {\n address: data.address || data.text || '',\n name: decodeWords(data.text || data.address || '')\n };\n\n if (address.address === address.name) {\n if ((address.address || '').match(/@/)) {\n address.name = '';\n } else {\n address.address = '';\n }\n }\n\n addresses.push(address);\n }\n\n return addresses;\n}\n\n/**\n * Creates a Tokenizer object for tokenizing address field strings\n *\n * @constructor\n * @param {String} str Address field string\n */\nclass Tokenizer {\n constructor(str) {\n this.str = (str || '').toString();\n this.operatorCurrent = '';\n this.operatorExpecting = '';\n this.node = null;\n this.escaped = false;\n\n this.list = [];\n /**\n * Operator tokens and which tokens are expected to end the sequence\n */\n this.operators = {\n '\"': '\"',\n '(': ')',\n '<': '>',\n ',': '',\n ':': ';',\n // Semicolons are not a legal delimiter per the RFC2822 grammar other\n // than for terminating a group, but they are also not valid for any\n // other use in this context. Given that some mail clients have\n // historically allowed the semicolon as a delimiter equivalent to the\n // comma in their UI, it makes sense to treat them the same as a comma\n // when used outside of a group.\n ';': ''\n };\n }\n\n /**\n * Tokenizes the original input string\n *\n * @return {Array} An array of operator|text tokens\n */\n tokenize() {\n let list = [];\n\n for (let i = 0, len = this.str.length; i < len; i++) {\n let chr = this.str.charAt(i);\n let nextChr = i < len - 1 ? this.str.charAt(i + 1) : null;\n this.checkChar(chr, nextChr);\n }\n\n this.list.forEach(node => {\n node.value = (node.value || '').toString().trim();\n if (node.value) {\n list.push(node);\n }\n });\n\n return list;\n }\n\n /**\n * Checks if a character is an operator or text and acts accordingly\n *\n * @param {String} chr Character from the address field\n */\n checkChar(chr, nextChr) {\n if (this.escaped) {\n // ignore next condition blocks\n } else if (chr === this.operatorExpecting) {\n this.node = {\n type: 'operator',\n value: chr\n };\n\n if (nextChr && ![' ', '\\t', '\\r', '\\n', ',', ';'].includes(nextChr)) {\n this.node.noBreak = true;\n }\n\n this.list.push(this.node);\n this.node = null;\n this.operatorExpecting = '';\n this.escaped = false;\n\n return;\n } else if (!this.operatorExpecting && chr in this.operators) {\n this.node = {\n type: 'operator',\n value: chr\n };\n this.list.push(this.node);\n this.node = null;\n this.operatorExpecting = this.operators[chr];\n this.escaped = false;\n return;\n } else if (this.operatorExpecting === '\"' && chr === '\\\\') {\n this.escaped = true;\n return;\n }\n\n if (!this.node) {\n this.node = {\n type: 'text',\n value: ''\n };\n this.list.push(this.node);\n }\n\n if (chr === '\\n') {\n // Convert newlines to spaces. Carriage return is ignored as \\r and \\n usually\n // go together anyway and there already is a WS for \\n. Lone \\r means something is fishy.\n chr = ' ';\n }\n\n if (chr.charCodeAt(0) >= 0x21 || [' ', '\\t'].includes(chr)) {\n // skip command bytes\n this.node.value += chr;\n }\n\n this.escaped = false;\n }\n}\n\n/**\n * Maximum recursion depth for parsing nested groups.\n * RFC 5322 doesn't allow nested groups, so this is a safeguard against\n * malicious input that could cause stack overflow.\n */\nconst MAX_NESTED_GROUP_DEPTH = 50;\n\n/**\n * Parses structured e-mail addresses from an address field\n *\n * Example:\n *\n * 'Name <address@domain>'\n *\n * will be converted to\n *\n * [{name: 'Name', address: 'address@domain'}]\n *\n * @param {String} str Address field\n * @param {Object} options Optional options object\n * @param {Number} options._depth Internal recursion depth counter (do not set manually)\n * @return {Array} An array of address objects\n */\nfunction addressParser(str, options) {\n options = options || {};\n let depth = options._depth || 0;\n\n // Prevent stack overflow from deeply nested groups (DoS protection)\n if (depth > MAX_NESTED_GROUP_DEPTH) {\n return [];\n }\n\n let tokenizer = new Tokenizer(str);\n let tokens = tokenizer.tokenize();\n\n let addresses = [];\n let address = [];\n let parsedAddresses = [];\n\n tokens.forEach(token => {\n if (token.type === 'operator' && (token.value === ',' || token.value === ';')) {\n if (address.length) {\n addresses.push(address);\n }\n address = [];\n } else {\n address.push(token);\n }\n });\n\n if (address.length) {\n addresses.push(address);\n }\n\n addresses.forEach(address => {\n address = _handleAddress(address, depth);\n if (address.length) {\n parsedAddresses = parsedAddresses.concat(address);\n }\n });\n\n if (options.flatten) {\n let addresses = [];\n let walkAddressList = list => {\n list.forEach(address => {\n if (address.group) {\n return walkAddressList(address.group);\n } else {\n addresses.push(address);\n }\n });\n };\n walkAddressList(parsedAddresses);\n return addresses;\n }\n\n return parsedAddresses;\n}\n\n// expose to the world\nexport default addressParser;\n","// Code from: https://gist.githubusercontent.com/jonleighton/958841/raw/fb05a8632efb75d85d43deb593df04367ce48371/base64ArrayBuffer.js\n\n// Converts an ArrayBuffer directly to base64, without any intermediate 'convert to string then\n// use window.btoa' step. According to my tests, this appears to be a faster approach:\n// http://jsperf.com/encoding-xhr-image-data/5\n\n/*\nMIT LICENSE\n\nCopyright 2011 Jon Leighton\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\nexport function base64ArrayBuffer(arrayBuffer) {\n var base64 = '';\n var encodings = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n var bytes = new Uint8Array(arrayBuffer);\n var byteLength = bytes.byteLength;\n var byteRemainder = byteLength % 3;\n var mainLength = byteLength - byteRemainder;\n\n var a, b, c, d;\n var chunk;\n\n // Main loop deals with bytes in chunks of 3\n for (var i = 0; i < mainLength; i = i + 3) {\n // Combine the three bytes into a single integer\n chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n\n // Use bitmasks to extract 6-bit segments from the triplet\n a = (chunk & 16515072) >> 18; // 16515072 = (2^6 - 1) << 18\n b = (chunk & 258048) >> 12; // 258048 = (2^6 - 1) << 12\n c = (chunk & 4032) >> 6; // 4032 = (2^6 - 1) << 6\n d = chunk & 63; // 63 = 2^6 - 1\n\n // Convert the raw binary segments to the appropriate ASCII encoding\n base64 += encodings[a] + encodings[b] + encodings[c] + encodings[d];\n }\n\n // Deal with the remaining bytes and padding\n if (byteRemainder == 1) {\n chunk = bytes[mainLength];\n\n a = (chunk & 252) >> 2; // 252 = (2^6 - 1) << 2\n\n // Set the 4 least significant bits to zero\n b = (chunk & 3) << 4; // 3 = 2^2 - 1\n\n base64 += encodings[a] + encodings[b] + '==';\n } else if (byteRemainder == 2) {\n chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1];\n\n a = (chunk & 64512) >> 10; // 64512 = (2^6 - 1) << 10\n b = (chunk & 1008) >> 4; // 1008 = (2^6 - 1) << 4\n\n // Set the 2 least significant bits to zero\n c = (chunk & 15) << 2; // 15 = 2^4 - 1\n\n base64 += encodings[a] + encodings[b] + encodings[c] + '=';\n }\n\n return base64;\n}\n","import MimeNode from './mime-node.js';\nimport { textToHtml, htmlToText, formatTextHeader, formatHtmlHeader } from './text-format.js';\nimport addressParser from './address-parser.js';\nimport { decodeWords, textEncoder, blobToArrayBuffer } from './decode-strings.js';\nimport { base64ArrayBuffer } from './base64-encoder.js';\n\nexport { addressParser, decodeWords };\n\nconst MAX_NESTING_DEPTH = 256;\nconst MAX_HEADERS_SIZE = 2 * 1024 * 1024;\n// Inline message/rfc822 parts are parsed recursively. Without a dedicated limit\n// each nesting level spawns a new parser that retains the full nested message,\n// so a small crafted email can exhaust memory (OOM crash). Cap the recursion and\n// treat deeper nested messages as regular attachments instead.\nconst MAX_RFC822_NESTING_DEPTH = 10;\n\nfunction toCamelCase(key) {\n return key.replace(/-(.)/g, (o, c) => c.toUpperCase());\n}\n\n// Limit options must be validated rather than falsy-coalesced. `0` would silently\n// restore the default, and a string or NaN disables the limit altogether, because\n// every `size > limit` comparison against such a value is false. Callers that\n// forward a request supplied options object would otherwise hand an attacker a way\n// to turn the limits off.\nfunction parseLimitOption(value, defaultValue, name) {\n if (value === undefined || value === null) {\n return defaultValue;\n }\n\n if (typeof value !== 'number' || !Number.isInteger(value) || value < 0) {\n throw new TypeError(`${name} must be a non-negative integer`);\n }\n\n return value;\n}\n\nexport default class PostalMime {\n // async so that an invalid option rejects the returned promise instead of throwing\n // synchronously, which would escape a `.catch()` chain\n static async parse(buf, options) {\n const parser = new PostalMime(options);\n return parser.parse(buf);\n }\n\n // rfc822NestingDepth is internal state that nested parsers receive from their parent.\n // It is deliberately a separate argument rather than an option, so that forwarding a\n // caller supplied options object can not seed it and switch the recursion limit off.\n constructor(options, rfc822NestingDepth = 0) {\n this.options = options || {};\n this.mimeOptions = {\n maxNestingDepth: parseLimitOption(this.options.maxNestingDepth, MAX_NESTING_DEPTH, 'maxNestingDepth'),\n maxHeadersSize: parseLimitOption(this.options.maxHeadersSize, MAX_HEADERS_SIZE, 'maxHeadersSize')\n };\n\n // A limit of 0 disables inline parsing entirely, so every message/rfc822 part\n // becomes an attachment.\n this.maxRfc822NestingDepth = parseLimitOption(\n this.options.maxRfc822NestingDepth,\n MAX_RFC822_NESTING_DEPTH,\n 'maxRfc822NestingDepth'\n );\n this.rfc822NestingDepth = rfc822NestingDepth;\n\n this.root = this.currentNode = new MimeNode({\n postalMime: this,\n ...this.mimeOptions\n });\n this.boundaries = [];\n\n this.textContent = {};\n this.attachments = [];\n\n this.attachmentEncoding =\n (this.options.attachmentEncoding || '')\n .toString()\n .replace(/[-_\\s]/g, '')\n .trim()\n .toLowerCase() || 'arraybuffer';\n\n this.started = false;\n }\n\n async finalize() {\n // close all pending nodes\n await this.root.finalize();\n }\n\n async processLine(line, isFinal) {\n let boundaries = this.boundaries;\n\n // check if this is a mime boundary\n if (boundaries.length && line.length > 2 && line[0] === 0x2d && line[1] === 0x2d) {\n // could be a boundary marker\n for (let i = boundaries.length - 1; i >= 0; i--) {\n let boundary = boundaries[i];\n\n // Line must be at least long enough for \"--\" + boundary\n if (line.length < boundary.value.length + 2) {\n continue;\n }\n\n // Check if boundary value matches\n let boundaryMatches = true;\n for (let j = 0; j < boundary.value.length; j++) {\n if (line[j + 2] !== boundary.value[j]) {\n boundaryMatches = false;\n break;\n }\n }\n if (!boundaryMatches) {\n continue;\n }\n\n // Check for terminator (-- after boundary) and determine where boundary ends\n let boundaryEnd = boundary.value.length + 2;\n let isTerminator = false;\n\n if (\n line.length >= boundary.value.length + 4 &&\n line[boundary.value.length + 2] === 0x2d &&\n line[boundary.value.length + 3] === 0x2d\n ) {\n isTerminator = true;\n boundaryEnd = boundary.value.length + 4;\n }\n\n // RFC 2046: boundary line may have trailing whitespace (space/tab) before CRLF\n let hasValidTrailing = true;\n for (let j = boundaryEnd; j < line.length; j++) {\n if (line[j] !== 0x20 && line[j] !== 0x09) {\n hasValidTrailing = false;\n break;\n }\n }\n if (!hasValidTrailing) {\n continue;\n }\n\n if (isTerminator) {\n await boundary.node.finalize();\n\n this.currentNode = boundary.node.parentNode || this.root;\n } else {\n // finalize any open child nodes (should be just one though)\n await boundary.node.finalizeChildNodes();\n\n this.currentNode = new MimeNode({\n postalMime: this,\n parentNode: boundary.node,\n parentMultipartType: boundary.node.contentType.multipart,\n ...this.mimeOptions\n });\n }\n\n if (isFinal) {\n return this.finalize();\n }\n\n return;\n }\n }\n\n this.currentNode.feed(line);\n\n if (isFinal) {\n return this.finalize();\n }\n }\n\n readLine() {\n let startPos = this.readPos;\n let endPos = this.readPos;\n\n while (this.readPos < this.av.length) {\n const c = this.av[this.readPos++];\n\n if (c !== 0x0d && c !== 0x0a) {\n endPos = this.readPos;\n }\n\n if (c === 0x0a) {\n return {\n bytes: new Uint8Array(this.buf, startPos, endPos - startPos),\n done: this.readPos >= this.av.length\n };\n }\n }\n\n return {\n bytes: new Uint8Array(this.buf, startPos, endPos - startPos),\n done: this.readPos >= this.av.length\n };\n }\n\n async processNodeTree() {\n // get text nodes\n\n let textContent = {};\n\n let textTypes = new Set();\n let textMap = (this.textMap = new Map());\n\n let forceRfc822Attachments = this.forceRfc822Attachments();\n\n let walk = async (node, alternative, related) => {\n alternative = alternative || false;\n related = related || false;\n\n if (!node.contentType.multipart) {\n const inlineRfc822 = this.isInlineMessageRfc822(node) && !forceRfc822Attachments;\n const rfc822DepthExceeded = inlineRfc822 && this.rfc822NestingDepth >= this.maxRfc822NestingDepth;\n\n // is it inline message/rfc822\n if (inlineRfc822 && !rfc822DepthExceeded) {\n const subParser = new PostalMime(\n {\n // Only the limits are inherited. Options that decide how a part\n // is classified stay with the parser that was configured.\n ...this.mimeOptions,\n maxRfc822NestingDepth: this.maxRfc822NestingDepth,\n // attachments are encoded by the parent parser, keep raw buffers here\n attachmentEncoding: 'arraybuffer'\n },\n this.rfc822NestingDepth + 1\n );\n node.subMessage = await subParser.parse(node.content);\n\n if (!textMap.has(node)) {\n textMap.set(node, {});\n }\n\n let textEntry = textMap.get(node);\n\n // default to text if there is no content\n if (node.subMessage.text || !node.subMessage.html) {\n textEntry.plain = textEntry.plain || [];\n textEntry.plain.push({ type: 'subMessage', value: node.subMessage });\n textTypes.add('plain');\n }\n\n if (node.subMessage.html) {\n textEntry.html = textEntry.html || [];\n textEntry.html.push({ type: 'subMessage', value: node.subMessage });\n textTypes.add('html');\n }\n\n if (subParser.textMap) {\n subParser.textMap.forEach((subTextEntry, subTextNode) => {\n textMap.set(subTextNode, subTextEntry);\n });\n }\n\n for (let attachment of node.subMessage.attachments || []) {\n this.attachments.push(attachment);\n }\n }\n\n // is it text?\n else if (this.isInlineTextNode(node)) {\n let textType = node.contentType.parsed.value.substr(node.contentType.parsed.value.indexOf('/') + 1);\n\n let selectorNode = alternative || node;\n if (!textMap.has(selectorNode)) {\n textMap.set(selectorNode, {});\n }\n\n let textEntry = textMap.get(selectorNode);\n textEntry[textType] = textEntry[textType] || [];\n textEntry[textType].push({ type: 'text', value: node.getTextContent() });\n textTypes.add(textType);\n }\n\n // is it an attachment\n else if (node.content) {\n const filename =\n node.contentDisposition?.parsed?.params?.filename ||\n node.contentType.parsed.params.name ||\n null;\n const attachment = {\n filename: filename ? decodeWords(filename) : null,\n mimeType: node.contentType.parsed.value,\n disposition: node.contentDisposition?.parsed?.value || null\n };\n\n // A nested message that was not parsed is not a renderable inline\n // resource, so it must not join the cid map behind an <img src>.\n if (related && node.contentId && !rfc822DepthExceeded) {\n attachment.related = true;\n }\n\n if (rfc822DepthExceeded) {\n // Tell the caller this part would have been parsed inline but hit\n // maxRfc822NestingDepth, so anything inside it is not reflected in\n // email.text, email.html or email.attachments.\n attachment.rfc822DepthExceeded = true;\n }\n\n if (node.contentDescription) {\n attachment.description = node.contentDescription;\n }\n\n if (node.contentId) {\n attachment.contentId = node.contentId;\n }\n\n switch (node.contentType.parsed.value) {\n // Special handling for calendar events\n case 'text/calendar':\n case 'application/ics': {\n if (node.contentType.parsed.params.method) {\n attachment.method = node.contentType.parsed.params.method\n .toString()\n .toUpperCase()\n .trim();\n }\n\n // Enforce into unicode\n const decodedText = node.getTextContent().replace(/\\r?\\n/g, '\\n').replace(/\\n*$/, '\\n');\n attachment.content = textEncoder.encode(decodedText);\n break;\n }\n\n // Regular attachments\n default:\n attachment.content = node.content;\n }\n\n this.attachments.push(attachment);\n }\n } else if (node.contentType.multipart === 'alternative') {\n alternative = node;\n } else if (node.contentType.multipart === 'related') {\n related = node;\n }\n\n for (let childNode of node.childNodes) {\n await walk(childNode, alternative, related);\n }\n };\n\n await walk(this.root, false, false);\n\n textMap.forEach(mapEntry => {\n textTypes.forEach(textType => {\n if (!textContent[textType]) {\n textContent[textType] = [];\n }\n\n if (mapEntry[textType]) {\n mapEntry[textType].forEach(textEntry => {\n switch (textEntry.type) {\n case 'text':\n textContent[textType].push(textEntry.value);\n break;\n\n case 'subMessage':\n {\n switch (textType) {\n case 'html':\n textContent[textType].push(formatHtmlHeader(textEntry.value));\n break;\n case 'plain':\n textContent[textType].push(formatTextHeader(textEntry.value));\n break;\n }\n }\n break;\n }\n });\n } else {\n let alternativeType;\n switch (textType) {\n case 'html':\n alternativeType = 'plain';\n break;\n case 'plain':\n alternativeType = 'html';\n break;\n }\n\n (mapEntry[alternativeType] || []).forEach(textEntry => {\n switch (textEntry.type) {\n case 'text':\n switch (textType) {\n case 'html':\n textContent[textType].push(textToHtml(textEntry.value));\n break;\n case 'plain':\n textContent[textType].push(htmlToText(textEntry.value));\n break;\n }\n break;\n\n case 'subMessage':\n {\n switch (textType) {\n case 'html':\n textContent[textType].push(formatHtmlHeader(textEntry.value));\n break;\n case 'plain':\n textContent[textType].push(formatTextHeader(textEntry.value));\n break;\n }\n }\n break;\n }\n });\n }\n });\n });\n\n Object.keys(textContent).forEach(textType => {\n textContent[textType] = textContent[textType].join('\\n');\n });\n\n this.textContent = textContent;\n }\n\n isInlineTextNode(node) {\n if (node.contentDisposition?.parsed?.value === 'attachment') {\n // no matter the type, this is an attachment\n return false;\n }\n\n switch (node.contentType.parsed?.value) {\n case 'text/html':\n case 'text/plain':\n return true;\n\n case 'text/calendar':\n case 'text/csv':\n default:\n return false;\n }\n }\n\n isInlineMessageRfc822(node) {\n if (node.contentType.parsed?.value !== 'message/rfc822') {\n return false;\n }\n let disposition =\n node.contentDisposition?.parsed?.value || (this.options.rfc822Attachments ? 'attachment' : 'inline');\n return disposition === 'inline';\n }\n\n // Check if this is a specially crafted report email where message/rfc822 content should not be inlined\n forceRfc822Attachments() {\n if (this.options.forceRfc822Attachments) {\n return true;\n }\n\n let forceRfc822Attachments = false;\n let walk = node => {\n if (!node.contentType.multipart) {\n if (\n node.contentType.parsed &&\n ['message/delivery-status', 'message/feedback-report'].includes(node.contentType.parsed.value)\n ) {\n forceRfc822Attachments = true;\n }\n }\n\n for (let childNode of node.childNodes) {\n walk(childNode);\n }\n };\n walk(this.root);\n return forceRfc822Attachments;\n }\n\n async resolveStream(stream) {\n let chunkLen = 0;\n let chunks = [];\n const reader = stream.getReader();\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n chunks.push(value);\n chunkLen += value.length;\n }\n\n const result = new Uint8Array(chunkLen);\n let chunkPointer = 0;\n for (let chunk of chunks) {\n result.set(chunk, chunkPointer);\n chunkPointer += chunk.length;\n }\n\n return result;\n }\n\n async parse(buf) {\n if (this.started) {\n throw new Error('Can not reuse parser, create a new PostalMime object');\n }\n this.started = true;\n\n // Check if the input is a readable stream and resolve it into an ArrayBuffer\n if (buf && typeof buf.getReader === 'function') {\n buf = await this.resolveStream(buf);\n }\n\n // Should it throw for an empty value instead of defaulting to an empty ArrayBuffer?\n buf = buf || new ArrayBuffer(0);\n\n // Cast string input to Uint8Array\n if (typeof buf === 'string') {\n buf = textEncoder.encode(buf);\n }\n\n // Cast Blob to ArrayBuffer\n if (buf instanceof Blob || Object.prototype.toString.call(buf) === '[object Blob]') {\n buf = await blobToArrayBuffer(buf);\n }\n\n // Cast Node.js Buffer object or Uint8Array into ArrayBuffer\n if (buf.buffer instanceof ArrayBuffer) {\n buf = new Uint8Array(buf).buffer;\n }\n\n this.buf = buf;\n\n this.av = new Uint8Array(buf);\n this.readPos = 0;\n\n while (this.readPos < this.av.length) {\n const line = this.readLine();\n\n await this.processLine(line.bytes, line.done);\n }\n\n await this.processNodeTree();\n\n const message = {\n headers: this.root.headers\n .map(entry => ({ key: entry.key, originalKey: entry.originalKey, value: entry.value }))\n .reverse()\n };\n\n for (const key of ['from', 'sender']) {\n const addressHeader = this.root.headers.find(line => line.key === key);\n if (addressHeader && addressHeader.value) {\n const addresses = addressParser(addressHeader.value);\n if (addresses && addresses.length) {\n message[key] = addresses[0];\n }\n }\n }\n\n for (const key of ['delivered-to', 'return-path']) {\n const addressHeader = this.root.headers.find(line => line.key === key);\n if (addressHeader && addressHeader.value) {\n const addresses = addressParser(addressHeader.value);\n if (addresses && addresses.length && addresses[0].address) {\n const camelKey = toCamelCase(key);\n message[camelKey] = addresses[0].address;\n }\n }\n }\n\n for (const key of ['to', 'cc', 'bcc', 'reply-to']) {\n const addressHeaders = this.root.headers.filter(line => line.key === key);\n let addresses = [];\n\n addressHeaders\n .filter(entry => entry && entry.value)\n .map(entry => addressParser(entry.value))\n .forEach(parsed => (addresses = addresses.concat(parsed || [])));\n\n if (addresses && addresses.length) {\n const camelKey = toCamelCase(key);\n message[camelKey] = addresses;\n }\n }\n\n for (const key of ['subject', 'message-id', 'in-reply-to', 'references']) {\n const header = this.root.headers.find(line => line.key === key);\n if (header && header.value) {\n const camelKey = toCamelCase(key);\n message[camelKey] = decodeWords(header.value);\n }\n }\n\n let dateHeader = this.root.headers.find(line => line.key === 'date');\n if (dateHeader) {\n let date = new Date(dateHeader.value);\n if (date.toString() === 'Invalid Date') {\n date = dateHeader.value;\n } else {\n // enforce ISO format if seems to be a valid date\n date = date.toISOString();\n }\n message.date = date;\n }\n\n if (this.textContent?.html) {\n message.html = this.textContent.html;\n }\n\n if (this.textContent?.plain) {\n message.text = this.textContent.plain;\n }\n\n message.attachments = this.attachments;\n\n // Expose raw header lines (reversed to match headers array order)\n message.headerLines = (this.root.rawHeaderLines || []).slice().reverse();\n\n switch (this.attachmentEncoding) {\n case 'arraybuffer':\n break;\n\n case 'base64':\n for (let attachment of message.attachments || []) {\n if (attachment?.content) {\n attachment.content = base64ArrayBuffer(attachment.content);\n attachment.encoding = 'base64';\n }\n }\n break;\n\n case 'utf8':\n let attachmentDecoder = new TextDecoder('utf8');\n for (let attachment of message.attachments || []) {\n if (attachment?.content) {\n attachment.content = attachmentDecoder.decode(attachment.content);\n attachment.encoding = 'utf8';\n }\n }\n break;\n\n default:\n throw new Error('Unknown attachment encoding');\n }\n\n return message;\n }\n}\n","\"use strict\";\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package base64 implements Base64 encoding and decoding.\n */\n// Invalid character used in decoding to indicate\n// that the character to decode is out of range of\n// alphabet and cannot be decoded.\nvar INVALID_BYTE = 256;\n/**\n * Implements standard Base64 encoding.\n *\n * Operates in constant time.\n */\nvar Coder = /** @class */ (function () {\n // TODO(dchest): methods to encode chunk-by-chunk.\n function Coder(_paddingCharacter) {\n if (_paddingCharacter === void 0) { _paddingCharacter = \"=\"; }\n this._paddingCharacter = _paddingCharacter;\n }\n Coder.prototype.encodedLength = function (length) {\n if (!this._paddingCharacter) {\n return (length * 8 + 5) / 6 | 0;\n }\n return (length + 2) / 3 * 4 | 0;\n };\n Coder.prototype.encode = function (data) {\n var out = \"\";\n var i = 0;\n for (; i < data.length - 2; i += 3) {\n var c = (data[i] << 16) | (data[i + 1] << 8) | (data[i + 2]);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n out += this._encodeByte((c >>> 1 * 6) & 63);\n out += this._encodeByte((c >>> 0 * 6) & 63);\n }\n var left = data.length - i;\n if (left > 0) {\n var c = (data[i] << 16) | (left === 2 ? data[i + 1] << 8 : 0);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n if (left === 2) {\n out += this._encodeByte((c >>> 1 * 6) & 63);\n }\n else {\n out += this._paddingCharacter || \"\";\n }\n out += this._paddingCharacter || \"\";\n }\n return out;\n };\n Coder.prototype.maxDecodedLength = function (length) {\n if (!this._paddingCharacter) {\n return (length * 6 + 7) / 8 | 0;\n }\n return length / 4 * 3 | 0;\n };\n Coder.prototype.decodedLength = function (s) {\n return this.maxDecodedLength(s.length - this._getPaddingLength(s));\n };\n Coder.prototype.decode = function (s) {\n if (s.length === 0) {\n return new Uint8Array(0);\n }\n var paddingLength = this._getPaddingLength(s);\n var length = s.length - paddingLength;\n var out = new Uint8Array(this.maxDecodedLength(length));\n var op = 0;\n var i = 0;\n var haveBad = 0;\n var v0 = 0, v1 = 0, v2 = 0, v3 = 0;\n for (; i < length - 4; i += 4) {\n v0 = this._decodeChar(s.charCodeAt(i + 0));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n out[op++] = (v1 << 4) | (v2 >>> 2);\n out[op++] = (v2 << 6) | v3;\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n haveBad |= v2 & INVALID_BYTE;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (i < length - 1) {\n v0 = this._decodeChar(s.charCodeAt(i));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n }\n if (i < length - 2) {\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n out[op++] = (v1 << 4) | (v2 >>> 2);\n haveBad |= v2 & INVALID_BYTE;\n }\n if (i < length - 3) {\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v2 << 6) | v3;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (haveBad !== 0) {\n throw new Error(\"Base64Coder: incorrect characters for decoding\");\n }\n return out;\n };\n // Standard encoding have the following encoded/decoded ranges,\n // which we need to convert between.\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 + /\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 43 47\n //\n // Encode 6 bits in b into a new character.\n Coder.prototype._encodeByte = function (b) {\n // Encoding uses constant time operations as follows:\n //\n // 1. Define comparison of A with B using (A - B) >>> 8:\n // if A > B, then result is positive integer\n // if A <= B, then result is 0\n //\n // 2. Define selection of C or 0 using bitwise AND: X & C:\n // if X == 0, then result is 0\n // if X != 0, then result is C\n //\n // 3. Start with the smallest comparison (b >= 0), which is always\n // true, so set the result to the starting ASCII value (65).\n //\n // 4. Continue comparing b to higher ASCII values, and selecting\n // zero if comparison isn't true, otherwise selecting a value\n // to add to result, which:\n //\n // a) undoes the previous addition\n // b) provides new value to add\n //\n var result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 43);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 43) - 63 + 47);\n return String.fromCharCode(result);\n };\n // Decode a character code into a byte.\n // Must return 256 if character is out of alphabet range.\n Coder.prototype._decodeChar = function (c) {\n // Decoding works similar to encoding: using the same comparison\n // function, but now it works on ranges: result is always incremented\n // by value, but this value becomes zero if the range is not\n // satisfied.\n //\n // Decoding starts with invalid value, 256, which is then\n // subtracted when the range is satisfied. If none of the ranges\n // apply, the function returns 256, which is then checked by\n // the caller to throw error.\n var result = INVALID_BYTE; // start with invalid character\n // c == 43 (c > 42 and c < 44)\n result += (((42 - c) & (c - 44)) >>> 8) & (-INVALID_BYTE + c - 43 + 62);\n // c == 47 (c > 46 and c < 48)\n result += (((46 - c) & (c - 48)) >>> 8) & (-INVALID_BYTE + c - 47 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n return result;\n };\n Coder.prototype._getPaddingLength = function (s) {\n var paddingLength = 0;\n if (this._paddingCharacter) {\n for (var i = s.length - 1; i >= 0; i--) {\n if (s[i] !== this._paddingCharacter) {\n break;\n }\n paddingLength++;\n }\n if (s.length < 4 || paddingLength > 2) {\n throw new Error(\"Base64Coder: incorrect padding\");\n }\n }\n return paddingLength;\n };\n return Coder;\n}());\nexports.Coder = Coder;\nvar stdCoder = new Coder();\nfunction encode(data) {\n return stdCoder.encode(data);\n}\nexports.encode = encode;\nfunction decode(s) {\n return stdCoder.decode(s);\n}\nexports.decode = decode;\n/**\n * Implements URL-safe Base64 encoding.\n * (Same as Base64, but '+' is replaced with '-', and '/' with '_').\n *\n * Operates in constant time.\n */\nvar URLSafeCoder = /** @class */ (function (_super) {\n __extends(URLSafeCoder, _super);\n function URLSafeCoder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // URL-safe encoding have the following encoded/decoded ranges:\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 - _\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 45 95\n //\n URLSafeCoder.prototype._encodeByte = function (b) {\n var result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 45);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 45) - 63 + 95);\n return String.fromCharCode(result);\n };\n URLSafeCoder.prototype._decodeChar = function (c) {\n var result = INVALID_BYTE;\n // c == 45 (c > 44 and c < 46)\n result += (((44 - c) & (c - 46)) >>> 8) & (-INVALID_BYTE + c - 45 + 62);\n // c == 95 (c > 94 and c < 96)\n result += (((94 - c) & (c - 96)) >>> 8) & (-INVALID_BYTE + c - 95 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n return result;\n };\n return URLSafeCoder;\n}(Coder));\nexports.URLSafeCoder = URLSafeCoder;\nvar urlSafeCoder = new URLSafeCoder();\nfunction encodeURLSafe(data) {\n return urlSafeCoder.encode(data);\n}\nexports.encodeURLSafe = encodeURLSafe;\nfunction decodeURLSafe(s) {\n return urlSafeCoder.decode(s);\n}\nexports.decodeURLSafe = decodeURLSafe;\nexports.encodedLength = function (length) {\n return stdCoder.encodedLength(length);\n};\nexports.maxDecodedLength = function (length) {\n return stdCoder.maxDecodedLength(length);\n};\nexports.decodedLength = function (s) {\n return stdCoder.decodedLength(s);\n};\n//# sourceMappingURL=base64.js.map","(function (root, factory) {\n // Hack to make all exports of this module sha256 function object properties.\n var exports = {};\n factory(exports);\n var sha256 = exports[\"default\"];\n for (var k in exports) {\n sha256[k] = exports[k];\n }\n \n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = sha256;\n } else if (typeof define === 'function' && define.amd) {\n define(function() { return sha256; }); \n } else {\n root.sha256 = sha256;\n }\n})(this, function(exports) {\n\"use strict\";\nexports.__esModule = true;\n// SHA-256 (+ HMAC and PBKDF2) for JavaScript.\n//\n// Written in 2014-2016 by Dmitry Chestnykh.\n// Public domain, no warranty.\n//\n// Functions (accept and return Uint8Arrays):\n//\n// sha256(message) -> hash\n// sha256.hmac(key, message) -> mac\n// sha256.pbkdf2(password, salt, rounds, dkLen) -> dk\n//\n// Classes:\n//\n// new sha256.Hash()\n// new sha256.HMAC(key)\n//\nexports.digestLength = 32;\nexports.blockSize = 64;\n// SHA-256 constants\nvar K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\nfunction hashBlocks(w, v, p, pos, len) {\n var a, b, c, d, e, f, g, h, u, i, j, t1, t2;\n while (len >= 64) {\n a = v[0];\n b = v[1];\n c = v[2];\n d = v[3];\n e = v[4];\n f = v[5];\n g = v[6];\n h = v[7];\n for (i = 0; i < 16; i++) {\n j = pos + i * 4;\n w[i] = (((p[j] & 0xff) << 24) | ((p[j + 1] & 0xff) << 16) |\n ((p[j + 2] & 0xff) << 8) | (p[j + 3] & 0xff));\n }\n for (i = 16; i < 64; i++) {\n u = w[i - 2];\n t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10);\n u = w[i - 15];\n t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3);\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0);\n }\n for (i = 0; i < 64; i++) {\n t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n v[0] += a;\n v[1] += b;\n v[2] += c;\n v[3] += d;\n v[4] += e;\n v[5] += f;\n v[6] += g;\n v[7] += h;\n pos += 64;\n len -= 64;\n }\n return pos;\n}\n// Hash implements SHA256 hash algorithm.\nvar Hash = /** @class */ (function () {\n function Hash() {\n this.digestLength = exports.digestLength;\n this.blockSize = exports.blockSize;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this.state = new Int32Array(8); // hash state\n this.temp = new Int32Array(64); // temporary state\n this.buffer = new Uint8Array(128); // buffer for data to hash\n this.bufferLength = 0; // number of bytes in buffer\n this.bytesHashed = 0; // number of total bytes hashed\n this.finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n // Resets hash state making it possible\n // to re-use this instance to hash other data.\n Hash.prototype.reset = function () {\n this.state[0] = 0x6a09e667;\n this.state[1] = 0xbb67ae85;\n this.state[2] = 0x3c6ef372;\n this.state[3] = 0xa54ff53a;\n this.state[4] = 0x510e527f;\n this.state[5] = 0x9b05688c;\n this.state[6] = 0x1f83d9ab;\n this.state[7] = 0x5be0cd19;\n this.bufferLength = 0;\n this.bytesHashed = 0;\n this.finished = false;\n return this;\n };\n // Cleans internal buffers and re-initializes hash state.\n Hash.prototype.clean = function () {\n for (var i = 0; i < this.buffer.length; i++) {\n this.buffer[i] = 0;\n }\n for (var i = 0; i < this.temp.length; i++) {\n this.temp[i] = 0;\n }\n this.reset();\n };\n // Updates hash state with the given data.\n //\n // Optionally, length of the data can be specified to hash\n // fewer bytes than data.length.\n //\n // Throws error when trying to update already finalized hash:\n // instance must be reset to use it again.\n Hash.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this.finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\");\n }\n var dataPos = 0;\n this.bytesHashed += dataLength;\n if (this.bufferLength > 0) {\n while (this.bufferLength < 64 && dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this.bufferLength === 64) {\n hashBlocks(this.temp, this.state, this.buffer, 0, 64);\n this.bufferLength = 0;\n }\n }\n if (dataLength >= 64) {\n dataPos = hashBlocks(this.temp, this.state, data, dataPos, dataLength);\n dataLength %= 64;\n }\n while (dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n // Finalizes hash state and puts hash into out.\n //\n // If hash was already finalized, puts the same value.\n Hash.prototype.finish = function (out) {\n if (!this.finished) {\n var bytesHashed = this.bytesHashed;\n var left = this.bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 64 < 56) ? 64 : 128;\n this.buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this.buffer[i] = 0;\n }\n this.buffer[padLength - 8] = (bitLenHi >>> 24) & 0xff;\n this.buffer[padLength - 7] = (bitLenHi >>> 16) & 0xff;\n this.buffer[padLength - 6] = (bitLenHi >>> 8) & 0xff;\n this.buffer[padLength - 5] = (bitLenHi >>> 0) & 0xff;\n this.buffer[padLength - 4] = (bitLenLo >>> 24) & 0xff;\n this.buffer[padLength - 3] = (bitLenLo >>> 16) & 0xff;\n this.buffer[padLength - 2] = (bitLenLo >>> 8) & 0xff;\n this.buffer[padLength - 1] = (bitLenLo >>> 0) & 0xff;\n hashBlocks(this.temp, this.state, this.buffer, 0, padLength);\n this.finished = true;\n }\n for (var i = 0; i < 8; i++) {\n out[i * 4 + 0] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n return this;\n };\n // Returns the final hash digest.\n Hash.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n // Internal function for use in HMAC for optimization.\n Hash.prototype._saveState = function (out) {\n for (var i = 0; i < this.state.length; i++) {\n out[i] = this.state[i];\n }\n };\n // Internal function for use in HMAC for optimization.\n Hash.prototype._restoreState = function (from, bytesHashed) {\n for (var i = 0; i < this.state.length; i++) {\n this.state[i] = from[i];\n }\n this.bytesHashed = bytesHashed;\n this.finished = false;\n this.bufferLength = 0;\n };\n return Hash;\n}());\nexports.Hash = Hash;\n// HMAC implements HMAC-SHA256 message authentication algorithm.\nvar HMAC = /** @class */ (function () {\n function HMAC(key) {\n this.inner = new Hash();\n this.outer = new Hash();\n this.blockSize = this.inner.blockSize;\n this.digestLength = this.inner.digestLength;\n var pad = new Uint8Array(this.blockSize);\n if (key.length > this.blockSize) {\n (new Hash()).update(key).finish(pad).clean();\n }\n else {\n for (var i = 0; i < key.length; i++) {\n pad[i] = key[i];\n }\n }\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36;\n }\n this.inner.update(pad);\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c;\n }\n this.outer.update(pad);\n this.istate = new Uint32Array(8);\n this.ostate = new Uint32Array(8);\n this.inner._saveState(this.istate);\n this.outer._saveState(this.ostate);\n for (var i = 0; i < pad.length; i++) {\n pad[i] = 0;\n }\n }\n // Returns HMAC state to the state initialized with key\n // to make it possible to run HMAC over the other data with the same\n // key without creating a new instance.\n HMAC.prototype.reset = function () {\n this.inner._restoreState(this.istate, this.inner.blockSize);\n this.outer._restoreState(this.ostate, this.outer.blockSize);\n return this;\n };\n // Cleans HMAC state.\n HMAC.prototype.clean = function () {\n for (var i = 0; i < this.istate.length; i++) {\n this.ostate[i] = this.istate[i] = 0;\n }\n this.inner.clean();\n this.outer.clean();\n };\n // Updates state with provided data.\n HMAC.prototype.update = function (data) {\n this.inner.update(data);\n return this;\n };\n // Finalizes HMAC and puts the result in out.\n HMAC.prototype.finish = function (out) {\n if (this.outer.finished) {\n this.outer.finish(out);\n }\n else {\n this.inner.finish(out);\n this.outer.update(out, this.digestLength).finish(out);\n }\n return this;\n };\n // Returns message authentication code.\n HMAC.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n return HMAC;\n}());\nexports.HMAC = HMAC;\n// Returns SHA256 hash of data.\nfunction hash(data) {\n var h = (new Hash()).update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n// Function hash is both available as module.hash and as default export.\nexports[\"default\"] = hash;\n// Returns HMAC-SHA256 of data under the key.\nfunction hmac(key, data) {\n var h = (new HMAC(key)).update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hmac = hmac;\n// Fills hkdf buffer like this:\n// T(1) = HMAC-Hash(PRK, T(0) | info | 0x01)\nfunction fillBuffer(buffer, hmac, info, counter) {\n // Counter is a byte value: check if it overflowed.\n var num = counter[0];\n if (num === 0) {\n throw new Error(\"hkdf: cannot expand more\");\n }\n // Prepare HMAC instance for new data with old key.\n hmac.reset();\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (num > 1) {\n hmac.update(buffer);\n }\n // Hash in info if it exists.\n if (info) {\n hmac.update(info);\n }\n // Hash in the counter.\n hmac.update(counter);\n // Output result to buffer and clean HMAC instance.\n hmac.finish(buffer);\n // Increment counter inside typed array, this works properly.\n counter[0]++;\n}\nvar hkdfSalt = new Uint8Array(exports.digestLength); // Filled with zeroes.\nfunction hkdf(key, salt, info, length) {\n if (salt === void 0) { salt = hkdfSalt; }\n if (length === void 0) { length = 32; }\n var counter = new Uint8Array([1]);\n // HKDF-Extract uses salt as HMAC key, and key as data.\n var okm = hmac(salt, key);\n // Initialize HMAC for expanding with extracted key.\n // Ensure no collisions with `hmac` function.\n var hmac_ = new HMAC(okm);\n // Allocate buffer.\n var buffer = new Uint8Array(hmac_.digestLength);\n var bufpos = buffer.length;\n var out = new Uint8Array(length);\n for (var i = 0; i < length; i++) {\n if (bufpos === buffer.length) {\n fillBuffer(buffer, hmac_, info, counter);\n bufpos = 0;\n }\n out[i] = buffer[bufpos++];\n }\n hmac_.clean();\n buffer.fill(0);\n counter.fill(0);\n return out;\n}\nexports.hkdf = hkdf;\n// Derives a key from password and salt using PBKDF2-HMAC-SHA256\n// with the given number of iterations.\n//\n// The number of bytes returned is equal to dkLen.\n//\n// (For better security, avoid dkLen greater than hash length - 32 bytes).\nfunction pbkdf2(password, salt, iterations, dkLen) {\n var prf = new HMAC(password);\n var len = prf.digestLength;\n var ctr = new Uint8Array(4);\n var t = new Uint8Array(len);\n var u = new Uint8Array(len);\n var dk = new Uint8Array(dkLen);\n for (var i = 0; i * len < dkLen; i++) {\n var c = i + 1;\n ctr[0] = (c >>> 24) & 0xff;\n ctr[1] = (c >>> 16) & 0xff;\n ctr[2] = (c >>> 8) & 0xff;\n ctr[3] = (c >>> 0) & 0xff;\n prf.reset();\n prf.update(salt);\n prf.update(ctr);\n prf.finish(u);\n for (var j = 0; j < len; j++) {\n t[j] = u[j];\n }\n for (var j = 2; j <= iterations; j++) {\n prf.reset();\n prf.update(u).finish(u);\n for (var k = 0; k < len; k++) {\n t[k] ^= u[k];\n }\n }\n for (var j = 0; j < len && i * len + j < dkLen; j++) {\n dk[i * len + j] = t[j];\n }\n }\n for (var i = 0; i < len; i++) {\n t[i] = u[i] = 0;\n }\n for (var i = 0; i < 4; i++) {\n ctr[i] = 0;\n }\n prf.clean();\n return dk;\n}\nexports.pbkdf2 = pbkdf2;\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.timingSafeEqual = timingSafeEqual;\nfunction assert(expr, msg = \"\") {\n if (!expr) {\n throw new Error(msg);\n }\n}\nfunction timingSafeEqual(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n if (!(a instanceof DataView)) {\n a = new DataView(ArrayBuffer.isView(a) ? a.buffer : a);\n }\n if (!(b instanceof DataView)) {\n b = new DataView(ArrayBuffer.isView(b) ? b.buffer : b);\n }\n assert(a instanceof DataView);\n assert(b instanceof DataView);\n const length = a.byteLength;\n let out = 0;\n let i = -1;\n while (++i < length) {\n out |= a.getUint8(i) ^ b.getUint8(i);\n }\n return out === 0;\n}\n//# sourceMappingURL=timing_safe_equal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Webhook = exports.WebhookVerificationError = void 0;\nconst base64 = require(\"@stablelib/base64\");\nconst sha256 = require(\"fast-sha256\");\nconst timing_safe_equal_1 = require(\"./timing_safe_equal\");\nconst WEBHOOK_TOLERANCE_IN_SECONDS = 5 * 60;\nclass ExtendableError extends Error {\n constructor(message) {\n super(message);\n Object.setPrototypeOf(this, ExtendableError.prototype);\n this.name = \"ExtendableError\";\n this.stack = new Error(message).stack;\n }\n}\nclass WebhookVerificationError extends ExtendableError {\n constructor(message) {\n super(message);\n Object.setPrototypeOf(this, WebhookVerificationError.prototype);\n this.name = \"WebhookVerificationError\";\n }\n}\nexports.WebhookVerificationError = WebhookVerificationError;\nclass Webhook {\n constructor(secret, options) {\n if ((options === null || options === void 0 ? void 0 : options.format) === \"raw\") {\n if (secret instanceof Uint8Array) {\n this.key = secret;\n }\n else {\n this.key = Uint8Array.from(secret, (c) => c.charCodeAt(0));\n }\n }\n else {\n if (typeof secret !== \"string\") {\n throw new Error(\"Expected secret to be of type string\");\n }\n if (secret.startsWith(Webhook.prefix)) {\n secret = secret.substring(Webhook.prefix.length);\n }\n this.key = base64.decode(secret);\n }\n if (this.key.length === 0) {\n throw new Error(\"Secret can't be empty.\");\n }\n }\n verify(payload, headers, options) {\n var _a;\n const jsonParse = (_a = options === null || options === void 0 ? void 0 : options.jsonParse) !== null && _a !== void 0 ? _a : true;\n const normalizedHeaders = {};\n for (const key of Object.keys(headers)) {\n normalizedHeaders[key.toLowerCase()] = headers[key];\n }\n const msgId = normalizedHeaders[\"webhook-id\"];\n const msgSignature = normalizedHeaders[\"webhook-signature\"];\n const msgTimestamp = normalizedHeaders[\"webhook-timestamp\"];\n if (!msgSignature || !msgId || !msgTimestamp) {\n throw new WebhookVerificationError(\"Missing required headers\");\n }\n const timestamp = this.verifyTimestamp(msgTimestamp);\n const computedSignature = this.sign(msgId, timestamp, payload);\n const expectedSignature = computedSignature.split(\",\")[1];\n const passedSignatures = msgSignature.split(\" \");\n const encoder = new globalThis.TextEncoder();\n for (const versionedSignature of passedSignatures) {\n const [version, signature] = versionedSignature.split(\",\");\n if (version !== \"v1\") {\n continue;\n }\n if ((0, timing_safe_equal_1.timingSafeEqual)(encoder.encode(signature), encoder.encode(expectedSignature))) {\n const payloadString = payload.toString();\n if (payloadString === \"\") {\n return undefined;\n }\n if (jsonParse) {\n return JSON.parse(payloadString);\n }\n else {\n return undefined;\n }\n }\n }\n throw new WebhookVerificationError(\"No matching signature found\");\n }\n sign(msgId, timestamp, payload) {\n if (typeof payload === \"string\") {\n }\n else if (payload.constructor.name === \"Buffer\") {\n payload = payload.toString();\n }\n else {\n throw new Error(\"Expected payload to be of type string or Buffer.\");\n }\n const encoder = new TextEncoder();\n const timestampNumber = Math.floor(timestamp.getTime() / 1000);\n const toSign = encoder.encode(`${msgId}.${timestampNumber}.${payload}`);\n const expectedSignature = base64.encode(sha256.hmac(this.key, toSign));\n return `v1,${expectedSignature}`;\n }\n verifyTimestamp(timestampHeader) {\n const now = Math.floor(Date.now() / 1000);\n const timestamp = parseInt(timestampHeader, 10);\n if (Number.isNaN(timestamp)) {\n throw new WebhookVerificationError(\"Invalid Signature Headers\");\n }\n if (now - timestamp > WEBHOOK_TOLERANCE_IN_SECONDS) {\n throw new WebhookVerificationError(\"Message timestamp too old\");\n }\n if (timestamp > now + WEBHOOK_TOLERANCE_IN_SECONDS) {\n throw new WebhookVerificationError(\"Message timestamp too new\");\n }\n return new Date(timestamp * 1000);\n }\n}\nexports.Webhook = Webhook;\nWebhook.prefix = \"whsec_\";\n//# sourceMappingURL=index.js.map","import PostalMime from \"postal-mime\";\nimport { Webhook } from \"standardwebhooks\";\n//#region package.json\nvar version = \"6.32.0\";\n//#endregion\n//#region src/common/utils/build-pagination-query.ts\nfunction buildPaginationUrl(base, options) {\n\tconst queryString = buildPaginationQuery(options);\n\treturn queryString ? `${base}?${queryString}` : base;\n}\n/**\n* Builds a query string from pagination options\n* @param options - Pagination options containing limit and either after or before (but not both)\n* @returns Query string (without leading '?') or empty string if no options\n*/\nfunction buildPaginationQuery(options) {\n\tconst searchParams = new URLSearchParams();\n\tif (options.limit !== void 0) searchParams.set(\"limit\", options.limit.toString());\n\tif (\"after\" in options && options.after !== void 0) searchParams.set(\"after\", options.after);\n\tif (\"before\" in options && options.before !== void 0) searchParams.set(\"before\", options.before);\n\treturn searchParams.toString();\n}\n//#endregion\n//#region src/api-keys/api-keys.ts\nvar ApiKeys = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync create(payload, requestOptions = {}) {\n\t\treturn await this.resend.post(\"/api-keys\", payload, requestOptions);\n\t}\n\tasync list(options = {}, requestOptions = {}) {\n\t\tconst url = buildPaginationUrl(\"/api-keys\", options);\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n\tasync update(id, payload, requestOptions = {}) {\n\t\treturn await this.resend.patch(`/api-keys/${id}`, payload, requestOptions);\n\t}\n\tasync remove(id, requestOptions = {}) {\n\t\treturn await this.resend.delete(`/api-keys/${id}`, void 0, requestOptions);\n\t}\n};\n//#endregion\n//#region src/automation-runs/automation-runs.ts\nvar AutomationRuns = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync get(options, requestOptions = {}) {\n\t\treturn await this.resend.get(`/automations/${options.automationId}/runs/${options.runId}`, requestOptions);\n\t}\n\tasync list(options, requestOptions = {}) {\n\t\tconst queryString = buildPaginationQuery(options);\n\t\tconst searchParams = new URLSearchParams(queryString);\n\t\tif (options.status) {\n\t\t\tconst statusValue = Array.isArray(options.status) ? options.status.join(\",\") : options.status;\n\t\t\tsearchParams.set(\"status\", statusValue);\n\t\t}\n\t\tconst qs = searchParams.toString();\n\t\tconst url = qs ? `/automations/${options.automationId}/runs?${qs}` : `/automations/${options.automationId}/runs`;\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n};\n//#endregion\n//#region src/common/utils/parse-automation-to-api-options.ts\nfunction parseStepConfig(step) {\n\tswitch (step.type) {\n\t\tcase \"trigger\": return {\n\t\t\tkey: step.key,\n\t\t\ttype: step.type,\n\t\t\tconfig: { event_name: step.config.eventName }\n\t\t};\n\t\tcase \"delay\": return {\n\t\t\tkey: step.key,\n\t\t\ttype: step.type,\n\t\t\tconfig: step.config\n\t\t};\n\t\tcase \"send_email\": return {\n\t\t\tkey: step.key,\n\t\t\ttype: step.type,\n\t\t\tconfig: {\n\t\t\t\ttemplate: step.config.template,\n\t\t\t\tsubject: step.config.subject,\n\t\t\t\tfrom: step.config.from,\n\t\t\t\treply_to: step.config.replyTo\n\t\t\t}\n\t\t};\n\t\tcase \"wait_for_event\": return {\n\t\t\tkey: step.key,\n\t\t\ttype: step.type,\n\t\t\tconfig: {\n\t\t\t\tevent_name: step.config.eventName,\n\t\t\t\ttimeout: step.config.timeout,\n\t\t\t\tfilter_rule: step.config.filterRule\n\t\t\t}\n\t\t};\n\t\tcase \"condition\": return {\n\t\t\tkey: step.key,\n\t\t\ttype: step.type,\n\t\t\tconfig: step.config\n\t\t};\n\t\tcase \"contact_update\": return {\n\t\t\tkey: step.key,\n\t\t\ttype: step.type,\n\t\t\tconfig: {\n\t\t\t\tfirst_name: step.config.firstName,\n\t\t\t\tlast_name: step.config.lastName,\n\t\t\t\tunsubscribed: step.config.unsubscribed,\n\t\t\t\tproperties: step.config.properties\n\t\t\t}\n\t\t};\n\t\tcase \"contact_delete\": return {\n\t\t\tkey: step.key,\n\t\t\ttype: step.type,\n\t\t\tconfig: step.config\n\t\t};\n\t\tcase \"add_to_segment\": return {\n\t\t\tkey: step.key,\n\t\t\ttype: step.type,\n\t\t\tconfig: { segment_id: step.config.segmentId }\n\t\t};\n\t}\n}\nfunction parseConnection(connection) {\n\treturn {\n\t\tfrom: connection.from,\n\t\tto: connection.to,\n\t\ttype: connection.type\n\t};\n}\nfunction parseAutomationToApiOptions(automation) {\n\treturn {\n\t\tname: automation.name,\n\t\tstatus: automation.status,\n\t\tsteps: automation.steps.map(parseStepConfig),\n\t\tconnections: automation.connections.map(parseConnection)\n\t};\n}\nfunction parseEventToApiOptions(event) {\n\treturn {\n\t\tevent: event.event,\n\t\tcontact_id: event.contactId,\n\t\temail: event.email,\n\t\tpayload: event.payload\n\t};\n}\n//#endregion\n//#region src/automations/automations.ts\nvar Automations = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t\tthis.runs = new AutomationRuns(this.resend);\n\t}\n\tasync create(payload, requestOptions = {}) {\n\t\treturn await this.resend.post(\"/automations\", parseAutomationToApiOptions(payload), requestOptions);\n\t}\n\tasync list(options = {}, requestOptions = {}) {\n\t\tconst params = [buildPaginationQuery(options)];\n\t\tif (options.status) params.push(`status=${encodeURIComponent(options.status)}`);\n\t\tconst qs = params.filter(Boolean).join(\"&\");\n\t\tconst url = qs ? `/automations?${qs}` : \"/automations\";\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n\tasync get(id, requestOptions = {}) {\n\t\treturn await this.resend.get(`/automations/${id}`, requestOptions);\n\t}\n\tasync remove(id, requestOptions = {}) {\n\t\treturn await this.resend.delete(`/automations/${id}`, void 0, requestOptions);\n\t}\n\tasync update(id, payload, requestOptions = {}) {\n\t\tconst apiPayload = {};\n\t\tif (payload.name !== void 0) apiPayload.name = payload.name;\n\t\tif (payload.status !== void 0) apiPayload.status = payload.status;\n\t\tif (payload.steps !== void 0) apiPayload.steps = payload.steps.map(parseStepConfig);\n\t\tif (payload.connections !== void 0) apiPayload.connections = payload.connections.map(parseConnection);\n\t\treturn await this.resend.patch(`/automations/${id}`, apiPayload, requestOptions);\n\t}\n\tasync duplicate(id, requestOptions = {}) {\n\t\treturn await this.resend.post(`/automations/${id}/duplicate`, void 0, requestOptions);\n\t}\n\tasync stop(id, requestOptions = {}) {\n\t\treturn await this.resend.post(`/automations/${id}/stop`, void 0, requestOptions);\n\t}\n};\n//#endregion\n//#region src/common/utils/parse-email-to-api-options.ts\nfunction parseAttachments(attachments) {\n\treturn attachments?.map((attachment) => ({\n\t\tcontent: attachment.content,\n\t\tfilename: attachment.filename,\n\t\tpath: attachment.path,\n\t\tcontent_type: attachment.contentType,\n\t\tcontent_id: attachment.contentId\n\t}));\n}\nfunction parseEmailToApiOptions(email) {\n\treturn {\n\t\tattachments: parseAttachments(email.attachments),\n\t\tbcc: email.bcc,\n\t\tcc: email.cc,\n\t\tfrom: email.from,\n\t\theaders: email.headers,\n\t\thtml: email.html,\n\t\treply_to: email.replyTo,\n\t\tscheduled_at: email.scheduledAt,\n\t\tsubject: email.subject,\n\t\ttags: email.tags,\n\t\ttext: email.text,\n\t\tto: email.to,\n\t\ttemplate: email.template ? {\n\t\t\tid: email.template.id,\n\t\t\tvariables: email.template.variables\n\t\t} : void 0,\n\t\ttopic_id: email.topicId\n\t};\n}\n//#endregion\n//#region src/render.ts\nasync function render(node) {\n\tlet render;\n\ttry {\n\t\t({render} = await import(\"@react-email/render\"));\n\t} catch {\n\t\tthrow new Error(\"Failed to render React component. Make sure to install `@react-email/render` or `@react-email/components`.\");\n\t}\n\treturn render(node);\n}\n//#endregion\n//#region src/batch/batch.ts\nvar Batch$1 = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync send(payload, requestOptions) {\n\t\treturn this.create(payload, requestOptions);\n\t}\n\tasync create(payload, requestOptions) {\n\t\tconst emails = [];\n\t\tfor (const email of payload) {\n\t\t\tif (email.react) {\n\t\t\t\temail.html = await render(email.react);\n\t\t\t\temail.react = void 0;\n\t\t\t}\n\t\t\temails.push(parseEmailToApiOptions(email));\n\t\t}\n\t\tconst headers = new Headers({ \"x-batch-validation\": requestOptions?.batchValidation ?? \"strict\" });\n\t\tfor (const [key, value] of new Headers(requestOptions?.headers || void 0)) headers.set(key, value);\n\t\treturn await this.resend.post(\"/emails/batch\", emails, {\n\t\t\t...requestOptions,\n\t\t\theaders\n\t\t});\n\t}\n};\n//#endregion\n//#region src/broadcasts/broadcasts.ts\nvar Broadcasts = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync create(payload, requestOptions = {}) {\n\t\tconst html = payload.react ? await render(payload.react) : payload.html;\n\t\treturn await this.resend.post(\"/broadcasts\", {\n\t\t\tname: payload.name,\n\t\t\tsegment_id: payload.segmentId,\n\t\t\taudience_id: payload.audienceId,\n\t\t\tpreview_text: payload.previewText,\n\t\t\tfrom: payload.from,\n\t\t\thtml,\n\t\t\treply_to: payload.replyTo,\n\t\t\tsubject: payload.subject,\n\t\t\ttext: payload.text,\n\t\t\ttopic_id: payload.topicId,\n\t\t\tsend: payload.send,\n\t\t\tscheduled_at: payload.scheduledAt\n\t\t}, requestOptions);\n\t}\n\tasync send(id, payload, requestOptions = {}) {\n\t\treturn await this.resend.post(`/broadcasts/${id}/send`, { scheduled_at: payload?.scheduledAt }, requestOptions);\n\t}\n\tasync list(options = {}, requestOptions = {}) {\n\t\tconst url = buildPaginationUrl(\"/broadcasts\", options);\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n\tasync get(id, requestOptions = {}) {\n\t\treturn await this.resend.get(`/broadcasts/${id}`, requestOptions);\n\t}\n\tasync recipients(id, options, requestOptions = {}) {\n\t\tconst url = `/broadcasts/${id}/recipients?${buildRecipientsQuery(options)}`;\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n\tasync clickedLinks(id, options = {}, requestOptions = {}) {\n\t\tconst url = buildPaginationUrl(`/broadcasts/${id}/clicked-links`, options);\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n\tasync remove(id, requestOptions = {}) {\n\t\treturn await this.resend.delete(`/broadcasts/${id}`, void 0, requestOptions);\n\t}\n\tasync cancel(id, requestOptions = {}) {\n\t\treturn await this.resend.post(`/broadcasts/${id}/cancel`, void 0, requestOptions);\n\t}\n\tasync duplicate(id, requestOptions = {}) {\n\t\treturn await this.resend.post(`/broadcasts/${id}/duplicate`, void 0, requestOptions);\n\t}\n\tasync update(id, payload, requestOptions = {}) {\n\t\tconst html = payload.react ? await render(payload.react) : payload.html;\n\t\treturn await this.resend.patch(`/broadcasts/${id}`, {\n\t\t\tname: payload.name,\n\t\t\tsegment_id: payload.segmentId,\n\t\t\taudience_id: payload.audienceId,\n\t\t\tfrom: payload.from,\n\t\t\thtml,\n\t\t\ttext: payload.text,\n\t\t\tsubject: payload.subject,\n\t\t\treply_to: payload.replyTo,\n\t\t\tpreview_text: payload.previewText,\n\t\t\ttopic_id: payload.topicId\n\t\t}, requestOptions);\n\t}\n};\nfunction buildRecipientsQuery(options) {\n\tconst { type, email, bounceType, ...pagination } = options;\n\tconst searchParams = new URLSearchParams(buildPaginationQuery(pagination));\n\tsearchParams.set(\"type\", type);\n\tif (email !== void 0) searchParams.set(\"email\", email);\n\tif (bounceType !== void 0) searchParams.set(\"bounce_type\", bounceType);\n\treturn searchParams.toString();\n}\n//#endregion\n//#region src/common/utils/parse-contact-properties-to-api-options.ts\nfunction parseContactPropertyFromApi(contactProperty) {\n\treturn {\n\t\tid: contactProperty.id,\n\t\tkey: contactProperty.key,\n\t\tcreatedAt: contactProperty.created_at,\n\t\ttype: contactProperty.type,\n\t\tfallbackValue: contactProperty.fallback_value\n\t};\n}\nfunction parseContactPropertyToApiOptions(contactProperty) {\n\tif (\"key\" in contactProperty) return {\n\t\tkey: contactProperty.key,\n\t\ttype: contactProperty.type,\n\t\tfallback_value: contactProperty.fallbackValue\n\t};\n\treturn { fallback_value: contactProperty.fallbackValue };\n}\n//#endregion\n//#region src/contact-properties/contact-properties.ts\nvar ContactProperties = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync create(options, requestOptions = {}) {\n\t\tconst apiOptions = parseContactPropertyToApiOptions(options);\n\t\treturn await this.resend.post(\"/contact-properties\", apiOptions, requestOptions);\n\t}\n\tasync list(options = {}, requestOptions = {}) {\n\t\tconst url = buildPaginationUrl(\"/contact-properties\", options);\n\t\tconst response = await this.resend.get(url, requestOptions);\n\t\tif (response.data) return {\n\t\t\tdata: {\n\t\t\t\t...response.data,\n\t\t\t\tdata: response.data.data.map((apiContactProperty) => parseContactPropertyFromApi(apiContactProperty))\n\t\t\t},\n\t\t\theaders: response.headers,\n\t\t\terror: null\n\t\t};\n\t\treturn response;\n\t}\n\tasync get(id, requestOptions = {}) {\n\t\tif (!id) return {\n\t\t\tdata: null,\n\t\t\theaders: null,\n\t\t\terror: {\n\t\t\t\tmessage: \"Missing `id` field.\",\n\t\t\t\tstatusCode: null,\n\t\t\t\tname: \"missing_required_field\"\n\t\t\t}\n\t\t};\n\t\tconst response = await this.resend.get(`/contact-properties/${id}`, requestOptions);\n\t\tif (response.data) return {\n\t\t\tdata: {\n\t\t\t\tobject: \"contact_property\",\n\t\t\t\t...parseContactPropertyFromApi(response.data)\n\t\t\t},\n\t\t\theaders: response.headers,\n\t\t\terror: null\n\t\t};\n\t\treturn response;\n\t}\n\tasync update(payload, requestOptions = {}) {\n\t\tif (!payload.id) return {\n\t\t\tdata: null,\n\t\t\theaders: null,\n\t\t\terror: {\n\t\t\t\tmessage: \"Missing `id` field.\",\n\t\t\t\tstatusCode: null,\n\t\t\t\tname: \"missing_required_field\"\n\t\t\t}\n\t\t};\n\t\tconst apiOptions = parseContactPropertyToApiOptions(payload);\n\t\treturn await this.resend.patch(`/contact-properties/${payload.id}`, apiOptions, requestOptions);\n\t}\n\tasync remove(id, requestOptions = {}) {\n\t\tif (!id) return {\n\t\t\tdata: null,\n\t\t\theaders: null,\n\t\t\terror: {\n\t\t\t\tmessage: \"Missing `id` field.\",\n\t\t\t\tstatusCode: null,\n\t\t\t\tname: \"missing_required_field\"\n\t\t\t}\n\t\t};\n\t\treturn await this.resend.delete(`/contact-properties/${id}`, void 0, requestOptions);\n\t}\n};\n//#endregion\n//#region src/contacts/imports/contact-imports.ts\nvar ContactImports = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync create(payload, requestOptions = {}) {\n\t\tconst formData = this.buildCreateFormData(payload);\n\t\treturn this.resend.post(\"/contacts/imports\", formData, requestOptions);\n\t}\n\tasync list(options = {}, requestOptions = {}) {\n\t\tconst searchParams = new URLSearchParams(buildPaginationQuery(options));\n\t\tif (options.status !== void 0) searchParams.set(\"status\", options.status);\n\t\tconst queryString = searchParams.toString();\n\t\tconst url = queryString ? `/contacts/imports?${queryString}` : \"/contacts/imports\";\n\t\treturn this.resend.get(url, requestOptions);\n\t}\n\tasync get(id, requestOptions = {}) {\n\t\treturn this.resend.get(`/contacts/imports/${id}`, requestOptions);\n\t}\n\tbuildCreateFormData(payload) {\n\t\tconst formData = new FormData();\n\t\tformData.append(\"file\", payload.file);\n\t\tthis.appendField(formData, \"column_map\", this.buildColumnMap(payload.columnMap ?? null));\n\t\tthis.appendField(formData, \"on_conflict\", payload.onConflict ?? null);\n\t\tthis.appendField(formData, \"segments\", payload.segments ?? null);\n\t\tthis.appendField(formData, \"topics\", payload.topics ?? null);\n\t\treturn formData;\n\t}\n\tbuildColumnMap(columnMap) {\n\t\tif (columnMap === null) return null;\n\t\treturn {\n\t\t\temail: columnMap.email,\n\t\t\tfirst_name: columnMap.firstName,\n\t\t\tlast_name: columnMap.lastName,\n\t\t\tunsubscribed: columnMap.unsubscribed,\n\t\t\tproperties: columnMap.properties\n\t\t};\n\t}\n\tappendField(formData, name, value) {\n\t\tif (value === null) return;\n\t\tformData.append(name, typeof value === \"string\" ? value : JSON.stringify(value));\n\t}\n};\n//#endregion\n//#region src/contacts/segments/contact-segments.ts\nvar ContactSegments = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync list(options, requestOptions = {}) {\n\t\tif (!options.contactId && !options.email) return {\n\t\t\tdata: null,\n\t\t\theaders: null,\n\t\t\terror: {\n\t\t\t\tmessage: \"Missing `id` or `email` field.\",\n\t\t\t\tstatusCode: null,\n\t\t\t\tname: \"missing_required_field\"\n\t\t\t}\n\t\t};\n\t\tconst url = buildPaginationUrl(`/contacts/${options.email ? options.email : options.contactId}/segments`, options);\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n\tasync add(options, requestOptions = {}) {\n\t\tif (!options.contactId && !options.email) return {\n\t\t\tdata: null,\n\t\t\theaders: null,\n\t\t\terror: {\n\t\t\t\tmessage: \"Missing `id` or `email` field.\",\n\t\t\t\tstatusCode: null,\n\t\t\t\tname: \"missing_required_field\"\n\t\t\t}\n\t\t};\n\t\tconst identifier = options.email ? options.email : options.contactId;\n\t\treturn this.resend.post(`/contacts/${identifier}/segments/${options.segmentId}`, void 0, requestOptions);\n\t}\n\tasync remove(options, requestOptions = {}) {\n\t\tif (!options.contactId && !options.email) return {\n\t\t\tdata: null,\n\t\t\theaders: null,\n\t\t\terror: {\n\t\t\t\tmessage: \"Missing `id` or `email` field.\",\n\t\t\t\tstatusCode: null,\n\t\t\t\tname: \"missing_required_field\"\n\t\t\t}\n\t\t};\n\t\tconst identifier = options.email ? options.email : options.contactId;\n\t\treturn this.resend.delete(`/contacts/${identifier}/segments/${options.segmentId}`, void 0, requestOptions);\n\t}\n};\n//#endregion\n//#region src/contacts/topics/contact-topics.ts\nvar ContactTopics = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync update(payload, requestOptions = {}) {\n\t\tif (!payload.id && !payload.email) return {\n\t\t\tdata: null,\n\t\t\theaders: null,\n\t\t\terror: {\n\t\t\t\tmessage: \"Missing `id` or `email` field.\",\n\t\t\t\tstatusCode: null,\n\t\t\t\tname: \"missing_required_field\"\n\t\t\t}\n\t\t};\n\t\tconst identifier = payload.email ? payload.email : payload.id;\n\t\treturn this.resend.patch(`/contacts/${identifier}/topics`, payload.topics, requestOptions);\n\t}\n\tasync list(options, requestOptions = {}) {\n\t\tif (!options.id && !options.email) return {\n\t\t\tdata: null,\n\t\t\theaders: null,\n\t\t\terror: {\n\t\t\t\tmessage: \"Missing `id` or `email` field.\",\n\t\t\t\tstatusCode: null,\n\t\t\t\tname: \"missing_required_field\"\n\t\t\t}\n\t\t};\n\t\tconst url = buildPaginationUrl(`/contacts/${options.email ? options.email : options.id}/topics`, options);\n\t\treturn this.resend.get(url, requestOptions);\n\t}\n};\n//#endregion\n//#region src/contacts/contacts.ts\nvar Contacts = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t\tthis.imports = new ContactImports(this.resend);\n\t\tthis.topics = new ContactTopics(this.resend);\n\t\tthis.segments = new ContactSegments(this.resend);\n\t}\n\tasync create(payload, requestOptions = {}) {\n\t\tif (\"audienceId\" in payload) {\n\t\t\tif (\"segments\" in payload || \"topics\" in payload) return {\n\t\t\t\tdata: null,\n\t\t\t\theaders: null,\n\t\t\t\terror: {\n\t\t\t\t\tmessage: \"`audienceId` is deprecated, and cannot be used together with `segments` or `topics`. Use `segments` instead to add one or more segments to the new contact.\",\n\t\t\t\t\tstatusCode: null,\n\t\t\t\t\tname: \"invalid_parameter\"\n\t\t\t\t}\n\t\t\t};\n\t\t\treturn await this.resend.post(`/audiences/${payload.audienceId}/contacts`, {\n\t\t\t\tunsubscribed: payload.unsubscribed,\n\t\t\t\temail: payload.email,\n\t\t\t\tfirst_name: payload.firstName,\n\t\t\t\tlast_name: payload.lastName,\n\t\t\t\tproperties: payload.properties\n\t\t\t}, requestOptions);\n\t\t}\n\t\treturn await this.resend.post(\"/contacts\", {\n\t\t\tunsubscribed: payload.unsubscribed,\n\t\t\temail: payload.email,\n\t\t\tfirst_name: payload.firstName,\n\t\t\tlast_name: payload.lastName,\n\t\t\tproperties: payload.properties,\n\t\t\tsegments: payload.segments,\n\t\t\ttopics: payload.topics\n\t\t}, requestOptions);\n\t}\n\tasync list(options = {}, requestOptions = {}) {\n\t\tconst segmentId = options.segmentId ?? options.audienceId;\n\t\tif (!segmentId) {\n\t\t\tconst url = buildPaginationUrl(\"/contacts\", options);\n\t\t\treturn await this.resend.get(url, requestOptions);\n\t\t}\n\t\tconst url = buildPaginationUrl(`/segments/${segmentId}/contacts`, options);\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n\tasync get(options, requestOptions = {}) {\n\t\tif (typeof options === \"string\") return this.resend.get(`/contacts/${options}`, requestOptions);\n\t\tif (!options.id && !options.email) return {\n\t\t\tdata: null,\n\t\t\theaders: null,\n\t\t\terror: {\n\t\t\t\tmessage: \"Missing `id` or `email` field.\",\n\t\t\t\tstatusCode: null,\n\t\t\t\tname: \"missing_required_field\"\n\t\t\t}\n\t\t};\n\t\tif (!options.audienceId) return this.resend.get(`/contacts/${options?.email ? options?.email : options?.id}`, requestOptions);\n\t\treturn this.resend.get(`/audiences/${options.audienceId}/contacts/${options?.email ? options?.email : options?.id}`, requestOptions);\n\t}\n\tasync update(options, requestOptions = {}) {\n\t\tif (!options.id && !options.email) return {\n\t\t\tdata: null,\n\t\t\theaders: null,\n\t\t\terror: {\n\t\t\t\tmessage: \"Missing `id` or `email` field.\",\n\t\t\t\tstatusCode: null,\n\t\t\t\tname: \"missing_required_field\"\n\t\t\t}\n\t\t};\n\t\tif (!options.audienceId) return await this.resend.patch(`/contacts/${options?.email ? options?.email : options?.id}`, {\n\t\t\tunsubscribed: options.unsubscribed,\n\t\t\tfirst_name: options.firstName,\n\t\t\tlast_name: options.lastName,\n\t\t\tproperties: options.properties\n\t\t}, requestOptions);\n\t\treturn await this.resend.patch(`/audiences/${options.audienceId}/contacts/${options?.email ? options?.email : options?.id}`, {\n\t\t\tunsubscribed: options.unsubscribed,\n\t\t\tfirst_name: options.firstName,\n\t\t\tlast_name: options.lastName,\n\t\t\tproperties: options.properties\n\t\t}, requestOptions);\n\t}\n\tasync remove(payload, requestOptions = {}) {\n\t\tif (typeof payload === \"string\") return this.resend.delete(`/contacts/${payload}`, void 0, requestOptions);\n\t\tif (!payload.id && !payload.email) return {\n\t\t\tdata: null,\n\t\t\theaders: null,\n\t\t\terror: {\n\t\t\t\tmessage: \"Missing `id` or `email` field.\",\n\t\t\t\tstatusCode: null,\n\t\t\t\tname: \"missing_required_field\"\n\t\t\t}\n\t\t};\n\t\tif (!payload.audienceId) return this.resend.delete(`/contacts/${payload?.email ? payload?.email : payload?.id}`, void 0, requestOptions);\n\t\treturn this.resend.delete(`/audiences/${payload.audienceId}/contacts/${payload?.email ? payload?.email : payload?.id}`, void 0, requestOptions);\n\t}\n};\n//#endregion\n//#region src/common/utils/parse-domain-to-api-options.ts\nfunction parseDomainToApiOptions(domain) {\n\treturn {\n\t\tname: domain.name,\n\t\tregion: domain.region,\n\t\tcustom_return_path: domain.customReturnPath,\n\t\tcapabilities: domain.capabilities,\n\t\topen_tracking: domain.openTracking,\n\t\tclick_tracking: domain.clickTracking,\n\t\ttls: domain.tls,\n\t\ttracking_subdomain: domain.trackingSubdomain\n\t};\n}\n//#endregion\n//#region src/domains/claims/domain-claims.ts\nvar DomainClaims = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync create(payload, requestOptions = {}) {\n\t\treturn await this.resend.post(\"/domains/claim\", {\n\t\t\tname: payload.name,\n\t\t\tregion: payload.region,\n\t\t\tcustom_return_path: payload.customReturnPath,\n\t\t\topen_tracking: payload.openTracking,\n\t\t\tclick_tracking: payload.clickTracking,\n\t\t\ttracking_subdomain: payload.trackingSubdomain\n\t\t}, requestOptions);\n\t}\n\tasync get(domainId, requestOptions = {}) {\n\t\treturn await this.resend.get(`/domains/${domainId}/claim`, requestOptions);\n\t}\n\tasync verify(domainId, requestOptions = {}) {\n\t\treturn await this.resend.post(`/domains/${domainId}/claim/verify`, void 0, requestOptions);\n\t}\n};\n//#endregion\n//#region src/domains/domains.ts\nvar Domains = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t\tthis.claims = new DomainClaims(this.resend);\n\t}\n\tasync create(payload, requestOptions = {}) {\n\t\treturn await this.resend.post(\"/domains\", parseDomainToApiOptions(payload), requestOptions);\n\t}\n\tasync list(options = {}, requestOptions = {}) {\n\t\tconst url = buildPaginationUrl(\"/domains\", options);\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n\tasync get(id, requestOptions = {}) {\n\t\treturn await this.resend.get(`/domains/${id}`, requestOptions);\n\t}\n\tasync update(payload, requestOptions = {}) {\n\t\treturn await this.resend.patch(`/domains/${payload.id}`, {\n\t\t\tclick_tracking: payload.clickTracking,\n\t\t\topen_tracking: payload.openTracking,\n\t\t\ttls: payload.tls,\n\t\t\tcapabilities: payload.capabilities,\n\t\t\ttracking_subdomain: payload.trackingSubdomain\n\t\t}, requestOptions);\n\t}\n\tasync remove(id, requestOptions = {}) {\n\t\treturn await this.resend.delete(`/domains/${id}`, void 0, requestOptions);\n\t}\n\tasync verify(id, requestOptions = {}) {\n\t\treturn await this.resend.post(`/domains/${id}/verify`, void 0, requestOptions);\n\t}\n};\n//#endregion\n//#region src/emails/attachments/attachments.ts\nvar Attachments$1 = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync get(options, requestOptions = {}) {\n\t\tconst { emailId, id } = options;\n\t\treturn await this.resend.get(`/emails/${emailId}/attachments/${id}`, requestOptions);\n\t}\n\tasync list(options, requestOptions = {}) {\n\t\tconst { emailId } = options;\n\t\tconst url = buildPaginationUrl(`/emails/${emailId}/attachments`, options);\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n};\n//#endregion\n//#region src/emails/receiving/attachments/attachments.ts\nvar Attachments = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync get(options, requestOptions = {}) {\n\t\tconst { emailId, id } = options;\n\t\treturn await this.resend.get(`/emails/receiving/${emailId}/attachments/${id}`, requestOptions);\n\t}\n\tasync list(options, requestOptions = {}) {\n\t\tconst { emailId } = options;\n\t\tconst url = buildPaginationUrl(`/emails/receiving/${emailId}/attachments`, options);\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n};\n//#endregion\n//#region src/emails/receiving/receiving.ts\nvar Receiving = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t\tthis.attachments = new Attachments(resend);\n\t}\n\tasync get(id, options = {}, requestOptions = {}) {\n\t\tconst searchParams = new URLSearchParams();\n\t\tif (options.html_format !== void 0) searchParams.set(\"html_format\", options.html_format);\n\t\tconst queryString = searchParams.toString();\n\t\tconst path = queryString ? `/emails/receiving/${id}?${queryString}` : `/emails/receiving/${id}`;\n\t\treturn await this.resend.get(path, requestOptions);\n\t}\n\tasync list(options = {}, requestOptions = {}) {\n\t\tconst url = buildPaginationUrl(\"/emails/receiving\", options);\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n\tasync forward(options, requestOptions = {}) {\n\t\tconst { emailId, to, from } = options;\n\t\tconst passthrough = options.passthrough !== false;\n\t\tconst emailResponse = await this.get(emailId, {}, { signal: requestOptions.signal });\n\t\tif (emailResponse.error) return {\n\t\t\tdata: null,\n\t\t\terror: emailResponse.error,\n\t\t\theaders: emailResponse.headers\n\t\t};\n\t\tconst email = emailResponse.data;\n\t\tconst originalSubject = email.subject || \"(no subject)\";\n\t\tif (passthrough) return this.forwardPassthrough(email, {\n\t\t\tto,\n\t\t\tfrom,\n\t\t\tsubject: originalSubject\n\t\t}, requestOptions);\n\t\tconst forwardSubject = originalSubject.startsWith(\"Fwd:\") ? originalSubject : `Fwd: ${originalSubject}`;\n\t\treturn this.forwardWrapped(email, {\n\t\t\tto,\n\t\t\tfrom,\n\t\t\tsubject: forwardSubject,\n\t\t\ttext: \"text\" in options ? options.text : void 0,\n\t\t\thtml: \"html\" in options ? options.html : void 0\n\t\t}, requestOptions);\n\t}\n\tasync forwardPassthrough(email, options, requestOptions) {\n\t\tconst { to, from, subject } = options;\n\t\tif (!email.raw?.download_url) return {\n\t\t\tdata: null,\n\t\t\terror: {\n\t\t\t\tname: \"validation_error\",\n\t\t\t\tmessage: \"Raw email content is not available for this email\",\n\t\t\t\tstatusCode: 400\n\t\t\t},\n\t\t\theaders: null\n\t\t};\n\t\tconst raw = await this.downloadRaw(email.raw.download_url, requestOptions.signal);\n\t\tif (raw.error) return {\n\t\t\tdata: null,\n\t\t\terror: raw.error,\n\t\t\theaders: null\n\t\t};\n\t\tconst parsed = await PostalMime.parse(raw.content, { attachmentEncoding: \"base64\" });\n\t\tconst attachments = parsed.attachments.map((attachment) => {\n\t\t\tconst contentId = attachment.contentId ? attachment.contentId.replace(/^<|>$/g, \"\") : void 0;\n\t\t\treturn {\n\t\t\t\tfilename: attachment.filename,\n\t\t\t\tcontent: attachment.content.toString(),\n\t\t\t\tcontent_type: attachment.mimeType,\n\t\t\t\tcontent_id: contentId || void 0\n\t\t\t};\n\t\t});\n\t\treturn await this.resend.post(\"/emails\", {\n\t\t\tfrom,\n\t\t\tto,\n\t\t\tsubject,\n\t\t\ttext: parsed.text || void 0,\n\t\t\thtml: parsed.html || void 0,\n\t\t\tattachments: attachments.length > 0 ? attachments : void 0\n\t\t}, requestOptions);\n\t}\n\tasync forwardWrapped(email, options, requestOptions) {\n\t\tconst { to, from, subject, text, html } = options;\n\t\tif (!email.raw?.download_url) return {\n\t\t\tdata: null,\n\t\t\terror: {\n\t\t\t\tname: \"validation_error\",\n\t\t\t\tmessage: \"Raw email content is not available for this email\",\n\t\t\t\tstatusCode: 400\n\t\t\t},\n\t\t\theaders: null\n\t\t};\n\t\tconst raw = await this.downloadRaw(email.raw.download_url, requestOptions.signal);\n\t\tif (raw.error) return {\n\t\t\tdata: null,\n\t\t\terror: raw.error,\n\t\t\theaders: null\n\t\t};\n\t\treturn await this.resend.post(\"/emails\", {\n\t\t\tfrom,\n\t\t\tto,\n\t\t\tsubject,\n\t\t\ttext,\n\t\t\thtml,\n\t\t\tattachments: [{\n\t\t\t\tfilename: \"forwarded_message.eml\",\n\t\t\t\tcontent: Buffer.from(raw.content).toString(\"base64\"),\n\t\t\t\tcontent_type: \"message/rfc822\"\n\t\t\t}]\n\t\t}, requestOptions);\n\t}\n\tasync downloadRaw(url, signal) {\n\t\ttry {\n\t\t\tconst response = await fetch(url, { signal });\n\t\t\tif (!response.ok) return {\n\t\t\t\tcontent: null,\n\t\t\t\terror: {\n\t\t\t\t\tname: \"application_error\",\n\t\t\t\t\tmessage: \"Failed to download raw email content\",\n\t\t\t\t\tstatusCode: response.status\n\t\t\t\t}\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tcontent: await response.text(),\n\t\t\t\terror: null\n\t\t\t};\n\t\t} catch {\n\t\t\treturn {\n\t\t\t\tcontent: null,\n\t\t\t\terror: {\n\t\t\t\t\tname: \"application_error\",\n\t\t\t\t\tmessage: \"Failed to download raw email content\",\n\t\t\t\t\tstatusCode: null\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region src/emails/emails.ts\nvar Emails = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t\tthis.attachments = new Attachments$1(resend);\n\t\tthis.receiving = new Receiving(resend);\n\t}\n\tasync send(payload, requestOptions = {}) {\n\t\treturn this.create(payload, requestOptions);\n\t}\n\tasync create(payload, requestOptions = {}) {\n\t\tconst body = { ...payload };\n\t\tif (payload.react) body.html = await render(payload.react);\n\t\treturn await this.resend.post(\"/emails\", parseEmailToApiOptions(body), requestOptions);\n\t}\n\tasync get(id, requestOptions = {}) {\n\t\treturn await this.resend.get(`/emails/${id}`, requestOptions);\n\t}\n\tasync list(options = {}, requestOptions = {}) {\n\t\tconst url = buildPaginationUrl(\"/emails\", options);\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n\tasync update(payload, requestOptions = {}) {\n\t\treturn await this.resend.patch(`/emails/${payload.id}`, { scheduled_at: payload.scheduledAt }, requestOptions);\n\t}\n\tasync cancel(id, requestOptions = {}) {\n\t\treturn await this.resend.post(`/emails/${id}/cancel`, void 0, requestOptions);\n\t}\n\tasync share(id, payload, requestOptions = {}) {\n\t\treturn await this.resend.post(`/emails/${id}/share`, { expires_in: payload?.expiresIn }, requestOptions);\n\t}\n\tasync metrics(options = {}, requestOptions = {}) {\n\t\tconst queryString = buildMetricsQuery(options);\n\t\tconst url = queryString ? `/emails/metrics?${queryString}` : \"/emails/metrics\";\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n};\nfunction buildMetricsQuery(options) {\n\tconst params = {\n\t\tstart_date: options.startDate,\n\t\tend_date: options.endDate,\n\t\ttimezone: options.timezone,\n\t\tgranularity: options.granularity,\n\t\tmetrics: options.metrics?.join(\",\"),\n\t\tdimensions: options.dimensions?.join(\",\"),\n\t\tdomain_id: options.domainId?.join(\",\"),\n\t\temail_id: options.emailId?.join(\",\"),\n\t\tbroadcast_id: options.broadcastId?.join(\",\")\n\t};\n\tconst searchParams = new URLSearchParams();\n\tfor (const [key, value] of Object.entries(params)) if (value !== void 0 && value !== \"\") searchParams.set(key, value);\n\treturn searchParams.toString();\n}\n//#endregion\n//#region src/events/events.ts\nvar Events$1 = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync send(payload, requestOptions = {}) {\n\t\treturn await this.resend.post(\"/events/send\", parseEventToApiOptions(payload), requestOptions);\n\t}\n\tasync create(payload, requestOptions = {}) {\n\t\treturn await this.resend.post(\"/events\", payload, requestOptions);\n\t}\n\tasync get(identifier, requestOptions = {}) {\n\t\treturn await this.resend.get(`/events/${encodeURIComponent(identifier)}`, requestOptions);\n\t}\n\tasync list(options = {}, requestOptions = {}) {\n\t\tconst url = buildPaginationUrl(\"/events\", options);\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n\tasync update(identifier, payload, requestOptions = {}) {\n\t\treturn await this.resend.patch(`/events/${encodeURIComponent(identifier)}`, payload, requestOptions);\n\t}\n\tasync remove(identifier, requestOptions = {}) {\n\t\treturn await this.resend.delete(`/events/${encodeURIComponent(identifier)}`, void 0, requestOptions);\n\t}\n};\n//#endregion\n//#region src/logs/logs.ts\nvar Logs = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync list(options = {}, requestOptions = {}) {\n\t\tconst url = buildPaginationUrl(\"/logs\", options);\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n\tasync get(id, requestOptions = {}) {\n\t\treturn await this.resend.get(`/logs/${id}`, requestOptions);\n\t}\n};\n//#endregion\n//#region src/oauth-grants/oauth-grants.ts\nvar OAuthGrants = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync list(options = {}, requestOptions = {}) {\n\t\tconst url = buildPaginationUrl(\"/oauth/grants\", options);\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n\tasync revoke(id, requestOptions = {}) {\n\t\treturn await this.resend.delete(`/oauth/grants/${id}`, void 0, requestOptions);\n\t}\n};\n//#endregion\n//#region src/segments/segments.ts\nvar Segments = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync create(payload, requestOptions = {}) {\n\t\treturn await this.resend.post(\"/segments\", payload, requestOptions);\n\t}\n\tasync list(options = {}, requestOptions = {}) {\n\t\tconst url = buildPaginationUrl(\"/segments\", options);\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n\tasync get(id, requestOptions = {}) {\n\t\treturn await this.resend.get(`/segments/${id}`, requestOptions);\n\t}\n\tasync update(id, payload, requestOptions = {}) {\n\t\treturn await this.resend.patch(`/segments/${id}`, payload, requestOptions);\n\t}\n\tasync remove(id, requestOptions = {}) {\n\t\treturn await this.resend.delete(`/segments/${id}`, void 0, requestOptions);\n\t}\n};\n//#endregion\n//#region src/suppressions/batch/batch.ts\nvar Batch = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync add(options, requestOptions = {}) {\n\t\treturn this.resend.post(\"/suppressions/batch/add\", options, requestOptions);\n\t}\n\tasync remove(options, requestOptions = {}) {\n\t\treturn this.resend.post(\"/suppressions/batch/remove\", options, requestOptions);\n\t}\n};\n//#endregion\n//#region src/suppressions/suppressions.ts\nconst missingIdentifierError = () => ({\n\tdata: null,\n\theaders: null,\n\terror: {\n\t\tmessage: \"Missing `id` field.\",\n\t\tstatusCode: null,\n\t\tname: \"missing_required_field\"\n\t}\n});\nvar Suppressions = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t\tthis.batch = new Batch(resend);\n\t}\n\tasync add(options, requestOptions = {}) {\n\t\treturn this.resend.post(\"/suppressions\", options, requestOptions);\n\t}\n\tasync list(options = {}, requestOptions = {}) {\n\t\tconst queryString = buildSuppressionsQuery(options);\n\t\tconst url = queryString ? `/suppressions?${queryString}` : \"/suppressions\";\n\t\treturn this.resend.get(url, requestOptions);\n\t}\n\tasync get(idOrEmail, requestOptions = {}) {\n\t\tif (!idOrEmail) return missingIdentifierError();\n\t\treturn this.resend.get(`/suppressions/${encodeURIComponent(idOrEmail)}`, requestOptions);\n\t}\n\tasync remove(idOrEmail, requestOptions = {}) {\n\t\tif (!idOrEmail) return missingIdentifierError();\n\t\treturn this.resend.delete(`/suppressions/${encodeURIComponent(idOrEmail)}`, void 0, requestOptions);\n\t}\n};\nfunction buildSuppressionsQuery(options) {\n\tconst { origin, ...pagination } = options;\n\tconst searchParams = new URLSearchParams(buildPaginationQuery(pagination));\n\tif (origin) searchParams.set(\"origin\", origin);\n\treturn searchParams.toString();\n}\n//#endregion\n//#region src/common/utils/get-pagination-query-properties.ts\nfunction getPaginationQueryProperties(options = {}) {\n\tconst query = new URLSearchParams();\n\tif (options.before) query.set(\"before\", options.before);\n\tif (options.after) query.set(\"after\", options.after);\n\tif (options.limit) query.set(\"limit\", options.limit.toString());\n\treturn query.size > 0 ? `?${query.toString()}` : \"\";\n}\n//#endregion\n//#region src/common/utils/parse-template-to-api-options.ts\nfunction parseVariables(variables) {\n\treturn variables?.map((variable) => ({\n\t\tkey: variable.key,\n\t\ttype: variable.type,\n\t\tfallback_value: variable.fallbackValue\n\t}));\n}\nfunction parseTemplateToApiOptions(template) {\n\treturn {\n\t\tname: \"name\" in template ? template.name : void 0,\n\t\tsubject: template.subject,\n\t\thtml: template.html,\n\t\ttext: template.text,\n\t\talias: template.alias,\n\t\tfrom: template.from,\n\t\treply_to: template.replyTo,\n\t\tvariables: parseVariables(template.variables)\n\t};\n}\n//#endregion\n//#region src/templates/chainable-template-result.ts\nvar ChainableTemplateResult = class {\n\tconstructor(promise, publishFn) {\n\t\tthis.promise = promise;\n\t\tthis.publishFn = publishFn;\n\t}\n\tthen(onfulfilled, onrejected) {\n\t\treturn this.promise.then(onfulfilled, onrejected);\n\t}\n\tasync publish(requestOptions = {}) {\n\t\tconst { data, error } = await this.promise;\n\t\tif (error) return {\n\t\t\tdata: null,\n\t\t\theaders: null,\n\t\t\terror\n\t\t};\n\t\treturn this.publishFn(data.id, requestOptions);\n\t}\n};\n//#endregion\n//#region src/templates/templates.ts\nvar Templates = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tcreate(payload, requestOptions = {}) {\n\t\treturn new ChainableTemplateResult(this.performCreate(payload, requestOptions), this.publish.bind(this));\n\t}\n\tasync performCreate(payload, requestOptions) {\n\t\tconst body = { ...payload };\n\t\tif (payload.react) body.html = await render(payload.react);\n\t\treturn this.resend.post(\"/templates\", parseTemplateToApiOptions(body), requestOptions);\n\t}\n\tasync remove(identifier, requestOptions = {}) {\n\t\treturn await this.resend.delete(`/templates/${identifier}`, void 0, requestOptions);\n\t}\n\tasync get(identifier, requestOptions = {}) {\n\t\treturn await this.resend.get(`/templates/${identifier}`, requestOptions);\n\t}\n\tasync list(options = {}, requestOptions = {}) {\n\t\treturn this.resend.get(`/templates${getPaginationQueryProperties(options)}`, requestOptions);\n\t}\n\tduplicate(identifier, requestOptions = {}) {\n\t\treturn new ChainableTemplateResult(this.resend.post(`/templates/${identifier}/duplicate`, void 0, requestOptions), this.publish.bind(this));\n\t}\n\tasync publish(identifier, requestOptions = {}) {\n\t\treturn await this.resend.post(`/templates/${identifier}/publish`, void 0, requestOptions);\n\t}\n\tasync update(identifier, payload, requestOptions = {}) {\n\t\treturn await this.resend.patch(`/templates/${identifier}`, parseTemplateToApiOptions(payload), requestOptions);\n\t}\n};\n//#endregion\n//#region src/topics/topics.ts\nvar Topics = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync create(payload, requestOptions = {}) {\n\t\tconst { defaultSubscription, ...body } = payload;\n\t\treturn await this.resend.post(\"/topics\", {\n\t\t\t...body,\n\t\t\tdefault_subscription: defaultSubscription\n\t\t}, requestOptions);\n\t}\n\tasync list(requestOptions = {}) {\n\t\treturn await this.resend.get(\"/topics\", requestOptions);\n\t}\n\tasync get(id, requestOptions = {}) {\n\t\tif (!id) return {\n\t\t\tdata: null,\n\t\t\theaders: null,\n\t\t\terror: {\n\t\t\t\tmessage: \"Missing `id` field.\",\n\t\t\t\tstatusCode: null,\n\t\t\t\tname: \"missing_required_field\"\n\t\t\t}\n\t\t};\n\t\treturn await this.resend.get(`/topics/${id}`, requestOptions);\n\t}\n\tasync update(payload, requestOptions = {}) {\n\t\tif (!payload.id) return {\n\t\t\tdata: null,\n\t\t\theaders: null,\n\t\t\terror: {\n\t\t\t\tmessage: \"Missing `id` field.\",\n\t\t\t\tstatusCode: null,\n\t\t\t\tname: \"missing_required_field\"\n\t\t\t}\n\t\t};\n\t\treturn await this.resend.patch(`/topics/${payload.id}`, payload, requestOptions);\n\t}\n\tasync remove(id, requestOptions = {}) {\n\t\tif (!id) return {\n\t\t\tdata: null,\n\t\t\theaders: null,\n\t\t\terror: {\n\t\t\t\tmessage: \"Missing `id` field.\",\n\t\t\t\tstatusCode: null,\n\t\t\t\tname: \"missing_required_field\"\n\t\t\t}\n\t\t};\n\t\treturn await this.resend.delete(`/topics/${id}`, void 0, requestOptions);\n\t}\n};\n//#endregion\n//#region src/usage/usage.ts\nvar Usage = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync get(requestOptions = {}) {\n\t\treturn await this.resend.get(\"/usage\", requestOptions);\n\t}\n};\n//#endregion\n//#region src/webhooks/events/attempts/attempts.ts\nvar Attempts = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t}\n\tasync list(options, requestOptions = {}) {\n\t\tconst { webhookId, eventId } = options;\n\t\tconst url = buildPaginationUrl(`/webhooks/${webhookId}/events/${eventId}/attempts`, options);\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n};\n//#endregion\n//#region src/webhooks/events/events.ts\nvar Events = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t\tthis.attempts = new Attempts(resend);\n\t}\n\tasync list(options, requestOptions = {}) {\n\t\tconst { webhookId } = options;\n\t\tconst url = buildPaginationUrl(`/webhooks/${webhookId}/events`, options);\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n\tasync get(options, requestOptions = {}) {\n\t\tconst { webhookId, eventId } = options;\n\t\treturn await this.resend.get(`/webhooks/${webhookId}/events/${eventId}`, requestOptions);\n\t}\n\tasync replay(options, requestOptions = {}) {\n\t\tconst { webhookId, eventId } = options;\n\t\treturn await this.resend.post(`/webhooks/${webhookId}/events/${eventId}/replay`, void 0, requestOptions);\n\t}\n};\n//#endregion\n//#region src/webhooks/webhooks.ts\nvar Webhooks = class {\n\tconstructor(resend) {\n\t\tthis.resend = resend;\n\t\tthis.events = new Events(resend);\n\t}\n\tasync create(payload, requestOptions = {}) {\n\t\treturn await this.resend.post(\"/webhooks\", payload, requestOptions);\n\t}\n\tasync get(id, requestOptions = {}) {\n\t\treturn await this.resend.get(`/webhooks/${id}`, requestOptions);\n\t}\n\tasync list(options = {}, requestOptions = {}) {\n\t\tconst url = buildPaginationUrl(\"/webhooks\", options);\n\t\treturn await this.resend.get(url, requestOptions);\n\t}\n\tasync update(id, payload, requestOptions = {}) {\n\t\treturn await this.resend.patch(`/webhooks/${id}`, payload, requestOptions);\n\t}\n\tasync remove(id, requestOptions = {}) {\n\t\treturn await this.resend.delete(`/webhooks/${id}`, void 0, requestOptions);\n\t}\n\tasync rotateSigningSecret(id, requestOptions = {}) {\n\t\treturn await this.resend.post(`/webhooks/${id}/signing-secret/rotate`, void 0, requestOptions);\n\t}\n\tverify(payload) {\n\t\treturn new Webhook(payload.webhookSecret).verify(payload.payload, {\n\t\t\t\"webhook-id\": payload.headers.id,\n\t\t\t\"webhook-timestamp\": payload.headers.timestamp,\n\t\t\t\"webhook-signature\": payload.headers.signature\n\t\t});\n\t}\n};\n//#endregion\n//#region src/resend.ts\nconst defaultBaseUrl = \"https://api.resend.com\";\nconst defaultUserAgent = `resend-node:${version}`;\nfunction getDefaultBaseUrl() {\n\treturn typeof process !== \"undefined\" && process.env ? process.env.RESEND_BASE_URL || defaultBaseUrl : defaultBaseUrl;\n}\nfunction getDefaultUserAgent() {\n\treturn typeof process !== \"undefined\" && process.env ? process.env.RESEND_USER_AGENT || defaultUserAgent : defaultUserAgent;\n}\nvar Resend = class {\n\tconstructor(key, options) {\n\t\tthis.key = key;\n\t\tthis.segments = new Segments(this);\n\t\tthis.apiKeys = new ApiKeys(this);\n\t\tthis.audiences = this.segments;\n\t\tthis.automations = new Automations(this);\n\t\tthis.batch = new Batch$1(this);\n\t\tthis.broadcasts = new Broadcasts(this);\n\t\tthis.contactProperties = new ContactProperties(this);\n\t\tthis.contacts = new Contacts(this);\n\t\tthis.domains = new Domains(this);\n\t\tthis.emails = new Emails(this);\n\t\tthis.events = new Events$1(this);\n\t\tthis.logs = new Logs(this);\n\t\tthis.oauthGrants = new OAuthGrants(this);\n\t\tthis.suppressions = new Suppressions(this);\n\t\tthis.templates = new Templates(this);\n\t\tthis.topics = new Topics(this);\n\t\tthis.usage = new Usage(this);\n\t\tthis.webhooks = new Webhooks(this);\n\t\tif (!key) {\n\t\t\tif (typeof process !== \"undefined\" && process.env) this.key = process.env.RESEND_API_KEY;\n\t\t\tif (!this.key) throw new Error(\"Missing API key. Pass it to the constructor `new Resend(\\\"re_123\\\")`\");\n\t\t}\n\t\tthis.baseUrl = options?.baseUrl ?? getDefaultBaseUrl();\n\t\tthis.userAgent = options?.userAgent ?? getDefaultUserAgent();\n\t\tthis.headers = new Headers({\n\t\t\tAuthorization: `Bearer ${this.key}`,\n\t\t\t\"User-Agent\": this.userAgent,\n\t\t\t\"Content-Type\": \"application/json\"\n\t\t});\n\t}\n\tlogError(error, path, status) {\n\t\tif (typeof process !== \"undefined\" && process.env && process.env.NODE_ENV !== \"production\") console.error(\"[Resend API Error]:\", {\n\t\t\t...status !== void 0 && { status },\n\t\t\terror,\n\t\t\tpath\n\t\t});\n\t}\n\tasync fetchRequest(path, options = {}) {\n\t\tconst { signal } = options;\n\t\ttry {\n\t\t\tconst response = await fetch(`${this.baseUrl}${path}`, options);\n\t\t\tif (!response.ok) try {\n\t\t\t\tconst rawError = await response.text();\n\t\t\t\tconst parsedError = JSON.parse(rawError);\n\t\t\t\tthis.logError(parsedError, path, response.status);\n\t\t\t\treturn {\n\t\t\t\t\tdata: null,\n\t\t\t\t\terror: parsedError,\n\t\t\t\t\theaders: Object.fromEntries(response.headers.entries())\n\t\t\t\t};\n\t\t\t} catch (err) {\n\t\t\t\tif (signal?.aborted && err === signal.reason) throw err;\n\t\t\t\tif (err instanceof SyntaxError) {\n\t\t\t\t\tconst error = {\n\t\t\t\t\t\tname: \"application_error\",\n\t\t\t\t\t\tstatusCode: response.status,\n\t\t\t\t\t\tmessage: \"Internal server error. We are unable to process your request right now, please try again later.\"\n\t\t\t\t\t};\n\t\t\t\t\tthis.logError(error, path, response.status);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\terror,\n\t\t\t\t\t\theaders: Object.fromEntries(response.headers.entries())\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst error = {\n\t\t\t\t\tmessage: response.statusText,\n\t\t\t\t\tstatusCode: response.status,\n\t\t\t\t\tname: \"application_error\"\n\t\t\t\t};\n\t\t\t\tif (err instanceof Error) {\n\t\t\t\t\tconst errorWithMessage = {\n\t\t\t\t\t\t...error,\n\t\t\t\t\t\tmessage: err.message\n\t\t\t\t\t};\n\t\t\t\t\tthis.logError(errorWithMessage, path, response.status);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\terror: errorWithMessage,\n\t\t\t\t\t\theaders: Object.fromEntries(response.headers.entries())\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tthis.logError(error, path, response.status);\n\t\t\t\treturn {\n\t\t\t\t\tdata: null,\n\t\t\t\t\terror,\n\t\t\t\t\theaders: Object.fromEntries(response.headers.entries())\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tdata: await response.json(),\n\t\t\t\terror: null,\n\t\t\t\theaders: Object.fromEntries(response.headers.entries())\n\t\t\t};\n\t\t} catch {\n\t\t\tconst error = {\n\t\t\t\tname: \"application_error\",\n\t\t\t\tstatusCode: null,\n\t\t\t\tmessage: \"Unable to fetch data. The request could not be resolved.\"\n\t\t\t};\n\t\t\tthis.logError(error, path);\n\t\t\treturn {\n\t\t\t\tdata: null,\n\t\t\t\terror,\n\t\t\t\theaders: null\n\t\t\t};\n\t\t}\n\t}\n\tasync post(path, entity, options = {}) {\n\t\tconst headers = new Headers(this.headers);\n\t\tconst isFormData = typeof FormData !== \"undefined\" && entity instanceof FormData;\n\t\tif (isFormData) headers.delete(\"Content-Type\");\n\t\tif (options.headers) for (const [key, value] of new Headers(options.headers).entries()) headers.set(key, value);\n\t\tif (options.idempotencyKey) headers.set(\"Idempotency-Key\", options.idempotencyKey);\n\t\tconst requestOptions = {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: isFormData ? entity : JSON.stringify(entity),\n\t\t\t...options,\n\t\t\theaders\n\t\t};\n\t\treturn this.fetchRequest(path, requestOptions);\n\t}\n\tasync get(path, options = {}) {\n\t\tconst headers = new Headers(this.headers);\n\t\tif (options.headers) for (const [key, value] of new Headers(options.headers).entries()) headers.set(key, value);\n\t\tconst requestOptions = {\n\t\t\tmethod: \"GET\",\n\t\t\t...options,\n\t\t\theaders\n\t\t};\n\t\treturn this.fetchRequest(path, requestOptions);\n\t}\n\tasync put(path, entity, options = {}) {\n\t\tconst headers = new Headers(this.headers);\n\t\tif (options.headers) for (const [key, value] of new Headers(options.headers).entries()) headers.set(key, value);\n\t\tconst requestOptions = {\n\t\t\tmethod: \"PUT\",\n\t\t\tbody: JSON.stringify(entity),\n\t\t\t...options,\n\t\t\theaders\n\t\t};\n\t\treturn this.fetchRequest(path, requestOptions);\n\t}\n\tasync patch(path, entity, options = {}) {\n\t\tconst headers = new Headers(this.headers);\n\t\tif (options.headers) for (const [key, value] of new Headers(options.headers).entries()) headers.set(key, value);\n\t\tconst requestOptions = {\n\t\t\tmethod: \"PATCH\",\n\t\t\tbody: JSON.stringify(entity),\n\t\t\t...options,\n\t\t\theaders\n\t\t};\n\t\treturn this.fetchRequest(path, requestOptions);\n\t}\n\tasync delete(path, query, options = {}) {\n\t\tconst headers = new Headers(this.headers);\n\t\tif (options.headers) for (const [key, value] of new Headers(options.headers).entries()) headers.set(key, value);\n\t\tconst requestOptions = {\n\t\t\tmethod: \"DELETE\",\n\t\t\tbody: query === void 0 ? void 0 : JSON.stringify(query),\n\t\t\t...options,\n\t\t\theaders\n\t\t};\n\t\treturn this.fetchRequest(path, requestOptions);\n\t}\n};\n//#endregion\nexport { Resend };\n","import { Resend } from \"resend\"\n\nimport {\n getEmailAddressValidationErrorCode,\n type EmailAddressValidationErrorCode,\n} from \"./email-validation\"\n\n\nexport type SendEmailParams = {\n to: string | string[];\n subject: string;\n html?: string;\n text?: string;\n from?: string;\n replyTo?: string | string[];\n}\n\nexport type SendEmailOptions = {\n missingTransport?: \"throw\" | \"skip\";\n}\n\nexport type SendEmailResult =\n | {\n id: string;\n skipped: false;\n error?: undefined;\n }\n | {\n id: undefined;\n skipped: true;\n skippedReason: \"missing_transport\";\n error?: undefined;\n }\n\nexport type EmailTransport = {\n send(params: SendEmailParams): Promise<SendEmailResult>;\n}\n\nexport type ResendEmailTransportOptions = {\n apiKey: string;\n defaultFrom?: string;\n}\n\nexport type EmailDeliveryErrorCode =\n | \"missing_transport\"\n | \"provider_rejected\"\n | \"provider_unconfirmed\"\n | \"transport_error\"\n | EmailAddressValidationErrorCode\n\nexport class EmailDeliveryError extends Error {\n readonly code: EmailDeliveryErrorCode\n\n constructor(code: EmailDeliveryErrorCode, message: string, cause?: unknown) {\n super(message)\n this.name = \"EmailDeliveryError\"\n this.code = code\n this.cause = cause\n }\n}\n\nconst getAddressesToValidate = (params: SendEmailParams): string[] => {\n const addresses = [\n ...(Array.isArray(params.to) ? params.to : [params.to]),\n ...(Array.isArray(params.replyTo) ? params.replyTo : params.replyTo ? [params.replyTo] : []),\n ...(params.from ? [params.from] : []),\n ]\n return Array.from(new Set(addresses))\n}\n\nconst validateEmailAddresses = async(params: SendEmailParams): Promise<void> => {\n const results = await Promise.all(\n getAddressesToValidate(params).map(async(address) => ({\n errorCode: await getEmailAddressValidationErrorCode(address),\n })),\n )\n const invalid = results.find(({ errorCode }) => errorCode !== undefined)\n\n if (invalid?.errorCode) {\n throw new EmailDeliveryError(\n invalid.errorCode,\n `Email address was rejected: ${invalid.errorCode}`,\n )\n }\n}\n\nconst getErrorMessage = (error: unknown) => error instanceof Error ? error.message : String(error)\n\ntype EmailTransportStore = {\n transport?: EmailTransport;\n}\n\nconst STORE_KEY = Symbol.for(\"@rpcbase/server/emailTransport\")\n\nconst getEmailTransportStore = (): EmailTransportStore => {\n const globalStore = globalThis as unknown as Record<string | symbol, unknown>\n const existing = globalStore[STORE_KEY]\n if (existing && typeof existing === \"object\") {\n return existing as EmailTransportStore\n }\n\n const created: EmailTransportStore = {}\n globalStore[STORE_KEY] = created\n return created\n}\n\nexport const configureEmailTransport = (transport?: EmailTransport | null): void => {\n const store = getEmailTransportStore()\n store.transport = transport ?? undefined\n}\n\nexport const createResendEmailTransport = ({\n apiKey,\n defaultFrom = \"hello@rpcbase.com\",\n}: ResendEmailTransportOptions): EmailTransport => {\n const normalizedApiKey = apiKey.trim()\n if (!normalizedApiKey) {\n throw new EmailDeliveryError(\n \"missing_transport\",\n \"RESEND_API_KEY is required to send email\",\n )\n }\n\n const resend = new Resend(normalizedApiKey)\n\n return {\n send: async (params): Promise<SendEmailResult> => {\n let response: Awaited<ReturnType<typeof resend.emails.send>>\n try {\n response = await resend.emails.send({\n from: params.from || defaultFrom,\n to: params.to,\n subject: params.subject,\n html: params.html,\n text: params.text,\n replyTo: params.replyTo,\n } as any)\n } catch (error) {\n throw new EmailDeliveryError(\n \"transport_error\",\n `Email provider request failed: ${getErrorMessage(error)}`,\n error,\n )\n }\n\n if (response.error) {\n throw new EmailDeliveryError(\n \"provider_rejected\",\n `Email provider rejected the request: ${response.error.message}`,\n response.error,\n )\n }\n\n const id = response.data?.id?.trim()\n if (!id) {\n throw new EmailDeliveryError(\n \"provider_unconfirmed\",\n \"Email provider did not confirm the request\",\n )\n }\n\n return {\n id,\n skipped: false,\n }\n },\n }\n}\n\nexport const sendEmail = async(\n params: SendEmailParams,\n options: SendEmailOptions = {},\n): Promise<SendEmailResult> => {\n const configuredTransport = getEmailTransportStore().transport\n if (configuredTransport) {\n await validateEmailAddresses(params)\n return configuredTransport.send(params)\n }\n\n const apiKey = process.env.RESEND_API_KEY?.trim()\n if (!apiKey) {\n if (options.missingTransport === \"skip\") {\n console.warn(\"RESEND_API_KEY not set, skipping email\")\n return { id: undefined, skipped: true, skippedReason: \"missing_transport\" }\n }\n\n throw new EmailDeliveryError(\n \"missing_transport\",\n \"RESEND_API_KEY is required to send email\",\n )\n }\n\n await validateEmailAddresses(params)\n return createResendEmailTransport({\n apiKey,\n defaultFrom: process.env.RESEND_FROM?.trim() || \"hello@rpcbase.com\",\n }).send(params)\n}\n"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],"mappings":"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"}
|