@secrecy/lib 1.0.0-dev.66 → 1.0.0-dev.68
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/{BaseClient-7c38f650.d.ts → BaseClient-e5e97df7.d.ts} +0 -0
- package/dist/BaseClient.cjs +1 -1
- package/dist/BaseClient.cjs.map +1 -1
- package/dist/BaseClient.d.ts +1 -1
- package/dist/BaseClient.js +1 -1
- package/dist/BaseClient.js.map +1 -1
- package/dist/PopupTools.cjs +1 -1
- package/dist/PopupTools.js +1 -1
- package/dist/ZeusThunder.cjs +1 -1
- package/dist/ZeusThunder.cjs.map +1 -1
- package/dist/ZeusThunder.js +1 -1
- package/dist/ZeusThunder.js.map +1 -1
- package/dist/cache.cjs +1 -1
- package/dist/cache.d.ts +1 -1
- package/dist/cache.js +1 -1
- package/dist/chunk-UPFDSEKI.js +2 -0
- package/dist/{chunk-KMTF2BZE.js.map → chunk-UPFDSEKI.js.map} +0 -0
- package/dist/chunk-XDPEU3HV.cjs +2 -0
- package/dist/{chunk-5WPCTUWH.cjs.map → chunk-XDPEU3HV.cjs.map} +0 -0
- package/dist/client/SecrecyAppClient.cjs +1 -1
- package/dist/client/SecrecyAppClient.cjs.map +1 -1
- package/dist/client/SecrecyAppClient.d.ts +1 -1
- package/dist/client/SecrecyAppClient.js +1 -1
- package/dist/client/SecrecyAppClient.js.map +1 -1
- package/dist/client/SecrecyCloudClient.cjs +1 -1
- package/dist/client/SecrecyCloudClient.cjs.map +1 -1
- package/dist/client/SecrecyCloudClient.d.ts +1 -1
- package/dist/client/SecrecyCloudClient.js +1 -1
- package/dist/client/SecrecyCloudClient.js.map +1 -1
- package/dist/client/SecrecyDbClient.cjs +1 -1
- package/dist/client/SecrecyDbClient.cjs.map +1 -1
- package/dist/client/SecrecyDbClient.d.ts +1 -1
- package/dist/client/SecrecyDbClient.js +1 -1
- package/dist/client/SecrecyDbClient.js.map +1 -1
- package/dist/client/SecrecyMailClient.cjs +1 -1
- package/dist/client/SecrecyMailClient.cjs.map +1 -1
- package/dist/client/SecrecyMailClient.d.ts +1 -1
- package/dist/client/SecrecyMailClient.js +1 -1
- package/dist/client/SecrecyMailClient.js.map +1 -1
- package/dist/client/SecrecyPayClient.cjs +1 -1
- package/dist/client/SecrecyPayClient.d.ts +1 -1
- package/dist/client/SecrecyPayClient.js +1 -1
- package/dist/client/SecrecyWalletClient.cjs +1 -1
- package/dist/client/SecrecyWalletClient.cjs.map +1 -1
- package/dist/client/SecrecyWalletClient.d.ts +1 -1
- package/dist/client/SecrecyWalletClient.js +1 -1
- package/dist/client/SecrecyWalletClient.js.map +1 -1
- package/dist/client/convert/file.cjs +1 -1
- package/dist/client/convert/file.js +1 -1
- package/dist/client/convert/mail.cjs +1 -1
- package/dist/client/convert/mail.js +1 -1
- package/dist/client/convert/node.cjs +1 -1
- package/dist/client/convert/node.cjs.map +1 -1
- package/dist/client/convert/node.js +1 -1
- package/dist/client/convert/node.js.map +1 -1
- package/dist/client/helpers.cjs +1 -1
- package/dist/client/helpers.d.ts +1 -1
- package/dist/client/helpers.js +1 -1
- package/dist/client/index.cjs +1 -1
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/storage.cjs +1 -1
- package/dist/client/storage.js +1 -1
- package/dist/client/types/selectors.cjs +1 -1
- package/dist/client/types/selectors.js +1 -1
- package/dist/crypto/file.cjs +1 -1
- package/dist/crypto/file.cjs.map +1 -1
- package/dist/crypto/file.js +1 -1
- package/dist/crypto/file.js.map +1 -1
- package/dist/crypto/index.cjs +1 -1
- package/dist/crypto/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/minify/index.cjs +1 -1
- package/dist/minify/index.js +1 -1
- package/dist/minify/lz4.cjs +1 -1
- package/dist/minify/lz4.js +1 -1
- package/dist/sodium.cjs +1 -1
- package/dist/sodium.cjs.map +1 -1
- package/dist/sodium.js +1 -1
- package/dist/sodium.js.map +1 -1
- package/dist/utils/store-buddy.cjs +1 -1
- package/dist/utils/store-buddy.js +1 -1
- package/dist/utils/time.cjs +1 -1
- package/dist/utils/time.js +1 -1
- package/dist/utils/utils.cjs +1 -1
- package/dist/utils/utils.cjs.map +1 -1
- package/dist/utils/utils.js +1 -1
- package/dist/utils/utils.js.map +1 -1
- package/dist/worker/md5.cjs +1 -1
- package/dist/worker/md5.cjs.map +1 -1
- package/dist/worker/md5.js +1 -1
- package/dist/worker/md5.js.map +1 -1
- package/dist/worker/sodium.cjs +1 -1
- package/dist/worker/sodium.cjs.map +1 -1
- package/dist/worker/sodium.js +1 -1
- package/dist/worker/sodium.js.map +1 -1
- package/dist/worker/workerCodes.cjs +1 -1
- package/dist/worker/workerCodes.js +1 -1
- package/dist/zeus/const.cjs +1 -1
- package/dist/zeus/const.js +1 -1
- package/dist/zeus/index.cjs +2 -2
- package/dist/zeus/index.cjs.map +1 -1
- package/dist/zeus/index.d.ts +10 -10
- package/dist/zeus/index.js +2 -2
- package/dist/zeus/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/chunk-5WPCTUWH.cjs +0 -2
- package/dist/chunk-KMTF2BZE.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk5WPCTUWHcjs = require('../chunk-5WPCTUWH.cjs');var h,i,c;var _shortid = require('shortid');var _cachejs = require('../cache.js');var _indexjs = require('../index.js');var _mailjs = require('./convert/mail.js');var _selectorsjs = require('./types/selectors.js');class C{constructor(r,e,t){_chunk5WPCTUWHcjs.e.call(void 0, this,h,void 0);_chunk5WPCTUWHcjs.e.call(void 0, this,i,void 0);_chunk5WPCTUWHcjs.e.call(void 0, this,c,void 0);_chunk5WPCTUWHcjs.c.call(void 0, this,"_eachUser",async(r,e,t,s)=>{let u=_cachejs.usersCache.get(s);if(!u||!("publicKey"in u)){try{const o=await _chunk5WPCTUWHcjs.d.call(void 0, this,h).user({userId:s,withPublicKey:!0});if(!o||o.__typename!=="SuccessResponse")return null;u=o.data}catch(o){return null}if(!u)return null}if(!("publicKey"in u))throw new Error(`User ${s} have no public key`);const f=new Array;for(const o of r){let p=_cachejs.filesCache.get(o.id);if(!p&&(await _chunk5WPCTUWHcjs.d.call(void 0, this,h).cloud.fileMetadata({id:o.id}),p=_cachejs.filesCache.get(o.id),!p))throw new Error(`File ${o.name} (${o.id}) does not exists`);const d=p.key;f.push({id:o.id,name:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(o.name),u.publicKey,_chunk5WPCTUWHcjs.d.call(void 0, this,i).privateKey)),fileKey:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_hex(d),u.publicKey,_chunk5WPCTUWHcjs.d.call(void 0, this,i).privateKey))})}return{recipientId:u.id,body:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(t),u.publicKey,_chunk5WPCTUWHcjs.d.call(void 0, this,i).privateKey)),subject:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(e),u.publicKey,_chunk5WPCTUWHcjs.d.call(void 0, this,i).privateKey)),files:f}});_chunk5WPCTUWHcjs.f.call(void 0, this,h,r),_chunk5WPCTUWHcjs.f.call(void 0, this,i,e),_chunk5WPCTUWHcjs.f.call(void 0, this,c,t)}async get({id:r}){const{mail:e}=await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"query",{scalars:{DateTime:{decode:s=>new Date(s),encode:s=>s.toISOString()}}})({mail:[{id:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on QueryMailResponse":{__typename:!0,mail:_selectorsjs.mailSelector}}]});if(!e)return null;if(e.__typename==="ErrorAccessDenied")return e;if(!e.mail)return null;const t=_mailjs.convertInternalMailToExternal.call(void 0, e.mail,_chunk5WPCTUWHcjs.d.call(void 0, this,i));return t?{__typename:"SuccessResponse",data:t}:null}async recover({mailId:r}){const{recoverMail:e}=await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"mutation")({recoverMail:[{mailId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on RecoverMailResponse":{__typename:!0,recoverMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"||e.__typename==="ErrorBasic"?e:{__typename:"SuccessResponse",data:e.recoverMail}:null}async deletedMails({mailType:r}){const{deletedMails:e}=await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"query",{scalars:{DateTime:{decode:s=>new Date(s),encode:s=>s.toISOString()}}})({deletedMails:[{mailType:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeletedMailsResponse":{__typename:!0,deletedMails:_selectorsjs.mailSelector}}]});if(!e)return null;if(e.__typename==="ErrorAccessDenied")return e;const t=new Array;for(const s of e.deletedMails){const u=_mailjs.convertInternalMailToExternal.call(void 0, s,_chunk5WPCTUWHcjs.d.call(void 0, this,i));u&&t.push(u)}return{__typename:"SuccessResponse",data:t}}async create(r,e){const t=await this.createDraft(r);if(!t)return{__typename:"SuccessResponse",data:!1};if(t.__typename==="ErrorBasic"||t.__typename==="ErrorAccessDenied")return t;const s=await this.sendDraft(t.data.mailIntegrityId,e);return s?s.__typename==="ErrorAccessDenied"||s.__typename==="ErrorBasic"?s:{__typename:"SuccessResponse",data:s.data}:null}async waitingReceivedMails(){const{user:r}=await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"query")({user:[{},{"...on ErrorNotFound":{__typename:!0,message:!0},"...on UserResponse":{__typename:!0,user:{waitingReceivedMails:{date:!0,attachmentsCount:!0,sender:{id:!0,firstname:!0,lastname:!0,email:!0,publicKey:!0},recipients:{id:!0,firstname:!0,lastname:!0,email:!0,publicKey:!0},temporaryRecipients:{email:!0}}}}}]});if(!r)return null;if(r.__typename==="ErrorNotFound")return r;if(!r.user)return null;const e=r.user.waitingReceivedMails.map(t=>_chunk5WPCTUWHcjs.b.call(void 0, _chunk5WPCTUWHcjs.a.call(void 0, {id:_shortid.generate.call(void 0, )},t),{date:new Date(t.date)}));return{__typename:"SuccessResponse",data:e}}async updateDraft(r,{body:e,subject:t,files:s,recipientsIds:u,replyTo:f}){const o=await this.draftMails();if(!o)return null;if(o.__typename!=="SuccessResponse")return o;if(!o.data.find(l=>l.mailIntegrityId===r))throw new Error(`Invalid draft ${r}`);let d=null,R=null;(e||t)&&(d=_indexjs.sodium.randombytes_buf(_indexjs.sodium.crypto_generichash_KEYBYTES,"hex"),R=_indexjs.sodium.crypto_generichash(_indexjs.sodium.crypto_generichash_BYTES,JSON.stringify({body:e,subject:t}),d,"hex"));const m=new Array;if(s)for(const l of s){let E=_cachejs.filesCache.get(l.id);if(!E&&(await _chunk5WPCTUWHcjs.d.call(void 0, this,h).cloud.fileMetadata({id:l.id}),E=_cachejs.filesCache.get(l.id),!E))throw new Error(`File ${l.name} (${l.id}) does not exists`);m.push({id:E.id,fileKey:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(E.key),_chunk5WPCTUWHcjs.d.call(void 0, this,i).publicKey,_chunk5WPCTUWHcjs.d.call(void 0, this,i).privateKey)),name:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(l.name),_chunk5WPCTUWHcjs.d.call(void 0, this,i).publicKey,_chunk5WPCTUWHcjs.d.call(void 0, this,i).privateKey))})}const{updateDraftMail:_}=await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"mutation",{scalars:{Json:{encode:l=>JSON.stringify(l),decode:l=>JSON.parse(l)},DateTime:{decode:l=>new Date(l),encode:l=>l.toISOString()},BigInt:{decode:l=>BigInt(l),encode:l=>l.toString()}}})({updateDraftMail:[{draftId:r,recipients:u,replyTo:f,body:e?_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(e),_chunk5WPCTUWHcjs.d.call(void 0, this,i).publicKey,_chunk5WPCTUWHcjs.d.call(void 0, this,i).privateKey)):null,subject:t?_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(t),_chunk5WPCTUWHcjs.d.call(void 0, this,i).publicKey,_chunk5WPCTUWHcjs.d.call(void 0, this,i).privateKey)):null,senderFiles:m,hash:R,hashKey:d},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on UpdateDraftMailResponse":{__typename:!0,updateDraftMail:_selectorsjs.mailSelector}}]});if(!_)return null;if(_.__typename==="ErrorAccessDenied"||_.__typename==="ErrorBasic")return _;if(!_.updateDraftMail)return null;const b=_mailjs.convertInternalMailToExternal.call(void 0, _.updateDraftMail,_chunk5WPCTUWHcjs.d.call(void 0, this,i));return{__typename:"SuccessResponse",data:b}}async deleteDraft(r){var t;const{deleteDraftMail:e}=await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"mutation")({deleteDraftMail:[{draftId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteDraftMailResponse":{__typename:!0,deleteDraftMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"?e:e.deleteDraftMail?{__typename:"SuccessResponse",data:(t=e.deleteDraftMail)!=null?t:!1}:null:null}async deleteTrash({ids:r}){const{deleteMailTrash:e}=await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"mutation")({deleteMailTrash:[{ids:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteMailTrashResponse":{__typename:!0,deleteMailTrash:!0}}]});return e?e.__typename==="ErrorAccessDenied"?e:e.deleteMailTrash?{__typename:"SuccessResponse",data:e.deleteMailTrash}:null:null}async emptyTrash(){const{emptyMailTrash:r}=await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"mutation")({emptyMailTrash:{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on EmptyMailTrashResponse":{__typename:!0,emptyMailTrash:!0}}});return r?r.__typename==="ErrorAccessDenied"?r:r.emptyMailTrash?{__typename:"SuccessResponse",data:r.emptyMailTrash}:null:null}async delete({mailId:r}){const{deleteMail:e}=await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"mutation")({deleteMail:[{mailId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteMailResponse":{__typename:!0,deleteMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"?e:{__typename:"SuccessResponse",data:e.deleteMail}:null}async sendDraft(r,e){const t=await this.draftMails();if(!t)return{__typename:"SuccessResponse",data:!1};if(t.__typename!=="SuccessResponse")return{__typename:"SuccessResponse",data:!1};const s=t.data.find(p=>p.mailIntegrityId===r);if(!s)return{__typename:"SuccessResponse",data:!1};const u=new Array,f=new Array;for(const{email:p}of s.temporaryRecipients){if(!p)continue;const d=await this._eachUser(s.files,s.subject,s.body,p);d?u.push(d):f.push(p)}for(const{id:p}of s.recipients){const d=await this._eachUser(s.files,s.subject,s.body,p);d?u.push(d):f.push(p)}const{sendDraftMail:o}=await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"mutation")({sendDraftMail:[{temporaryRecipients:f,recipients:u,draftMailId:s.mailIntegrityId,customMessage:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on SendDraftMailResponse":{__typename:!0,sendDraftMail:!0}}]});return o?o.__typename==="ErrorAccessDenied"||o.__typename==="ErrorBasic"?o:o.sendDraftMail?{__typename:"SuccessResponse",data:o.sendDraftMail}:null:null}async sendWaitingEmails(){const r=await this.sentMails();if(!r)return{__typename:"SuccessResponse",data:!1};if(r.__typename!=="SuccessResponse")return{__typename:"SuccessResponse",data:!1};const e=r.data.filter(t=>t.temporaryRecipients.length>0);for(const t of e)for(const{email:s}of t.temporaryRecipients)if(!!s)try{const u=await this._eachUser(t.files,t.subject,t.body,s);if(!u)continue;await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"mutation")({sendOneMail:[{mailIntegrityId:t.mailIntegrityId,recipient:u},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on RecoverNodeResponse":{__typename:!0,recoverNode:!0}}]})}catch(u){continue}return{__typename:"SuccessResponse",data:!1}}async createDraft({body:r,subject:e,files:t,recipientsIds:s,replyTo:u}){const f=_indexjs.sodium.randombytes_buf(_indexjs.sodium.crypto_generichash_KEYBYTES,"hex"),o=_indexjs.sodium.crypto_generichash(_indexjs.sodium.crypto_generichash_BYTES,JSON.stringify({body:r,subject:e}),f,"hex"),p=new Array;for(const m of t){let _=_cachejs.filesCache.get(m.id);if(!_&&(await _chunk5WPCTUWHcjs.d.call(void 0, this,h).cloud.fileMetadata({id:m.id}),_=_cachejs.filesCache.get(m.id),!_))throw new Error(`File ${m.name} (${m.id}) does not exists`);p.push({id:_.id,fileKey:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(_.key),_chunk5WPCTUWHcjs.d.call(void 0, this,i).publicKey,_chunk5WPCTUWHcjs.d.call(void 0, this,i).privateKey)),name:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(m.name),_chunk5WPCTUWHcjs.d.call(void 0, this,i).publicKey,_chunk5WPCTUWHcjs.d.call(void 0, this,i).privateKey))})}const{createDraftMail:d}=await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"mutation",{scalars:{DateTime:{decode:m=>new Date(m),encode:m=>m.toISOString()}}})({createDraftMail:[{recipients:s,replyTo:u,body:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(r),_chunk5WPCTUWHcjs.d.call(void 0, this,i).publicKey,_chunk5WPCTUWHcjs.d.call(void 0, this,i).privateKey)),subject:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(e),_chunk5WPCTUWHcjs.d.call(void 0, this,i).publicKey,_chunk5WPCTUWHcjs.d.call(void 0, this,i).privateKey)),senderFiles:p,hash:o,hashKey:f},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on CreateDraftMailResponse":{__typename:!0,createDraftMail:_selectorsjs.mailSelector}}]});if(!d)return null;if(d.__typename==="ErrorAccessDenied"||d.__typename==="ErrorBasic")return d;if(!d.createDraftMail)return null;const R=_mailjs.convertInternalMailToExternal.call(void 0, d.createDraftMail,_chunk5WPCTUWHcjs.d.call(void 0, this,i));return{__typename:"SuccessResponse",data:R}}async read({mailId:r}){const{readMail:e}=await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"mutation")({readMail:[{mailId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on ReadMailResponse":{__typename:!0,readMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"||e.__typename==="ErrorBasic"||e.__typename==="ErrorNotFound"?e:e.readMail?{__typename:"SuccessResponse",data:e.readMail}:null:null}async unread({mailId:r}){const{unreadMail:e}=await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"mutation")({unreadMail:[{mailId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on UnreadMailResponse":{__typename:!0,unreadMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"||e.__typename==="ErrorBasic"||e.__typename==="ErrorNotFound"?e:e.unreadMail?{__typename:"SuccessResponse",data:e.unreadMail}:null:null}async receivedMails(){const{user:r}=await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"query",{scalars:{DateTime:{decode:t=>new Date(t),encode:t=>t.toISOString()}}})({user:[{},{"...on ErrorNotFound":{__typename:!0,message:!0},"...on UserResponse":{__typename:!0,user:{receivedMails:_selectorsjs.mailSelector}}}]});if(!r)return null;if(r.__typename==="ErrorNotFound")return r;if(!r.user)return null;const e=new Array;for(const t of r.user.receivedMails){const s=_mailjs.convertInternalMailToExternal.call(void 0, t,_chunk5WPCTUWHcjs.d.call(void 0, this,i));s&&e.push(s)}return{__typename:"SuccessResponse",data:e}}async sentMails(){const{user:r}=await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"query",{scalars:{DateTime:{decode:t=>new Date(t),encode:t=>t.toISOString()}}})({user:[{},{"...on ErrorNotFound":{__typename:!0,message:!0},"...on UserResponse":{__typename:!0,user:{sentMails:_selectorsjs.mailSelector}}}]});if(!r)return null;if(r.__typename==="ErrorNotFound")return r;if(!r.user)return null;const e=new Array;for(const t of r.user.sentMails){const s=_mailjs.convertInternalMailToExternal.call(void 0, t,_chunk5WPCTUWHcjs.d.call(void 0, this,i));s&&e.push(s)}return{__typename:"SuccessResponse",data:e}}async draftMails(){const{user:r}=await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"query",{scalars:{DateTime:{decode:t=>new Date(t),encode:t=>t.toISOString()}}})({user:[{},{"...on ErrorNotFound":{__typename:!0,message:!0},"...on UserResponse":{__typename:!0,user:{draftMails:_selectorsjs.mailSelector}}}]});if(!r)return null;if(r.__typename==="ErrorNotFound")return r;if(!r.user)return null;const e=new Array;for(const t of r.user.draftMails){const s=_mailjs.convertInternalMailToExternal.call(void 0, t,_chunk5WPCTUWHcjs.d.call(void 0, this,i));s&&e.push(s)}return{__typename:"SuccessResponse",data:e}}async unreadReceivedMailsCount(){const{unreadReceivedMailsCount:r}=await _chunk5WPCTUWHcjs.d.call(void 0, this,c).call(this,"query")({unreadReceivedMailsCount:{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on UnreadReceivedMailsCountResponse":{__typename:!0,count:!0}}});return r?r.__typename==="ErrorAccessDenied"?r:{__typename:"SuccessResponse",data:r.count}:null}}h=new WeakMap,i=new WeakMap,c=new WeakMap;exports.SecrecyMailClient = C;
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkXDPEU3HVcjs = require('../chunk-XDPEU3HV.cjs');var g,o,c;var _shortid = require('shortid');var _cachejs = require('../cache.js');var _indexjs = require('../index.js');var _mailjs = require('./convert/mail.js');var _selectorsjs = require('./types/selectors.js');class q{constructor(r,s,e){_chunkXDPEU3HVcjs.e.call(void 0, this,g,void 0);_chunkXDPEU3HVcjs.e.call(void 0, this,o,void 0);_chunkXDPEU3HVcjs.e.call(void 0, this,c,void 0);_chunkXDPEU3HVcjs.c.call(void 0, this,"_eachUser",(r,s,e,n)=>_chunkXDPEU3HVcjs.h.call(void 0, this,null,function*(){let a=_cachejs.usersCache.get(n);if(!a||!("publicKey"in a)){try{const u=yield _chunkXDPEU3HVcjs.d.call(void 0, this,g).user({userId:n,withPublicKey:!0});if(!u||u.__typename!=="SuccessResponse")return null;a=u.data}catch(u){return null}if(!a)return null}if(!("publicKey"in a))throw new Error(`User ${n} have no public key`);const f=new Array;for(const u of r){let p=_cachejs.filesCache.get(u.id);if(!p&&(yield _chunkXDPEU3HVcjs.d.call(void 0, this,g).cloud.fileMetadata({id:u.id}),p=_cachejs.filesCache.get(u.id),!p))throw new Error(`File ${u.name} (${u.id}) does not exists`);const m=p.key;f.push({id:u.id,name:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(u.name),a.publicKey,_chunkXDPEU3HVcjs.d.call(void 0, this,o).privateKey)),fileKey:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_hex(m),a.publicKey,_chunkXDPEU3HVcjs.d.call(void 0, this,o).privateKey))})}return{recipientId:a.id,body:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(e),a.publicKey,_chunkXDPEU3HVcjs.d.call(void 0, this,o).privateKey)),subject:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(s),a.publicKey,_chunkXDPEU3HVcjs.d.call(void 0, this,o).privateKey)),files:f}}));_chunkXDPEU3HVcjs.f.call(void 0, this,g,r),_chunkXDPEU3HVcjs.f.call(void 0, this,o,s),_chunkXDPEU3HVcjs.f.call(void 0, this,c,e)}get(s){return _chunkXDPEU3HVcjs.h.call(void 0, this,arguments,function*({id:r}){const{mail:e}=yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"query",{scalars:{DateTime:{decode:a=>new Date(a),encode:a=>a.toISOString()}}})({mail:[{id:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on QueryMailResponse":{__typename:!0,mail:_selectorsjs.mailSelector}}]});if(!e)return null;if(e.__typename==="ErrorAccessDenied")return e;if(!e.mail)return null;const n=_mailjs.convertInternalMailToExternal.call(void 0, e.mail,_chunkXDPEU3HVcjs.d.call(void 0, this,o));return n?{__typename:"SuccessResponse",data:n}:null})}recover(s){return _chunkXDPEU3HVcjs.h.call(void 0, this,arguments,function*({mailId:r}){const{recoverMail:e}=yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"mutation")({recoverMail:[{mailId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on RecoverMailResponse":{__typename:!0,recoverMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"||e.__typename==="ErrorBasic"?e:{__typename:"SuccessResponse",data:e.recoverMail}:null})}deletedMails(s){return _chunkXDPEU3HVcjs.h.call(void 0, this,arguments,function*({mailType:r}){const{deletedMails:e}=yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"query",{scalars:{DateTime:{decode:a=>new Date(a),encode:a=>a.toISOString()}}})({deletedMails:[{mailType:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeletedMailsResponse":{__typename:!0,deletedMails:_selectorsjs.mailSelector}}]});if(!e)return null;if(e.__typename==="ErrorAccessDenied")return e;const n=new Array;for(const a of e.deletedMails){const f=_mailjs.convertInternalMailToExternal.call(void 0, a,_chunkXDPEU3HVcjs.d.call(void 0, this,o));f&&n.push(f)}return{__typename:"SuccessResponse",data:n}})}create(r,s){return _chunkXDPEU3HVcjs.h.call(void 0, this,null,function*(){const e=yield this.createDraft(r);if(!e)return{__typename:"SuccessResponse",data:!1};if(e.__typename==="ErrorBasic"||e.__typename==="ErrorAccessDenied")return e;const n=yield this.sendDraft(e.data.mailIntegrityId,s);return n?n.__typename==="ErrorAccessDenied"||n.__typename==="ErrorBasic"?n:{__typename:"SuccessResponse",data:n.data}:null})}waitingReceivedMails(){return _chunkXDPEU3HVcjs.h.call(void 0, this,null,function*(){const{user:r}=yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"query")({user:[{},{"...on ErrorNotFound":{__typename:!0,message:!0},"...on UserResponse":{__typename:!0,user:{waitingReceivedMails:{date:!0,attachmentsCount:!0,sender:{id:!0,firstname:!0,lastname:!0,email:!0,publicKey:!0},recipients:{id:!0,firstname:!0,lastname:!0,email:!0,publicKey:!0},temporaryRecipients:{email:!0}}}}}]});if(!r)return null;if(r.__typename==="ErrorNotFound")return r;if(!r.user)return null;const s=r.user.waitingReceivedMails.map(e=>_chunkXDPEU3HVcjs.b.call(void 0, _chunkXDPEU3HVcjs.a.call(void 0, {id:_shortid.generate.call(void 0, )},e),{date:new Date(e.date)}));return{__typename:"SuccessResponse",data:s}})}updateDraft(u,p){return _chunkXDPEU3HVcjs.h.call(void 0, this,arguments,function*(r,{body:s,subject:e,files:n,recipientsIds:a,replyTo:f}){const m=yield this.draftMails();if(!m)return null;if(m.__typename!=="SuccessResponse")return m;if(!m.data.find(d=>d.mailIntegrityId===r))throw new Error(`Invalid draft ${r}`);let S=null,_=null;(s||e)&&(S=_indexjs.sodium.randombytes_buf(_indexjs.sodium.crypto_generichash_KEYBYTES,"hex"),_=_indexjs.sodium.crypto_generichash(_indexjs.sodium.crypto_generichash_BYTES,JSON.stringify({body:s,subject:e}),S,"hex"));const M=new Array;if(n)for(const d of n){let A=_cachejs.filesCache.get(d.id);if(!A&&(yield _chunkXDPEU3HVcjs.d.call(void 0, this,g).cloud.fileMetadata({id:d.id}),A=_cachejs.filesCache.get(d.id),!A))throw new Error(`File ${d.name} (${d.id}) does not exists`);M.push({id:A.id,fileKey:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(A.key),_chunkXDPEU3HVcjs.d.call(void 0, this,o).publicKey,_chunkXDPEU3HVcjs.d.call(void 0, this,o).privateKey)),name:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(d.name),_chunkXDPEU3HVcjs.d.call(void 0, this,o).publicKey,_chunkXDPEU3HVcjs.d.call(void 0, this,o).privateKey))})}const{updateDraftMail:D}=yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"mutation",{scalars:{Json:{encode:d=>JSON.stringify(d),decode:d=>JSON.parse(d)},DateTime:{decode:d=>new Date(d),encode:d=>d.toISOString()},BigInt:{decode:d=>BigInt(d),encode:d=>d.toString()}}})({updateDraftMail:[{draftId:r,recipients:a,replyTo:f,body:s?_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(s),_chunkXDPEU3HVcjs.d.call(void 0, this,o).publicKey,_chunkXDPEU3HVcjs.d.call(void 0, this,o).privateKey)):null,subject:e?_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(e),_chunkXDPEU3HVcjs.d.call(void 0, this,o).publicKey,_chunkXDPEU3HVcjs.d.call(void 0, this,o).privateKey)):null,senderFiles:M,hash:_,hashKey:S},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on UpdateDraftMailResponse":{__typename:!0,updateDraftMail:_selectorsjs.mailSelector}}]});if(!D)return null;if(D.__typename==="ErrorAccessDenied"||D.__typename==="ErrorBasic")return D;if(!D.updateDraftMail)return null;const B=_mailjs.convertInternalMailToExternal.call(void 0, D.updateDraftMail,_chunkXDPEU3HVcjs.d.call(void 0, this,o));return{__typename:"SuccessResponse",data:B}})}deleteDraft(r){return _chunkXDPEU3HVcjs.h.call(void 0, this,null,function*(){var e;const{deleteDraftMail:s}=yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"mutation")({deleteDraftMail:[{draftId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteDraftMailResponse":{__typename:!0,deleteDraftMail:!0}}]});return s?s.__typename==="ErrorAccessDenied"?s:s.deleteDraftMail?{__typename:"SuccessResponse",data:(e=s.deleteDraftMail)!=null?e:!1}:null:null})}deleteTrash(s){return _chunkXDPEU3HVcjs.h.call(void 0, this,arguments,function*({ids:r}){const{deleteMailTrash:e}=yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"mutation")({deleteMailTrash:[{ids:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteMailTrashResponse":{__typename:!0,deleteMailTrash:!0}}]});return e?e.__typename==="ErrorAccessDenied"?e:e.deleteMailTrash?{__typename:"SuccessResponse",data:e.deleteMailTrash}:null:null})}emptyTrash(){return _chunkXDPEU3HVcjs.h.call(void 0, this,null,function*(){const{emptyMailTrash:r}=yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"mutation")({emptyMailTrash:{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on EmptyMailTrashResponse":{__typename:!0,emptyMailTrash:!0}}});return r?r.__typename==="ErrorAccessDenied"?r:r.emptyMailTrash?{__typename:"SuccessResponse",data:r.emptyMailTrash}:null:null})}delete(s){return _chunkXDPEU3HVcjs.h.call(void 0, this,arguments,function*({mailId:r}){const{deleteMail:e}=yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"mutation")({deleteMail:[{mailId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteMailResponse":{__typename:!0,deleteMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"?e:{__typename:"SuccessResponse",data:e.deleteMail}:null})}sendDraft(r,s){return _chunkXDPEU3HVcjs.h.call(void 0, this,null,function*(){const e=yield this.draftMails();if(!e)return{__typename:"SuccessResponse",data:!1};if(e.__typename!=="SuccessResponse")return{__typename:"SuccessResponse",data:!1};const n=e.data.find(p=>p.mailIntegrityId===r);if(!n)return{__typename:"SuccessResponse",data:!1};const a=new Array,f=new Array;for(const{email:p}of n.temporaryRecipients){if(!p)continue;const m=yield this._eachUser(n.files,n.subject,n.body,p);m?a.push(m):f.push(p)}for(const{id:p}of n.recipients){const m=yield this._eachUser(n.files,n.subject,n.body,p);m?a.push(m):f.push(p)}const{sendDraftMail:u}=yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"mutation")({sendDraftMail:[{temporaryRecipients:f,recipients:a,draftMailId:n.mailIntegrityId,customMessage:s},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on SendDraftMailResponse":{__typename:!0,sendDraftMail:!0}}]});return u?u.__typename==="ErrorAccessDenied"||u.__typename==="ErrorBasic"?u:u.sendDraftMail?{__typename:"SuccessResponse",data:u.sendDraftMail}:null:null})}sendWaitingEmails(){return _chunkXDPEU3HVcjs.h.call(void 0, this,null,function*(){const r=yield this.sentMails();if(!r)return{__typename:"SuccessResponse",data:!1};if(r.__typename!=="SuccessResponse")return{__typename:"SuccessResponse",data:!1};const s=r.data.filter(e=>e.temporaryRecipients.length>0);for(const e of s)for(const{email:n}of e.temporaryRecipients)if(!!n)try{const a=yield this._eachUser(e.files,e.subject,e.body,n);if(!a)continue;yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"mutation")({sendOneMail:[{mailIntegrityId:e.mailIntegrityId,recipient:a},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on RecoverNodeResponse":{__typename:!0,recoverNode:!0}}]})}catch(a){continue}return{__typename:"SuccessResponse",data:!1}})}createDraft(f){return _chunkXDPEU3HVcjs.h.call(void 0, this,arguments,function*({body:r,subject:s,files:e,recipientsIds:n,replyTo:a}){const u=_indexjs.sodium.randombytes_buf(_indexjs.sodium.crypto_generichash_KEYBYTES,"hex"),p=_indexjs.sodium.crypto_generichash(_indexjs.sodium.crypto_generichash_BYTES,JSON.stringify({body:r,subject:s}),u,"hex"),m=new Array;for(const _ of e){let M=_cachejs.filesCache.get(_.id);if(!M&&(yield _chunkXDPEU3HVcjs.d.call(void 0, this,g).cloud.fileMetadata({id:_.id}),M=_cachejs.filesCache.get(_.id),!M))throw new Error(`File ${_.name} (${_.id}) does not exists`);m.push({id:M.id,fileKey:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(M.key),_chunkXDPEU3HVcjs.d.call(void 0, this,o).publicKey,_chunkXDPEU3HVcjs.d.call(void 0, this,o).privateKey)),name:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(_.name),_chunkXDPEU3HVcjs.d.call(void 0, this,o).publicKey,_chunkXDPEU3HVcjs.d.call(void 0, this,o).privateKey))})}const{createDraftMail:h}=yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"mutation",{scalars:{DateTime:{decode:_=>new Date(_),encode:_=>_.toISOString()}}})({createDraftMail:[{recipients:n,replyTo:a,body:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(r),_chunkXDPEU3HVcjs.d.call(void 0, this,o).publicKey,_chunkXDPEU3HVcjs.d.call(void 0, this,o).privateKey)),subject:_indexjs.sodium.to_hex(_indexjs.encryptCryptoBox.call(void 0, _indexjs.sodium.from_string(s),_chunkXDPEU3HVcjs.d.call(void 0, this,o).publicKey,_chunkXDPEU3HVcjs.d.call(void 0, this,o).privateKey)),senderFiles:m,hash:p,hashKey:u},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on CreateDraftMailResponse":{__typename:!0,createDraftMail:_selectorsjs.mailSelector}}]});if(!h)return null;if(h.__typename==="ErrorAccessDenied"||h.__typename==="ErrorBasic")return h;if(!h.createDraftMail)return null;const S=_mailjs.convertInternalMailToExternal.call(void 0, h.createDraftMail,_chunkXDPEU3HVcjs.d.call(void 0, this,o));return{__typename:"SuccessResponse",data:S}})}read(s){return _chunkXDPEU3HVcjs.h.call(void 0, this,arguments,function*({mailId:r}){const{readMail:e}=yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"mutation")({readMail:[{mailId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on ReadMailResponse":{__typename:!0,readMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"||e.__typename==="ErrorBasic"||e.__typename==="ErrorNotFound"?e:e.readMail?{__typename:"SuccessResponse",data:e.readMail}:null:null})}unread(s){return _chunkXDPEU3HVcjs.h.call(void 0, this,arguments,function*({mailId:r}){const{unreadMail:e}=yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"mutation")({unreadMail:[{mailId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on UnreadMailResponse":{__typename:!0,unreadMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"||e.__typename==="ErrorBasic"||e.__typename==="ErrorNotFound"?e:e.unreadMail?{__typename:"SuccessResponse",data:e.unreadMail}:null:null})}receivedMails(){return _chunkXDPEU3HVcjs.h.call(void 0, this,null,function*(){const{user:r}=yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"query",{scalars:{DateTime:{decode:e=>new Date(e),encode:e=>e.toISOString()}}})({user:[{},{"...on ErrorNotFound":{__typename:!0,message:!0},"...on UserResponse":{__typename:!0,user:{receivedMails:_selectorsjs.mailSelector}}}]});if(!r)return null;if(r.__typename==="ErrorNotFound")return r;if(!r.user)return null;const s=new Array;for(const e of r.user.receivedMails){const n=_mailjs.convertInternalMailToExternal.call(void 0, e,_chunkXDPEU3HVcjs.d.call(void 0, this,o));n&&s.push(n)}return{__typename:"SuccessResponse",data:s}})}sentMails(){return _chunkXDPEU3HVcjs.h.call(void 0, this,null,function*(){const{user:r}=yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"query",{scalars:{DateTime:{decode:e=>new Date(e),encode:e=>e.toISOString()}}})({user:[{},{"...on ErrorNotFound":{__typename:!0,message:!0},"...on UserResponse":{__typename:!0,user:{sentMails:_selectorsjs.mailSelector}}}]});if(!r)return null;if(r.__typename==="ErrorNotFound")return r;if(!r.user)return null;const s=new Array;for(const e of r.user.sentMails){const n=_mailjs.convertInternalMailToExternal.call(void 0, e,_chunkXDPEU3HVcjs.d.call(void 0, this,o));n&&s.push(n)}return{__typename:"SuccessResponse",data:s}})}draftMails(){return _chunkXDPEU3HVcjs.h.call(void 0, this,null,function*(){const{user:r}=yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"query",{scalars:{DateTime:{decode:e=>new Date(e),encode:e=>e.toISOString()}}})({user:[{},{"...on ErrorNotFound":{__typename:!0,message:!0},"...on UserResponse":{__typename:!0,user:{draftMails:_selectorsjs.mailSelector}}}]});if(!r)return null;if(r.__typename==="ErrorNotFound")return r;if(!r.user)return null;const s=new Array;for(const e of r.user.draftMails){const n=_mailjs.convertInternalMailToExternal.call(void 0, e,_chunkXDPEU3HVcjs.d.call(void 0, this,o));n&&s.push(n)}return{__typename:"SuccessResponse",data:s}})}unreadReceivedMailsCount(){return _chunkXDPEU3HVcjs.h.call(void 0, this,null,function*(){const{unreadReceivedMailsCount:r}=yield _chunkXDPEU3HVcjs.d.call(void 0, this,c).call(this,"query")({unreadReceivedMailsCount:{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on UnreadReceivedMailsCountResponse":{__typename:!0,count:!0}}});return r?r.__typename==="ErrorAccessDenied"?r:{__typename:"SuccessResponse",data:r.count}:null})}}g=new WeakMap,o=new WeakMap,c=new WeakMap;exports.SecrecyMailClient = q;
|
|
2
2
|
//# sourceMappingURL=SecrecyMailClient.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/client/SecrecyMailClient.ts"],"names":["_client","_keys","_thunder","generate","filesCache","usersCache","encryptCryptoBox","sodium","convertInternalMailToExternal","mailSelector","SecrecyMailClient","client","keys","thunder","__privateAdd","__publicField","files","subject","body","idOrMail","req","__privateGet","e","recipientsFiles","f","fileInHistory","key","__privateSet","id","mail","result","mailId","recoverMail","mailType","deletedMails","mails","m","data","customMessage","user","__spreadProps","__spreadValues","draftId","recipientsIds","replyTo","drafts","d","hashKey","hash","senderFiles","file","updateDraftMail","_a","deleteDraftMail","ids","deleteMailTrash","emptyMailTrash","deleteMail","draft","recipients","temporaryRecipients","email","input","sendDraftMail","filtered","createDraftMail","readMail","unreadMail","receivedMails","sentMails","draftMails","unreadReceivedMailsCount"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { generate } from \"shortid\";\nimport { filesCache, usersCache } from \"../cache.js\";\nimport type { ErrorAccessDenied, ErrorBasic, ErrorNotFound } from \"../error.js\";\nimport type {\n SuccessResponse,\n KeyPair,\n NewMail,\n SecrecyClient\n} from \"../index.js\";\nimport { encryptCryptoBox, sodium } from \"../index.js\";\nimport type { MailType, Thunder } from \"../zeus/index.js\";\nimport { convertInternalMailToExternal } from \"./convert/mail.js\";\nimport type {\n DraftMail,\n Mail,\n MailFileInput,\n MailRecipientInput,\n ReceivedMail,\n SentMail,\n WaitingReceivedMail\n} from \"./types/index.js\";\nimport { mailSelector } from \"./types/selectors.js\";\n\nexport class SecrecyMailClient {\n #client: SecrecyClient;\n\n #keys: KeyPair;\n\n #thunder: ReturnType<typeof Thunder>;\n\n constructor(\n client: SecrecyClient,\n keys: KeyPair,\n thunder: ReturnType<typeof Thunder>\n ) {\n this.#client = client;\n this.#keys = keys;\n this.#thunder = thunder;\n }\n\n async get({\n id\n }: {\n id: string;\n }): Promise<SuccessResponse<Mail> | ErrorAccessDenied | null> {\n const { mail } = await this.#thunder(\"query\", {\n scalars: {\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n }\n }\n })({\n mail: [\n {\n id\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on QueryMailResponse\": {\n __typename: true,\n mail: mailSelector\n }\n }\n ]\n });\n\n if (!mail) {\n return null;\n }\n\n if (mail.__typename === \"ErrorAccessDenied\") {\n return mail;\n }\n\n if (!mail.mail) {\n return null;\n }\n\n const result = convertInternalMailToExternal(mail.mail, this.#keys);\n\n if (!result) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: result\n };\n }\n\n async recover({\n mailId\n }: {\n mailId: string;\n }): Promise<\n SuccessResponse<boolean> | ErrorAccessDenied | ErrorBasic | null\n > {\n const { recoverMail } = await this.#thunder(\"mutation\")({\n recoverMail: [\n { mailId },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on RecoverMailResponse\": {\n __typename: true,\n recoverMail: true\n }\n }\n ]\n });\n\n if (!recoverMail) {\n return null;\n }\n\n if (recoverMail.__typename === \"ErrorAccessDenied\") {\n return recoverMail;\n }\n\n if (recoverMail.__typename === \"ErrorBasic\") {\n return recoverMail;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: recoverMail.recoverMail\n };\n }\n\n async deletedMails({\n mailType\n }: {\n mailType: MailType;\n }): Promise<SuccessResponse<Mail[]> | ErrorAccessDenied | null> {\n const { deletedMails } = await this.#thunder(\"query\", {\n scalars: {\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n }\n }\n })({\n deletedMails: [\n { mailType },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on DeletedMailsResponse\": {\n __typename: true,\n deletedMails: mailSelector\n }\n }\n ]\n });\n\n if (!deletedMails) {\n return null;\n }\n\n if (deletedMails.__typename === \"ErrorAccessDenied\") {\n return deletedMails;\n }\n\n const mails = new Array<Mail>();\n\n for (const m of deletedMails.deletedMails) {\n const mail = convertInternalMailToExternal(m, this.#keys);\n if (mail) {\n mails.push(mail);\n }\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: mails\n };\n }\n\n async create(\n data: NewMail,\n customMessage?: string | null | undefined\n ): Promise<SuccessResponse<boolean> | ErrorBasic | ErrorAccessDenied | null> {\n const mail = await this.createDraft(data);\n if (!mail) {\n return {\n __typename: \"SuccessResponse\",\n data: false\n };\n }\n\n if (mail.__typename === \"ErrorBasic\") {\n return mail;\n }\n\n if (mail.__typename === \"ErrorAccessDenied\") {\n return mail;\n }\n\n const result = await this.sendDraft(\n mail.data.mailIntegrityId,\n customMessage\n );\n\n if (!result) {\n return null;\n }\n\n if (result.__typename === \"ErrorAccessDenied\") {\n return result;\n }\n\n if (result.__typename === \"ErrorBasic\") {\n return result;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: result.data\n };\n }\n\n async waitingReceivedMails(): Promise<\n SuccessResponse<WaitingReceivedMail[]> | ErrorNotFound | null\n > {\n const { user } = await this.#thunder(\"query\")({\n user: [\n {},\n {\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on UserResponse\": {\n __typename: true,\n user: {\n waitingReceivedMails: {\n date: true,\n attachmentsCount: true,\n sender: {\n id: true,\n firstname: true,\n lastname: true,\n email: true,\n publicKey: true\n },\n recipients: {\n id: true,\n firstname: true,\n lastname: true,\n email: true,\n publicKey: true\n },\n temporaryRecipients: {\n email: true\n }\n }\n }\n }\n }\n ]\n });\n\n if (!user) {\n return null;\n }\n\n if (user.__typename === \"ErrorNotFound\") {\n return user;\n }\n\n if (!user.user) {\n return null;\n }\n\n const result = user.user.waitingReceivedMails.map(m => ({\n id: generate(),\n ...m,\n date: new Date(m.date as string)\n }));\n\n return {\n __typename: \"SuccessResponse\",\n data: result\n };\n }\n\n async updateDraft(\n draftId: string,\n { body, subject, files, recipientsIds, replyTo }: Partial<NewMail>\n ): Promise<\n | SuccessResponse<DraftMail>\n | ErrorNotFound\n | ErrorAccessDenied\n | ErrorBasic\n | null\n > {\n const drafts = await this.draftMails();\n if (!drafts) {\n return null;\n }\n\n if (drafts.__typename !== \"SuccessResponse\") {\n return drafts;\n }\n const draft = drafts.data.find(d => d.mailIntegrityId === draftId);\n if (!draft) {\n throw new Error(`Invalid draft ${draftId}`);\n }\n let hashKey: string | null = null;\n let hash: string | null = null;\n if (body || subject) {\n hashKey = sodium.randombytes_buf(\n sodium.crypto_generichash_KEYBYTES,\n \"hex\"\n );\n hash = sodium.crypto_generichash(\n sodium.crypto_generichash_BYTES,\n JSON.stringify({ body, subject }),\n hashKey,\n \"hex\"\n );\n }\n const senderFiles = new Array<MailFileInput>();\n if (files) {\n for (const f of files) {\n let file = filesCache.get(f.id);\n if (!file) {\n await this.#client.cloud.fileMetadata({ id: f.id });\n file = filesCache.get(f.id);\n if (!file) {\n throw new Error(`File ${f.name} (${f.id}) does not exists`);\n }\n }\n senderFiles.push({\n id: file.id,\n fileKey: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(file.key),\n this.#keys.publicKey,\n this.#keys.privateKey\n )\n ),\n name: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(f.name),\n this.#keys.publicKey,\n this.#keys.privateKey\n )\n )\n });\n }\n }\n\n const { updateDraftMail } = await this.#thunder(\"mutation\", {\n scalars: {\n Json: {\n encode: (e: unknown) => JSON.stringify(e),\n decode: (e: unknown) => JSON.parse(e as string)\n },\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n },\n BigInt: {\n decode: (e: unknown) => BigInt(e as string),\n encode: (e: unknown) => (e as bigint).toString()\n }\n }\n })({\n updateDraftMail: [\n {\n draftId,\n recipients: recipientsIds,\n replyTo,\n body: body\n ? sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(body),\n this.#keys.publicKey,\n this.#keys.privateKey\n )\n )\n : null,\n subject: subject\n ? sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(subject),\n this.#keys.publicKey,\n this.#keys.privateKey\n )\n )\n : null,\n senderFiles,\n hash,\n hashKey\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on UpdateDraftMailResponse\": {\n __typename: true,\n updateDraftMail: mailSelector\n }\n }\n ]\n });\n\n if (!updateDraftMail) {\n return null;\n }\n\n if (updateDraftMail.__typename === \"ErrorAccessDenied\") {\n return updateDraftMail;\n }\n\n if (updateDraftMail.__typename === \"ErrorBasic\") {\n return updateDraftMail;\n }\n\n if (!updateDraftMail.updateDraftMail) {\n return null;\n }\n\n const result = convertInternalMailToExternal(\n updateDraftMail.updateDraftMail,\n this.#keys\n ) as DraftMail;\n\n return {\n __typename: \"SuccessResponse\",\n data: result\n };\n }\n\n async deleteDraft(\n draftId: string\n ): Promise<SuccessResponse<boolean> | ErrorAccessDenied | null> {\n const { deleteDraftMail } = await this.#thunder(\"mutation\")({\n deleteDraftMail: [\n {\n draftId\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on DeleteDraftMailResponse\": {\n __typename: true,\n deleteDraftMail: true\n }\n }\n ]\n });\n\n if (!deleteDraftMail) {\n return null;\n }\n\n if (deleteDraftMail.__typename === \"ErrorAccessDenied\") {\n return deleteDraftMail;\n }\n\n if (!deleteDraftMail.deleteDraftMail) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: deleteDraftMail.deleteDraftMail ?? false\n };\n }\n\n async deleteTrash({\n ids\n }: {\n ids: Array<string>;\n }): Promise<SuccessResponse<boolean> | ErrorAccessDenied | null> {\n const { deleteMailTrash } = await this.#thunder(\"mutation\")({\n deleteMailTrash: [\n {\n ids\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on DeleteMailTrashResponse\": {\n __typename: true,\n deleteMailTrash: true\n }\n }\n ]\n });\n\n if (!deleteMailTrash) {\n return null;\n }\n\n if (deleteMailTrash.__typename === \"ErrorAccessDenied\") {\n return deleteMailTrash;\n }\n\n if (!deleteMailTrash.deleteMailTrash) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: deleteMailTrash.deleteMailTrash\n };\n }\n\n async emptyTrash(): Promise<\n SuccessResponse<boolean> | ErrorAccessDenied | null\n > {\n const { emptyMailTrash } = await this.#thunder(\"mutation\")({\n emptyMailTrash: {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on EmptyMailTrashResponse\": {\n __typename: true,\n emptyMailTrash: true\n }\n }\n });\n\n if (!emptyMailTrash) {\n return null;\n }\n\n if (emptyMailTrash.__typename === \"ErrorAccessDenied\") {\n return emptyMailTrash;\n }\n\n if (!emptyMailTrash.emptyMailTrash) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: emptyMailTrash.emptyMailTrash\n };\n }\n\n async delete({\n mailId\n }: {\n mailId: string;\n }): Promise<SuccessResponse<boolean> | ErrorAccessDenied | null> {\n const { deleteMail } = await this.#thunder(\"mutation\")({\n deleteMail: [\n {\n mailId\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on DeleteMailResponse\": {\n __typename: true,\n deleteMail: true\n }\n }\n ]\n });\n\n if (!deleteMail) {\n return null;\n }\n\n if (deleteMail.__typename === \"ErrorAccessDenied\") {\n return deleteMail;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: deleteMail.deleteMail\n };\n }\n\n async sendDraft(\n draftId: string,\n customMessage?: string | null | undefined\n ): Promise<SuccessResponse<boolean> | ErrorAccessDenied | ErrorBasic | null> {\n const drafts = await this.draftMails();\n\n if (!drafts) {\n return {\n __typename: \"SuccessResponse\",\n data: false\n };\n }\n if (drafts.__typename !== \"SuccessResponse\") {\n return {\n __typename: \"SuccessResponse\",\n data: false\n };\n }\n\n const draft = drafts.data.find(d => d.mailIntegrityId === draftId);\n if (!draft) {\n return {\n __typename: \"SuccessResponse\",\n data: false\n };\n }\n const recipients = new Array<MailRecipientInput>();\n\n const temporaryRecipients = new Array<string>();\n\n for (const { email } of draft.temporaryRecipients) {\n if (!email) {\n continue;\n }\n const input = await this._eachUser(\n draft.files,\n draft.subject,\n draft.body,\n email\n );\n\n if (!input) {\n temporaryRecipients.push(email);\n } else {\n recipients.push(input);\n }\n }\n\n for (const { id } of draft.recipients) {\n const input = await this._eachUser(\n draft.files,\n draft.subject,\n draft.body,\n id\n );\n\n if (!input) {\n temporaryRecipients.push(id);\n } else {\n recipients.push(input);\n }\n }\n\n const { sendDraftMail } = await this.#thunder(\"mutation\")({\n sendDraftMail: [\n {\n temporaryRecipients,\n recipients,\n draftMailId: draft.mailIntegrityId,\n customMessage\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on SendDraftMailResponse\": {\n __typename: true,\n sendDraftMail: true\n }\n }\n ]\n });\n\n if (!sendDraftMail) {\n return null;\n }\n\n if (sendDraftMail.__typename === \"ErrorAccessDenied\") {\n return sendDraftMail;\n }\n\n if (sendDraftMail.__typename === \"ErrorBasic\") {\n return sendDraftMail;\n }\n\n if (!sendDraftMail.sendDraftMail) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: sendDraftMail.sendDraftMail\n };\n }\n\n async sendWaitingEmails(): Promise<\n SuccessResponse<boolean> | ErrorAccessDenied | ErrorBasic | null\n > {\n // TODO opti this\n const mails = await this.sentMails();\n\n if (!mails) {\n return {\n __typename: \"SuccessResponse\",\n data: false\n };\n }\n if (mails.__typename !== \"SuccessResponse\") {\n return {\n __typename: \"SuccessResponse\",\n data: false\n };\n }\n const filtered = mails.data.filter(m => m.temporaryRecipients.length > 0);\n\n for (const mail of filtered) {\n for (const { email } of mail.temporaryRecipients) {\n if (!email) {\n continue;\n }\n try {\n const input = await this._eachUser(\n mail.files,\n mail.subject,\n mail.body,\n email\n );\n\n if (!input) {\n continue;\n }\n await this.#thunder(\"mutation\")({\n sendOneMail: [\n {\n mailIntegrityId: mail.mailIntegrityId,\n recipient: input\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on RecoverNodeResponse\": {\n __typename: true,\n recoverNode: true\n }\n }\n ]\n });\n } catch {\n continue;\n }\n }\n }\n return {\n __typename: \"SuccessResponse\",\n data: false\n };\n }\n\n async createDraft({\n body,\n subject,\n files,\n recipientsIds,\n replyTo\n }: NewMail): Promise<\n SuccessResponse<DraftMail> | ErrorAccessDenied | ErrorBasic | null\n > {\n const hashKey = sodium.randombytes_buf(\n sodium.crypto_generichash_KEYBYTES,\n \"hex\"\n );\n const hash = sodium.crypto_generichash(\n sodium.crypto_generichash_BYTES,\n JSON.stringify({ body, subject }),\n hashKey,\n \"hex\"\n );\n const senderFiles = new Array<MailFileInput>();\n for (const f of files) {\n let file = filesCache.get(f.id);\n if (!file) {\n await this.#client.cloud.fileMetadata({ id: f.id });\n file = filesCache.get(f.id);\n if (!file) {\n throw new Error(`File ${f.name} (${f.id}) does not exists`);\n }\n }\n senderFiles.push({\n id: file.id,\n fileKey: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(file.key),\n this.#keys.publicKey,\n this.#keys.privateKey\n )\n ),\n name: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(f.name),\n this.#keys.publicKey,\n this.#keys.privateKey\n )\n )\n });\n }\n\n const { createDraftMail } = await this.#thunder(\"mutation\", {\n scalars: {\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n }\n }\n })({\n createDraftMail: [\n {\n recipients: recipientsIds,\n replyTo,\n body: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(body),\n this.#keys.publicKey,\n this.#keys.privateKey\n )\n ),\n subject: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(subject),\n this.#keys.publicKey,\n this.#keys.privateKey\n )\n ),\n senderFiles,\n hash,\n hashKey\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on CreateDraftMailResponse\": {\n __typename: true,\n createDraftMail: mailSelector\n }\n }\n ]\n });\n\n if (!createDraftMail) {\n return null;\n }\n\n if (createDraftMail.__typename === \"ErrorAccessDenied\") {\n return createDraftMail;\n }\n\n if (createDraftMail.__typename === \"ErrorBasic\") {\n return createDraftMail;\n }\n\n if (!createDraftMail.createDraftMail) {\n return null;\n }\n\n const result = convertInternalMailToExternal(\n createDraftMail.createDraftMail,\n this.#keys\n ) as DraftMail;\n\n return {\n __typename: \"SuccessResponse\",\n data: result\n };\n }\n\n async read({\n mailId\n }: {\n mailId: string;\n }): Promise<\n | SuccessResponse<boolean>\n | ErrorAccessDenied\n | ErrorBasic\n | ErrorNotFound\n | null\n > {\n const { readMail } = await this.#thunder(\"mutation\")({\n readMail: [\n { mailId },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on ReadMailResponse\": {\n __typename: true,\n readMail: true\n }\n }\n ]\n });\n\n if (!readMail) {\n return null;\n }\n\n if (readMail.__typename === \"ErrorAccessDenied\") {\n return readMail;\n }\n\n if (readMail.__typename === \"ErrorBasic\") {\n return readMail;\n }\n\n if (readMail.__typename === \"ErrorNotFound\") {\n return readMail;\n }\n\n if (!readMail.readMail) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: readMail.readMail\n };\n }\n\n async unread({\n mailId\n }: {\n mailId: string;\n }): Promise<\n | SuccessResponse<boolean>\n | ErrorAccessDenied\n | ErrorBasic\n | ErrorNotFound\n | null\n > {\n const { unreadMail } = await this.#thunder(\"mutation\")({\n unreadMail: [\n { mailId },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on UnreadMailResponse\": {\n __typename: true,\n unreadMail: true\n }\n }\n ]\n });\n\n if (!unreadMail) {\n return null;\n }\n\n if (unreadMail.__typename === \"ErrorAccessDenied\") {\n return unreadMail;\n }\n\n if (unreadMail.__typename === \"ErrorBasic\") {\n return unreadMail;\n }\n\n if (unreadMail.__typename === \"ErrorNotFound\") {\n return unreadMail;\n }\n\n if (!unreadMail.unreadMail) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: unreadMail.unreadMail\n };\n }\n\n async receivedMails(): Promise<\n SuccessResponse<ReceivedMail[]> | ErrorNotFound | null\n > {\n const { user } = await this.#thunder(\"query\", {\n scalars: {\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n }\n }\n })({\n user: [\n {},\n {\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on UserResponse\": {\n __typename: true,\n user: {\n receivedMails: mailSelector\n }\n }\n }\n ]\n });\n\n if (!user) {\n return null;\n }\n\n if (user.__typename === \"ErrorNotFound\") {\n return user;\n }\n\n if (!user.user) {\n return null;\n }\n\n // TODO get actual mails on this app only\n\n const receivedMails = new Array<ReceivedMail>();\n\n for (const m of user.user.receivedMails) {\n const mail = convertInternalMailToExternal(m, this.#keys);\n if (mail) {\n receivedMails.push(mail as ReceivedMail);\n }\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: receivedMails\n };\n }\n\n async sentMails(): Promise<\n SuccessResponse<SentMail[]> | ErrorNotFound | null\n > {\n const { user } = await this.#thunder(\"query\", {\n scalars: {\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n }\n }\n })({\n user: [\n {},\n {\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on UserResponse\": {\n __typename: true,\n user: {\n sentMails: mailSelector\n }\n }\n }\n ]\n });\n\n if (!user) {\n return null;\n }\n\n if (user.__typename === \"ErrorNotFound\") {\n return user;\n }\n\n if (!user.user) {\n return null;\n }\n\n // TODO get actual mails on this app only\n\n const sentMails = new Array<SentMail>();\n\n for (const m of user.user.sentMails) {\n const mail = convertInternalMailToExternal(m, this.#keys);\n if (mail) {\n sentMails.push(mail as SentMail);\n }\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: sentMails\n };\n }\n\n async draftMails(): Promise<\n SuccessResponse<DraftMail[]> | ErrorNotFound | null\n > {\n const { user } = await this.#thunder(\"query\", {\n scalars: {\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n }\n }\n })({\n user: [\n {},\n {\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on UserResponse\": {\n __typename: true,\n user: {\n draftMails: mailSelector\n }\n }\n }\n ]\n });\n\n if (!user) {\n return null;\n }\n\n if (user.__typename === \"ErrorNotFound\") {\n return user;\n }\n\n if (!user.user) {\n return null;\n }\n\n // TODO get actual mails on this app only\n\n const draftMails = new Array<DraftMail>();\n\n for (const m of user.user.draftMails) {\n const draft = convertInternalMailToExternal(m, this.#keys) as DraftMail;\n if (draft) {\n draftMails.push(draft);\n }\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: draftMails\n };\n }\n\n async unreadReceivedMailsCount(): Promise<\n SuccessResponse<number> | ErrorAccessDenied | null\n > {\n const { unreadReceivedMailsCount } = await this.#thunder(\"query\")({\n unreadReceivedMailsCount: {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on UnreadReceivedMailsCountResponse\": {\n __typename: true,\n count: true\n }\n }\n });\n\n if (!unreadReceivedMailsCount) {\n return null;\n }\n\n if (unreadReceivedMailsCount.__typename === \"ErrorAccessDenied\") {\n return unreadReceivedMailsCount;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: unreadReceivedMailsCount.count\n };\n }\n\n private _eachUser = async (\n files: { id: string; name: string }[],\n subject: string,\n body: string,\n idOrMail: string\n ): Promise<MailRecipientInput | null> => {\n let u = usersCache.get(idOrMail);\n\n if (!u || !(\"publicKey\" in u)) {\n try {\n const req = await this.#client.user({\n userId: idOrMail,\n withPublicKey: true\n });\n if (!req) {\n return null;\n }\n if (req.__typename !== \"SuccessResponse\") {\n return null;\n }\n u = req.data;\n } catch {\n return null;\n }\n\n if (!u) {\n return null;\n }\n }\n\n if (!(\"publicKey\" in u)) {\n throw new Error(`User ${idOrMail} have no public key`);\n }\n\n const recipientsFiles = new Array<MailFileInput>();\n\n for (const f of files) {\n let fileInHistory = filesCache.get(f.id);\n if (!fileInHistory) {\n await this.#client.cloud.fileMetadata({ id: f.id });\n fileInHistory = filesCache.get(f.id);\n if (!fileInHistory) {\n throw new Error(`File ${f.name} (${f.id}) does not exists`);\n }\n }\n const key = fileInHistory.key;\n recipientsFiles.push({\n id: f.id,\n name: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(f.name),\n u.publicKey,\n this.#keys.privateKey\n )\n ),\n fileKey: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_hex(key),\n u.publicKey,\n this.#keys.privateKey\n )\n )\n });\n }\n\n return {\n recipientId: u.id,\n body: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(body),\n u.publicKey,\n this.#keys.privateKey\n )\n ),\n subject: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(subject),\n u.publicKey,\n this.#keys.privateKey\n )\n ),\n files: recipientsFiles\n };\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/client/SecrecyMailClient.ts"],"names":["_client","_keys","_thunder","generate","filesCache","usersCache","encryptCryptoBox","sodium","convertInternalMailToExternal","mailSelector","SecrecyMailClient","client","keys","thunder","__privateAdd","__publicField","files","subject","body","idOrMail","__async","u","req","__privateGet","e","recipientsFiles","f","fileInHistory","key","__privateSet","_0","id","mail","result","mailId","recoverMail","mailType","deletedMails","mails","m","data","customMessage","user","__spreadProps","__spreadValues","_1","draftId","recipientsIds","replyTo","drafts","hashKey","hash","senderFiles","file","updateDraftMail","_a","deleteDraftMail","ids","deleteMailTrash","emptyMailTrash","deleteMail","draft","d","recipients","temporaryRecipients","email","input","sendDraftMail","filtered","createDraftMail","readMail","unreadMail","receivedMails","sentMails","draftMails","unreadReceivedMailsCount"],"mappings":"oFAAA,IAAAA,EAAAC,EAAAC,EACA,OAAS,YAAAC,MAAgB,UACzB,OAAS,cAAAC,EAAY,cAAAC,MAAkB,cAQvC,OAAS,oBAAAC,EAAkB,UAAAC,MAAc,cAEzC,OAAS,iCAAAC,MAAqC,oBAU9C,OAAS,gBAAAC,MAAoB,uBAEtB,MAAMC,CAAkB,CAO7B,YACEC,EACAC,EACAC,EACA,CAVFC,EAAA,KAAAd,EAAA,QAEAc,EAAA,KAAAb,EAAA,QAEAa,EAAA,KAAAZ,EAAA,QA+qCAa,EAAA,KAAQ,YAAY,CAClBC,EACAC,EACAC,EACAC,IACuCC,EAAA,sBACvC,IAAIC,EAAIhB,EAAW,IAAIc,CAAQ,EAE/B,GAAI,CAACE,GAAK,EAAE,cAAeA,GAAI,CAC7B,GAAI,CACF,MAAMC,EAAM,MAAMC,EAAA,KAAKvB,GAAQ,KAAK,CAClC,OAAQmB,EACR,cAAe,EACjB,CAAC,EAID,GAHI,CAACG,GAGDA,EAAI,aAAe,kBACrB,OAAO,KAETD,EAAIC,EAAI,IACV,OAAQE,EAAN,CACA,OAAO,IACT,CAEA,GAAI,CAACH,EACH,OAAO,IAEX,CAEA,GAAI,EAAE,cAAeA,GACnB,MAAM,IAAI,MAAM,QAAQF,sBAA6B,EAGvD,MAAMM,EAAkB,IAAI,MAE5B,UAAWC,KAAKV,EAAO,CACrB,IAAIW,EAAgBvB,EAAW,IAAIsB,EAAE,EAAE,EACvC,GAAI,CAACC,IACH,MAAMJ,EAAA,KAAKvB,GAAQ,MAAM,aAAa,CAAE,GAAI0B,EAAE,EAAG,CAAC,EAClDC,EAAgBvB,EAAW,IAAIsB,EAAE,EAAE,EAC/B,CAACC,GACH,MAAM,IAAI,MAAM,QAAQD,EAAE,SAASA,EAAE,qBAAqB,EAG9D,MAAME,EAAMD,EAAc,IAC1BF,EAAgB,KAAK,CACnB,GAAIC,EAAE,GACN,KAAMnB,EAAO,OACXD,EACEC,EAAO,YAAYmB,EAAE,IAAI,EACzBL,EAAE,UACFE,EAAA,KAAKtB,GAAM,UACb,CACF,EACA,QAASM,EAAO,OACdD,EACEC,EAAO,SAASqB,CAAG,EACnBP,EAAE,UACFE,EAAA,KAAKtB,GAAM,UACb,CACF,CACF,CAAC,CACH,CAEA,MAAO,CACL,YAAaoB,EAAE,GACf,KAAMd,EAAO,OACXD,EACEC,EAAO,YAAYW,CAAI,EACvBG,EAAE,UACFE,EAAA,KAAKtB,GAAM,UACb,CACF,EACA,QAASM,EAAO,OACdD,EACEC,EAAO,YAAYU,CAAO,EAC1BI,EAAE,UACFE,EAAA,KAAKtB,GAAM,UACb,CACF,EACA,MAAOwB,CACT,CACF,IA3vCEI,EAAA,KAAK7B,EAAUW,GACfkB,EAAA,KAAK5B,EAAQW,GACbiB,EAAA,KAAK3B,EAAWW,EAClB,CAEM,IAAIiB,EAIoD,QAAAV,EAAA,yBAJpD,CACR,GAAAW,CACF,EAE8D,CAC5D,KAAM,CAAE,KAAAC,CAAK,EAAI,MAAMT,EAAA,KAAKrB,GAAL,UAAc,QAAS,CAC5C,QAAS,CACP,SAAU,CACR,OAASsB,GAAe,IAAI,KAAKA,CAAW,EAC5C,OAASA,GAAgBA,EAAW,YAAY,CAClD,CACF,CACF,GAAG,CACD,KAAM,CACJ,CACE,GAAAO,CACF,EACA,CACE,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,0BAA2B,CACzB,WAAY,GACZ,KAAMtB,CACR,CACF,CACF,CACF,CAAC,EAED,GAAI,CAACuB,EACH,OAAO,KAGT,GAAIA,EAAK,aAAe,oBACtB,OAAOA,EAGT,GAAI,CAACA,EAAK,KACR,OAAO,KAGT,MAAMC,EAASzB,EAA8BwB,EAAK,KAAMT,EAAA,KAAKtB,EAAK,EAElE,OAAKgC,EAIE,CACL,WAAY,kBACZ,KAAMA,CACR,EANS,IAOX,GAEM,QAAQH,EAMZ,QAAAV,EAAA,yBANY,CACZ,OAAAc,CACF,EAIE,CACA,KAAM,CAAE,YAAAC,CAAY,EAAI,MAAMZ,EAAA,KAAKrB,GAAL,UAAc,YAAY,CACtD,YAAa,CACX,CAAE,OAAAgC,CAAO,EACT,CACE,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,mBAAoB,CAClB,WAAY,GACZ,QAAS,EACX,EACA,4BAA6B,CAC3B,WAAY,GACZ,YAAa,EACf,CACF,CACF,CACF,CAAC,EAED,OAAKC,EAIDA,EAAY,aAAe,qBAI3BA,EAAY,aAAe,aACtBA,EAGF,CACL,WAAY,kBACZ,KAAMA,EAAY,WACpB,EAdS,IAeX,GAEM,aAAaL,EAI6C,QAAAV,EAAA,yBAJ7C,CACjB,SAAAgB,CACF,EAEgE,CAC9D,KAAM,CAAE,aAAAC,CAAa,EAAI,MAAMd,EAAA,KAAKrB,GAAL,UAAc,QAAS,CACpD,QAAS,CACP,SAAU,CACR,OAASsB,GAAe,IAAI,KAAKA,CAAW,EAC5C,OAASA,GAAgBA,EAAW,YAAY,CAClD,CACF,CACF,GAAG,CACD,aAAc,CACZ,CAAE,SAAAY,CAAS,EACX,CACE,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,6BAA8B,CAC5B,WAAY,GACZ,aAAc3B,CAChB,CACF,CACF,CACF,CAAC,EAED,GAAI,CAAC4B,EACH,OAAO,KAGT,GAAIA,EAAa,aAAe,oBAC9B,OAAOA,EAGT,MAAMC,EAAQ,IAAI,MAElB,UAAWC,KAAKF,EAAa,aAAc,CACzC,MAAML,EAAOxB,EAA8B+B,EAAGhB,EAAA,KAAKtB,EAAK,EACpD+B,GACFM,EAAM,KAAKN,CAAI,CAEnB,CAEA,MAAO,CACL,WAAY,kBACZ,KAAMM,CACR,CACF,GAEM,OACJE,EACAC,EAC2E,QAAArB,EAAA,sBAC3E,MAAMY,EAAO,MAAM,KAAK,YAAYQ,CAAI,EACxC,GAAI,CAACR,EACH,MAAO,CACL,WAAY,kBACZ,KAAM,EACR,EAOF,GAJIA,EAAK,aAAe,cAIpBA,EAAK,aAAe,oBACtB,OAAOA,EAGT,MAAMC,EAAS,MAAM,KAAK,UACxBD,EAAK,KAAK,gBACVS,CACF,EAEA,OAAKR,EAIDA,EAAO,aAAe,qBAItBA,EAAO,aAAe,aACjBA,EAGF,CACL,WAAY,kBACZ,KAAMA,EAAO,IACf,EAdS,IAeX,GAEM,sBAEJ,QAAAb,EAAA,sBACA,KAAM,CAAE,KAAAsB,CAAK,EAAI,MAAMnB,EAAA,KAAKrB,GAAL,UAAc,SAAS,CAC5C,KAAM,CACJ,CAAC,EACD,CACE,sBAAuB,CACrB,WAAY,GACZ,QAAS,EACX,EACA,qBAAsB,CACpB,WAAY,GACZ,KAAM,CACJ,qBAAsB,CACpB,KAAM,GACN,iBAAkB,GAClB,OAAQ,CACN,GAAI,GACJ,UAAW,GACX,SAAU,GACV,MAAO,GACP,UAAW,EACb,EACA,WAAY,CACV,GAAI,GACJ,UAAW,GACX,SAAU,GACV,MAAO,GACP,UAAW,EACb,EACA,oBAAqB,CACnB,MAAO,EACT,CACF,CACF,CACF,CACF,CACF,CACF,CAAC,EAED,GAAI,CAACwC,EACH,OAAO,KAGT,GAAIA,EAAK,aAAe,gBACtB,OAAOA,EAGT,GAAI,CAACA,EAAK,KACR,OAAO,KAGT,MAAMT,EAASS,EAAK,KAAK,qBAAqB,IAAIH,GAAMI,EAAAC,EAAA,CACtD,GAAIzC,EAAS,GACVoC,GAFmD,CAGtD,KAAM,IAAI,KAAKA,EAAE,IAAc,CACjC,EAAE,EAEF,MAAO,CACL,WAAY,kBACZ,KAAMN,CACR,CACF,GAEM,YACJH,EACAe,EAOA,QAAAzB,EAAA,yBARA0B,EACA,CAAE,KAAA5B,EAAM,QAAAD,EAAS,MAAAD,EAAO,cAAA+B,EAAe,QAAAC,CAAQ,EAO/C,CACA,MAAMC,EAAS,MAAM,KAAK,WAAW,EACrC,GAAI,CAACA,EACH,OAAO,KAGT,GAAIA,EAAO,aAAe,kBACxB,OAAOA,EAGT,GAAI,CADUA,EAAO,KAAK,KAAK,GAAK,EAAE,kBAAoBH,CAAO,EAE/D,MAAM,IAAI,MAAM,iBAAiBA,GAAS,EAE5C,IAAII,EAAyB,KACzBC,EAAsB,MACtBjC,GAAQD,KACViC,EAAU3C,EAAO,gBACfA,EAAO,4BACP,KACF,EACA4C,EAAO5C,EAAO,mBACZA,EAAO,yBACP,KAAK,UAAU,CAAE,KAAAW,EAAM,QAAAD,CAAQ,CAAC,EAChCiC,EACA,KACF,GAEF,MAAME,EAAc,IAAI,MACxB,GAAIpC,EACF,UAAWU,KAAKV,EAAO,CACrB,IAAIqC,EAAOjD,EAAW,IAAIsB,EAAE,EAAE,EAC9B,GAAI,CAAC2B,IACH,MAAM9B,EAAA,KAAKvB,GAAQ,MAAM,aAAa,CAAE,GAAI0B,EAAE,EAAG,CAAC,EAClD2B,EAAOjD,EAAW,IAAIsB,EAAE,EAAE,EACtB,CAAC2B,GACH,MAAM,IAAI,MAAM,QAAQ3B,EAAE,SAASA,EAAE,qBAAqB,EAG9D0B,EAAY,KAAK,CACf,GAAIC,EAAK,GACT,QAAS9C,EAAO,OACdD,EACEC,EAAO,YAAY8C,EAAK,GAAG,EAC3B9B,EAAA,KAAKtB,GAAM,UACXsB,EAAA,KAAKtB,GAAM,UACb,CACF,EACA,KAAMM,EAAO,OACXD,EACEC,EAAO,YAAYmB,EAAE,IAAI,EACzBH,EAAA,KAAKtB,GAAM,UACXsB,EAAA,KAAKtB,GAAM,UACb,CACF,CACF,CAAC,CACH,CAGF,KAAM,CAAE,gBAAAqD,CAAgB,EAAI,MAAM/B,EAAA,KAAKrB,GAAL,UAAc,WAAY,CAC1D,QAAS,CACP,KAAM,CACJ,OAASsB,GAAe,KAAK,UAAUA,CAAC,EACxC,OAASA,GAAe,KAAK,MAAMA,CAAW,CAChD,EACA,SAAU,CACR,OAASA,GAAe,IAAI,KAAKA,CAAW,EAC5C,OAASA,GAAgBA,EAAW,YAAY,CAClD,EACA,OAAQ,CACN,OAASA,GAAe,OAAOA,CAAW,EAC1C,OAASA,GAAgBA,EAAa,SAAS,CACjD,CACF,CACF,GAAG,CACD,gBAAiB,CACf,CACE,QAAAsB,EACA,WAAYC,EACZ,QAAAC,EACA,KAAM9B,EACFX,EAAO,OACLD,EACEC,EAAO,YAAYW,CAAI,EACvBK,EAAA,KAAKtB,GAAM,UACXsB,EAAA,KAAKtB,GAAM,UACb,CACF,EACA,KACJ,QAASgB,EACLV,EAAO,OACLD,EACEC,EAAO,YAAYU,CAAO,EAC1BM,EAAA,KAAKtB,GAAM,UACXsB,EAAA,KAAKtB,GAAM,UACb,CACF,EACA,KACJ,YAAAmD,EACA,KAAAD,EACA,QAAAD,CACF,EACA,CACE,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,mBAAoB,CAClB,WAAY,GACZ,QAAS,EACX,EACA,gCAAiC,CAC/B,WAAY,GACZ,gBAAiBzC,CACnB,CACF,CACF,CACF,CAAC,EAED,GAAI,CAAC6C,EACH,OAAO,KAOT,GAJIA,EAAgB,aAAe,qBAI/BA,EAAgB,aAAe,aACjC,OAAOA,EAGT,GAAI,CAACA,EAAgB,gBACnB,OAAO,KAGT,MAAMrB,EAASzB,EACb8C,EAAgB,gBAChB/B,EAAA,KAAKtB,EACP,EAEA,MAAO,CACL,WAAY,kBACZ,KAAMgC,CACR,CACF,GAEM,YACJa,EAC8D,QAAA1B,EAAA,sBAvclE,IAAAmC,EAwcI,KAAM,CAAE,gBAAAC,CAAgB,EAAI,MAAMjC,EAAA,KAAKrB,GAAL,UAAc,YAAY,CAC1D,gBAAiB,CACf,CACE,QAAA4C,CACF,EACA,CACE,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,gCAAiC,CAC/B,WAAY,GACZ,gBAAiB,EACnB,CACF,CACF,CACF,CAAC,EAED,OAAKU,EAIDA,EAAgB,aAAe,oBAC1BA,EAGJA,EAAgB,gBAId,CACL,WAAY,kBACZ,MAAMD,EAAAC,EAAgB,kBAAhB,KAAAD,EAAmC,EAC3C,EANS,KARA,IAeX,GAEM,YAAYzB,EAI+C,QAAAV,EAAA,yBAJ/C,CAChB,IAAAqC,CACF,EAEiE,CAC/D,KAAM,CAAE,gBAAAC,CAAgB,EAAI,MAAMnC,EAAA,KAAKrB,GAAL,UAAc,YAAY,CAC1D,gBAAiB,CACf,CACE,IAAAuD,CACF,EACA,CACE,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,gCAAiC,CAC/B,WAAY,GACZ,gBAAiB,EACnB,CACF,CACF,CACF,CAAC,EAED,OAAKC,EAIDA,EAAgB,aAAe,oBAC1BA,EAGJA,EAAgB,gBAId,CACL,WAAY,kBACZ,KAAMA,EAAgB,eACxB,EANS,KARA,IAeX,GAEM,YAEJ,QAAAtC,EAAA,sBACA,KAAM,CAAE,eAAAuC,CAAe,EAAI,MAAMpC,EAAA,KAAKrB,GAAL,UAAc,YAAY,CACzD,eAAgB,CACd,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,+BAAgC,CAC9B,WAAY,GACZ,eAAgB,EAClB,CACF,CACF,CAAC,EAED,OAAKyD,EAIDA,EAAe,aAAe,oBACzBA,EAGJA,EAAe,eAIb,CACL,WAAY,kBACZ,KAAMA,EAAe,cACvB,EANS,KARA,IAeX,GAEM,OAAO7B,EAIoD,QAAAV,EAAA,yBAJpD,CACX,OAAAc,CACF,EAEiE,CAC/D,KAAM,CAAE,WAAA0B,CAAW,EAAI,MAAMrC,EAAA,KAAKrB,GAAL,UAAc,YAAY,CACrD,WAAY,CACV,CACE,OAAAgC,CACF,EACA,CACE,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,2BAA4B,CAC1B,WAAY,GACZ,WAAY,EACd,CACF,CACF,CACF,CAAC,EAED,OAAK0B,EAIDA,EAAW,aAAe,oBACrBA,EAGF,CACL,WAAY,kBACZ,KAAMA,EAAW,UACnB,EAVS,IAWX,GAEM,UACJd,EACAL,EAC2E,QAAArB,EAAA,sBAC3E,MAAM6B,EAAS,MAAM,KAAK,WAAW,EAErC,GAAI,CAACA,EACH,MAAO,CACL,WAAY,kBACZ,KAAM,EACR,EAEF,GAAIA,EAAO,aAAe,kBACxB,MAAO,CACL,WAAY,kBACZ,KAAM,EACR,EAGF,MAAMY,EAAQZ,EAAO,KAAK,KAAKa,GAAKA,EAAE,kBAAoBhB,CAAO,EACjE,GAAI,CAACe,EACH,MAAO,CACL,WAAY,kBACZ,KAAM,EACR,EAEF,MAAME,EAAa,IAAI,MAEjBC,EAAsB,IAAI,MAEhC,SAAW,CAAE,MAAAC,CAAM,IAAKJ,EAAM,oBAAqB,CACjD,GAAI,CAACI,EACH,SAEF,MAAMC,EAAQ,MAAM,KAAK,UACvBL,EAAM,MACNA,EAAM,QACNA,EAAM,KACNI,CACF,EAEKC,EAGHH,EAAW,KAAKG,CAAK,EAFrBF,EAAoB,KAAKC,CAAK,CAIlC,CAEA,SAAW,CAAE,GAAAlC,CAAG,IAAK8B,EAAM,WAAY,CACrC,MAAMK,EAAQ,MAAM,KAAK,UACvBL,EAAM,MACNA,EAAM,QACNA,EAAM,KACN9B,CACF,EAEKmC,EAGHH,EAAW,KAAKG,CAAK,EAFrBF,EAAoB,KAAKjC,CAAE,CAI/B,CAEA,KAAM,CAAE,cAAAoC,CAAc,EAAI,MAAM5C,EAAA,KAAKrB,GAAL,UAAc,YAAY,CACxD,cAAe,CACb,CACE,oBAAA8D,EACA,WAAAD,EACA,YAAaF,EAAM,gBACnB,cAAApB,CACF,EACA,CACE,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,mBAAoB,CAClB,WAAY,GACZ,QAAS,EACX,EACA,8BAA+B,CAC7B,WAAY,GACZ,cAAe,EACjB,CACF,CACF,CACF,CAAC,EAED,OAAK0B,EAIDA,EAAc,aAAe,qBAI7BA,EAAc,aAAe,aACxBA,EAGJA,EAAc,cAIZ,CACL,WAAY,kBACZ,KAAMA,EAAc,aACtB,EANS,KAZA,IAmBX,GAEM,mBAEJ,QAAA/C,EAAA,sBAEA,MAAMkB,EAAQ,MAAM,KAAK,UAAU,EAEnC,GAAI,CAACA,EACH,MAAO,CACL,WAAY,kBACZ,KAAM,EACR,EAEF,GAAIA,EAAM,aAAe,kBACvB,MAAO,CACL,WAAY,kBACZ,KAAM,EACR,EAEF,MAAM8B,EAAW9B,EAAM,KAAK,OAAOC,GAAKA,EAAE,oBAAoB,OAAS,CAAC,EAExE,UAAWP,KAAQoC,EACjB,SAAW,CAAE,MAAAH,CAAM,IAAKjC,EAAK,oBAC3B,GAAI,EAACiC,EAGL,GAAI,CACF,MAAMC,EAAQ,MAAM,KAAK,UACvBlC,EAAK,MACLA,EAAK,QACLA,EAAK,KACLiC,CACF,EAEA,GAAI,CAACC,EACH,SAEF,MAAM3C,EAAA,KAAKrB,GAAL,UAAc,YAAY,CAC9B,YAAa,CACX,CACE,gBAAiB8B,EAAK,gBACtB,UAAWkC,CACb,EACA,CACE,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,mBAAoB,CAClB,WAAY,GACZ,QAAS,EACX,EACA,4BAA6B,CAC3B,WAAY,GACZ,YAAa,EACf,CACF,CACF,CACF,CAAC,CACH,OAAQ1C,EAAN,CACA,QACF,CAGJ,MAAO,CACL,WAAY,kBACZ,KAAM,EACR,CACF,GAEM,YAAYM,EAQhB,QAAAV,EAAA,yBARgB,CAChB,KAAAF,EACA,QAAAD,EACA,MAAAD,EACA,cAAA+B,EACA,QAAAC,CACF,EAEE,CACA,MAAME,EAAU3C,EAAO,gBACrBA,EAAO,4BACP,KACF,EACM4C,EAAO5C,EAAO,mBAClBA,EAAO,yBACP,KAAK,UAAU,CAAE,KAAAW,EAAM,QAAAD,CAAQ,CAAC,EAChCiC,EACA,KACF,EACME,EAAc,IAAI,MACxB,UAAW1B,KAAKV,EAAO,CACrB,IAAIqC,EAAOjD,EAAW,IAAIsB,EAAE,EAAE,EAC9B,GAAI,CAAC2B,IACH,MAAM9B,EAAA,KAAKvB,GAAQ,MAAM,aAAa,CAAE,GAAI0B,EAAE,EAAG,CAAC,EAClD2B,EAAOjD,EAAW,IAAIsB,EAAE,EAAE,EACtB,CAAC2B,GACH,MAAM,IAAI,MAAM,QAAQ3B,EAAE,SAASA,EAAE,qBAAqB,EAG9D0B,EAAY,KAAK,CACf,GAAIC,EAAK,GACT,QAAS9C,EAAO,OACdD,EACEC,EAAO,YAAY8C,EAAK,GAAG,EAC3B9B,EAAA,KAAKtB,GAAM,UACXsB,EAAA,KAAKtB,GAAM,UACb,CACF,EACA,KAAMM,EAAO,OACXD,EACEC,EAAO,YAAYmB,EAAE,IAAI,EACzBH,EAAA,KAAKtB,GAAM,UACXsB,EAAA,KAAKtB,GAAM,UACb,CACF,CACF,CAAC,CACH,CAEA,KAAM,CAAE,gBAAAoE,CAAgB,EAAI,MAAM9C,EAAA,KAAKrB,GAAL,UAAc,WAAY,CAC1D,QAAS,CACP,SAAU,CACR,OAASsB,GAAe,IAAI,KAAKA,CAAW,EAC5C,OAASA,GAAgBA,EAAW,YAAY,CAClD,CACF,CACF,GAAG,CACD,gBAAiB,CACf,CACE,WAAYuB,EACZ,QAAAC,EACA,KAAMzC,EAAO,OACXD,EACEC,EAAO,YAAYW,CAAI,EACvBK,EAAA,KAAKtB,GAAM,UACXsB,EAAA,KAAKtB,GAAM,UACb,CACF,EACA,QAASM,EAAO,OACdD,EACEC,EAAO,YAAYU,CAAO,EAC1BM,EAAA,KAAKtB,GAAM,UACXsB,EAAA,KAAKtB,GAAM,UACb,CACF,EACA,YAAAmD,EACA,KAAAD,EACA,QAAAD,CACF,EACA,CACE,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,mBAAoB,CAClB,WAAY,GACZ,QAAS,EACX,EACA,gCAAiC,CAC/B,WAAY,GACZ,gBAAiBzC,CACnB,CACF,CACF,CACF,CAAC,EAED,GAAI,CAAC4D,EACH,OAAO,KAOT,GAJIA,EAAgB,aAAe,qBAI/BA,EAAgB,aAAe,aACjC,OAAOA,EAGT,GAAI,CAACA,EAAgB,gBACnB,OAAO,KAGT,MAAMpC,EAASzB,EACb6D,EAAgB,gBAChB9C,EAAA,KAAKtB,EACP,EAEA,MAAO,CACL,WAAY,kBACZ,KAAMgC,CACR,CACF,GAEM,KAAKH,EAUT,QAAAV,EAAA,yBAVS,CACT,OAAAc,CACF,EAQE,CACA,KAAM,CAAE,SAAAoC,CAAS,EAAI,MAAM/C,EAAA,KAAKrB,GAAL,UAAc,YAAY,CACnD,SAAU,CACR,CAAE,OAAAgC,CAAO,EACT,CACE,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,mBAAoB,CAClB,WAAY,GACZ,QAAS,EACX,EACA,sBAAuB,CACrB,WAAY,GACZ,QAAS,EACX,EACA,yBAA0B,CACxB,WAAY,GACZ,SAAU,EACZ,CACF,CACF,CACF,CAAC,EAED,OAAKoC,EAIDA,EAAS,aAAe,qBAIxBA,EAAS,aAAe,cAIxBA,EAAS,aAAe,gBACnBA,EAGJA,EAAS,SAIP,CACL,WAAY,kBACZ,KAAMA,EAAS,QACjB,EANS,KAhBA,IAuBX,GAEM,OAAOxC,EAUX,QAAAV,EAAA,yBAVW,CACX,OAAAc,CACF,EAQE,CACA,KAAM,CAAE,WAAAqC,CAAW,EAAI,MAAMhD,EAAA,KAAKrB,GAAL,UAAc,YAAY,CACrD,WAAY,CACV,CAAE,OAAAgC,CAAO,EACT,CACE,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,mBAAoB,CAClB,WAAY,GACZ,QAAS,EACX,EACA,sBAAuB,CACrB,WAAY,GACZ,QAAS,EACX,EACA,2BAA4B,CAC1B,WAAY,GACZ,WAAY,EACd,CACF,CACF,CACF,CAAC,EAED,OAAKqC,EAIDA,EAAW,aAAe,qBAI1BA,EAAW,aAAe,cAI1BA,EAAW,aAAe,gBACrBA,EAGJA,EAAW,WAIT,CACL,WAAY,kBACZ,KAAMA,EAAW,UACnB,EANS,KAhBA,IAuBX,GAEM,eAEJ,QAAAnD,EAAA,sBACA,KAAM,CAAE,KAAAsB,CAAK,EAAI,MAAMnB,EAAA,KAAKrB,GAAL,UAAc,QAAS,CAC5C,QAAS,CACP,SAAU,CACR,OAAS,GAAe,IAAI,KAAK,CAAW,EAC5C,OAAS,GAAgB,EAAW,YAAY,CAClD,CACF,CACF,GAAG,CACD,KAAM,CACJ,CAAC,EACD,CACE,sBAAuB,CACrB,WAAY,GACZ,QAAS,EACX,EACA,qBAAsB,CACpB,WAAY,GACZ,KAAM,CACJ,cAAeO,CACjB,CACF,CACF,CACF,CACF,CAAC,EAED,GAAI,CAACiC,EACH,OAAO,KAGT,GAAIA,EAAK,aAAe,gBACtB,OAAOA,EAGT,GAAI,CAACA,EAAK,KACR,OAAO,KAKT,MAAM8B,EAAgB,IAAI,MAE1B,UAAWjC,KAAKG,EAAK,KAAK,cAAe,CACvC,MAAMV,EAAOxB,EAA8B+B,EAAGhB,EAAA,KAAKtB,EAAK,EACpD+B,GACFwC,EAAc,KAAKxC,CAAoB,CAE3C,CAEA,MAAO,CACL,WAAY,kBACZ,KAAMwC,CACR,CACF,GAEM,WAEJ,QAAApD,EAAA,sBACA,KAAM,CAAE,KAAAsB,CAAK,EAAI,MAAMnB,EAAA,KAAKrB,GAAL,UAAc,QAAS,CAC5C,QAAS,CACP,SAAU,CACR,OAAS,GAAe,IAAI,KAAK,CAAW,EAC5C,OAAS,GAAgB,EAAW,YAAY,CAClD,CACF,CACF,GAAG,CACD,KAAM,CACJ,CAAC,EACD,CACE,sBAAuB,CACrB,WAAY,GACZ,QAAS,EACX,EACA,qBAAsB,CACpB,WAAY,GACZ,KAAM,CACJ,UAAWO,CACb,CACF,CACF,CACF,CACF,CAAC,EAED,GAAI,CAACiC,EACH,OAAO,KAGT,GAAIA,EAAK,aAAe,gBACtB,OAAOA,EAGT,GAAI,CAACA,EAAK,KACR,OAAO,KAKT,MAAM+B,EAAY,IAAI,MAEtB,UAAWlC,KAAKG,EAAK,KAAK,UAAW,CACnC,MAAMV,EAAOxB,EAA8B+B,EAAGhB,EAAA,KAAKtB,EAAK,EACpD+B,GACFyC,EAAU,KAAKzC,CAAgB,CAEnC,CAEA,MAAO,CACL,WAAY,kBACZ,KAAMyC,CACR,CACF,GAEM,YAEJ,QAAArD,EAAA,sBACA,KAAM,CAAE,KAAAsB,CAAK,EAAI,MAAMnB,EAAA,KAAKrB,GAAL,UAAc,QAAS,CAC5C,QAAS,CACP,SAAU,CACR,OAAS,GAAe,IAAI,KAAK,CAAW,EAC5C,OAAS,GAAgB,EAAW,YAAY,CAClD,CACF,CACF,GAAG,CACD,KAAM,CACJ,CAAC,EACD,CACE,sBAAuB,CACrB,WAAY,GACZ,QAAS,EACX,EACA,qBAAsB,CACpB,WAAY,GACZ,KAAM,CACJ,WAAYO,CACd,CACF,CACF,CACF,CACF,CAAC,EAED,GAAI,CAACiC,EACH,OAAO,KAGT,GAAIA,EAAK,aAAe,gBACtB,OAAOA,EAGT,GAAI,CAACA,EAAK,KACR,OAAO,KAKT,MAAMgC,EAAa,IAAI,MAEvB,UAAWnC,KAAKG,EAAK,KAAK,WAAY,CACpC,MAAMmB,EAAQrD,EAA8B+B,EAAGhB,EAAA,KAAKtB,EAAK,EACrD4D,GACFa,EAAW,KAAKb,CAAK,CAEzB,CAEA,MAAO,CACL,WAAY,kBACZ,KAAMa,CACR,CACF,GAEM,0BAEJ,QAAAtD,EAAA,sBACA,KAAM,CAAE,yBAAAuD,CAAyB,EAAI,MAAMpD,EAAA,KAAKrB,GAAL,UAAc,SAAS,CAChE,yBAA0B,CACxB,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,yCAA0C,CACxC,WAAY,GACZ,MAAO,EACT,CACF,CACF,CAAC,EAED,OAAKyE,EAIDA,EAAyB,aAAe,oBACnCA,EAGF,CACL,WAAY,kBACZ,KAAMA,EAAyB,KACjC,EAVS,IAWX,GAsFF,CAvwCE3E,EAAA,YAEAC,EAAA,YAEAC,EAAA","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { generate } from \"shortid\";\nimport { filesCache, usersCache } from \"../cache.js\";\nimport type { ErrorAccessDenied, ErrorBasic, ErrorNotFound } from \"../error.js\";\nimport type {\n SuccessResponse,\n KeyPair,\n NewMail,\n SecrecyClient\n} from \"../index.js\";\nimport { encryptCryptoBox, sodium } from \"../index.js\";\nimport type { MailType, Thunder } from \"../zeus/index.js\";\nimport { convertInternalMailToExternal } from \"./convert/mail.js\";\nimport type {\n DraftMail,\n Mail,\n MailFileInput,\n MailRecipientInput,\n ReceivedMail,\n SentMail,\n WaitingReceivedMail\n} from \"./types/index.js\";\nimport { mailSelector } from \"./types/selectors.js\";\n\nexport class SecrecyMailClient {\n #client: SecrecyClient;\n\n #keys: KeyPair;\n\n #thunder: ReturnType<typeof Thunder>;\n\n constructor(\n client: SecrecyClient,\n keys: KeyPair,\n thunder: ReturnType<typeof Thunder>\n ) {\n this.#client = client;\n this.#keys = keys;\n this.#thunder = thunder;\n }\n\n async get({\n id\n }: {\n id: string;\n }): Promise<SuccessResponse<Mail> | ErrorAccessDenied | null> {\n const { mail } = await this.#thunder(\"query\", {\n scalars: {\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n }\n }\n })({\n mail: [\n {\n id\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on QueryMailResponse\": {\n __typename: true,\n mail: mailSelector\n }\n }\n ]\n });\n\n if (!mail) {\n return null;\n }\n\n if (mail.__typename === \"ErrorAccessDenied\") {\n return mail;\n }\n\n if (!mail.mail) {\n return null;\n }\n\n const result = convertInternalMailToExternal(mail.mail, this.#keys);\n\n if (!result) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: result\n };\n }\n\n async recover({\n mailId\n }: {\n mailId: string;\n }): Promise<\n SuccessResponse<boolean> | ErrorAccessDenied | ErrorBasic | null\n > {\n const { recoverMail } = await this.#thunder(\"mutation\")({\n recoverMail: [\n { mailId },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on RecoverMailResponse\": {\n __typename: true,\n recoverMail: true\n }\n }\n ]\n });\n\n if (!recoverMail) {\n return null;\n }\n\n if (recoverMail.__typename === \"ErrorAccessDenied\") {\n return recoverMail;\n }\n\n if (recoverMail.__typename === \"ErrorBasic\") {\n return recoverMail;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: recoverMail.recoverMail\n };\n }\n\n async deletedMails({\n mailType\n }: {\n mailType: MailType;\n }): Promise<SuccessResponse<Mail[]> | ErrorAccessDenied | null> {\n const { deletedMails } = await this.#thunder(\"query\", {\n scalars: {\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n }\n }\n })({\n deletedMails: [\n { mailType },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on DeletedMailsResponse\": {\n __typename: true,\n deletedMails: mailSelector\n }\n }\n ]\n });\n\n if (!deletedMails) {\n return null;\n }\n\n if (deletedMails.__typename === \"ErrorAccessDenied\") {\n return deletedMails;\n }\n\n const mails = new Array<Mail>();\n\n for (const m of deletedMails.deletedMails) {\n const mail = convertInternalMailToExternal(m, this.#keys);\n if (mail) {\n mails.push(mail);\n }\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: mails\n };\n }\n\n async create(\n data: NewMail,\n customMessage?: string | null | undefined\n ): Promise<SuccessResponse<boolean> | ErrorBasic | ErrorAccessDenied | null> {\n const mail = await this.createDraft(data);\n if (!mail) {\n return {\n __typename: \"SuccessResponse\",\n data: false\n };\n }\n\n if (mail.__typename === \"ErrorBasic\") {\n return mail;\n }\n\n if (mail.__typename === \"ErrorAccessDenied\") {\n return mail;\n }\n\n const result = await this.sendDraft(\n mail.data.mailIntegrityId,\n customMessage\n );\n\n if (!result) {\n return null;\n }\n\n if (result.__typename === \"ErrorAccessDenied\") {\n return result;\n }\n\n if (result.__typename === \"ErrorBasic\") {\n return result;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: result.data\n };\n }\n\n async waitingReceivedMails(): Promise<\n SuccessResponse<WaitingReceivedMail[]> | ErrorNotFound | null\n > {\n const { user } = await this.#thunder(\"query\")({\n user: [\n {},\n {\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on UserResponse\": {\n __typename: true,\n user: {\n waitingReceivedMails: {\n date: true,\n attachmentsCount: true,\n sender: {\n id: true,\n firstname: true,\n lastname: true,\n email: true,\n publicKey: true\n },\n recipients: {\n id: true,\n firstname: true,\n lastname: true,\n email: true,\n publicKey: true\n },\n temporaryRecipients: {\n email: true\n }\n }\n }\n }\n }\n ]\n });\n\n if (!user) {\n return null;\n }\n\n if (user.__typename === \"ErrorNotFound\") {\n return user;\n }\n\n if (!user.user) {\n return null;\n }\n\n const result = user.user.waitingReceivedMails.map(m => ({\n id: generate(),\n ...m,\n date: new Date(m.date as string)\n }));\n\n return {\n __typename: \"SuccessResponse\",\n data: result\n };\n }\n\n async updateDraft(\n draftId: string,\n { body, subject, files, recipientsIds, replyTo }: Partial<NewMail>\n ): Promise<\n | SuccessResponse<DraftMail>\n | ErrorNotFound\n | ErrorAccessDenied\n | ErrorBasic\n | null\n > {\n const drafts = await this.draftMails();\n if (!drafts) {\n return null;\n }\n\n if (drafts.__typename !== \"SuccessResponse\") {\n return drafts;\n }\n const draft = drafts.data.find(d => d.mailIntegrityId === draftId);\n if (!draft) {\n throw new Error(`Invalid draft ${draftId}`);\n }\n let hashKey: string | null = null;\n let hash: string | null = null;\n if (body || subject) {\n hashKey = sodium.randombytes_buf(\n sodium.crypto_generichash_KEYBYTES,\n \"hex\"\n );\n hash = sodium.crypto_generichash(\n sodium.crypto_generichash_BYTES,\n JSON.stringify({ body, subject }),\n hashKey,\n \"hex\"\n );\n }\n const senderFiles = new Array<MailFileInput>();\n if (files) {\n for (const f of files) {\n let file = filesCache.get(f.id);\n if (!file) {\n await this.#client.cloud.fileMetadata({ id: f.id });\n file = filesCache.get(f.id);\n if (!file) {\n throw new Error(`File ${f.name} (${f.id}) does not exists`);\n }\n }\n senderFiles.push({\n id: file.id,\n fileKey: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(file.key),\n this.#keys.publicKey,\n this.#keys.privateKey\n )\n ),\n name: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(f.name),\n this.#keys.publicKey,\n this.#keys.privateKey\n )\n )\n });\n }\n }\n\n const { updateDraftMail } = await this.#thunder(\"mutation\", {\n scalars: {\n Json: {\n encode: (e: unknown) => JSON.stringify(e),\n decode: (e: unknown) => JSON.parse(e as string)\n },\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n },\n BigInt: {\n decode: (e: unknown) => BigInt(e as string),\n encode: (e: unknown) => (e as bigint).toString()\n }\n }\n })({\n updateDraftMail: [\n {\n draftId,\n recipients: recipientsIds,\n replyTo,\n body: body\n ? sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(body),\n this.#keys.publicKey,\n this.#keys.privateKey\n )\n )\n : null,\n subject: subject\n ? sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(subject),\n this.#keys.publicKey,\n this.#keys.privateKey\n )\n )\n : null,\n senderFiles,\n hash,\n hashKey\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on UpdateDraftMailResponse\": {\n __typename: true,\n updateDraftMail: mailSelector\n }\n }\n ]\n });\n\n if (!updateDraftMail) {\n return null;\n }\n\n if (updateDraftMail.__typename === \"ErrorAccessDenied\") {\n return updateDraftMail;\n }\n\n if (updateDraftMail.__typename === \"ErrorBasic\") {\n return updateDraftMail;\n }\n\n if (!updateDraftMail.updateDraftMail) {\n return null;\n }\n\n const result = convertInternalMailToExternal(\n updateDraftMail.updateDraftMail,\n this.#keys\n ) as DraftMail;\n\n return {\n __typename: \"SuccessResponse\",\n data: result\n };\n }\n\n async deleteDraft(\n draftId: string\n ): Promise<SuccessResponse<boolean> | ErrorAccessDenied | null> {\n const { deleteDraftMail } = await this.#thunder(\"mutation\")({\n deleteDraftMail: [\n {\n draftId\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on DeleteDraftMailResponse\": {\n __typename: true,\n deleteDraftMail: true\n }\n }\n ]\n });\n\n if (!deleteDraftMail) {\n return null;\n }\n\n if (deleteDraftMail.__typename === \"ErrorAccessDenied\") {\n return deleteDraftMail;\n }\n\n if (!deleteDraftMail.deleteDraftMail) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: deleteDraftMail.deleteDraftMail ?? false\n };\n }\n\n async deleteTrash({\n ids\n }: {\n ids: Array<string>;\n }): Promise<SuccessResponse<boolean> | ErrorAccessDenied | null> {\n const { deleteMailTrash } = await this.#thunder(\"mutation\")({\n deleteMailTrash: [\n {\n ids\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on DeleteMailTrashResponse\": {\n __typename: true,\n deleteMailTrash: true\n }\n }\n ]\n });\n\n if (!deleteMailTrash) {\n return null;\n }\n\n if (deleteMailTrash.__typename === \"ErrorAccessDenied\") {\n return deleteMailTrash;\n }\n\n if (!deleteMailTrash.deleteMailTrash) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: deleteMailTrash.deleteMailTrash\n };\n }\n\n async emptyTrash(): Promise<\n SuccessResponse<boolean> | ErrorAccessDenied | null\n > {\n const { emptyMailTrash } = await this.#thunder(\"mutation\")({\n emptyMailTrash: {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on EmptyMailTrashResponse\": {\n __typename: true,\n emptyMailTrash: true\n }\n }\n });\n\n if (!emptyMailTrash) {\n return null;\n }\n\n if (emptyMailTrash.__typename === \"ErrorAccessDenied\") {\n return emptyMailTrash;\n }\n\n if (!emptyMailTrash.emptyMailTrash) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: emptyMailTrash.emptyMailTrash\n };\n }\n\n async delete({\n mailId\n }: {\n mailId: string;\n }): Promise<SuccessResponse<boolean> | ErrorAccessDenied | null> {\n const { deleteMail } = await this.#thunder(\"mutation\")({\n deleteMail: [\n {\n mailId\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on DeleteMailResponse\": {\n __typename: true,\n deleteMail: true\n }\n }\n ]\n });\n\n if (!deleteMail) {\n return null;\n }\n\n if (deleteMail.__typename === \"ErrorAccessDenied\") {\n return deleteMail;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: deleteMail.deleteMail\n };\n }\n\n async sendDraft(\n draftId: string,\n customMessage?: string | null | undefined\n ): Promise<SuccessResponse<boolean> | ErrorAccessDenied | ErrorBasic | null> {\n const drafts = await this.draftMails();\n\n if (!drafts) {\n return {\n __typename: \"SuccessResponse\",\n data: false\n };\n }\n if (drafts.__typename !== \"SuccessResponse\") {\n return {\n __typename: \"SuccessResponse\",\n data: false\n };\n }\n\n const draft = drafts.data.find(d => d.mailIntegrityId === draftId);\n if (!draft) {\n return {\n __typename: \"SuccessResponse\",\n data: false\n };\n }\n const recipients = new Array<MailRecipientInput>();\n\n const temporaryRecipients = new Array<string>();\n\n for (const { email } of draft.temporaryRecipients) {\n if (!email) {\n continue;\n }\n const input = await this._eachUser(\n draft.files,\n draft.subject,\n draft.body,\n email\n );\n\n if (!input) {\n temporaryRecipients.push(email);\n } else {\n recipients.push(input);\n }\n }\n\n for (const { id } of draft.recipients) {\n const input = await this._eachUser(\n draft.files,\n draft.subject,\n draft.body,\n id\n );\n\n if (!input) {\n temporaryRecipients.push(id);\n } else {\n recipients.push(input);\n }\n }\n\n const { sendDraftMail } = await this.#thunder(\"mutation\")({\n sendDraftMail: [\n {\n temporaryRecipients,\n recipients,\n draftMailId: draft.mailIntegrityId,\n customMessage\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on SendDraftMailResponse\": {\n __typename: true,\n sendDraftMail: true\n }\n }\n ]\n });\n\n if (!sendDraftMail) {\n return null;\n }\n\n if (sendDraftMail.__typename === \"ErrorAccessDenied\") {\n return sendDraftMail;\n }\n\n if (sendDraftMail.__typename === \"ErrorBasic\") {\n return sendDraftMail;\n }\n\n if (!sendDraftMail.sendDraftMail) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: sendDraftMail.sendDraftMail\n };\n }\n\n async sendWaitingEmails(): Promise<\n SuccessResponse<boolean> | ErrorAccessDenied | ErrorBasic | null\n > {\n // TODO opti this\n const mails = await this.sentMails();\n\n if (!mails) {\n return {\n __typename: \"SuccessResponse\",\n data: false\n };\n }\n if (mails.__typename !== \"SuccessResponse\") {\n return {\n __typename: \"SuccessResponse\",\n data: false\n };\n }\n const filtered = mails.data.filter(m => m.temporaryRecipients.length > 0);\n\n for (const mail of filtered) {\n for (const { email } of mail.temporaryRecipients) {\n if (!email) {\n continue;\n }\n try {\n const input = await this._eachUser(\n mail.files,\n mail.subject,\n mail.body,\n email\n );\n\n if (!input) {\n continue;\n }\n await this.#thunder(\"mutation\")({\n sendOneMail: [\n {\n mailIntegrityId: mail.mailIntegrityId,\n recipient: input\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on RecoverNodeResponse\": {\n __typename: true,\n recoverNode: true\n }\n }\n ]\n });\n } catch {\n continue;\n }\n }\n }\n return {\n __typename: \"SuccessResponse\",\n data: false\n };\n }\n\n async createDraft({\n body,\n subject,\n files,\n recipientsIds,\n replyTo\n }: NewMail): Promise<\n SuccessResponse<DraftMail> | ErrorAccessDenied | ErrorBasic | null\n > {\n const hashKey = sodium.randombytes_buf(\n sodium.crypto_generichash_KEYBYTES,\n \"hex\"\n );\n const hash = sodium.crypto_generichash(\n sodium.crypto_generichash_BYTES,\n JSON.stringify({ body, subject }),\n hashKey,\n \"hex\"\n );\n const senderFiles = new Array<MailFileInput>();\n for (const f of files) {\n let file = filesCache.get(f.id);\n if (!file) {\n await this.#client.cloud.fileMetadata({ id: f.id });\n file = filesCache.get(f.id);\n if (!file) {\n throw new Error(`File ${f.name} (${f.id}) does not exists`);\n }\n }\n senderFiles.push({\n id: file.id,\n fileKey: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(file.key),\n this.#keys.publicKey,\n this.#keys.privateKey\n )\n ),\n name: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(f.name),\n this.#keys.publicKey,\n this.#keys.privateKey\n )\n )\n });\n }\n\n const { createDraftMail } = await this.#thunder(\"mutation\", {\n scalars: {\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n }\n }\n })({\n createDraftMail: [\n {\n recipients: recipientsIds,\n replyTo,\n body: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(body),\n this.#keys.publicKey,\n this.#keys.privateKey\n )\n ),\n subject: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(subject),\n this.#keys.publicKey,\n this.#keys.privateKey\n )\n ),\n senderFiles,\n hash,\n hashKey\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on CreateDraftMailResponse\": {\n __typename: true,\n createDraftMail: mailSelector\n }\n }\n ]\n });\n\n if (!createDraftMail) {\n return null;\n }\n\n if (createDraftMail.__typename === \"ErrorAccessDenied\") {\n return createDraftMail;\n }\n\n if (createDraftMail.__typename === \"ErrorBasic\") {\n return createDraftMail;\n }\n\n if (!createDraftMail.createDraftMail) {\n return null;\n }\n\n const result = convertInternalMailToExternal(\n createDraftMail.createDraftMail,\n this.#keys\n ) as DraftMail;\n\n return {\n __typename: \"SuccessResponse\",\n data: result\n };\n }\n\n async read({\n mailId\n }: {\n mailId: string;\n }): Promise<\n | SuccessResponse<boolean>\n | ErrorAccessDenied\n | ErrorBasic\n | ErrorNotFound\n | null\n > {\n const { readMail } = await this.#thunder(\"mutation\")({\n readMail: [\n { mailId },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on ReadMailResponse\": {\n __typename: true,\n readMail: true\n }\n }\n ]\n });\n\n if (!readMail) {\n return null;\n }\n\n if (readMail.__typename === \"ErrorAccessDenied\") {\n return readMail;\n }\n\n if (readMail.__typename === \"ErrorBasic\") {\n return readMail;\n }\n\n if (readMail.__typename === \"ErrorNotFound\") {\n return readMail;\n }\n\n if (!readMail.readMail) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: readMail.readMail\n };\n }\n\n async unread({\n mailId\n }: {\n mailId: string;\n }): Promise<\n | SuccessResponse<boolean>\n | ErrorAccessDenied\n | ErrorBasic\n | ErrorNotFound\n | null\n > {\n const { unreadMail } = await this.#thunder(\"mutation\")({\n unreadMail: [\n { mailId },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on UnreadMailResponse\": {\n __typename: true,\n unreadMail: true\n }\n }\n ]\n });\n\n if (!unreadMail) {\n return null;\n }\n\n if (unreadMail.__typename === \"ErrorAccessDenied\") {\n return unreadMail;\n }\n\n if (unreadMail.__typename === \"ErrorBasic\") {\n return unreadMail;\n }\n\n if (unreadMail.__typename === \"ErrorNotFound\") {\n return unreadMail;\n }\n\n if (!unreadMail.unreadMail) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: unreadMail.unreadMail\n };\n }\n\n async receivedMails(): Promise<\n SuccessResponse<ReceivedMail[]> | ErrorNotFound | null\n > {\n const { user } = await this.#thunder(\"query\", {\n scalars: {\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n }\n }\n })({\n user: [\n {},\n {\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on UserResponse\": {\n __typename: true,\n user: {\n receivedMails: mailSelector\n }\n }\n }\n ]\n });\n\n if (!user) {\n return null;\n }\n\n if (user.__typename === \"ErrorNotFound\") {\n return user;\n }\n\n if (!user.user) {\n return null;\n }\n\n // TODO get actual mails on this app only\n\n const receivedMails = new Array<ReceivedMail>();\n\n for (const m of user.user.receivedMails) {\n const mail = convertInternalMailToExternal(m, this.#keys);\n if (mail) {\n receivedMails.push(mail as ReceivedMail);\n }\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: receivedMails\n };\n }\n\n async sentMails(): Promise<\n SuccessResponse<SentMail[]> | ErrorNotFound | null\n > {\n const { user } = await this.#thunder(\"query\", {\n scalars: {\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n }\n }\n })({\n user: [\n {},\n {\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on UserResponse\": {\n __typename: true,\n user: {\n sentMails: mailSelector\n }\n }\n }\n ]\n });\n\n if (!user) {\n return null;\n }\n\n if (user.__typename === \"ErrorNotFound\") {\n return user;\n }\n\n if (!user.user) {\n return null;\n }\n\n // TODO get actual mails on this app only\n\n const sentMails = new Array<SentMail>();\n\n for (const m of user.user.sentMails) {\n const mail = convertInternalMailToExternal(m, this.#keys);\n if (mail) {\n sentMails.push(mail as SentMail);\n }\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: sentMails\n };\n }\n\n async draftMails(): Promise<\n SuccessResponse<DraftMail[]> | ErrorNotFound | null\n > {\n const { user } = await this.#thunder(\"query\", {\n scalars: {\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n }\n }\n })({\n user: [\n {},\n {\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on UserResponse\": {\n __typename: true,\n user: {\n draftMails: mailSelector\n }\n }\n }\n ]\n });\n\n if (!user) {\n return null;\n }\n\n if (user.__typename === \"ErrorNotFound\") {\n return user;\n }\n\n if (!user.user) {\n return null;\n }\n\n // TODO get actual mails on this app only\n\n const draftMails = new Array<DraftMail>();\n\n for (const m of user.user.draftMails) {\n const draft = convertInternalMailToExternal(m, this.#keys) as DraftMail;\n if (draft) {\n draftMails.push(draft);\n }\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: draftMails\n };\n }\n\n async unreadReceivedMailsCount(): Promise<\n SuccessResponse<number> | ErrorAccessDenied | null\n > {\n const { unreadReceivedMailsCount } = await this.#thunder(\"query\")({\n unreadReceivedMailsCount: {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on UnreadReceivedMailsCountResponse\": {\n __typename: true,\n count: true\n }\n }\n });\n\n if (!unreadReceivedMailsCount) {\n return null;\n }\n\n if (unreadReceivedMailsCount.__typename === \"ErrorAccessDenied\") {\n return unreadReceivedMailsCount;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: unreadReceivedMailsCount.count\n };\n }\n\n private _eachUser = async (\n files: { id: string; name: string }[],\n subject: string,\n body: string,\n idOrMail: string\n ): Promise<MailRecipientInput | null> => {\n let u = usersCache.get(idOrMail);\n\n if (!u || !(\"publicKey\" in u)) {\n try {\n const req = await this.#client.user({\n userId: idOrMail,\n withPublicKey: true\n });\n if (!req) {\n return null;\n }\n if (req.__typename !== \"SuccessResponse\") {\n return null;\n }\n u = req.data;\n } catch {\n return null;\n }\n\n if (!u) {\n return null;\n }\n }\n\n if (!(\"publicKey\" in u)) {\n throw new Error(`User ${idOrMail} have no public key`);\n }\n\n const recipientsFiles = new Array<MailFileInput>();\n\n for (const f of files) {\n let fileInHistory = filesCache.get(f.id);\n if (!fileInHistory) {\n await this.#client.cloud.fileMetadata({ id: f.id });\n fileInHistory = filesCache.get(f.id);\n if (!fileInHistory) {\n throw new Error(`File ${f.name} (${f.id}) does not exists`);\n }\n }\n const key = fileInHistory.key;\n recipientsFiles.push({\n id: f.id,\n name: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(f.name),\n u.publicKey,\n this.#keys.privateKey\n )\n ),\n fileKey: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_hex(key),\n u.publicKey,\n this.#keys.privateKey\n )\n )\n });\n }\n\n return {\n recipientId: u.id,\n body: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(body),\n u.publicKey,\n this.#keys.privateKey\n )\n ),\n subject: sodium.to_hex(\n encryptCryptoBox(\n sodium.from_string(subject),\n u.publicKey,\n this.#keys.privateKey\n )\n ),\n files: recipientsFiles\n };\n };\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as A,b as v,c as K,d as n,e as w,f as S}from"../chunk-KMTF2BZE.js";var h,i,c;import{generate as I}from"shortid";import{filesCache as D,usersCache as T}from"../cache.js";import{encryptCryptoBox as y,sodium as a}from"../index.js";import{convertInternalMailToExternal as M}from"./convert/mail.js";import{mailSelector as g}from"./types/selectors.js";class C{constructor(r,e,t){w(this,h,void 0);w(this,i,void 0);w(this,c,void 0);K(this,"_eachUser",async(r,e,t,s)=>{let u=T.get(s);if(!u||!("publicKey"in u)){try{const o=await n(this,h).user({userId:s,withPublicKey:!0});if(!o||o.__typename!=="SuccessResponse")return null;u=o.data}catch(o){return null}if(!u)return null}if(!("publicKey"in u))throw new Error(`User ${s} have no public key`);const f=new Array;for(const o of r){let p=D.get(o.id);if(!p&&(await n(this,h).cloud.fileMetadata({id:o.id}),p=D.get(o.id),!p))throw new Error(`File ${o.name} (${o.id}) does not exists`);const d=p.key;f.push({id:o.id,name:a.to_hex(y(a.from_string(o.name),u.publicKey,n(this,i).privateKey)),fileKey:a.to_hex(y(a.from_hex(d),u.publicKey,n(this,i).privateKey))})}return{recipientId:u.id,body:a.to_hex(y(a.from_string(t),u.publicKey,n(this,i).privateKey)),subject:a.to_hex(y(a.from_string(e),u.publicKey,n(this,i).privateKey)),files:f}});S(this,h,r),S(this,i,e),S(this,c,t)}async get({id:r}){const{mail:e}=await n(this,c).call(this,"query",{scalars:{DateTime:{decode:s=>new Date(s),encode:s=>s.toISOString()}}})({mail:[{id:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on QueryMailResponse":{__typename:!0,mail:g}}]});if(!e)return null;if(e.__typename==="ErrorAccessDenied")return e;if(!e.mail)return null;const t=M(e.mail,n(this,i));return t?{__typename:"SuccessResponse",data:t}:null}async recover({mailId:r}){const{recoverMail:e}=await n(this,c).call(this,"mutation")({recoverMail:[{mailId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on RecoverMailResponse":{__typename:!0,recoverMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"||e.__typename==="ErrorBasic"?e:{__typename:"SuccessResponse",data:e.recoverMail}:null}async deletedMails({mailType:r}){const{deletedMails:e}=await n(this,c).call(this,"query",{scalars:{DateTime:{decode:s=>new Date(s),encode:s=>s.toISOString()}}})({deletedMails:[{mailType:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeletedMailsResponse":{__typename:!0,deletedMails:g}}]});if(!e)return null;if(e.__typename==="ErrorAccessDenied")return e;const t=new Array;for(const s of e.deletedMails){const u=M(s,n(this,i));u&&t.push(u)}return{__typename:"SuccessResponse",data:t}}async create(r,e){const t=await this.createDraft(r);if(!t)return{__typename:"SuccessResponse",data:!1};if(t.__typename==="ErrorBasic"||t.__typename==="ErrorAccessDenied")return t;const s=await this.sendDraft(t.data.mailIntegrityId,e);return s?s.__typename==="ErrorAccessDenied"||s.__typename==="ErrorBasic"?s:{__typename:"SuccessResponse",data:s.data}:null}async waitingReceivedMails(){const{user:r}=await n(this,c).call(this,"query")({user:[{},{"...on ErrorNotFound":{__typename:!0,message:!0},"...on UserResponse":{__typename:!0,user:{waitingReceivedMails:{date:!0,attachmentsCount:!0,sender:{id:!0,firstname:!0,lastname:!0,email:!0,publicKey:!0},recipients:{id:!0,firstname:!0,lastname:!0,email:!0,publicKey:!0},temporaryRecipients:{email:!0}}}}}]});if(!r)return null;if(r.__typename==="ErrorNotFound")return r;if(!r.user)return null;const e=r.user.waitingReceivedMails.map(t=>v(A({id:I()},t),{date:new Date(t.date)}));return{__typename:"SuccessResponse",data:e}}async updateDraft(r,{body:e,subject:t,files:s,recipientsIds:u,replyTo:f}){const o=await this.draftMails();if(!o)return null;if(o.__typename!=="SuccessResponse")return o;if(!o.data.find(l=>l.mailIntegrityId===r))throw new Error(`Invalid draft ${r}`);let d=null,R=null;(e||t)&&(d=a.randombytes_buf(a.crypto_generichash_KEYBYTES,"hex"),R=a.crypto_generichash(a.crypto_generichash_BYTES,JSON.stringify({body:e,subject:t}),d,"hex"));const m=new Array;if(s)for(const l of s){let E=D.get(l.id);if(!E&&(await n(this,h).cloud.fileMetadata({id:l.id}),E=D.get(l.id),!E))throw new Error(`File ${l.name} (${l.id}) does not exists`);m.push({id:E.id,fileKey:a.to_hex(y(a.from_string(E.key),n(this,i).publicKey,n(this,i).privateKey)),name:a.to_hex(y(a.from_string(l.name),n(this,i).publicKey,n(this,i).privateKey))})}const{updateDraftMail:_}=await n(this,c).call(this,"mutation",{scalars:{Json:{encode:l=>JSON.stringify(l),decode:l=>JSON.parse(l)},DateTime:{decode:l=>new Date(l),encode:l=>l.toISOString()},BigInt:{decode:l=>BigInt(l),encode:l=>l.toString()}}})({updateDraftMail:[{draftId:r,recipients:u,replyTo:f,body:e?a.to_hex(y(a.from_string(e),n(this,i).publicKey,n(this,i).privateKey)):null,subject:t?a.to_hex(y(a.from_string(t),n(this,i).publicKey,n(this,i).privateKey)):null,senderFiles:m,hash:R,hashKey:d},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on UpdateDraftMailResponse":{__typename:!0,updateDraftMail:g}}]});if(!_)return null;if(_.__typename==="ErrorAccessDenied"||_.__typename==="ErrorBasic")return _;if(!_.updateDraftMail)return null;const b=M(_.updateDraftMail,n(this,i));return{__typename:"SuccessResponse",data:b}}async deleteDraft(r){var t;const{deleteDraftMail:e}=await n(this,c).call(this,"mutation")({deleteDraftMail:[{draftId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteDraftMailResponse":{__typename:!0,deleteDraftMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"?e:e.deleteDraftMail?{__typename:"SuccessResponse",data:(t=e.deleteDraftMail)!=null?t:!1}:null:null}async deleteTrash({ids:r}){const{deleteMailTrash:e}=await n(this,c).call(this,"mutation")({deleteMailTrash:[{ids:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteMailTrashResponse":{__typename:!0,deleteMailTrash:!0}}]});return e?e.__typename==="ErrorAccessDenied"?e:e.deleteMailTrash?{__typename:"SuccessResponse",data:e.deleteMailTrash}:null:null}async emptyTrash(){const{emptyMailTrash:r}=await n(this,c).call(this,"mutation")({emptyMailTrash:{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on EmptyMailTrashResponse":{__typename:!0,emptyMailTrash:!0}}});return r?r.__typename==="ErrorAccessDenied"?r:r.emptyMailTrash?{__typename:"SuccessResponse",data:r.emptyMailTrash}:null:null}async delete({mailId:r}){const{deleteMail:e}=await n(this,c).call(this,"mutation")({deleteMail:[{mailId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteMailResponse":{__typename:!0,deleteMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"?e:{__typename:"SuccessResponse",data:e.deleteMail}:null}async sendDraft(r,e){const t=await this.draftMails();if(!t)return{__typename:"SuccessResponse",data:!1};if(t.__typename!=="SuccessResponse")return{__typename:"SuccessResponse",data:!1};const s=t.data.find(p=>p.mailIntegrityId===r);if(!s)return{__typename:"SuccessResponse",data:!1};const u=new Array,f=new Array;for(const{email:p}of s.temporaryRecipients){if(!p)continue;const d=await this._eachUser(s.files,s.subject,s.body,p);d?u.push(d):f.push(p)}for(const{id:p}of s.recipients){const d=await this._eachUser(s.files,s.subject,s.body,p);d?u.push(d):f.push(p)}const{sendDraftMail:o}=await n(this,c).call(this,"mutation")({sendDraftMail:[{temporaryRecipients:f,recipients:u,draftMailId:s.mailIntegrityId,customMessage:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on SendDraftMailResponse":{__typename:!0,sendDraftMail:!0}}]});return o?o.__typename==="ErrorAccessDenied"||o.__typename==="ErrorBasic"?o:o.sendDraftMail?{__typename:"SuccessResponse",data:o.sendDraftMail}:null:null}async sendWaitingEmails(){const r=await this.sentMails();if(!r)return{__typename:"SuccessResponse",data:!1};if(r.__typename!=="SuccessResponse")return{__typename:"SuccessResponse",data:!1};const e=r.data.filter(t=>t.temporaryRecipients.length>0);for(const t of e)for(const{email:s}of t.temporaryRecipients)if(!!s)try{const u=await this._eachUser(t.files,t.subject,t.body,s);if(!u)continue;await n(this,c).call(this,"mutation")({sendOneMail:[{mailIntegrityId:t.mailIntegrityId,recipient:u},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on RecoverNodeResponse":{__typename:!0,recoverNode:!0}}]})}catch(u){continue}return{__typename:"SuccessResponse",data:!1}}async createDraft({body:r,subject:e,files:t,recipientsIds:s,replyTo:u}){const f=a.randombytes_buf(a.crypto_generichash_KEYBYTES,"hex"),o=a.crypto_generichash(a.crypto_generichash_BYTES,JSON.stringify({body:r,subject:e}),f,"hex"),p=new Array;for(const m of t){let _=D.get(m.id);if(!_&&(await n(this,h).cloud.fileMetadata({id:m.id}),_=D.get(m.id),!_))throw new Error(`File ${m.name} (${m.id}) does not exists`);p.push({id:_.id,fileKey:a.to_hex(y(a.from_string(_.key),n(this,i).publicKey,n(this,i).privateKey)),name:a.to_hex(y(a.from_string(m.name),n(this,i).publicKey,n(this,i).privateKey))})}const{createDraftMail:d}=await n(this,c).call(this,"mutation",{scalars:{DateTime:{decode:m=>new Date(m),encode:m=>m.toISOString()}}})({createDraftMail:[{recipients:s,replyTo:u,body:a.to_hex(y(a.from_string(r),n(this,i).publicKey,n(this,i).privateKey)),subject:a.to_hex(y(a.from_string(e),n(this,i).publicKey,n(this,i).privateKey)),senderFiles:p,hash:o,hashKey:f},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on CreateDraftMailResponse":{__typename:!0,createDraftMail:g}}]});if(!d)return null;if(d.__typename==="ErrorAccessDenied"||d.__typename==="ErrorBasic")return d;if(!d.createDraftMail)return null;const R=M(d.createDraftMail,n(this,i));return{__typename:"SuccessResponse",data:R}}async read({mailId:r}){const{readMail:e}=await n(this,c).call(this,"mutation")({readMail:[{mailId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on ReadMailResponse":{__typename:!0,readMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"||e.__typename==="ErrorBasic"||e.__typename==="ErrorNotFound"?e:e.readMail?{__typename:"SuccessResponse",data:e.readMail}:null:null}async unread({mailId:r}){const{unreadMail:e}=await n(this,c).call(this,"mutation")({unreadMail:[{mailId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on UnreadMailResponse":{__typename:!0,unreadMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"||e.__typename==="ErrorBasic"||e.__typename==="ErrorNotFound"?e:e.unreadMail?{__typename:"SuccessResponse",data:e.unreadMail}:null:null}async receivedMails(){const{user:r}=await n(this,c).call(this,"query",{scalars:{DateTime:{decode:t=>new Date(t),encode:t=>t.toISOString()}}})({user:[{},{"...on ErrorNotFound":{__typename:!0,message:!0},"...on UserResponse":{__typename:!0,user:{receivedMails:g}}}]});if(!r)return null;if(r.__typename==="ErrorNotFound")return r;if(!r.user)return null;const e=new Array;for(const t of r.user.receivedMails){const s=M(t,n(this,i));s&&e.push(s)}return{__typename:"SuccessResponse",data:e}}async sentMails(){const{user:r}=await n(this,c).call(this,"query",{scalars:{DateTime:{decode:t=>new Date(t),encode:t=>t.toISOString()}}})({user:[{},{"...on ErrorNotFound":{__typename:!0,message:!0},"...on UserResponse":{__typename:!0,user:{sentMails:g}}}]});if(!r)return null;if(r.__typename==="ErrorNotFound")return r;if(!r.user)return null;const e=new Array;for(const t of r.user.sentMails){const s=M(t,n(this,i));s&&e.push(s)}return{__typename:"SuccessResponse",data:e}}async draftMails(){const{user:r}=await n(this,c).call(this,"query",{scalars:{DateTime:{decode:t=>new Date(t),encode:t=>t.toISOString()}}})({user:[{},{"...on ErrorNotFound":{__typename:!0,message:!0},"...on UserResponse":{__typename:!0,user:{draftMails:g}}}]});if(!r)return null;if(r.__typename==="ErrorNotFound")return r;if(!r.user)return null;const e=new Array;for(const t of r.user.draftMails){const s=M(t,n(this,i));s&&e.push(s)}return{__typename:"SuccessResponse",data:e}}async unreadReceivedMailsCount(){const{unreadReceivedMailsCount:r}=await n(this,c).call(this,"query")({unreadReceivedMailsCount:{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on UnreadReceivedMailsCountResponse":{__typename:!0,count:!0}}});return r?r.__typename==="ErrorAccessDenied"?r:{__typename:"SuccessResponse",data:r.count}:null}}h=new WeakMap,i=new WeakMap,c=new WeakMap;export{C as SecrecyMailClient};
|
|
1
|
+
import{a as b,b as I,c as T,d as t,e as v,f as K,h as l}from"../chunk-UPFDSEKI.js";var g,o,c;import{generate as F}from"shortid";import{filesCache as w,usersCache as N}from"../cache.js";import{encryptCryptoBox as y,sodium as i}from"../index.js";import{convertInternalMailToExternal as E}from"./convert/mail.js";import{mailSelector as R}from"./types/selectors.js";class q{constructor(r,s,e){v(this,g,void 0);v(this,o,void 0);v(this,c,void 0);T(this,"_eachUser",(r,s,e,n)=>l(this,null,function*(){let a=N.get(n);if(!a||!("publicKey"in a)){try{const u=yield t(this,g).user({userId:n,withPublicKey:!0});if(!u||u.__typename!=="SuccessResponse")return null;a=u.data}catch(u){return null}if(!a)return null}if(!("publicKey"in a))throw new Error(`User ${n} have no public key`);const f=new Array;for(const u of r){let p=w.get(u.id);if(!p&&(yield t(this,g).cloud.fileMetadata({id:u.id}),p=w.get(u.id),!p))throw new Error(`File ${u.name} (${u.id}) does not exists`);const m=p.key;f.push({id:u.id,name:i.to_hex(y(i.from_string(u.name),a.publicKey,t(this,o).privateKey)),fileKey:i.to_hex(y(i.from_hex(m),a.publicKey,t(this,o).privateKey))})}return{recipientId:a.id,body:i.to_hex(y(i.from_string(e),a.publicKey,t(this,o).privateKey)),subject:i.to_hex(y(i.from_string(s),a.publicKey,t(this,o).privateKey)),files:f}}));K(this,g,r),K(this,o,s),K(this,c,e)}get(s){return l(this,arguments,function*({id:r}){const{mail:e}=yield t(this,c).call(this,"query",{scalars:{DateTime:{decode:a=>new Date(a),encode:a=>a.toISOString()}}})({mail:[{id:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on QueryMailResponse":{__typename:!0,mail:R}}]});if(!e)return null;if(e.__typename==="ErrorAccessDenied")return e;if(!e.mail)return null;const n=E(e.mail,t(this,o));return n?{__typename:"SuccessResponse",data:n}:null})}recover(s){return l(this,arguments,function*({mailId:r}){const{recoverMail:e}=yield t(this,c).call(this,"mutation")({recoverMail:[{mailId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on RecoverMailResponse":{__typename:!0,recoverMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"||e.__typename==="ErrorBasic"?e:{__typename:"SuccessResponse",data:e.recoverMail}:null})}deletedMails(s){return l(this,arguments,function*({mailType:r}){const{deletedMails:e}=yield t(this,c).call(this,"query",{scalars:{DateTime:{decode:a=>new Date(a),encode:a=>a.toISOString()}}})({deletedMails:[{mailType:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeletedMailsResponse":{__typename:!0,deletedMails:R}}]});if(!e)return null;if(e.__typename==="ErrorAccessDenied")return e;const n=new Array;for(const a of e.deletedMails){const f=E(a,t(this,o));f&&n.push(f)}return{__typename:"SuccessResponse",data:n}})}create(r,s){return l(this,null,function*(){const e=yield this.createDraft(r);if(!e)return{__typename:"SuccessResponse",data:!1};if(e.__typename==="ErrorBasic"||e.__typename==="ErrorAccessDenied")return e;const n=yield this.sendDraft(e.data.mailIntegrityId,s);return n?n.__typename==="ErrorAccessDenied"||n.__typename==="ErrorBasic"?n:{__typename:"SuccessResponse",data:n.data}:null})}waitingReceivedMails(){return l(this,null,function*(){const{user:r}=yield t(this,c).call(this,"query")({user:[{},{"...on ErrorNotFound":{__typename:!0,message:!0},"...on UserResponse":{__typename:!0,user:{waitingReceivedMails:{date:!0,attachmentsCount:!0,sender:{id:!0,firstname:!0,lastname:!0,email:!0,publicKey:!0},recipients:{id:!0,firstname:!0,lastname:!0,email:!0,publicKey:!0},temporaryRecipients:{email:!0}}}}}]});if(!r)return null;if(r.__typename==="ErrorNotFound")return r;if(!r.user)return null;const s=r.user.waitingReceivedMails.map(e=>I(b({id:F()},e),{date:new Date(e.date)}));return{__typename:"SuccessResponse",data:s}})}updateDraft(u,p){return l(this,arguments,function*(r,{body:s,subject:e,files:n,recipientsIds:a,replyTo:f}){const m=yield this.draftMails();if(!m)return null;if(m.__typename!=="SuccessResponse")return m;if(!m.data.find(d=>d.mailIntegrityId===r))throw new Error(`Invalid draft ${r}`);let S=null,_=null;(s||e)&&(S=i.randombytes_buf(i.crypto_generichash_KEYBYTES,"hex"),_=i.crypto_generichash(i.crypto_generichash_BYTES,JSON.stringify({body:s,subject:e}),S,"hex"));const M=new Array;if(n)for(const d of n){let A=w.get(d.id);if(!A&&(yield t(this,g).cloud.fileMetadata({id:d.id}),A=w.get(d.id),!A))throw new Error(`File ${d.name} (${d.id}) does not exists`);M.push({id:A.id,fileKey:i.to_hex(y(i.from_string(A.key),t(this,o).publicKey,t(this,o).privateKey)),name:i.to_hex(y(i.from_string(d.name),t(this,o).publicKey,t(this,o).privateKey))})}const{updateDraftMail:D}=yield t(this,c).call(this,"mutation",{scalars:{Json:{encode:d=>JSON.stringify(d),decode:d=>JSON.parse(d)},DateTime:{decode:d=>new Date(d),encode:d=>d.toISOString()},BigInt:{decode:d=>BigInt(d),encode:d=>d.toString()}}})({updateDraftMail:[{draftId:r,recipients:a,replyTo:f,body:s?i.to_hex(y(i.from_string(s),t(this,o).publicKey,t(this,o).privateKey)):null,subject:e?i.to_hex(y(i.from_string(e),t(this,o).publicKey,t(this,o).privateKey)):null,senderFiles:M,hash:_,hashKey:S},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on UpdateDraftMailResponse":{__typename:!0,updateDraftMail:R}}]});if(!D)return null;if(D.__typename==="ErrorAccessDenied"||D.__typename==="ErrorBasic")return D;if(!D.updateDraftMail)return null;const B=E(D.updateDraftMail,t(this,o));return{__typename:"SuccessResponse",data:B}})}deleteDraft(r){return l(this,null,function*(){var e;const{deleteDraftMail:s}=yield t(this,c).call(this,"mutation")({deleteDraftMail:[{draftId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteDraftMailResponse":{__typename:!0,deleteDraftMail:!0}}]});return s?s.__typename==="ErrorAccessDenied"?s:s.deleteDraftMail?{__typename:"SuccessResponse",data:(e=s.deleteDraftMail)!=null?e:!1}:null:null})}deleteTrash(s){return l(this,arguments,function*({ids:r}){const{deleteMailTrash:e}=yield t(this,c).call(this,"mutation")({deleteMailTrash:[{ids:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteMailTrashResponse":{__typename:!0,deleteMailTrash:!0}}]});return e?e.__typename==="ErrorAccessDenied"?e:e.deleteMailTrash?{__typename:"SuccessResponse",data:e.deleteMailTrash}:null:null})}emptyTrash(){return l(this,null,function*(){const{emptyMailTrash:r}=yield t(this,c).call(this,"mutation")({emptyMailTrash:{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on EmptyMailTrashResponse":{__typename:!0,emptyMailTrash:!0}}});return r?r.__typename==="ErrorAccessDenied"?r:r.emptyMailTrash?{__typename:"SuccessResponse",data:r.emptyMailTrash}:null:null})}delete(s){return l(this,arguments,function*({mailId:r}){const{deleteMail:e}=yield t(this,c).call(this,"mutation")({deleteMail:[{mailId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteMailResponse":{__typename:!0,deleteMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"?e:{__typename:"SuccessResponse",data:e.deleteMail}:null})}sendDraft(r,s){return l(this,null,function*(){const e=yield this.draftMails();if(!e)return{__typename:"SuccessResponse",data:!1};if(e.__typename!=="SuccessResponse")return{__typename:"SuccessResponse",data:!1};const n=e.data.find(p=>p.mailIntegrityId===r);if(!n)return{__typename:"SuccessResponse",data:!1};const a=new Array,f=new Array;for(const{email:p}of n.temporaryRecipients){if(!p)continue;const m=yield this._eachUser(n.files,n.subject,n.body,p);m?a.push(m):f.push(p)}for(const{id:p}of n.recipients){const m=yield this._eachUser(n.files,n.subject,n.body,p);m?a.push(m):f.push(p)}const{sendDraftMail:u}=yield t(this,c).call(this,"mutation")({sendDraftMail:[{temporaryRecipients:f,recipients:a,draftMailId:n.mailIntegrityId,customMessage:s},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on SendDraftMailResponse":{__typename:!0,sendDraftMail:!0}}]});return u?u.__typename==="ErrorAccessDenied"||u.__typename==="ErrorBasic"?u:u.sendDraftMail?{__typename:"SuccessResponse",data:u.sendDraftMail}:null:null})}sendWaitingEmails(){return l(this,null,function*(){const r=yield this.sentMails();if(!r)return{__typename:"SuccessResponse",data:!1};if(r.__typename!=="SuccessResponse")return{__typename:"SuccessResponse",data:!1};const s=r.data.filter(e=>e.temporaryRecipients.length>0);for(const e of s)for(const{email:n}of e.temporaryRecipients)if(!!n)try{const a=yield this._eachUser(e.files,e.subject,e.body,n);if(!a)continue;yield t(this,c).call(this,"mutation")({sendOneMail:[{mailIntegrityId:e.mailIntegrityId,recipient:a},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on RecoverNodeResponse":{__typename:!0,recoverNode:!0}}]})}catch(a){continue}return{__typename:"SuccessResponse",data:!1}})}createDraft(f){return l(this,arguments,function*({body:r,subject:s,files:e,recipientsIds:n,replyTo:a}){const u=i.randombytes_buf(i.crypto_generichash_KEYBYTES,"hex"),p=i.crypto_generichash(i.crypto_generichash_BYTES,JSON.stringify({body:r,subject:s}),u,"hex"),m=new Array;for(const _ of e){let M=w.get(_.id);if(!M&&(yield t(this,g).cloud.fileMetadata({id:_.id}),M=w.get(_.id),!M))throw new Error(`File ${_.name} (${_.id}) does not exists`);m.push({id:M.id,fileKey:i.to_hex(y(i.from_string(M.key),t(this,o).publicKey,t(this,o).privateKey)),name:i.to_hex(y(i.from_string(_.name),t(this,o).publicKey,t(this,o).privateKey))})}const{createDraftMail:h}=yield t(this,c).call(this,"mutation",{scalars:{DateTime:{decode:_=>new Date(_),encode:_=>_.toISOString()}}})({createDraftMail:[{recipients:n,replyTo:a,body:i.to_hex(y(i.from_string(r),t(this,o).publicKey,t(this,o).privateKey)),subject:i.to_hex(y(i.from_string(s),t(this,o).publicKey,t(this,o).privateKey)),senderFiles:m,hash:p,hashKey:u},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on CreateDraftMailResponse":{__typename:!0,createDraftMail:R}}]});if(!h)return null;if(h.__typename==="ErrorAccessDenied"||h.__typename==="ErrorBasic")return h;if(!h.createDraftMail)return null;const S=E(h.createDraftMail,t(this,o));return{__typename:"SuccessResponse",data:S}})}read(s){return l(this,arguments,function*({mailId:r}){const{readMail:e}=yield t(this,c).call(this,"mutation")({readMail:[{mailId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on ReadMailResponse":{__typename:!0,readMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"||e.__typename==="ErrorBasic"||e.__typename==="ErrorNotFound"?e:e.readMail?{__typename:"SuccessResponse",data:e.readMail}:null:null})}unread(s){return l(this,arguments,function*({mailId:r}){const{unreadMail:e}=yield t(this,c).call(this,"mutation")({unreadMail:[{mailId:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on UnreadMailResponse":{__typename:!0,unreadMail:!0}}]});return e?e.__typename==="ErrorAccessDenied"||e.__typename==="ErrorBasic"||e.__typename==="ErrorNotFound"?e:e.unreadMail?{__typename:"SuccessResponse",data:e.unreadMail}:null:null})}receivedMails(){return l(this,null,function*(){const{user:r}=yield t(this,c).call(this,"query",{scalars:{DateTime:{decode:e=>new Date(e),encode:e=>e.toISOString()}}})({user:[{},{"...on ErrorNotFound":{__typename:!0,message:!0},"...on UserResponse":{__typename:!0,user:{receivedMails:R}}}]});if(!r)return null;if(r.__typename==="ErrorNotFound")return r;if(!r.user)return null;const s=new Array;for(const e of r.user.receivedMails){const n=E(e,t(this,o));n&&s.push(n)}return{__typename:"SuccessResponse",data:s}})}sentMails(){return l(this,null,function*(){const{user:r}=yield t(this,c).call(this,"query",{scalars:{DateTime:{decode:e=>new Date(e),encode:e=>e.toISOString()}}})({user:[{},{"...on ErrorNotFound":{__typename:!0,message:!0},"...on UserResponse":{__typename:!0,user:{sentMails:R}}}]});if(!r)return null;if(r.__typename==="ErrorNotFound")return r;if(!r.user)return null;const s=new Array;for(const e of r.user.sentMails){const n=E(e,t(this,o));n&&s.push(n)}return{__typename:"SuccessResponse",data:s}})}draftMails(){return l(this,null,function*(){const{user:r}=yield t(this,c).call(this,"query",{scalars:{DateTime:{decode:e=>new Date(e),encode:e=>e.toISOString()}}})({user:[{},{"...on ErrorNotFound":{__typename:!0,message:!0},"...on UserResponse":{__typename:!0,user:{draftMails:R}}}]});if(!r)return null;if(r.__typename==="ErrorNotFound")return r;if(!r.user)return null;const s=new Array;for(const e of r.user.draftMails){const n=E(e,t(this,o));n&&s.push(n)}return{__typename:"SuccessResponse",data:s}})}unreadReceivedMailsCount(){return l(this,null,function*(){const{unreadReceivedMailsCount:r}=yield t(this,c).call(this,"query")({unreadReceivedMailsCount:{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on UnreadReceivedMailsCountResponse":{__typename:!0,count:!0}}});return r?r.__typename==="ErrorAccessDenied"?r:{__typename:"SuccessResponse",data:r.count}:null})}}g=new WeakMap,o=new WeakMap,c=new WeakMap;export{q as SecrecyMailClient};
|
|
2
2
|
//# sourceMappingURL=SecrecyMailClient.js.map
|