diff --git a/extension/chrome/elements/attachment_preview.ts b/extension/chrome/elements/attachment_preview.ts index b8e03510a73..00e7d8a062a 100644 --- a/extension/chrome/elements/attachment_preview.ts +++ b/extension/chrome/elements/attachment_preview.ts @@ -98,10 +98,8 @@ View.run( const extension = nameSplit[nameSplit.length - 1].toLowerCase(); if (['jpg', 'jpeg', 'png', 'gif'].includes(extension)) { return 'img'; - } else if (extension === 'txt') { - return 'txt'; - } else if (extension === 'pdf') { - return 'pdf'; + } else if (['txt', 'pdf'].includes(extension)) { + return extension as AttachmentType; } return undefined; }; diff --git a/extension/js/common/api/email-provider/gmail/gmail-parser.ts b/extension/js/common/api/email-provider/gmail/gmail-parser.ts index b47a80d8fe3..79270eadc80 100644 --- a/extension/js/common/api/email-provider/gmail/gmail-parser.ts +++ b/extension/js/common/api/email-provider/gmail/gmail-parser.ts @@ -154,43 +154,44 @@ export class GmailParser { internalResults: Attachment[] = [], { pgpEncryptedIndex }: { pgpEncryptedIndex?: number } = {} ) => { - if (msgOrPayloadOrPart.hasOwnProperty('payload')) { - internalMsgId = (msgOrPayloadOrPart as GmailRes.GmailMsg).id; - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - GmailParser.findAttachments((msgOrPayloadOrPart as GmailRes.GmailMsg).payload!, internalMsgId, internalResults); + if ('payload' in msgOrPayloadOrPart && msgOrPayloadOrPart.payload) { + internalMsgId = msgOrPayloadOrPart.id; + GmailParser.findAttachments(msgOrPayloadOrPart.payload, internalMsgId, internalResults); } - if (msgOrPayloadOrPart.hasOwnProperty('parts')) { - const payload = msgOrPayloadOrPart as GmailRes.GmailMsg$payload; - const contentType = payload.headers?.find(x => x.name.toLowerCase() === 'content-type'); - const parts = payload.parts!; // eslint-disable-line @typescript-eslint/no-non-null-assertion - // are we dealing with a PGP/MIME encrypted message? - const pgpEncrypted = Boolean( - parts.length === 2 && - contentType?.value?.startsWith('multipart/encrypted') && - (contentType.value.includes('protocol="application/pgp-encrypted"') || parts[0].mimeType === 'application/pgp-encrypted') - ); - for (const [i, part] of parts.entries()) { - GmailParser.findAttachments(part, internalMsgId, internalResults, { - pgpEncryptedIndex: pgpEncrypted ? i : undefined, - }); + if ('parts' in msgOrPayloadOrPart) { + const contentType = msgOrPayloadOrPart.headers?.find(header => header.name.toLowerCase() === 'content-type'); + const parts = msgOrPayloadOrPart.parts ?? []; + const hasMultipartAlternativePart = parts.find(part => part.mimeType === 'multipart/alternative'); + // ignore plain inline attachments + if (!contentType?.value.startsWith('multipart/related') || !hasMultipartAlternativePart) { + // are we dealing with a PGP/MIME encrypted message? + const pgpEncrypted = Boolean( + parts.length === 2 && + contentType?.value.startsWith('multipart/encrypted') && + (contentType.value.includes('protocol="application/pgp-encrypted"') || parts[0].mimeType === 'application/pgp-encrypted') + ); + for (const [i, part] of parts.entries()) { + GmailParser.findAttachments(part, internalMsgId, internalResults, { + pgpEncryptedIndex: pgpEncrypted ? i : undefined, + }); + } } } - /* eslint-disable @typescript-eslint/no-non-null-assertion */ - if (msgOrPayloadOrPart.hasOwnProperty('body') && (msgOrPayloadOrPart as GmailRes.GmailMsg$payload$part).body!.hasOwnProperty('attachmentId')) { - const payload = msgOrPayloadOrPart as GmailRes.GmailMsg$payload; + if ('body' in msgOrPayloadOrPart && msgOrPayloadOrPart.body?.hasOwnProperty('attachmentId')) { + const payload = msgOrPayloadOrPart as GmailRes.GmailMsg$payload$part; const treatAs = Attachment.treatAsForPgpEncryptedAttachments(payload.mimeType, pgpEncryptedIndex); + const inline = (GmailParser.findHeader(payload, 'content-disposition') || '').toLowerCase().startsWith('inline'); internalResults.push( new Attachment({ msgId: internalMsgId, - id: (msgOrPayloadOrPart as GmailRes.GmailMsg$payload$part).body!.attachmentId, - length: (msgOrPayloadOrPart as GmailRes.GmailMsg$payload$part).body!.size, - name: (msgOrPayloadOrPart as GmailRes.GmailMsg$payload$part).filename, - type: (msgOrPayloadOrPart as GmailRes.GmailMsg$payload$part).mimeType, + id: payload.body?.attachmentId ?? '', + length: payload.body?.size ?? 0, + name: payload.filename, + type: payload.mimeType, treatAs, - inline: (GmailParser.findHeader(msgOrPayloadOrPart, 'content-disposition') || '').toLowerCase().startsWith('inline'), + inline, }) ); - /* eslint-enable @typescript-eslint/no-non-null-assertion */ } return internalResults; }; diff --git a/extension/js/common/core/attachment.ts b/extension/js/common/core/attachment.ts index 8b611457ce3..25909141051 100644 --- a/extension/js/common/core/attachment.ts +++ b/extension/js/common/core/attachment.ts @@ -148,15 +148,6 @@ export class Attachment { ); }; - public isPrivateKey = (): boolean => { - return ( - Boolean(this.name.match(/(cryptup|flowcrypt)-backup-([a-z0-9]+(?:\-[A-F0-9]{40})?)\.(key|asc)$/g)) || - (/\.(asc|key)$/.test(this.name) && - this.hasData() && - Buf.with(this.getData().subarray(0, 100)).toUtfStr().includes('-----BEGIN PGP PRIVATE KEY BLOCK-----')) - ); - }; - public hasData = () => { return this.bytes instanceof Uint8Array; }; @@ -178,7 +169,7 @@ export class Attachment { throw new Error('Attachment has no data set'); }; - public isAttachmentAnImage = () => { + public isImage = () => { return this.type.startsWith('image/') || this.type.startsWith('img/'); }; @@ -201,9 +192,9 @@ export class Attachment { } } return 'signature'; - } else if (this.inline && this.isAttachmentAnImage()) { + } else if (this.inline && this.isImage()) { return 'inlineImage'; - } else if (!this.name && !this.isAttachmentAnImage() && this.type !== 'application/octet-stream' && this.type !== 'multipart/mixed') { + } else if (!this.name && !this.isImage() && !['application/octet-stream', 'multipart/mixed', 'message/global'].includes(this.type)) { // this.name may be '' or undefined - catch either return this.length < 100 ? 'hidden' : 'encryptedMsg'; } else if (this.name === 'msg.asc' && this.length < 100 && this.type === 'application/pgp-encrypted') { @@ -222,11 +213,10 @@ export class Attachment { } else if (this.isPrivateKey()) { return 'privateKey'; } else { - // && !Attachment.encryptedMsgNames.includes(this.name) -- already checked above const isAmbiguousAscFile = this.name.endsWith('.asc'); // ambiguous .asc name const isAmbiguousNonameFile = !this.name || this.name === 'noname'; // may not even be OpenPGP related - if (!this.inline && this.length < 100000 && (isAmbiguousAscFile || isAmbiguousNonameFile) && !this.isAttachmentAnImage()) { - if (isAmbiguousNonameFile && this.type === 'application/octet-stream') { + if (!this.inline && this.length < 100000 && (isAmbiguousAscFile || isAmbiguousNonameFile) && !this.isImage()) { + if (isAmbiguousNonameFile && ['application/octet-stream', 'message/global'].includes(this.type)) { return 'plainFile'; } return this.hasData() ? 'maybePgp' : 'needChunk'; @@ -239,6 +229,12 @@ export class Attachment { return this.type === 'application/pgp-encrypted' && this.name.length === 0 && this.getData().toUtfStr() === 'Version: 1'; }; + public shouldBeHidden = () => { + return ( + this.type === 'application/pgp-keys' || this.isPublicKey() || this.inline || Attachment.encryptedMsgNames.some(filename => this.name.includes(filename)) + ); + }; + public isExecutableFile = () => { return [ 'ade', @@ -296,4 +292,13 @@ export class Attachment { 'xll', ].some(exeFileExtension => this.name.endsWith('.' + exeFileExtension)); }; + + private isPrivateKey = (): boolean => { + return ( + Boolean(this.name.match(/(cryptup|flowcrypt)-backup-([a-z0-9]+(?:\-[A-F0-9]{40})?)\.(key|asc)$/g)) || + (/\.(asc|key)$/.test(this.name) && + this.hasData() && + Buf.with(this.getData().subarray(0, 100)).toUtfStr().includes('-----BEGIN PGP PRIVATE KEY BLOCK-----')) + ); + }; } diff --git a/extension/js/content_scripts/webmail/gmail/gmail-element-replacer.ts b/extension/js/content_scripts/webmail/gmail/gmail-element-replacer.ts index 1a4ecfde027..a691c7be657 100644 --- a/extension/js/content_scripts/webmail/gmail/gmail-element-replacer.ts +++ b/extension/js/content_scripts/webmail/gmail/gmail-element-replacer.ts @@ -59,7 +59,7 @@ export class GmailElementReplacer extends WebmailElementReplacer { settingsBtnContainer: 'div.aeH > div > .fY', standardComposeRecipient: 'div.az9 span[email][data-hovercard-id]', numberOfAttachments: '.aVW', - numberOfAttachmentsDigit: '.aVW span:first-child', + numberOfAttachmentsLabel: '.aVW span:first-child', attachmentsButtons: '.aZi', draftsList: '.ae4', }; @@ -475,16 +475,6 @@ export class GmailElementReplacer extends WebmailElementReplacer { } }; - private isAttachmentHideable = (attachment: Attachment, renderStatus: string) => { - return ( - renderStatus === 'hidden' || - attachment.type === 'application/pgp-keys' || - attachment.isPublicKey() || - attachment.inline || - Attachment.encryptedMsgNames.some(filename => attachment.name.includes(filename)) - ); - }; - private processAttachments = async ( msgId: string, attachments: Attachment[], @@ -519,7 +509,7 @@ export class GmailElementReplacer extends WebmailElementReplacer { messageInfo, skipGoogleDrive ); - if (this.isAttachmentHideable(a, renderStatus)) { + if (renderStatus === 'hidden' || a.shouldBeHidden()) { nRenderedAttachments--; } } @@ -528,22 +518,14 @@ export class GmailElementReplacer extends WebmailElementReplacer { $(this.sel.attachmentsButtons).hide(); } if (nRenderedAttachments === 0) { + attachmentsContainerInner.parents(this.sel.attachmentsContainerOuter).first().hide(); $(this.sel.attachmentsContainerOuter).children('.hp').hide(); if ($('.pgp_block').length === 0) { attachmentsContainerInner.parents(this.sel.attachmentsContainerOuter).first().hide(); } } else { - const elementsToClone = ['span.a2H', 'div.a2b']; - const scannedByGmailLabel = $(elementsToClone[0]).first().clone(); - const scannedByGmailPopover = $(elementsToClone[1]).first().clone(true); - // for uniformity reasons especially when Google used "One" for single attachment and numeric representation for multiple. - const gmailAttachmentLabelReplacement = $( - `${nRenderedAttachments} ${nRenderedAttachments > 1 ? 'Attachments' : 'Attachment'}` - ); - attachmentsContainerInner.parent().find(this.sel.numberOfAttachments).empty(); - gmailAttachmentLabelReplacement.appendTo(attachmentsContainerInner.parent().find(this.sel.numberOfAttachments)); - scannedByGmailLabel.appendTo(attachmentsContainerInner.parent().find(this.sel.numberOfAttachments)); - scannedByGmailPopover.appendTo(attachmentsContainerInner.parent().find(this.sel.numberOfAttachments)); + const attachmentsLabel = nRenderedAttachments > 1 ? `${nRenderedAttachments} Attachments` : 'One Attachment'; + attachmentsContainerInner.parent().find(this.sel.numberOfAttachmentsLabel).text(attachmentsLabel); attachmentsContainerInner.parent().find(this.sel.numberOfAttachments).show(); } if (!skipGoogleDrive) { diff --git a/package-lock.json b/package-lock.json index b7d8ab58d20..2c4bfa0d4cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -186,9 +186,9 @@ } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz", - "integrity": "sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.2.tgz", + "integrity": "sha512-6tC/MnlEvs5suR4Ahef4YlBccJDHZuxGsAlxXmybWjZ5jPxlzLSMlRZ9mVHSRvlD+CmtE7+hJ+UQbfXrws/rUQ==", "dev": true, "funding": [ { @@ -205,13 +205,13 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.1" + "@csstools/css-tokenizer": "^3.0.2" } }, "node_modules/@csstools/css-tokenizer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz", - "integrity": "sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.2.tgz", + "integrity": "sha512-IuTRcD53WHsXPCZ6W7ubfGqReTJ9Ra0yRRFmXYP/Re8hFYYfoIYIK4080X5luslVLWimhIeFq0hj09urVMQzTw==", "dev": true, "funding": [ { @@ -353,6 +353,7 @@ "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.49.0.tgz", "integrity": "sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==", "dev": true, + "license": "MIT", "dependencies": { "comment-parser": "1.4.1", "esquery": "^1.6.0", @@ -421,6 +422,7 @@ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -454,6 +456,7 @@ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz", "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -469,9 +472,9 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz", - "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.1.tgz", + "integrity": "sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -818,6 +821,7 @@ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.4.0.tgz", "integrity": "sha512-x8J1csfIygOwf6D6qUAZ0ASk3z63zPb7wkNeHRerCMh82qWKUrOgkuP005AJC8lDL6/evtXETGEJVcwykKT4/g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "debug": "^4.3.6", "extract-zip": "^2.0.1", @@ -853,7 +857,8 @@ "version": "0.23.0", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/chai": { "version": "4.3.19", @@ -877,6 +882,7 @@ "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.278.tgz", "integrity": "sha512-PDIJodOu7o54PpSOYLybPW/MDZBCjM1TKgf31I3Q/qaEbNpIH09rOM3tSEH3N7Q+FAqb1933LhF8ksUPYeQLNg==", "dev": true, + "license": "MIT", "dependencies": { "@types/filesystem": "*", "@types/har-format": "*" @@ -945,6 +951,7 @@ "resolved": "https://registry.npmjs.org/@types/mailparser/-/mailparser-3.4.5.tgz", "integrity": "sha512-EPERBp7fLeFZh7tS2X36MF7jawUx3Y6/0rXciZah3CTYgwLi3e0kpGUJ6FOmUabgzis/U1g+3/JzrVWbWIOGjg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "iconv-lite": "^0.6.3" @@ -958,9 +965,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.7.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz", - "integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==", + "version": "22.7.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.7.tgz", + "integrity": "sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==", "dev": true, "license": "MIT", "dependencies": { @@ -971,7 +978,8 @@ "version": "6.19.8", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/sizzle": { "version": "2.3.8", @@ -1008,6 +1016,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.10.0.tgz", "integrity": "sha512-phuB3hoP7FFKbRXxjl+DRlQDuJqhpOnm5MmtROXyWi3uS/Xg2ZXqiQfcG2BJHiN4QKyzdOJi3NEn/qTnjUlkmQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.10.0", @@ -1041,6 +1050,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.10.0.tgz", "integrity": "sha512-E24l90SxuJhytWJ0pTQydFT46Nk0Z+bsLKo/L8rtQSL93rQ6byd1V/QbDpHUTdLPOMsBCcYXZweADNCfOCmOAg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "8.10.0", "@typescript-eslint/types": "8.10.0", @@ -1069,6 +1079,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.10.0.tgz", "integrity": "sha512-AgCaEjhfql9MDKjMUxWvH7HjLeBqMCBfIaBbzzIcBbQPZE7CPh1m6FF+L75NUMJFMLYhCywJXIDEMa3//1A0dw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.10.0", "@typescript-eslint/visitor-keys": "8.10.0" @@ -1086,6 +1097,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.10.0.tgz", "integrity": "sha512-PCpUOpyQSpxBn230yIcK+LeCQaXuxrgCm2Zk1S+PTIRJsEfU6nJ0TtwyH8pIwPK/vJoA+7TZtzyAJSGBz+s/dg==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "8.10.0", "@typescript-eslint/utils": "8.10.0", @@ -1110,6 +1122,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.10.0.tgz", "integrity": "sha512-k/E48uzsfJCRRbGLapdZgrX52csmWJ2rcowwPvOZ8lwPUv3xW6CcFeJAXgx4uJm+Ge4+a4tFOkdYvSpxhRhg1w==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -1123,6 +1136,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.10.0.tgz", "integrity": "sha512-3OE0nlcOHaMvQ8Xu5gAfME3/tWVDpb/HxtpUZ1WeOAksZ/h/gwrBzCklaGzwZT97/lBbbxJ16dMA98JMEngW4w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "8.10.0", "@typescript-eslint/visitor-keys": "8.10.0", @@ -1151,6 +1165,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -1160,6 +1175,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1175,6 +1191,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.10.0.tgz", "integrity": "sha512-Oq4uZ7JFr9d1ZunE/QKy5egcDRXT/FrS2z/nlxzPua2VHFtmMvFNDvpq1m/hq0ra+T52aUezfcjGRIB7vNJF9w==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@typescript-eslint/scope-manager": "8.10.0", @@ -1197,6 +1214,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.10.0.tgz", "integrity": "sha512-k8nekgqwr7FadWk548Lfph6V3r9OVqjzAIVskE7orMZR23cGJjAOVazsZSJW+ElyjfTM4wx/1g88Mi70DDtG9A==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.10.0", "eslint-visitor-keys": "^3.4.3" @@ -1214,6 +1232,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -1489,9 +1508,9 @@ } }, "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", + "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", "dev": true, "license": "MIT", "bin": { @@ -2432,6 +2451,7 @@ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.1" }, @@ -2546,7 +2566,8 @@ "version": "1.6.7", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/balanced-match": { "version": "1.0.2", @@ -2560,6 +2581,7 @@ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", "dev": true, + "license": "Apache-2.0", "optional": true }, "node_modules/bare-fs": { @@ -2567,6 +2589,7 @@ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz", "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==", "dev": true, + "license": "Apache-2.0", "optional": true, "dependencies": { "bare-events": "^2.0.0", @@ -2579,6 +2602,7 @@ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", "dev": true, + "license": "Apache-2.0", "optional": true }, "node_modules/bare-path": { @@ -2586,6 +2610,7 @@ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", "dev": true, + "license": "Apache-2.0", "optional": true, "dependencies": { "bare-os": "^2.1.0" @@ -2596,6 +2621,7 @@ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.3.1.tgz", "integrity": "sha512-Vm8kAeOcfzHPTH8sq0tHBnUqYrkXdroaBVVylqFT4cF5wnMfKEIxxy2jIGu2zKVNl9P8MAP9XBWwXJ9N2+jfEw==", "dev": true, + "license": "Apache-2.0", "optional": true, "dependencies": { "streamx": "^2.20.0" @@ -2627,6 +2653,7 @@ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -2863,6 +2890,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -2955,9 +2983,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001667", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz", - "integrity": "sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==", + "version": "1.0.30001669", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", + "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", "dev": true, "funding": [ { @@ -3175,6 +3203,7 @@ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.8.0.tgz", "integrity": "sha512-uJydbGdTw0DEUjhoogGveneJVWX/9YuqkWePzMmkBYwtdAqo5d3J/ovNKFr+/2hWXYmYCr6it8mSSTIj6SS6Ug==", "dev": true, + "license": "Apache-2.0", "dependencies": { "mitt": "3.0.1", "urlpattern-polyfill": "10.0.0", @@ -3579,6 +3608,7 @@ "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12.0.0" } @@ -3777,6 +3807,7 @@ "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12 || >=16" } @@ -3803,6 +3834,7 @@ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.0.tgz", "integrity": "sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==", "dev": true, + "license": "MIT", "dependencies": { "mdn-data": "2.10.0", "source-map-js": "^1.0.1" @@ -3855,6 +3887,7 @@ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14" } @@ -4116,6 +4149,7 @@ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", "dev": true, + "license": "MIT", "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", @@ -4154,7 +4188,8 @@ "version": "0.0.1354347", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1354347.tgz", "integrity": "sha512-BlmkSqV0V84E2WnEnoPnwyix57rQxAM5SKJjf4TbYOCGLAWtz8CDH8RIaGOjPgPCXo2Mce3kxSY497OySidY3Q==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/dir-glob": { "version": "3.0.1", @@ -4296,9 +4331,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.32", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.32.tgz", - "integrity": "sha512-M+7ph0VGBQqqpTT2YrabjNKSQ2fEl9PVx6AK3N558gDH9NO8O6XN9SXXFWRo9u9PbEg/bWq+tjXQr+eXmxubCw==", + "version": "1.5.41", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.41.tgz", + "integrity": "sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==", "dev": true, "license": "ISC", "peer": true @@ -4494,6 +4529,7 @@ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -4515,6 +4551,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz", "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", @@ -4597,6 +4634,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.4.3.tgz", "integrity": "sha512-uWtwFxGRv6B8sU63HZM5dAGDhgsatb+LONwmILZJhdRALLOkCX2HFZhdL/Kw2ls8SQMAVEfK+LmnEfxInRN8HA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@es-joy/jsdoccomment": "~0.49.0", "are-docs-informative": "^0.0.2", @@ -4912,6 +4950,7 @@ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -4932,6 +4971,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -4960,7 +5000,8 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.2", @@ -5011,11 +5052,11 @@ } }, "node_modules/fast-uri": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz", - "integrity": "sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", "dev": true, - "license": "MIT" + "license": "BSD-3-Clause" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", @@ -5460,9 +5501,9 @@ } }, "node_modules/get-east-asian-width": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", - "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", "dev": true, "license": "MIT", "engines": { @@ -5520,6 +5561,7 @@ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", "dev": true, + "license": "MIT", "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", @@ -5689,9 +5731,9 @@ } }, "node_modules/google-auth-library": { - "version": "9.14.1", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.14.1.tgz", - "integrity": "sha512-Rj+PMjoNFGFTmtItH7gHfbHpGVSb3vmnGK3nwNBqxQF9NoBpttSZI/rc0WiM63ma2uGDQtYEkMHkK9U6937NiA==", + "version": "9.14.2", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.14.2.tgz", + "integrity": "sha512-R+FRIfk1GBo3RdlRYWPdwk8nmtVUOn6+BkDomAC46KoU8kzXzE1HLmOasSCbWUByMMAGkknVF0G5kQ69Vj7dlA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5927,6 +5969,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -6165,6 +6208,7 @@ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "dev": true, + "license": "MIT", "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" @@ -6585,13 +6629,15 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/jsdoc-type-pratt-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0.0" } @@ -7145,6 +7191,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -7329,7 +7376,8 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.10.0.tgz", "integrity": "sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/mem": { "version": "9.0.2", @@ -7530,7 +7578,8 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mkdirp": { "version": "3.0.1", @@ -7575,9 +7624,9 @@ } }, "node_modules/nan": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", - "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz", + "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", "dev": true, "license": "MIT", "optional": true @@ -7620,6 +7669,7 @@ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -8161,6 +8211,7 @@ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", "dev": true, + "license": "MIT", "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.0.2", @@ -8180,6 +8231,7 @@ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", "dev": true, + "license": "MIT", "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" @@ -8284,26 +8336,26 @@ } }, "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.0.tgz", + "integrity": "sha512-ZkDsAOcxsUMZ4Lz5fVciOehNcJ+Gb8gTzcA4yl3wnc273BAybYWrQ+Ks/OjCjSEpjvQkDSeZbybK9qj2VHHdGA==", "dev": true, "license": "MIT", "dependencies": { - "entities": "^4.4.0" + "entities": "^4.5.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" } }, "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", "dev": true, "license": "MIT", "dependencies": { - "domhandler": "^5.0.2", + "domhandler": "^5.0.3", "parse5": "^7.0.0" }, "funding": { @@ -8424,9 +8476,9 @@ "license": "MIT" }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "license": "ISC" }, "node_modules/picomatch": { @@ -8897,6 +8949,7 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -8926,6 +8979,7 @@ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", @@ -8944,7 +8998,8 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pump": { "version": "3.0.2", @@ -8999,6 +9054,7 @@ "integrity": "sha512-l+Fgo8SVFSd51STtq2crz8t1Y3VXowsuR4zfR64qDOn6oggz7YIZauWiNR4IJjczQ6nvFs3S4cgng55/nesxTQ==", "dev": true, "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.4.0", "chromium-bidi": "0.8.0", @@ -9019,6 +9075,7 @@ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.6.0.tgz", "integrity": "sha512-se1bhgUpR9C529SgHGr/eyT92mYyQPAhA2S9pGtGrVG2xob9qE6Pbp7TlqiSPlnnY1lINqhn6/67EwkdzOmKqQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.4.0", "chromium-bidi": "0.8.0", @@ -9082,7 +9139,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/quick-format-unescaped": { "version": "4.0.4", @@ -9899,6 +9957,7 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -9909,6 +9968,7 @@ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "dev": true, + "license": "MIT", "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" @@ -9923,6 +9983,7 @@ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.1", "debug": "^4.3.4", @@ -9933,9 +9994,9 @@ } }, "node_modules/sonic-boom": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.1.0.tgz", - "integrity": "sha512-NGipjjRicyJJ03rPiZCJYjwlsuP2d1/5QUviozRXC7S3WdVWNK5e3Ojieb9CCyfhq2UC+3+SRd9nG3I2lPRvUw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", + "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", "dev": true, "license": "MIT", "dependencies": { @@ -10036,7 +10097,8 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/squire-rte": { "version": "2.3.2", @@ -10072,6 +10134,7 @@ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", "dev": true, + "license": "MIT", "dependencies": { "fast-fifo": "^1.3.2", "queue-tick": "^1.0.1", @@ -10222,6 +10285,7 @@ "url": "https://github.com/sponsors/stylelint" } ], + "license": "MIT", "dependencies": { "@csstools/css-parser-algorithms": "^3.0.1", "@csstools/css-tokenizer": "^3.0.1", @@ -10405,6 +10469,7 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -10414,6 +10479,7 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -10490,7 +10556,7 @@ "node": ">=8" } }, - "node_modules/stylelint/node_modules/string-width/node_modules/strip-ansi": { + "node_modules/stylelint/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", @@ -10603,15 +10669,16 @@ "version": "11.14.4", "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.14.4.tgz", "integrity": "sha512-8QMzjxCuinwm18EK5AtYvuhP+lRMRxTWVXy8om9wGlULsXSI4TD29kyih3VYrSXMMBlD4EShFvNC7slhTC7j0w==", + "license": "MIT", "funding": { "type": "individual", "url": "https://github.com/sponsors/limonte" } }, "node_modules/synckit": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", - "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", + "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", "dev": true, "license": "MIT", "dependencies": { @@ -10906,6 +10973,7 @@ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" @@ -10920,6 +10988,7 @@ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dev": true, + "license": "MIT", "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", @@ -10951,9 +11020,9 @@ } }, "node_modules/terser": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.34.1.tgz", - "integrity": "sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==", + "version": "5.36.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", + "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", "dev": true, "license": "BSD-2-Clause", "peer": true, @@ -11018,7 +11087,8 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.1.tgz", "integrity": "sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/text-table": { "version": "0.2.0", @@ -11158,6 +11228,7 @@ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -11166,9 +11237,9 @@ } }, "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", "dev": true, "license": "0BSD" }, @@ -11212,7 +11283,8 @@ "version": "2.12.0", "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/typedarray": { "version": "0.0.6", @@ -11226,6 +11298,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11239,6 +11312,7 @@ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.10.0.tgz", "integrity": "sha512-YIu230PeN7z9zpu/EtqCIuRVHPs4iSlqW6TEvjbyDAE3MZsSl2RXBo+5ag+lbABCG8sFM1WVKEXhlQ8Ml8A3Fw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/eslint-plugin": "8.10.0", "@typescript-eslint/parser": "8.10.0", @@ -11269,6 +11343,7 @@ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, + "license": "MIT", "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" @@ -11278,7 +11353,8 @@ "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/universalify": { "version": "2.0.1", @@ -11389,7 +11465,8 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/util-deprecate": { "version": "1.0.2", @@ -12193,6 +12270,7 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/test/source/mock/google/exported-messages/message-export-191e2735a1cc08c4.json b/test/source/mock/google/exported-messages/message-export-191e2735a1cc08c4.json new file mode 100644 index 00000000000..7d3cb1e1ad6 --- /dev/null +++ b/test/source/mock/google/exported-messages/message-export-191e2735a1cc08c4.json @@ -0,0 +1,231 @@ +{ + "acctEmail": "flowcrypt.compatibility@gmail.com", + "full": { + "id": "191e2735a1cc08c4", + "threadId": "191e2735a1cc08c4", + "labelIds": ["INBOX"], + "snippet": "Address not found Your message wasn't delivered to some.test@flowcrypt.com because the address couldn't be found, or is unable to receive mail. LEARN MORE The response was: The email account", + "payload": { + "partId": "", + "mimeType": "multipart/report", + "filename": "", + "headers": [ + { + "name": "X-Gm-Message-State", + "value": "AOJu0YzgTUR27IAdzxGSbpIMaIosovuRpdxOifXgx3TN2Y0YqZCMOtPL YK+TFxTwJ9z5FSpijFLf/OCKRO5wiSp8qflADNHUjDBS120iv1wGWQ0StxuUN4Swrg==" + }, + { + "name": "Content-Type", + "value": "multipart/report; boundary=\"0000000000007b6f940621d4756e\"; report-type=delivery-status" + }, + { + "name": "To", + "value": "flowcrypt.compatibility@gmail.com" + }, + { + "name": "Auto-Submitted", + "value": "auto-replied" + }, + { + "name": "Date", + "value": "Wed, 11 Sep 2024 02:17:28 -0700 (PDT)" + }, + { + "name": "From", + "value": "sender@domain.com" + }, + { + "name": "Subject", + "value": "Delivery Status Notification (Failure)" + }, + { + "name": "References", + "value": "" + }, + { + "name": "In-Reply-To", + "value": "" + } + ], + "body": { + "size": 0 + }, + "parts": [ + { + "partId": "0", + "mimeType": "multipart/related", + "filename": "", + "headers": [ + { + "name": "Content-Type", + "value": "multipart/related; boundary=\"0000000000007b6fc80621d4756f\"" + } + ], + "body": { + "size": 0 + }, + "parts": [ + { + "partId": "0.0", + "mimeType": "multipart/alternative", + "filename": "", + "headers": [ + { + "name": "Content-Type", + "value": "multipart/alternative; boundary=\"0000000000007b6fca0621d47570\"" + } + ], + "body": { + "size": 0 + }, + "parts": [ + { + "partId": "0.0.0", + "mimeType": "text/plain", + "filename": "", + "headers": [ + { + "name": "Content-Type", + "value": "text/plain; charset=\"UTF-8\"" + } + ], + "body": { + "size": 468, + "data": "CioqIEFkZHJlc3Mgbm90IGZvdW5kICoqCgpZb3VyIG1lc3NhZ2Ugd2Fzbid0IGRlbGl2ZXJlZCB0byBzb21lLnRlc3RAZmxvd2NyeXB0LmNvbSBiZWNhdXNlIHRoZSBhZGRyZXNzIGNvdWxkbid0IGJlIGZvdW5kLCBvciBpcyB1bmFibGUgdG8gcmVjZWl2ZSBtYWlsLgoKTGVhcm4gbW9yZSBoZXJlOiBodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS9tYWlsLz9wPU5vU3VjaFVzZXIKClRoZSByZXNwb25zZSB3YXM6CgpUaGUgZW1haWwgYWNjb3VudCB0aGF0IHlvdSB0cmllZCB0byByZWFjaCBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIHRyeSBkb3VibGUtY2hlY2tpbmcgdGhlIHJlY2lwaWVudCdzIGVtYWlsIGFkZHJlc3MgZm9yIHR5cG9zIG9yIHVubmVjZXNzYXJ5IHNwYWNlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIGdvIHRvIGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL21haWwvP3A9Tm9TdWNoVXNlcgo=" + } + }, + { + "partId": "0.0.1", + "mimeType": "text/html", + "filename": "", + "headers": [ + { + "name": "Content-Type", + "value": "text/html; charset=\"UTF-8\"" + } + ], + "body": { + "size": 1726, + "data": "CjxodG1sPgo8aGVhZD4KPHN0eWxlPgoqIHsKZm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOwp9Cjwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+Cjx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJlbWFpbC13cmFwcGVyIiBzdHlsZT0icGFkZGluZy10b3A6MzJweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7Ij48dGJvZHk+Cjx0cj48dGQ+Cjx0YWJsZSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+PHRib2R5Pgo8dHI+PHRkIHN0eWxlPSJtYXgtd2lkdGg6NTYwcHg7cGFkZGluZzoyNHB4IDI0cHggMzJweDtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Ym9yZGVyOjFweCBzb2xpZCAjZTBlMGUwO2JvcmRlci1yYWRpdXM6MnB4Ij4KPGltZyBzdHlsZT0icGFkZGluZzowIDI0cHggMTZweCAwO2Zsb2F0OmxlZnQiIHdpZHRoPTcyIGhlaWdodD03MiBhbHQ9IkVycm9yIEljb24iIHNyYz0iY2lkOmljb24ucG5nIj4KPHRhYmxlIHN0eWxlPSJtaW4td2lkdGg6MjcycHg7cGFkZGluZy10b3A6OHB4Ij48dGJvZHk+Cjx0cj48dGQ+PGgyIHN0eWxlPSJmb250LXNpemU6MjBweDtjb2xvcjojMjEyMTIxO2ZvbnQtd2VpZ2h0OmJvbGQ7bWFyZ2luOjAiPgpBZGRyZXNzIG5vdCBmb3VuZAo8L2gyPjwvdGQ+PC90cj4KPHRyPjx0ZCBzdHlsZT0icGFkZGluZy10b3A6MjBweDtjb2xvcjojNzU3NTc1O2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDt0ZXh0LWFsaWduOmxlZnQiPgpZb3VyIG1lc3NhZ2Ugd2Fzbid0IGRlbGl2ZXJlZCB0byA8YSBzdHlsZT0nY29sb3I6IzIxMjEyMTt0ZXh0LWRlY29yYXRpb246bm9uZSc+PGI+c29tZS50ZXN0QGZsb3djcnlwdC5jb208L2I+PC9hPiBiZWNhdXNlIHRoZSBhZGRyZXNzIGNvdWxkbid0IGJlIGZvdW5kLCBvciBpcyB1bmFibGUgdG8gcmVjZWl2ZSBtYWlsLgo8L3RkPjwvdHI+Cjx0cj48dGQgc3R5bGU9InBhZGRpbmctdG9wOjI0cHg7Y29sb3I6IzQyODVGNDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDpib2xkO3RleHQtYWxpZ246bGVmdCI+CjxhIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZSIgaHJlZj0iaHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vbWFpbC8/cD1Ob1N1Y2hVc2VyIj5MRUFSTiBNT1JFPC9hPgo8L3RkPjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjwvdGQ+PC90cj4KPHRyIHN0eWxlPSJib3JkZXI6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Zm9udC1zaXplOjEyLjhweDt3aWR0aDo5MCUiPgo8dGQgYWxpZ249ImxlZnQiIHN0eWxlPSJwYWRkaW5nOjQ4cHggMTBweCI+ClRoZSByZXNwb25zZSB3YXM6PGJyLz4KPHAgc3R5bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZSI+ClRoZSBlbWFpbCBhY2NvdW50IHRoYXQgeW91IHRyaWVkIHRvIHJlYWNoIGRvZXMgbm90IGV4aXN0LiBQbGVhc2UgdHJ5IGRvdWJsZS1jaGVja2luZyB0aGUgcmVjaXBpZW50J3MgZW1haWwgYWRkcmVzcyBmb3IgdHlwb3Mgb3IgdW5uZWNlc3Nhcnkgc3BhY2VzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZ28gdG8gaHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vbWFpbC8/cD1Ob1N1Y2hVc2VyCjwvcD4KPC90ZD4KPC90cj4KPC90Ym9keT48L3RhYmxlPgo8L2JvZHk+CjwvaHRtbD4K" + } + } + ] + }, + { + "partId": "0.1", + "mimeType": "image/png", + "filename": "icon.png", + "headers": [ + { + "name": "Content-Type", + "value": "image/png; name=\"icon.png\"" + }, + { + "name": "Content-Disposition", + "value": "attachment; filename=\"icon.png\"" + }, + { + "name": "Content-Transfer-Encoding", + "value": "base64" + }, + { + "name": "Content-ID", + "value": "" + } + ], + "body": { + "attachmentId": "ANGjdJ8zObN8jOVfNv1HVRU08CoKr0Ana-qfEGw2MzRG6iNDj3MtCDoEK5s3E4czjlHghYdMGu2xYXPxxrbbCN2xSyqsoivJMDeE8cXQPTQYR8vMx6ih1qKirAGElfNgPRptmBiQTqbYgVXwvWnupzwEDqmp9kbIQAhR9ZHKs587VBMROx44HLC4O_jKRXnt5JJmKHv5rGlpvizphrXVemP8JKBgSZEbbTGnwbgqUaRJEMgle3HCEc50KJupnVpS1sIndhSlNfH_6hFeOutHD2BfUYgIrBiSIKcPq0kdWJkAg9X6nY6ip3iISD-mfXDaZwjgAKeluoxoINJvqjKcQ5PwRiBbObKy61oawUYEDGqWYB19wjuR1D_h_7ms12sfES7q2jCdp6v9KKTO_kn1", + "size": 1450 + } + } + ] + }, + { + "partId": "1", + "mimeType": "message/delivery-status", + "filename": "", + "headers": [ + { + "name": "Content-Type", + "value": "message/delivery-status" + } + ], + "body": { + "size": 0 + }, + "parts": [ + { + "partId": "1.0", + "mimeType": "text/plain", + "filename": "", + "headers": [ + { + "name": "Reporting-MTA", + "value": "dns; googlemail.com" + }, + { + "name": "Received-From-MTA", + "value": "dns; 3JmDhZgsJDakONURg.MNWRbeJUNX.LXVUJdaNWc.YRccNeJUNX.LXV@maestro.bounces.google.com" + }, + { + "name": "Arrival-Date", + "value": "Wed, 11 Sep 2024 02:17:27 -0700 (PDT)" + }, + { + "name": "X-Original-Message-ID", + "value": "" + } + ], + "body": { + "size": 385, + "data": "RmluYWwtUmVjaXBpZW50OiByZmM4MjI7IGxhdXJlbnQucGl0dGVAdmFsZW8uY29tDQpBY3Rpb246IGZhaWxlZA0KU3RhdHVzOiA1LjEuMw0KRGlhZ25vc3RpYy1Db2RlOiBzbXRwOyBUaGUgZW1haWwgYWNjb3VudCB0aGF0IHlvdSB0cmllZCB0byByZWFjaCBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIHRyeSBkb3VibGUtY2hlY2tpbmcgdGhlIHJlY2lwaWVudCdzIGVtYWlsIGFkZHJlc3MgZm9yIHR5cG9zIG9yIHVubmVjZXNzYXJ5IHNwYWNlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIGdvIHRvIGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL21haWwvP3A9Tm9TdWNoVXNlcg0KTGFzdC1BdHRlbXB0LURhdGU6IFdlZCwgMTEgU2VwIDIwMjQgMDI6MTc6MjggLTA3MDAgKFBEVCkNCg==" + } + } + ] + }, + { + "partId": "2", + "mimeType": "message/global", + "filename": "", + "headers": [ + { + "name": "Content-Type", + "value": "message/global" + }, + { + "name": "Content-Transfer-Encoding", + "value": "quoted-printable" + } + ], + "body": { + "attachmentId": "ANGjdJ_dhUxPK-Ftqbti7HXGkUcthQoyePZPgX4GBfWROUyke6EDVQ1TVcHdaXMxn5ij34W_9fNZDlW4FanOtTxUEa0zWlmzMzJpxVmYhlah1WMBani7q7SPQtfOkbk4FHVkVgr-0_zOyBs2awz97hcvs2-ytfPzxqU6h4fPX4dqZxAOXFUZBXtrr3iDX17GSB_uWa28NB5SAgAh0fIZAulW8sRXb0bIvzCAAeh2LyHaHswcdNDC_K6FROLllicn6a5G2ofFoa2Fx1WXsN4XfNmflFDsNqjzlLfO2o05_valNPbGVs3UHi_yiNHo-GxDlm6gAJkBA8yRLaAw4S54XdYQnqDFIRpYL5RxpovV9TAhN8OUf7JuoQxqzjR6LYs", + "size": 5378 + } + } + ] + }, + "sizeEstimate": 20334, + "historyId": "235729", + "internalDate": "1726046248000" + }, + "attachments": { + "ANGjdJ8zObN8jOVfNv1HVRU08CoKr0Ana-qfEGw2MzRG6iNDj3MtCDoEK5s3E4czjlHghYdMGu2xYXPxxrbbCN2xSyqsoivJMDeE8cXQPTQYR8vMx6ih1qKirAGElfNgPRptmBiQTqbYgVXwvWnupzwEDqmp9kbIQAhR9ZHKs587VBMROx44HLC4O_jKRXnt5JJmKHv5rGlpvizphrXVemP8JKBgSZEbbTGnwbgqUaRJEMgle3HCEc50KJupnVpS1sIndhSlNfH_6hFeOutHD2BfUYgIrBiSIKcPq0kdWJkAg9X6nY6ip3iISD-mfXDaZwjgAKeluoxoINJvqjKcQ5PwRiBbObKy61oawUYEDGqWYB19wjuR1D_h_7ms12sfES7q2jCdp6v9KKTO_kn1": { + "data": "iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABTdJREFUeNrsnD9sFEcUh5-PRMqZyA0SPhAUQAQFUkyTgiBASARo6QApqVIkfdxGFJFSgGhJAUIiBaQB0ZIOKVCkwUgURjIg2fxL4kS-YDvkbC_388bi8N16Z4_d7J_5PsniuD3fyePP772ZeTsDQRAYQL_UGAJAIEAgQCBAIAAEAgQCBAIEAkAgyJT3Mv-Eq7vYK8mTE-MDRCAghQECAeRQA5V2ZOpmg5vDx3NPzRbmGRMEcmTrEbNNB8zWfRD-f_Efs2e3zCZvMjaksBg27TfbcuSNPEKP9ZyuAQKtHX2O9ncNgWC57umMPKvRNb0GEKgnLoUyxTQCrcns0_6uIRAs8_hGf9cQCJZpTpjdO2f25_03z-mxntM1eLtsZAgiUtX4JcaBCAQIBAgECARQ8CJaG5jab4J4pm4WZmO3OALVh802fIwcLkyPkcKAGggAgQCBAIEAgQCBABAIEAjKA_1AnahhbO5FdOOYVsrrDbPBYcYKgf5D2wLaV3p-22xh1u17tO3S-DTcvxvagUDeivPgx_a_95J_73w7Sj26Hn4pKo2MehuV_KyBJM6d0f7k6RKx_R63vvL2tmf_ItDdM2ZTP6f7nkp9Y2fDx1v9akmpIU-KSCLVUghUQfSLzVKeTklbLxGoctw_nzC5rw8L5KRNbkpnKq6pgSqEClzNnFzY-XnYWrt6VpVk1vbwWvg-RKCKMOUwQ1LEOXA-_MX3mpJvGDHb265xtnzmFoUK1HaKQGlMtePYM-q2KKjXuaS1NJYIEKgI8jhEgqHt4cqyKy53j3hyHz2bqSLp2o2LbJ7MxKovkGqXteoWpaOk96O9_yF_dF7NwlS36AuIQIBA5celQK4PIxBE4LLzrtoLgaALdSy6CJRkWQCBPGLsTHznomZ9nszUECgJ2ml3WWHe-QVFNPSQx6UdZNtxr9pbEShNeTTz8mQXHoHSlke7-Z-c9m6VGoHSkEfs_trLW3wQKApN1V3lGfnGu2Z6BFoLtYCs3GWBPAiUCLVh_HoaeRCoT9R873KLM_IgUBfapnCpe5AHgXry4pf412ihEHkQqCdxd5VqrcezhUIESsJMTJ-PdthpZ0WgyNlXXPHc2Mc4IVAELl2Gnh8mhUDvCkfbIVAkcbf_aOoO3fMKhqAD3frTa4quwpn0hUDOkQhIYYBAgECAQAAU0QlYObl-5Ug8NcprZkZxjUCxRPVA6zmtEXHCBykskrhjgHXN09PoEcgFl4M4H11jnBAoApcj6ZoPGScEAgTKApcDoTw5sgWB-sGlz1n90IBAPdE6j1o21PfcC11jLagL1oFWRyGlKU3pOxcSJQ7NZAjkhHp_uG2HFAYIBAgECASAQIBAgECAQAAIBOkxEARBtp9wdVfAMOfIifEBIhCQwgCBABAI0oV2jhxZ-nfBatuPZfgBCy0Eqqo8c01b-uu51XZvzOgDWoHNTGR-pCwpLEd5svuAZXlO2uErPyEQ8hRWHgRCHmqg0sjTnLalv6crJQ8C_U8stqNO0I4-VZOHFIY8COS1PGL2ybd5yUMKK7s8zYmLdujyd3n-nESgcsvzZd4_KwIhDwIhT35QA6UyE1qyxZnfvJMHgdKS549JC1qvvJOHFIY8CFR5eV5OXimqPAhUdHnmfx-zgxdOFXkoqIGKKs_cswnb_8Oeog8HEai48nxUhiFBIORBIOShBioskkbySCLkIQIhDwIhj28p7FApR6b1qlEbHGpkO_rr6215vi_zH1r2x7tApSGFAQIBAgECAQIBIBAgECAQIBBALK8FGADCTxYrr-EVJgAAAABJRU5ErkJggg", + "size": 1450 + }, + "ANGjdJ_dhUxPK-Ftqbti7HXGkUcthQoyePZPgX4GBfWROUyke6EDVQ1TVcHdaXMxn5ij34W_9fNZDlW4FanOtTxUEa0zWlmzMzJpxVmYhlah1WMBani7q7SPQtfOkbk4FHVkVgr-0_zOyBs2awz97hcvs2-ytfPzxqU6h4fPX4dqZxAOXFUZBXtrr3iDX17GSB_uWa28NB5SAgAh0fIZAulW8sRXb0bIvzCAAeh2LyHaHswcdNDC_K6FROLllicn6a5G2ofFoa2Fx1WXsN4XfNmflFDsNqjzlLfO2o05_valNPbGVs3UHi_yiNHo-GxDlm6gAJkBA8yRLaAw4S54XdYQnqDFIRpYL5RxpovV9TAhN8OUf7JuoQxqzjR6LYs": { + "data": "WC1SZWNlaXZlZDogYnkgMjAwMjphMDU6NjYwMjo2ZDE0OmIwOjgyYzpmNDNmOmJhZmUgd2l0aCBTTVRQIGlkIGNhMThlMjM2MGY0YWMtODJjZjQzZmJkMzdtcjEwNzA1MDgyMzlmLjguMTcyNjA0NjI0NzM0MzsKICAgICAgICBXZWQsIDExIFNlcCAyMDI0IDAyOjE3OjI3IC0wNzAwIChQRFQpClJldHVybi1QYXRoOiA8M0ptRGhaZ3NKRGFrT05VUmcuTU5XUmJlSlVOWC5MWFZVSmRhTldjLllSY2NOZUpVTlguTFhWQG1hZXN0cm8uYm91bmNlcy5nb29nbGUuY29tPgpSZWNlaXZlZDogZnJvbSBtYWlsLXNvci1mNjkuZ29vZ2xlLmNvbSAobWFpbC1zb3ItZjY5Lmdvb2dsZS5jb20uIFsyMDkuODUuMjIwLjY5XSkKICAgICAgICBieSBteC5nb29nbGUuY29tIHdpdGggU01UUFMgaWQgODkyNmM2ZGExY2I5Zi00ZDIwZWRjMDUwNnNvcjUxMTAwMzE3My42LjIwMjQuMDkuMTEuMDIuMTcuMjcKICAgICAgICBmb3IgPGZsb3djcnlwdC5jb21wYXRpYmlsaXR5QGdtYWlsLmNvbT4KICAgICAgICAoR29vZ2xlIFRyYW5zcG9ydCBTZWN1cml0eSk7CiAgICAgICAgV2VkLCAxMSBTZXAgMjAyNCAwMjoxNzoyNyAtMDcwMCAoUERUKQpSZWNlaXZlZC1TUEY6IHBhc3MgKGdvb2dsZS5jb206IGRvbWFpbiBvZiAzam1kaHpnc2pkYWtvbnVyZy5tbndyYmVqdW54Lmx4dnVqZGFud2MueXJjY25lanVueC5seHZAbWFlc3Ryby5ib3VuY2VzLmdvb2dsZS5jb20gZGVzaWduYXRlcyAyMDkuODUuMjIwLjY5IGFzIHBlcm1pdHRlZCBzZW5kZXIpIGNsaWVudC1pcD0yMDkuODUuMjIwLjY5OwpNSU1FLVZlcnNpb246IDEuMApYLVJlY2VpdmVkOiBieSAyMDAyOmEwNTo2ZTAyOjFhNjU6YjA6M2EwOjU1NjY6YmRhNSB3aXRoIFNNVFAgaWQKIGU5ZTE0YTU1OGY4YWItM2EwNTc0NWYwMjZtcjEyNTcyNjc1NWFiLjkuMTcyNjA0NjI0Njg3MzsgV2VkLCAxMSBTZXAgMjAyNAogMDI6MTc6MjYgLTA3MDAgKFBEVCkKTWVzc2FnZS1JRDogPGF1dG9nZW4tamF2YS04MDVjOTIwNS0zM2I5LTQ3ZmUtYTRlNS1jNzk5YWQ2NmVmZThAZ29vZ2xlLmNvbT4KRGF0ZTogV2VkLCAxMSBTZXAgMjAyNCAwOToxNzoyNiArMDAwMApTdWJqZWN0OiA9P1VURi04P1E/UG9ydGFpbF9kZV9jeWJlcnNlY3VyaXQ9QzM9QTlfbG9jYWxfPTJGX0xvY2FsX2N5YmVyc2VjdXJpdD89Cgk9P1VURi04P1E/eV9wb3J0YWxfPTI4bGF1cmVudD0yRXBpdHRlPTQwdmFsZW89MkVjb209Mjk/PQpGcm9tOiBmbG93Y3J5cHQuY29tcGF0aWJpbGl0eUBnbWFpbC5jb20KVG86IHNvbWUudGVzdEBmbG93Y3J5cHQuY29tCkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L2FsdGVybmF0aXZlOyBib3VuZGFyeT0iMDAwMDAwMDAwMDAwNjk0OTFhMDYyMWQ0NzVmZSIKCi0tLS0tIE1lc3NhZ2UgdHJ1bmNhdGVkIC0tLS0t", + "size": 5378 + } + }, + "raw": { + "id": "191e2735a1cc08c4", + "threadId": "191e2735a1cc08c4", + "labelIds": ["INBOX"], + "snippet": "Address not found Your message wasn't delivered to some.test@flowcrypt.com because the address couldn't be found, or is unable to receive mail. LEARN MORE The response was: The email account", + "sizeEstimate": 20334, + "raw": "RGVsaXZlcmVkLVRvOiBmbG93Y3J5cHQuY29tcGF0aWJpbGl0eUBnbWFpbC5jb20KUmVjZWl2ZWQ6IGJ5IDIwMDI6YTk4OjlhODM6MDpiMDoyMGU6MTRmNDo0Yzk2IHdpdGggU01UUCBpZCBwM2NzcDE4NjcxOWVpYzsKICAgICAgICBXZWQsIDExIFNlcCAyMDI0IDAyOjE3OjI5IC0wNzAwIChQRFQpClgtUmVjZWl2ZWQ6IGJ5IDIwMDI6YTA1OjYyMGE6NDVhNjpiMDo3YTk6YmYzMTpkYmM5IHdpdGggU01UUCBpZCBhZjc5Y2QxM2JlMzU3LTdhOWJmMzFkZWE5bXI5MzExNTAwODVhLjQuMTcyNjA0NjI0ODg3NTsKICAgICAgICBXZWQsIDExIFNlcCAyMDI0IDAyOjE3OjI4IC0wNzAwIChQRFQpClJldHVybi1QYXRoOiA8PgpSZWNlaXZlZDogZnJvbSBtYWlsLXNvci1mNjkuZ29vZ2xlLmNvbSAobWFpbC1zb3ItZjY5Lmdvb2dsZS5jb20uIFsyMDkuODUuMjIwLjY5XSkKICAgICAgICBieSBteC5nb29nbGUuY29tIHdpdGggU01UUFMgaWQgYWY3OWNkMTNiZTM1Ny03YTlhN2EyZGE1N3NvcjY4NzIxOTE4NWEuMTMuMjAyNC4wOS4xMS4wMi4xNy4yOAogICAgICAgIGZvciA8Zmxvd2NyeXB0LmNvbXBhdGliaWxpdHlAZ21haWwuY29tPgogICAgICAgIChHb29nbGUgVHJhbnNwb3J0IFNlY3VyaXR5KTsKICAgICAgICBXZWQsIDExIFNlcCAyMDI0IDAyOjE3OjI4IC0wNzAwIChQRFQpClJlY2VpdmVkLVNQRjogbm9uZSAoZ29vZ2xlLmNvbTogbWFpbC1zb3ItZjY5Lmdvb2dsZS5jb20gZG9lcyBub3QgZGVzaWduYXRlIHBlcm1pdHRlZCBzZW5kZXIgaG9zdHMpIGNsaWVudC1pcD0yMDkuODUuMjIwLjY5OwpBdXRoZW50aWNhdGlvbi1SZXN1bHRzOiBteC5nb29nbGUuY29tOwogICAgICAgZGtpbT1wYXNzIGhlYWRlci5pPUBnb29nbGVtYWlsLmNvbSBoZWFkZXIucz0yMDIzMDYwMSBoZWFkZXIuYj1iR0Z5U0JIRDsKICAgICAgIGFyYz1wYXNzIChpPTEgZGtpbT1wYXNzIGRrZG9tYWluPWdvb2dsZW1haWwuY29tIGRtYXJjPXBhc3MgZnJvbWRvbWFpbj1nb29nbGVtYWlsLmNvbSk7CiAgICAgICBzcGY9bm9uZSAoZ29vZ2xlLmNvbTogbWFpbC1zb3ItZjY5Lmdvb2dsZS5jb20gZG9lcyBub3QgZGVzaWduYXRlIHBlcm1pdHRlZCBzZW5kZXIgaG9zdHMpIHNtdHAuaGVsbz1tYWlsLXNvci1mNjkuZ29vZ2xlLmNvbTsKICAgICAgIGRtYXJjPXBhc3MgKHA9UVVBUkFOVElORSBzcD1RVUFSQU5USU5FIGRpcz1OT05FKSBoZWFkZXIuZnJvbT1nb29nbGVtYWlsLmNvbTsKICAgICAgIGRhcmE9ZmFpbCBoZWFkZXIuaT1AZ21haWwuY29tClgtUmVjZWl2ZWQ6IGJ5IDIwMDI6YTA1OjYyMGE6MjhkMzpiMDo3YTk6YmFkMDo0NTVkIHdpdGggU01UUCBpZCBhZjc5Y2QxM2JlMzU3LTdhOWJhZDA0OTZhbXIxMTk0MzMwNjg1YS4zMC4xNzI2MDQ2MjQ4NjYxOwogICAgICAgIFdlZCwgMTEgU2VwIDIwMjQgMDI6MTc6MjggLTA3MDAgKFBEVCkKUmVjZWl2ZWQ6IGJ5IDIwMDI6YWU5OmUzMDE6MDpiMDo3YTk6YjVlYTphODRhIHdpdGggU01UUCBpZCBhZjc5Y2QxM2JlMzU3LTdhOWI1ZWFhYThhYW0xOTI5ODY0ODVhLjAKICAgICAgICAgV2VkLCAxMSBTZXAgMjAyNCAwMjoxNzoyOCAtMDcwMCAoUERUKQpYLUdvb2dsZS1TbXRwLVNvdXJjZTogQUdIVCtJSDNHWDJHK05DUzlhbUc2VERGai9WVzN2bTVaOVBON0toSjR2ZFF4VHJhME1MaTlRcENuY0RxckdpSGRvc3h4R1BLbTB0VApYLVJlY2VpdmVkOiBieSAyMDAyOmEwNTo2MjBhOjJhMGM6YjA6N2E5Ojg0YjU6MTRlMiB3aXRoIFNNVFAgaWQgYWY3OWNkMTNiZTM1Ny03YTk5NzM3YWEyY21yMjMxNjAzNzg4NWEuNDAuMTcyNjA0NjI0ODQ0MTsKICAgICAgICBXZWQsIDExIFNlcCAyMDI0IDAyOjE3OjI4IC0wNzAwIChQRFQpClJldHVybi1QYXRoOiA8PgpSZWNlaXZlZDogZnJvbSBtYWlsLWlvMS14ZDQ0Lmdvb2dsZS5jb20gKG1haWwtaW8xLXhkNDQuZ29vZ2xlLmNvbS4gWzI2MDc6ZjhiMDo0ODY0OjIwOjpkNDRdKQogICAgICAgIGJ5IGdtci1teC5nb29nbGUuY29tIHdpdGggRVNNVFBTIGlkIGFmNzljZDEzYmUzNTctN2E5YTc5NDg1NWNzaTMzOTczODg1YS4yLjIwMjQuMDkuMTEuMDIuMTcuMjgKICAgICAgICBmb3IgPDNKbURoWmdzSkRha09OVVJnLk1OV1JiZUpVTlguTFhWVUpkYU5XYy5ZUmNjTmVKVU5YLkxYVkBtYWVzdHJvLmJvdW5jZXMuZ29vZ2xlLmNvbT4KICAgICAgICAodmVyc2lvbj1UTFMxXzMgY2lwaGVyPVRMU19BRVNfMTI4X0dDTV9TSEEyNTYgYml0cz0xMjgvMTI4KTsKICAgICAgICBXZWQsIDExIFNlcCAyMDI0IDAyOjE3OjI4IC0wNzAwIChQRFQpClJlY2VpdmVkLVNQRjogbm9uZSAoZ29vZ2xlLmNvbTogbWFpbC1pbzEteGQ0NC5nb29nbGUuY29tIGRvZXMgbm90IGRlc2lnbmF0ZSBwZXJtaXR0ZWQgc2VuZGVyIGhvc3RzKSBjbGllbnQtaXA9MjYwNzpmOGIwOjQ4NjQ6MjA6OmQ0NDsKUmVjZWl2ZWQ6IGJ5IG1haWwtaW8xLXhkNDQuZ29vZ2xlLmNvbSB3aXRoIFNNVFAgaWQgY2ExOGUyMzYwZjRhYy04MmFhYjY3OWI3YnNvMTY1NTg2MTM5Zi4wCiAgICAgICAgZm9yIDwzSm1EaFpnc0pEYWtPTlVSZy5NTldSYmVKVU5YLkxYVlVKZGFOV2MuWVJjY05lSlVOWC5MWFZAbWFlc3Ryby5ib3VuY2VzLmdvb2dsZS5jb20+OyBXZWQsIDExIFNlcCAyMDI0IDAyOjE3OjI4IC0wNzAwIChQRFQpClgtUmVjZWl2ZWQ6IGJ5IDIwMDI6YTA1OjY2MDI6NmQxNDpiMDo4MmM6ZjQzZjpiYWZlIHdpdGggU01UUCBpZCBjYTE4ZTIzNjBmNGFjLTgyY2Y0M2ZiZDM3bXIxMDcwNTExMjM5Zi44LjE3MjYwNDYyNDgwNzI7CiAgICAgICAgV2VkLCAxMSBTZXAgMjAyNCAwMjoxNzoyOCAtMDcwMCAoUERUKQpDb250ZW50LVR5cGU6IG11bHRpcGFydC9yZXBvcnQ7IGJvdW5kYXJ5PSIwMDAwMDAwMDAwMDA3YjZmOTQwNjIxZDQ3NTZlIjsgcmVwb3J0LXR5cGU9ZGVsaXZlcnktc3RhdHVzClRvOiAzSm1EaFpnc0pEYWtPTlVSZy5NTldSYmVKVU5YLkxYVlVKZGFOV2MuWVJjY05lSlVOWC5MWFZAbWFlc3Ryby5ib3VuY2VzLmdvb2dsZS5jb20KUmVjZWl2ZWQ6IGJ5IDIwMDI6YTA1OjY2MDI6NmQxNDpiMDo4MmM6ZjQzZjpiYWZlIHdpdGggU01UUCBpZAogY2ExOGUyMzYwZjRhYy04MmNmNDNmYmQzN21yMTA4MzYzOTYzOWYuODsgV2VkLCAxMSBTZXAgMjAyNCAwMjoxNzoyOCAtMDcwMCAoUERUKQpSZXR1cm4tUGF0aDogPD4KQXV0by1TdWJtaXR0ZWQ6IGF1dG8tcmVwbGllZApNZXNzYWdlLUlEOiA8NjZlMTYwMjguMDUwYTAyMjAuZWJjOWYuYjU1Zi5HTVJAbXguZ29vZ2xlLmNvbT4KRGF0ZTogV2VkLCAxMSBTZXAgMjAyNCAwMjoxNzoyOCAtMDcwMCAoUERUKQpGcm9tOiBNYWlsIERlbGl2ZXJ5IFN1YnN5c3RlbSA8bWFpbGVyLWRhZW1vbkBnb29nbGVtYWlsLmNvbT4KU3ViamVjdDogRGVsaXZlcnkgU3RhdHVzIE5vdGlmaWNhdGlvbiAoRmFpbHVyZSkKUmVmZXJlbmNlczogPGF1dG9nZW4tamF2YS04MDVjOTIwNS0zM2I5LTQ3ZmUtYTRlNS1jNzk5YWQ2NmVmZThAZ29vZ2xlLmNvbT4KSW4tUmVwbHktVG86IDxhdXRvZ2VuLWphdmEtODA1YzkyMDUtMzNiOS00N2ZlLWE0ZTUtYzc5OWFkNjZlZmU4QGdvb2dsZS5jb20+ClgtRmFpbGVkLVJlY2lwaWVudHM6IHNvbWUudGVzdEBmbG93Y3J5cHQuY29tCgotLTAwMDAwMDAwMDAwMDdiNmY5NDA2MjFkNDc1NmUKQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvcmVsYXRlZDsgYm91bmRhcnk9IjAwMDAwMDAwMDAwMDdiNmZjODA2MjFkNDc1NmYiCgotLTAwMDAwMDAwMDAwMDdiNmZjODA2MjFkNDc1NmYKQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7IGJvdW5kYXJ5PSIwMDAwMDAwMDAwMDA3YjZmY2EwNjIxZDQ3NTcwIgoKLS0wMDAwMDAwMDAwMDA3YjZmY2EwNjIxZDQ3NTcwCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0iVVRGLTgiCgoKKiogQWRkcmVzcyBub3QgZm91bmQgKioKCllvdXIgbWVzc2FnZSB3YXNuJ3QgZGVsaXZlcmVkIHRvIHNvbWUudGVzdEBmbG93Y3J5cHQuY29tIGJlY2F1c2UgdGhlIGFkZHJlc3MgY291bGRuJ3QgYmUgZm91bmQsIG9yIGlzIHVuYWJsZSB0byByZWNlaXZlIG1haWwuCgpMZWFybiBtb3JlIGhlcmU6IGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL21haWwvP3A9Tm9TdWNoVXNlcgoKVGhlIHJlc3BvbnNlIHdhczoKClRoZSBlbWFpbCBhY2NvdW50IHRoYXQgeW91IHRyaWVkIHRvIHJlYWNoIGRvZXMgbm90IGV4aXN0LiBQbGVhc2UgdHJ5IGRvdWJsZS1jaGVja2luZyB0aGUgcmVjaXBpZW50J3MgZW1haWwgYWRkcmVzcyBmb3IgdHlwb3Mgb3IgdW5uZWNlc3Nhcnkgc3BhY2VzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZ28gdG8gaHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vbWFpbC8/cD1Ob1N1Y2hVc2VyCgotLTAwMDAwMDAwMDAwMDdiNmZjYTA2MjFkNDc1NzAKQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9IlVURi04IgoKCjxodG1sPgo8aGVhZD4KPHN0eWxlPgoqIHsKZm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOwp9Cjwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+Cjx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJlbWFpbC13cmFwcGVyIiBzdHlsZT0icGFkZGluZy10b3A6MzJweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7Ij48dGJvZHk+Cjx0cj48dGQ+Cjx0YWJsZSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTA+PHRib2R5Pgo8dHI+PHRkIHN0eWxlPSJtYXgtd2lkdGg6NTYwcHg7cGFkZGluZzoyNHB4IDI0cHggMzJweDtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Ym9yZGVyOjFweCBzb2xpZCAjZTBlMGUwO2JvcmRlci1yYWRpdXM6MnB4Ij4KPGltZyBzdHlsZT0icGFkZGluZzowIDI0cHggMTZweCAwO2Zsb2F0OmxlZnQiIHdpZHRoPTcyIGhlaWdodD03MiBhbHQ9IkVycm9yIEljb24iIHNyYz0iY2lkOmljb24ucG5nIj4KPHRhYmxlIHN0eWxlPSJtaW4td2lkdGg6MjcycHg7cGFkZGluZy10b3A6OHB4Ij48dGJvZHk+Cjx0cj48dGQ+PGgyIHN0eWxlPSJmb250LXNpemU6MjBweDtjb2xvcjojMjEyMTIxO2ZvbnQtd2VpZ2h0OmJvbGQ7bWFyZ2luOjAiPgpBZGRyZXNzIG5vdCBmb3VuZAo8L2gyPjwvdGQ+PC90cj4KPHRyPjx0ZCBzdHlsZT0icGFkZGluZy10b3A6MjBweDtjb2xvcjojNzU3NTc1O2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0Om5vcm1hbDt0ZXh0LWFsaWduOmxlZnQiPgpZb3VyIG1lc3NhZ2Ugd2Fzbid0IGRlbGl2ZXJlZCB0byA8YSBzdHlsZT0nY29sb3I6IzIxMjEyMTt0ZXh0LWRlY29yYXRpb246bm9uZSc+PGI+c29tZS50ZXN0QGZsb3djcnlwdC5jb208L2I+PC9hPiBiZWNhdXNlIHRoZSBhZGRyZXNzIGNvdWxkbid0IGJlIGZvdW5kLCBvciBpcyB1bmFibGUgdG8gcmVjZWl2ZSBtYWlsLgo8L3RkPjwvdHI+Cjx0cj48dGQgc3R5bGU9InBhZGRpbmctdG9wOjI0cHg7Y29sb3I6IzQyODVGNDtmb250LXNpemU6MTRweDtmb250LXdlaWdodDpib2xkO3RleHQtYWxpZ246bGVmdCI+CjxhIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZSIgaHJlZj0iaHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vbWFpbC8/cD1Ob1N1Y2hVc2VyIj5MRUFSTiBNT1JFPC9hPgo8L3RkPjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPC90ZD48L3RyPgo8L3Rib2R5PjwvdGFibGU+CjwvdGQ+PC90cj4KPHRyIHN0eWxlPSJib3JkZXI6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Zm9udC1zaXplOjEyLjhweDt3aWR0aDo5MCUiPgo8dGQgYWxpZ249ImxlZnQiIHN0eWxlPSJwYWRkaW5nOjQ4cHggMTBweCI+ClRoZSByZXNwb25zZSB3YXM6PGJyLz4KPHAgc3R5bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZSI+ClRoZSBlbWFpbCBhY2NvdW50IHRoYXQgeW91IHRyaWVkIHRvIHJlYWNoIGRvZXMgbm90IGV4aXN0LiBQbGVhc2UgdHJ5IGRvdWJsZS1jaGVja2luZyB0aGUgcmVjaXBpZW50J3MgZW1haWwgYWRkcmVzcyBmb3IgdHlwb3Mgb3IgdW5uZWNlc3Nhcnkgc3BhY2VzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZ28gdG8gaHR0cHM6Ly9zdXBwb3J0Lmdvb2dsZS5jb20vbWFpbC8/cD1Ob1N1Y2hVc2VyCjwvcD4KPC90ZD4KPC90cj4KPC90Ym9keT48L3RhYmxlPgo8L2JvZHk+CjwvaHRtbD4KCi0tMDAwMDAwMDAwMDAwN2I2ZmNhMDYyMWQ0NzU3MC0tCi0tMDAwMDAwMDAwMDAwN2I2ZmM4MDYyMWQ0NzU2ZgpDb250ZW50LVR5cGU6IGltYWdlL3BuZzsgbmFtZT0iaWNvbi5wbmciCkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSJpY29uLnBuZyIKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0CkNvbnRlbnQtSUQ6IDxpY29uLnBuZz4KCmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFKQUFBQUNRQ0FZQUFBRG5SdUs0QUFBQUNYQklXWE1BQUJZbEFBQVdKUUZKVWlUd0FBQUEKR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQlRkSlJFRlVlTnJzbkQ5c0ZFY1VoNStQUk1xWgp5QTBTUGhBVVFBUUZVa3lUZ2lCQVNBUm82UUFwcVZJa2ZkeEdGSkZTZ0doSkFVSWlCYVFCMFpJT0tWQ2t3VWdVUmpJZzJmeEw0a1MrCllEdmtiQy8zODhiaThOMTZaNC9kN0ovNVBzbml1RDNmeWVQUDc3MlplVHNEUVJBWVFML1VHQUpBSUVBZ1FDQkFJQUFFQWdRQ0JBSUUKQWtBZ3lKVDNNditFcTd2WUs4bVRFK01EUkNBZ2hRRUNBZVJRQTVWMlpPcG1nNXZEeDNOUHpSYm1HUk1FY21UckViTk5COHpXZlJEKwpmL0VmczJlM3pDWnZNamFrc0JnMjdUZmJjdVNOUEVLUDlaeXVBUUt0SFgyTzluY05nV0M1N3VtTVBLdlJOYjBHRUtnbkxvVXl4VFFDCnJjbnMwLzZ1SVJBczgvaEdmOWNRQ0pacFRwamRPMmYyNS8wM3orbXhudE0xZUx0c1pBZ2lVdFg0SmNhQkNBUUlCQWdFQ0FSUThDSmEKRzVqYWI0SjRwbTRXWm1PM09BTFZoODAyZkl3Y0xreVBrY0tBR2dnQWdRQ0JBSUVBZ1FDQkFCQUlFQWpLQS8xQW5haGhiTzVGZE9PWQpWc3JyRGJQQlljWUtnZjVEMndMYVYzcCsyMnhoMXUxN3RPM1MrRFRjdnh2YWdVRGVpdlBneC9hLzk1Si83M3c3U2oyNkhuNHBLbzJNCmVodVYvS3lCSk02ZDBmN2s2Ukt4L1I2M3Z2TDJ0bWYvSXREZE0yWlRQNmY3bmtwOVkyZkR4MXY5YWttcElVK0tTQ0xWVWdoVVFmU0wKelZLZVRrbGJMeEdvY3R3L256QzVydzhMNUtSTmJrcG5LcTZwZ1NxRUNsek5uRnpZK1huWVdydDZWcFZrMXZid1d2ZytSS0NLTU9VdwpRMUxFT1hBKy9NWDNtcEp2R0RIYjI2NXh0bnptRm9VSzFIYUtRR2xNdGVQWU0rcTJLS2pYdWFTMU5KWUlFS2dJOGpoRWdxSHQ0Y3F5Ckt5NTNqM2h5SHoyYnFTTHAybzJMYko3TXhLb3ZrR3FYdGVvV3BhT2s5Nk85L3lGL2RGN053bFMzNkF1SVFJQkE1Y2VsUUs0UEl4QkUKNExMenJ0b0xnYUFMZFN5NkNKUmtXUUNCUEdMc1RIem5vbVo5bnN6VUVDZ0oybWwzV1dIZStRVkZOUFNReDZVZFpOdHhyOXBiRVNoTgplVFR6OG1RWEhvSFNsa2U3K1orYzltNlZHb0hTa0Vmcy90ckxXM3dRS0FwTjFWM2xHZm5HdTJaNkJGb0x0WUNzM0dXQlBBaVVDTFZoCi9Ib2FlUkNvVDlSODczS0xNL0lnVUJmYXBuQ3BlNUFIZ1hyeTRwZjQxMmloRUhrUXFDZHhkNVZxcmNlemhVSUVTc0pNVEorUGR0aHAKWjBXZ3lObFhYUEhjMk1jNElWQUVMbDJHbmg4bWhVRHZDa2ZiSVZBa2NiZi9hT29PM2ZNS2hxQUQzZnJUYTRxdXdwbjBoVURPa1FoSQpZWUJBZ0VDQVFBQVUwUWxZT2JsKzVVZzhOY3ByWmtaeGpVQ3hSUFZBNnptdEVYSENCeWtza3JoamdIWE4wOVBvRWNnRmw0TTRIMTFqCm5CQW9BcGNqNlpvUEdTY0VBZ1RLQXBjRG9UdzVzZ1dCK3NHbHoxbjkwSUJBUGRFNmoxbzIxUGZjQzExakxhZ0wxb0ZXUnlHbEtVM3AKT3hjU0pRN05aQWpraEhwL3VHMkhGQVlJQkFnRUNBU0FRSUJBZ0VDQVFBQUlCT2t4RUFSQnRwOXdkVmZBTU9mSWlmRUJJaENRd2dDQgpBQkFJMG9WMmpoeForbmZCYXR1UFpmZ0JDeTBFcXFvOGMwMWIrdXU1MVhadnpPZ0RXb0hOVEdSK3BDd3BMRWQ1c3Z1QVpYbE8ydUVyClB5RVE4aFJXSGdSQ0htcWcwc2pUbkxhbHY2Y3JKUThDL1U4c3RxTk8wSTQrVlpPSEZJWThDT1MxUEdMMnliZDV5VU1LSzdzOHpZbUwKZHVqeWQzbituRVNnY3N2elpkNC9Ld0loRHdJaFQzNVFBNlV5RTFxeXhabmZ2Sk1IZ2RLUzU0OUpDMXF2dkpPSEZJWThDRlI1ZVY1TwpYaW1xUEFoVWRIbm1meCt6Z3hkT0ZYa29xSUdLS3MvY3N3bmIvOE9lb2c4SEVhaTQ4bnhVaGlGQklPUkJJT1NoQmlvc2trYnlTQ0xrCklRSWhEd0loajI4cDdGQXBSNmIxcWxFYkhHcGtPL3JyNjIxNXZpL3pIMXIyeDd0QXBTR0ZBUUlCQWdFQ0FRSUJJQkFnRUNBUUlCQkEKTEs4RkdBRENUeFlycitFVkpnQUFBQUJKUlU1RXJrSmdnZz09Ci0tMDAwMDAwMDAwMDAwN2I2ZmM4MDYyMWQ0NzU2Zi0tCi0tMDAwMDAwMDAwMDAwN2I2Zjk0MDYyMWQ0NzU2ZQpDb250ZW50LVR5cGU6IG1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzCgpBcnJpdmFsLURhdGU6IFdlZCwgMTEgU2VwIDIwMjQgMDI6MTc6MjcgLTA3MDAgKFBEVCkKWC1PcmlnaW5hbC1NZXNzYWdlLUlEOiA8YXV0b2dlbi1qYXZhLTgwNWM5MjA1LTMzYjktNDdmZS1hNGU1LWM3OTlhZDY2ZWZlOEBnb29nbGUuY29tPgoKRmluYWwtUmVjaXBpZW50OiByZmM4MjI7IHNvbWUudGVzdEBmbG93Y3J5cHQuY29tCkFjdGlvbjogZmFpbGVkClN0YXR1czogNS4xLjMKRGlhZ25vc3RpYy1Db2RlOiBzbXRwOyBUaGUgZW1haWwgYWNjb3VudCB0aGF0IHlvdSB0cmllZCB0byByZWFjaCBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIHRyeSBkb3VibGUtY2hlY2tpbmcgdGhlIHJlY2lwaWVudCdzIGVtYWlsIGFkZHJlc3MgZm9yIHR5cG9zIG9yIHVubmVjZXNzYXJ5IHNwYWNlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIGdvIHRvIGh0dHBzOi8vc3VwcG9ydC5nb29nbGUuY29tL21haWwvP3A9Tm9TdWNoVXNlcgpMYXN0LUF0dGVtcHQtRGF0ZTogV2VkLCAxMSBTZXAgMjAyNCAwMjoxNzoyOCAtMDcwMCAoUERUKQoKLS0wMDAwMDAwMDAwMDA3YjZmOTQwNjIxZDQ3NTZlCkNvbnRlbnQtVHlwZTogbWVzc2FnZS9nbG9iYWwKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQoKWC1SZWNlaXZlZDogYnkgMjAwMjphMDU6NjYwMjo2ZDE0OmIwOjgyYzpmNDNmOmJhZmUgd2l0aCBTTVRQIGlkIGNhMThlMjM2MGY0PQphYy04MmNmNDNmYmQzN21yMTA3MDUwODIzOWYuOC4xNzI2MDQ2MjQ3MzQzOwogICAgICAgIFdlZCwgMTEgU2VwIDIwMjQgMDI6MTc6MjcgLTA3MDAgKFBEVCkKTUlNRS1WZXJzaW9uOiAxLjAKWC1SZWNlaXZlZDogYnkgMjAwMjphMDU6NmUwMjoxYTY1OmIwOjNhMDo1NTY2OmJkYTUgd2l0aCBTTVRQIGlkCiBlOWUxNGE1NThmOGFiLTNhMDU3NDVmMDI2bXIxMjU3MjY3NTVhYi45LjE3MjYwNDYyNDY4NzM7IFdlZCwgMTEgU2VwIDIwMjQKIDAyOjE3OjI2IC0wNzAwIChQRFQpCk1lc3NhZ2UtSUQ6IDxhdXRvZ2VuLWphdmEtODA1YzkyMDUtMzNiOS00N2ZlLWE0ZTUtYzc5OWFkNjZlZmU4QGdvb2dsZS5jb20+CkRhdGU6IFdlZCwgMTEgU2VwIDIwMjQgMDk6MTc6MjYgKzAwMDAKU3ViamVjdDogRGVsaXZlcnkgVGVzdApGcm9tOiBmbG93Y3J5cHQuY29tcGF0aWJpbGl0eUBnbWFpbC5jb20KVG86IHNvbWUudGVzdEBmbG93Y3J5cHQuY29tCkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L2FsdGVybmF0aXZlOyBib3VuZGFyeT0zRCIwMDAwMDAwMDAwMDA2OTQ5MWEwNjIxZDQ3NT0KZmUiCgotLS0tLSBNZXNzYWdlIHRydW5jYXRlZCAtLS0tLQotLTAwMDAwMDAwMDAwMDdiNmY5NDA2MjFkNDc1NmUtLQo=", + "historyId": "235729", + "internalDate": "1726046248000" + } +} diff --git a/test/source/tests/compose.ts b/test/source/tests/compose.ts index bd2e4df9034..c5a28ba6ae8 100644 --- a/test/source/tests/compose.ts +++ b/test/source/tests/compose.ts @@ -569,7 +569,7 @@ export const defineComposeTests = (testVariant: TestVariant, testWithBrowser: Te await inboxPage.close(); // test the pubkeys we copied const contact = await dbPage.page.evaluate(async () => { - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-return, @typescript-eslint/return-await + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-return return await (window as any).ContactStore.getOneWithAllPubkeys(undefined, 'manualcopypgp@flowcrypt.com'); }); expect(contact.sortedPubkeys.length).to.equal(2); diff --git a/test/source/tests/decrypt.ts b/test/source/tests/decrypt.ts index 64cf59a3f28..ed8d82ce50d 100644 --- a/test/source/tests/decrypt.ts +++ b/test/source/tests/decrypt.ts @@ -2031,7 +2031,8 @@ XZ8r4OC6sguP/yozWlkG+7dDxsgKQVBENeG6Lw== testWithBrowser(async (t, browser) => { const threadId1 = '18adb91ebf3ba7b9'; // email attachment "noname" with type img/ const threadId2 = '18afaa4118afeb62'; // email attachment "noname" with type application/octet-stream - const threadId3 = '18b7f6a2b00ad967'; // a password-protected message that is also public key encrypted with noname attachment + const threadId3 = '191e2735a1cc08c4'; // email attachment "noname" with type message/global + const threadId4 = '18b7f6a2b00ad967'; // a password-protected message that is also public key encrypted with noname attachment const { acctEmail } = await BrowserRecipe.setupCommonAcctWithAttester(t, browser, 'compatibility'); const inboxPage1 = await browser.newExtensionPage(t, `chrome/settings/inbox/inbox.htm?acctEmail=${acctEmail}&threadId=${threadId1}`); await inboxPage1.notPresent('iframe.pgp_block'); @@ -2042,11 +2043,17 @@ XZ8r4OC6sguP/yozWlkG+7dDxsgKQVBENeG6Lw== expect(await inboxPage2.isElementPresent('@container-attachments')).to.be.true; await inboxPage2.close(); const inboxPage3 = await browser.newExtensionPage(t, `chrome/settings/inbox/inbox.htm?acctEmail=${acctEmail}&threadId=${threadId3}`); - const pgpBlock = await inboxPage3.getFrame(['pgp_block.htm']); - await inboxPage3.notPresent('@container-attachments'); - expect(await inboxPage3.isElementPresent('iframe.pgp_block')).to.equal(true); - expect(await pgpBlock.isElementPresent('@pgp-encryption')).to.equal(true); + await inboxPage3.notPresent('iframe.pgp_block'); + const attachmentsContainer = await inboxPage3.waitAny('@container-attachments'); + const attachments = await attachmentsContainer.$$('.pgp_attachment'); + expect(attachments.length).to.equal(1); await inboxPage3.close(); + const inboxPage4 = await browser.newExtensionPage(t, `chrome/settings/inbox/inbox.htm?acctEmail=${acctEmail}&threadId=${threadId4}`); + const pgpBlock = await inboxPage4.getFrame(['pgp_block.htm']); + await inboxPage4.notPresent('@container-attachments'); + expect(await inboxPage4.isElementPresent('iframe.pgp_block')).to.equal(true); + expect(await pgpBlock.isElementPresent('@pgp-encryption')).to.equal(true); + await inboxPage4.close(); }) ); diff --git a/test/source/tests/settings.ts b/test/source/tests/settings.ts index f3712c7a563..ef8c22ecee2 100644 --- a/test/source/tests/settings.ts +++ b/test/source/tests/settings.ts @@ -1099,7 +1099,7 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T ); // test the pubkey in the storage const oldContact = await dbPage.page.evaluate(async acctEmail => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/return-await + // eslint-disable-next-line @typescript-eslint/no-unsafe-return return await (window as any).ContactStore.getOneWithAllPubkeys(undefined, acctEmail); }, acctEmail); expect(oldContact.sortedPubkeys.length).to.equal(1); @@ -1122,7 +1122,7 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T await myKeyFrame.waitAndClick('@action-fix-and-import-key'); // test the pubkey in the storage const expectedOldContact = await dbPage.page.evaluate(async acctEmail => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/return-await + // eslint-disable-next-line @typescript-eslint/no-unsafe-return return await (window as any).ContactStore.getOneWithAllPubkeys(undefined, acctEmail); }, acctEmail); expect(expectedOldContact.sortedPubkeys.length).to.equal(1); @@ -1142,7 +1142,7 @@ export const defineSettingsTests = (testVariant: TestVariant, testWithBrowser: T }); // test the pubkey in the storage const newContact = await dbPage.page.evaluate(async acctEmail => { - // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/return-await + // eslint-disable-next-line @typescript-eslint/no-unsafe-return return await (window as any).ContactStore.getOneWithAllPubkeys(undefined, acctEmail); }, acctEmail); expect(newContact.sortedPubkeys.length).to.equal(1);