@iexec/web3mail 1.6.0 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/utils/subgraphQuery.js +5 -2
- package/dist/utils/subgraphQuery.js.map +1 -1
- package/dist/utils/validators.d.ts +35 -0
- package/dist/utils/validators.js +45 -1
- package/dist/utils/validators.js.map +1 -1
- package/dist/web3mail/IExecWeb3mail.d.ts +4 -1
- package/dist/web3mail/IExecWeb3mail.js +38 -0
- package/dist/web3mail/IExecWeb3mail.js.map +1 -1
- package/dist/web3mail/fetchMyContacts.d.ts +1 -1
- package/dist/web3mail/fetchMyContacts.js +3 -1
- package/dist/web3mail/fetchMyContacts.js.map +1 -1
- package/dist/web3mail/fetchUserContacts.d.ts +1 -1
- package/dist/web3mail/fetchUserContacts.js +20 -3
- package/dist/web3mail/fetchUserContacts.js.map +1 -1
- package/dist/web3mail/internalTypes.d.ts +4 -0
- package/dist/web3mail/prepareEmailCampaign.d.ts +4 -0
- package/dist/web3mail/prepareEmailCampaign.js +106 -0
- package/dist/web3mail/prepareEmailCampaign.js.map +1 -0
- package/dist/web3mail/sendEmail.js +9 -5
- package/dist/web3mail/sendEmail.js.map +1 -1
- package/dist/web3mail/sendEmailCampaign.d.ts +4 -0
- package/dist/web3mail/sendEmailCampaign.js +43 -0
- package/dist/web3mail/sendEmailCampaign.js.map +1 -0
- package/dist/web3mail/types.d.ts +96 -1
- package/package.json +5 -6
- package/src/utils/subgraphQuery.ts +17 -14
- package/src/utils/validators.ts +68 -1
- package/src/web3mail/IExecWeb3mail.ts +53 -0
- package/src/web3mail/fetchMyContacts.ts +3 -0
- package/src/web3mail/fetchUserContacts.ts +28 -11
- package/src/web3mail/internalTypes.ts +5 -0
- package/src/web3mail/prepareEmailCampaign.ts +170 -0
- package/src/web3mail/sendEmail.ts +31 -5
- package/src/web3mail/sendEmailCampaign.ts +69 -0
- package/src/web3mail/types.ts +102 -1
|
@@ -51,7 +51,8 @@ export const getValidContact = async (graphQLClient, contacts) => {
|
|
|
51
51
|
// Convert contacts array into a map where the key is the contact's address
|
|
52
52
|
const contactsMap = new Map(contacts.map((contact) => [contact.address, contact]));
|
|
53
53
|
// Convert protectedData[] into Contact[] using the map for constant time lookups
|
|
54
|
-
return protectedDataList
|
|
54
|
+
return protectedDataList
|
|
55
|
+
.map(({ id, name }) => {
|
|
55
56
|
const contact = contactsMap.get(id);
|
|
56
57
|
if (contact) {
|
|
57
58
|
return {
|
|
@@ -62,9 +63,11 @@ export const getValidContact = async (graphQLClient, contacts) => {
|
|
|
62
63
|
owner: contact.owner,
|
|
63
64
|
accessGrantTimestamp: contact.accessGrantTimestamp,
|
|
64
65
|
isUserStrict: contact.isUserStrict,
|
|
66
|
+
grantedAccess: contact.grantedAccess,
|
|
65
67
|
};
|
|
66
68
|
}
|
|
67
|
-
})
|
|
69
|
+
})
|
|
70
|
+
.filter((contact) => !!contact);
|
|
68
71
|
}
|
|
69
72
|
catch (error) {
|
|
70
73
|
throw new WorkflowError({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subgraphQuery.js","sourceRoot":"","sources":["../../src/utils/subgraphQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAM5C,MAAM,uBAAuB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;CAsBlC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,aAA4B,EAC5B,QAAiC,EACb,EAAE;IACtB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC;QACH,qBAAqB;QACrB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAErE,aAAa;QACb,MAAM,iBAAiB,GAAyB,EAAE,CAAC;QACnD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,KAAK,GAAG,IAAI,CAAC;QACnB,IAAI,kBAAkB,GAAG,IAAI,CAAC;QAE9B,GAAG,CAAC;YACF,MAAM,SAAS,GAAG;gBAChB,cAAc,EAAE,CAAC,cAAc,CAAC;gBAChC,EAAE,EAAE,iBAAiB;gBACrB,KAAK;gBACL,KAAK;aACN,CAAC;YAEF,MAAM,wBAAwB,GAC5B,MAAM,aAAa,CAAC,OAAO,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;YAElE,MAAM,EAAE,cAAc,EAAE,GAAG,wBAAwB,CAAC;YACpD,iBAAiB,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;YAE1C,kBAAkB,GAAG,cAAc,CAAC,MAAM,KAAK,KAAK,CAAC;YACrD,KAAK,IAAI,KAAK,CAAC;QACjB,CAAC,QAAQ,kBAAkB,EAAE;QAE7B,2EAA2E;QAC3E,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CACtD,CAAC;QAEF,iFAAiF;QACjF,OAAO,iBAAiB,
|
|
1
|
+
{"version":3,"file":"subgraphQuery.js","sourceRoot":"","sources":["../../src/utils/subgraphQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,3 +11,38 @@ export declare const senderNameSchema: () => import("yup").StringSchema<string,
|
|
|
11
11
|
export declare const labelSchema: () => import("yup").StringSchema<string, import("yup").AnyObject, undefined, "">;
|
|
12
12
|
export declare const positiveNumberSchema: () => import("yup").NumberSchema<number, import("yup").AnyObject, undefined, "">;
|
|
13
13
|
export declare const booleanSchema: () => import("yup").BooleanSchema<boolean, import("yup").AnyObject, undefined, "">;
|
|
14
|
+
export declare const campaignRequestSchema: () => import("yup").ObjectSchema<{
|
|
15
|
+
app: string;
|
|
16
|
+
appmaxprice: string;
|
|
17
|
+
workerpool: string;
|
|
18
|
+
workerpoolmaxprice: string;
|
|
19
|
+
dataset: string;
|
|
20
|
+
datasetmaxprice: "0";
|
|
21
|
+
params: string;
|
|
22
|
+
requester: string;
|
|
23
|
+
beneficiary: string;
|
|
24
|
+
callback: string;
|
|
25
|
+
category: string;
|
|
26
|
+
volume: string;
|
|
27
|
+
tag: string;
|
|
28
|
+
trust: string;
|
|
29
|
+
salt: string;
|
|
30
|
+
sign: string;
|
|
31
|
+
}, import("yup").AnyObject, {
|
|
32
|
+
app: undefined;
|
|
33
|
+
appmaxprice: undefined;
|
|
34
|
+
workerpool: undefined;
|
|
35
|
+
workerpoolmaxprice: undefined;
|
|
36
|
+
dataset: undefined;
|
|
37
|
+
datasetmaxprice: undefined;
|
|
38
|
+
params: undefined;
|
|
39
|
+
requester: undefined;
|
|
40
|
+
beneficiary: undefined;
|
|
41
|
+
callback: undefined;
|
|
42
|
+
category: undefined;
|
|
43
|
+
volume: undefined;
|
|
44
|
+
tag: undefined;
|
|
45
|
+
trust: undefined;
|
|
46
|
+
salt: undefined;
|
|
47
|
+
sign: undefined;
|
|
48
|
+
}, "">;
|
package/dist/utils/validators.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isAddress } from 'ethers';
|
|
2
|
-
import {
|
|
2
|
+
import { NULL_ADDRESS } from 'iexec/utils';
|
|
3
|
+
import { ValidationError, boolean, number, object, string } from 'yup';
|
|
3
4
|
export const isValidProvider = async (iexec) => {
|
|
4
5
|
const client = await iexec.config.resolveContractsClient();
|
|
5
6
|
if (!client.signer) {
|
|
@@ -31,4 +32,47 @@ export const senderNameSchema = () => string().trim().min(3).max(20).optional();
|
|
|
31
32
|
export const labelSchema = () => string().trim().min(3).max(10).optional();
|
|
32
33
|
export const positiveNumberSchema = () => number().integer().min(0).typeError('${path} must be a non-negative number');
|
|
33
34
|
export const booleanSchema = () => boolean().strict().typeError('${path} should be a boolean');
|
|
35
|
+
const isPositiveIntegerStringTest = (value) => /^\d+$/.test(value);
|
|
36
|
+
const stringSchema = () => string().strict().typeError('${path} should be a string');
|
|
37
|
+
const positiveIntegerStringSchema = () => string().test('is-positive-int', '${path} should be a positive integer', (value) => isUndefined(value) || isPositiveIntegerStringTest(value));
|
|
38
|
+
const positiveStrictIntegerStringSchema = () => string().test('is-positive-strict-int', '${path} should be a strictly positive integer', (value) => isUndefined(value) ||
|
|
39
|
+
(value !== '0' && isPositiveIntegerStringTest(value)));
|
|
40
|
+
export const campaignRequestSchema = () => object({
|
|
41
|
+
app: addressSchema().required(),
|
|
42
|
+
appmaxprice: positiveIntegerStringSchema().required(),
|
|
43
|
+
workerpool: addressSchema().required(),
|
|
44
|
+
workerpoolmaxprice: positiveIntegerStringSchema().required(),
|
|
45
|
+
dataset: addressSchema().oneOf([NULL_ADDRESS]).required(),
|
|
46
|
+
datasetmaxprice: positiveIntegerStringSchema().oneOf(['0']).required(),
|
|
47
|
+
params: stringSchema()
|
|
48
|
+
.test('is-valid-bulk-params', '${path} should be a valid JSON string with bulk_cid field', (value) => {
|
|
49
|
+
try {
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
51
|
+
const { bulk_cid } = JSON.parse(value);
|
|
52
|
+
if (typeof bulk_cid === 'string') {
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch { }
|
|
57
|
+
return false;
|
|
58
|
+
})
|
|
59
|
+
.required(),
|
|
60
|
+
requester: addressSchema().required(),
|
|
61
|
+
beneficiary: addressSchema().required(),
|
|
62
|
+
callback: addressSchema().required(),
|
|
63
|
+
category: positiveIntegerStringSchema().required(),
|
|
64
|
+
volume: positiveStrictIntegerStringSchema().required(),
|
|
65
|
+
tag: stringSchema().required(),
|
|
66
|
+
trust: positiveIntegerStringSchema().required(),
|
|
67
|
+
salt: stringSchema().required(),
|
|
68
|
+
sign: stringSchema().required(),
|
|
69
|
+
})
|
|
70
|
+
.strict()
|
|
71
|
+
.typeError('${path} should be a BulkRequest object')
|
|
72
|
+
.test('is-defined', '${path} is required', (value) => {
|
|
73
|
+
// Check if value is undefined, null, or an empty object (which would be coerced from undefined)
|
|
74
|
+
return (value !== undefined &&
|
|
75
|
+
value !== null &&
|
|
76
|
+
!(typeof value === 'object' && Object.keys(value).length === 0));
|
|
77
|
+
});
|
|
34
78
|
//# sourceMappingURL=validators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/utils/validators.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AbstractProvider, AbstractSigner, Eip1193Provider } from 'ethers';
|
|
2
|
-
import { Contact, FetchUserContactsParams, SendEmailParams, Web3MailConfigOptions, SendEmailResponse, Web3SignerProvider, FetchMyContactsParams } from './types.js';
|
|
2
|
+
import { Contact, FetchUserContactsParams, SendEmailParams, Web3MailConfigOptions, SendEmailResponse, Web3SignerProvider, FetchMyContactsParams, PrepareEmailCampaignParams, PrepareEmailCampaignResponse, SendEmailCampaignParams, SendEmailCampaignResponse } from './types.js';
|
|
3
3
|
type EthersCompatibleProvider = AbstractProvider | AbstractSigner | Eip1193Provider | Web3SignerProvider | string;
|
|
4
4
|
export declare class IExecWeb3mail {
|
|
5
5
|
private dappAddressOrENS;
|
|
@@ -9,6 +9,7 @@ export declare class IExecWeb3mail {
|
|
|
9
9
|
private ipfsGateway;
|
|
10
10
|
private defaultWorkerpool;
|
|
11
11
|
private iexec;
|
|
12
|
+
private dataProtector;
|
|
12
13
|
private initPromise;
|
|
13
14
|
private ethProvider;
|
|
14
15
|
private options;
|
|
@@ -17,6 +18,8 @@ export declare class IExecWeb3mail {
|
|
|
17
18
|
fetchMyContacts(args?: FetchMyContactsParams): Promise<Contact[]>;
|
|
18
19
|
fetchUserContacts(args: FetchUserContactsParams): Promise<Contact[]>;
|
|
19
20
|
sendEmail(args: SendEmailParams): Promise<SendEmailResponse>;
|
|
21
|
+
prepareEmailCampaign(args: PrepareEmailCampaignParams): Promise<PrepareEmailCampaignResponse>;
|
|
22
|
+
sendEmailCampaign(args: SendEmailCampaignParams): Promise<SendEmailCampaignResponse>;
|
|
20
23
|
private resolveConfig;
|
|
21
24
|
}
|
|
22
25
|
export {};
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { IExec } from 'iexec';
|
|
2
|
+
import { IExecDataProtectorCore } from '@iexec/dataprotector';
|
|
2
3
|
import { GraphQLClient } from 'graphql-request';
|
|
3
4
|
import { fetchUserContacts } from './fetchUserContacts.js';
|
|
4
5
|
import { fetchMyContacts } from './fetchMyContacts.js';
|
|
5
6
|
import { sendEmail } from './sendEmail.js';
|
|
7
|
+
import { prepareEmailCampaign } from './prepareEmailCampaign.js';
|
|
8
|
+
import { sendEmailCampaign } from './sendEmailCampaign.js';
|
|
6
9
|
import { isValidProvider } from '../utils/validators.js';
|
|
7
10
|
import { getChainIdFromProvider } from '../utils/getChainId.js';
|
|
8
11
|
import { getChainDefaultConfig } from '../config/config.js';
|
|
@@ -15,6 +18,7 @@ export class IExecWeb3mail {
|
|
|
15
18
|
ipfsGateway;
|
|
16
19
|
defaultWorkerpool;
|
|
17
20
|
iexec;
|
|
21
|
+
dataProtector;
|
|
18
22
|
initPromise = null;
|
|
19
23
|
ethProvider;
|
|
20
24
|
options;
|
|
@@ -32,6 +36,7 @@ export class IExecWeb3mail {
|
|
|
32
36
|
this.ipfsGateway = config.ipfsGateway;
|
|
33
37
|
this.defaultWorkerpool = config.defaultWorkerpool;
|
|
34
38
|
this.iexec = config.iexec;
|
|
39
|
+
this.dataProtector = config.dataProtector;
|
|
35
40
|
});
|
|
36
41
|
}
|
|
37
42
|
return this.initPromise;
|
|
@@ -71,6 +76,28 @@ export class IExecWeb3mail {
|
|
|
71
76
|
graphQLClient: this.graphQLClient,
|
|
72
77
|
});
|
|
73
78
|
}
|
|
79
|
+
async prepareEmailCampaign(args) {
|
|
80
|
+
await this.init();
|
|
81
|
+
await isValidProvider(this.iexec);
|
|
82
|
+
return prepareEmailCampaign({
|
|
83
|
+
...args,
|
|
84
|
+
workerpoolAddressOrEns: args.workerpoolAddressOrEns || this.defaultWorkerpool,
|
|
85
|
+
iexec: this.iexec,
|
|
86
|
+
dataProtector: this.dataProtector,
|
|
87
|
+
ipfsNode: this.ipfsNode,
|
|
88
|
+
ipfsGateway: this.ipfsGateway,
|
|
89
|
+
dappAddressOrENS: this.dappAddressOrENS,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
async sendEmailCampaign(args) {
|
|
93
|
+
await this.init();
|
|
94
|
+
await isValidProvider(this.iexec);
|
|
95
|
+
return sendEmailCampaign({
|
|
96
|
+
...args,
|
|
97
|
+
workerpoolAddressOrEns: args.workerpoolAddressOrEns || this.defaultWorkerpool,
|
|
98
|
+
dataProtector: this.dataProtector,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
74
101
|
async resolveConfig() {
|
|
75
102
|
const chainId = await getChainIdFromProvider(this.ethProvider);
|
|
76
103
|
const chainDefaultConfig = getChainDefaultConfig(chainId, {
|
|
@@ -119,6 +146,16 @@ export class IExecWeb3mail {
|
|
|
119
146
|
catch (error) {
|
|
120
147
|
throw new Error(`Failed to create GraphQLClient: ${error.message}`);
|
|
121
148
|
}
|
|
149
|
+
const dataProtector = new IExecDataProtectorCore(this.ethProvider, {
|
|
150
|
+
iexecOptions: {
|
|
151
|
+
ipfsGatewayURL: ipfsGateway,
|
|
152
|
+
...this.options?.iexecOptions,
|
|
153
|
+
allowExperimentalNetworks: this.options.allowExperimentalNetworks,
|
|
154
|
+
},
|
|
155
|
+
ipfsGateway,
|
|
156
|
+
ipfsNode,
|
|
157
|
+
subgraphUrl,
|
|
158
|
+
});
|
|
122
159
|
return {
|
|
123
160
|
dappAddressOrENS,
|
|
124
161
|
dappWhitelistAddress: dappWhitelistAddress.toLowerCase(),
|
|
@@ -127,6 +164,7 @@ export class IExecWeb3mail {
|
|
|
127
164
|
ipfsNode,
|
|
128
165
|
ipfsGateway,
|
|
129
166
|
iexec,
|
|
167
|
+
dataProtector,
|
|
130
168
|
};
|
|
131
169
|
}
|
|
132
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IExecWeb3mail.js","sourceRoot":"","sources":["../../src/web3mail/IExecWeb3mail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"IExecWeb3mail.js","sourceRoot":"","sources":["../../src/web3mail/IExecWeb3mail.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { DappAddressConsumer, DappWhitelistAddressConsumer, IExecConsumer, SubgraphConsumer } from './internalTypes.js';
|
|
2
2
|
import { Contact, FetchMyContactsParams } from './types.js';
|
|
3
3
|
export type FetchMyContacts = typeof fetchMyContacts;
|
|
4
|
-
export declare const fetchMyContacts: ({ graphQLClient, iexec, dappAddressOrENS, dappWhitelistAddress, isUserStrict, }: IExecConsumer & SubgraphConsumer & DappAddressConsumer & DappWhitelistAddressConsumer & FetchMyContactsParams) => Promise<Contact[]>;
|
|
4
|
+
export declare const fetchMyContacts: ({ graphQLClient, iexec, dappAddressOrENS, dappWhitelistAddress, isUserStrict, bulkOnly, }: IExecConsumer & SubgraphConsumer & DappAddressConsumer & DappWhitelistAddressConsumer & FetchMyContactsParams) => Promise<Contact[]>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { booleanSchema, throwIfMissing } from '../utils/validators.js';
|
|
2
2
|
import { fetchUserContacts } from './fetchUserContacts.js';
|
|
3
|
-
export const fetchMyContacts = async ({ graphQLClient = throwIfMissing(), iexec = throwIfMissing(), dappAddressOrENS = throwIfMissing(), dappWhitelistAddress = throwIfMissing(), isUserStrict = false, }) => {
|
|
3
|
+
export const fetchMyContacts = async ({ graphQLClient = throwIfMissing(), iexec = throwIfMissing(), dappAddressOrENS = throwIfMissing(), dappWhitelistAddress = throwIfMissing(), isUserStrict = false, bulkOnly = false, }) => {
|
|
4
4
|
const vIsUserStrict = booleanSchema()
|
|
5
5
|
.label('isUserStrict')
|
|
6
6
|
.validateSync(isUserStrict);
|
|
7
|
+
const vBulkOnly = booleanSchema().label('bulkOnly').validateSync(bulkOnly);
|
|
7
8
|
const userAddress = await iexec.wallet.getAddress();
|
|
8
9
|
return fetchUserContacts({
|
|
9
10
|
iexec,
|
|
@@ -12,6 +13,7 @@ export const fetchMyContacts = async ({ graphQLClient = throwIfMissing(), iexec
|
|
|
12
13
|
dappWhitelistAddress,
|
|
13
14
|
userAddress,
|
|
14
15
|
isUserStrict: vIsUserStrict,
|
|
16
|
+
bulkOnly: vBulkOnly,
|
|
15
17
|
});
|
|
16
18
|
};
|
|
17
19
|
//# sourceMappingURL=fetchMyContacts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchMyContacts.js","sourceRoot":"","sources":["../../src/web3mail/fetchMyContacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAW3D,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,EACpC,aAAa,GAAG,cAAc,EAAE,EAChC,KAAK,GAAG,cAAc,EAAE,EACxB,gBAAgB,GAAG,cAAc,EAAE,EACnC,oBAAoB,GAAG,cAAc,EAAE,EACvC,YAAY,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"fetchMyContacts.js","sourceRoot":"","sources":["../../src/web3mail/fetchMyContacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAW3D,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,EACpC,aAAa,GAAG,cAAc,EAAE,EAChC,KAAK,GAAG,cAAc,EAAE,EACxB,gBAAgB,GAAG,cAAc,EAAE,EACnC,oBAAoB,GAAG,cAAc,EAAE,EACvC,YAAY,GAAG,KAAK,EACpB,QAAQ,GAAG,KAAK,GAKK,EAAsB,EAAE;IAC7C,MAAM,aAAa,GAAG,aAAa,EAAE;SAClC,KAAK,CAAC,cAAc,CAAC;SACrB,YAAY,CAAC,YAAY,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAE3E,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACpD,OAAO,iBAAiB,CAAC;QACvB,KAAK;QACL,aAAa;QACb,gBAAgB;QAChB,oBAAoB;QACpB,WAAW;QACX,YAAY,EAAE,aAAa;QAC3B,QAAQ,EAAE,SAAS;KACpB,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Contact, FetchUserContactsParams } from './types.js';
|
|
2
2
|
import { DappAddressConsumer, DappWhitelistAddressConsumer, IExecConsumer, SubgraphConsumer } from './internalTypes.js';
|
|
3
|
-
export declare const fetchUserContacts: ({ graphQLClient, iexec, dappAddressOrENS, dappWhitelistAddress, userAddress, isUserStrict, }: IExecConsumer & SubgraphConsumer & DappAddressConsumer & DappWhitelistAddressConsumer & FetchUserContactsParams) => Promise<Contact[]>;
|
|
3
|
+
export declare const fetchUserContacts: ({ graphQLClient, iexec, dappAddressOrENS, dappWhitelistAddress, userAddress, isUserStrict, bulkOnly, }: IExecConsumer & SubgraphConsumer & DappAddressConsumer & DappWhitelistAddressConsumer & FetchUserContactsParams) => Promise<Contact[]>;
|
|
@@ -4,7 +4,7 @@ import { handleIfProtocolError, WorkflowError } from '../utils/errors.js';
|
|
|
4
4
|
import { autoPaginateRequest } from '../utils/paginate.js';
|
|
5
5
|
import { getValidContact } from '../utils/subgraphQuery.js';
|
|
6
6
|
import { addressOrEnsSchema, addressSchema, booleanSchema, isEnsTest, throwIfMissing, } from '../utils/validators.js';
|
|
7
|
-
export const fetchUserContacts = async ({ graphQLClient = throwIfMissing(), iexec = throwIfMissing(), dappAddressOrENS = throwIfMissing(), dappWhitelistAddress = throwIfMissing(), userAddress, isUserStrict = false, }) => {
|
|
7
|
+
export const fetchUserContacts = async ({ graphQLClient = throwIfMissing(), iexec = throwIfMissing(), dappAddressOrENS = throwIfMissing(), dappWhitelistAddress = throwIfMissing(), userAddress, isUserStrict = false, bulkOnly = false, }) => {
|
|
8
8
|
const vDappAddressOrENS = addressOrEnsSchema()
|
|
9
9
|
.required()
|
|
10
10
|
.label('dappAddressOrENS')
|
|
@@ -20,6 +20,7 @@ export const fetchUserContacts = async ({ graphQLClient = throwIfMissing(), iexe
|
|
|
20
20
|
const vIsUserStrict = booleanSchema()
|
|
21
21
|
.label('isUserStrict')
|
|
22
22
|
.validateSync(isUserStrict);
|
|
23
|
+
const vBulkOnly = booleanSchema().label('bulkOnly').validateSync(bulkOnly);
|
|
23
24
|
try {
|
|
24
25
|
const [dappOrders, whitelistOrders] = await Promise.all([
|
|
25
26
|
fetchAllOrdersByApp({
|
|
@@ -27,12 +28,14 @@ export const fetchUserContacts = async ({ graphQLClient = throwIfMissing(), iexe
|
|
|
27
28
|
userAddress: vUserAddress,
|
|
28
29
|
appAddress: vDappAddressOrENS,
|
|
29
30
|
isUserStrict: vIsUserStrict,
|
|
31
|
+
bulkOnly: vBulkOnly,
|
|
30
32
|
}),
|
|
31
33
|
fetchAllOrdersByApp({
|
|
32
34
|
iexec,
|
|
33
35
|
userAddress: vUserAddress,
|
|
34
36
|
appAddress: vDappWhitelistAddress,
|
|
35
37
|
isUserStrict: vIsUserStrict,
|
|
38
|
+
bulkOnly: vBulkOnly,
|
|
36
39
|
}),
|
|
37
40
|
]);
|
|
38
41
|
const orders = dappOrders.concat(whitelistOrders);
|
|
@@ -53,6 +56,18 @@ export const fetchUserContacts = async ({ graphQLClient = throwIfMissing(), iexe
|
|
|
53
56
|
accessPrice: order.order.datasetprice,
|
|
54
57
|
accessGrantTimestamp: order.publicationTimestamp,
|
|
55
58
|
isUserStrict: order.order.requesterrestrict !== ZeroAddress,
|
|
59
|
+
grantedAccess: {
|
|
60
|
+
dataset: order.order.dataset,
|
|
61
|
+
datasetprice: order.order.datasetprice.toString(),
|
|
62
|
+
volume: order.order.volume.toString(),
|
|
63
|
+
tag: order.order.tag.toString(),
|
|
64
|
+
apprestrict: order.order.apprestrict,
|
|
65
|
+
workerpoolrestrict: order.order.workerpoolrestrict,
|
|
66
|
+
requesterrestrict: order.order.requesterrestrict,
|
|
67
|
+
salt: order.order.salt,
|
|
68
|
+
sign: order.order.sign,
|
|
69
|
+
remainingAccess: order.remaining,
|
|
70
|
+
},
|
|
56
71
|
};
|
|
57
72
|
myContacts.push(contact);
|
|
58
73
|
}
|
|
@@ -69,12 +84,14 @@ export const fetchUserContacts = async ({ graphQLClient = throwIfMissing(), iexe
|
|
|
69
84
|
});
|
|
70
85
|
}
|
|
71
86
|
};
|
|
72
|
-
async function fetchAllOrdersByApp({ iexec, userAddress, appAddress, isUserStrict, }) {
|
|
73
|
-
const ordersFirstPage = iexec.orderbook.fetchDatasetOrderbook(
|
|
87
|
+
async function fetchAllOrdersByApp({ iexec, userAddress, appAddress, isUserStrict, bulkOnly, }) {
|
|
88
|
+
const ordersFirstPage = iexec.orderbook.fetchDatasetOrderbook({
|
|
89
|
+
dataset: ANY_DATASET_ADDRESS,
|
|
74
90
|
app: appAddress,
|
|
75
91
|
requester: userAddress,
|
|
76
92
|
isAppStrict: true,
|
|
77
93
|
isRequesterStrict: isUserStrict,
|
|
94
|
+
bulkOnly,
|
|
78
95
|
// Use maxPageSize here to avoid too many round-trips (we want everything anyway)
|
|
79
96
|
pageSize: 1000,
|
|
80
97
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchUserContacts.js","sourceRoot":"","sources":["../../src/web3mail/fetchUserContacts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,SAAS,EACT,cAAc,GACf,MAAM,wBAAwB,CAAC;AAShC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,aAAa,GAAG,cAAc,EAAE,EAChC,KAAK,GAAG,cAAc,EAAE,EACxB,gBAAgB,GAAG,cAAc,EAAE,EACnC,oBAAoB,GAAG,cAAc,EAAE,EACvC,WAAW,EACX,YAAY,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"fetchUserContacts.js","sourceRoot":"","sources":["../../src/web3mail/fetchUserContacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IExec } from 'iexec';
|
|
2
|
+
import { IExecDataProtectorCore } from '@iexec/dataprotector';
|
|
2
3
|
import { AddressOrENS } from './types.js';
|
|
3
4
|
import { GraphQLClient } from 'graphql-request';
|
|
4
5
|
export type ProtectedDataQuery = {
|
|
@@ -26,3 +27,6 @@ export type IExecConsumer = {
|
|
|
26
27
|
export type SubgraphConsumer = {
|
|
27
28
|
graphQLClient: GraphQLClient;
|
|
28
29
|
};
|
|
30
|
+
export type DataProtectorConsumer = {
|
|
31
|
+
dataProtector: IExecDataProtectorCore;
|
|
32
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { PrepareEmailCampaignParams, PrepareEmailCampaignResponse } from './types.js';
|
|
2
|
+
import { DappAddressConsumer, DataProtectorConsumer, IExecConsumer, IpfsGatewayConfigConsumer, IpfsNodeConfigConsumer } from './internalTypes.js';
|
|
3
|
+
export type PrepareEmailCampaign = typeof prepareEmailCampaign;
|
|
4
|
+
export declare const prepareEmailCampaign: ({ iexec, dataProtector, workerpoolAddressOrEns, dappAddressOrENS, ipfsNode, ipfsGateway, senderName, emailSubject, emailContent, contentType, label, appMaxPrice, workerpoolMaxPrice, grantedAccesses, maxProtectedDataPerTask, }: IExecConsumer & DappAddressConsumer & IpfsNodeConfigConsumer & IpfsGatewayConfigConsumer & DataProtectorConsumer & PrepareEmailCampaignParams) => Promise<PrepareEmailCampaignResponse>;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
2
|
+
import { DEFAULT_CONTENT_TYPE, MAX_DESIRED_APP_ORDER_PRICE, MAX_DESIRED_WORKERPOOL_ORDER_PRICE, } from '../config/config.js';
|
|
3
|
+
import { handleIfProtocolError, WorkflowError } from '../utils/errors.js';
|
|
4
|
+
import * as ipfs from '../utils/ipfs-service.js';
|
|
5
|
+
import { addressOrEnsSchema, contentTypeSchema, emailContentSchema, emailSubjectSchema, labelSchema, positiveNumberSchema, senderNameSchema, throwIfMissing, } from '../utils/validators.js';
|
|
6
|
+
export const prepareEmailCampaign = async ({ iexec = throwIfMissing(), dataProtector = throwIfMissing(), workerpoolAddressOrEns, dappAddressOrENS, ipfsNode, ipfsGateway, senderName, emailSubject, emailContent, contentType = DEFAULT_CONTENT_TYPE, label, appMaxPrice = MAX_DESIRED_APP_ORDER_PRICE, workerpoolMaxPrice = MAX_DESIRED_WORKERPOOL_ORDER_PRICE, grantedAccesses, maxProtectedDataPerTask, }) => {
|
|
7
|
+
try {
|
|
8
|
+
const vWorkerpoolAddressOrEns = addressOrEnsSchema()
|
|
9
|
+
.label('WorkerpoolAddressOrEns')
|
|
10
|
+
.validateSync(workerpoolAddressOrEns);
|
|
11
|
+
const vSenderName = senderNameSchema()
|
|
12
|
+
.label('senderName')
|
|
13
|
+
.validateSync(senderName);
|
|
14
|
+
const vEmailSubject = emailSubjectSchema()
|
|
15
|
+
.required()
|
|
16
|
+
.label('emailSubject')
|
|
17
|
+
.validateSync(emailSubject);
|
|
18
|
+
const vEmailContent = emailContentSchema()
|
|
19
|
+
.required()
|
|
20
|
+
.label('emailContent')
|
|
21
|
+
.validateSync(emailContent);
|
|
22
|
+
const vContentType = contentTypeSchema()
|
|
23
|
+
.label('contentType')
|
|
24
|
+
.validateSync(contentType);
|
|
25
|
+
const vLabel = labelSchema().label('label').validateSync(label);
|
|
26
|
+
const vDappAddressOrENS = addressOrEnsSchema()
|
|
27
|
+
.required()
|
|
28
|
+
.label('dappAddressOrENS')
|
|
29
|
+
.validateSync(dappAddressOrENS);
|
|
30
|
+
const vAppMaxPrice = positiveNumberSchema()
|
|
31
|
+
.label('appMaxPrice')
|
|
32
|
+
.validateSync(appMaxPrice);
|
|
33
|
+
const vWorkerpoolMaxPrice = positiveNumberSchema()
|
|
34
|
+
.label('workerpoolMaxPrice')
|
|
35
|
+
.validateSync(workerpoolMaxPrice);
|
|
36
|
+
const vMaxProtectedDataPerTask = positiveNumberSchema()
|
|
37
|
+
.label('maxProtectedDataPerTask')
|
|
38
|
+
.validateSync(maxProtectedDataPerTask);
|
|
39
|
+
// TODO: factor this
|
|
40
|
+
// Encrypt email content
|
|
41
|
+
const emailContentEncryptionKey = iexec.dataset.generateEncryptionKey();
|
|
42
|
+
const encryptedFile = await iexec.dataset
|
|
43
|
+
.encrypt(Buffer.from(vEmailContent, 'utf8'), emailContentEncryptionKey)
|
|
44
|
+
.catch((e) => {
|
|
45
|
+
throw new WorkflowError({
|
|
46
|
+
message: 'Failed to encrypt email content',
|
|
47
|
+
errorCause: e,
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
// Push email content to IPFS
|
|
51
|
+
const cid = await ipfs
|
|
52
|
+
.add(encryptedFile, {
|
|
53
|
+
ipfsNode,
|
|
54
|
+
ipfsGateway,
|
|
55
|
+
})
|
|
56
|
+
.catch((e) => {
|
|
57
|
+
throw new WorkflowError({
|
|
58
|
+
message: 'Failed to upload encrypted email content',
|
|
59
|
+
errorCause: e,
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
const multiaddr = `/ipfs/${cid}`;
|
|
63
|
+
// Prepare secrets for the requester
|
|
64
|
+
// Use a positive integer as secret ID (required by iexec)
|
|
65
|
+
// Using "1" as a fixed ID for the requester secret
|
|
66
|
+
const requesterSecretId = 1;
|
|
67
|
+
const secrets = {
|
|
68
|
+
[requesterSecretId]: JSON.stringify({
|
|
69
|
+
emailSubject: vEmailSubject,
|
|
70
|
+
emailContentMultiAddr: multiaddr,
|
|
71
|
+
contentType: vContentType,
|
|
72
|
+
senderName: vSenderName,
|
|
73
|
+
emailContentEncryptionKey,
|
|
74
|
+
useCallback: true,
|
|
75
|
+
}),
|
|
76
|
+
};
|
|
77
|
+
// TODO: end factor this
|
|
78
|
+
const { bulkRequest: campaignRequest } = await dataProtector.prepareBulkRequest({
|
|
79
|
+
app: vDappAddressOrENS,
|
|
80
|
+
appMaxPrice: vAppMaxPrice,
|
|
81
|
+
workerpoolMaxPrice: vWorkerpoolMaxPrice,
|
|
82
|
+
workerpool: vWorkerpoolAddressOrEns,
|
|
83
|
+
args: vLabel,
|
|
84
|
+
inputFiles: [],
|
|
85
|
+
secrets,
|
|
86
|
+
bulkAccesses: grantedAccesses,
|
|
87
|
+
maxProtectedDataPerTask: vMaxProtectedDataPerTask,
|
|
88
|
+
});
|
|
89
|
+
return { campaignRequest };
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
// Protocol error detected, re-throwing as-is
|
|
93
|
+
if (error?.isProtocolError === true) {
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
// Handle protocol errors - this will throw if it's an ApiCallError
|
|
97
|
+
// handleIfProtocolError transforms ApiCallError into a WorkflowError with isProtocolError=true
|
|
98
|
+
handleIfProtocolError(error);
|
|
99
|
+
// For all other errors
|
|
100
|
+
throw new WorkflowError({
|
|
101
|
+
message: 'Failed to prepareEmailCampaign',
|
|
102
|
+
errorCause: error,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=prepareEmailCampaign.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepareEmailCampaign.js","sourceRoot":"","sources":["../../src/web3mail/prepareEmailCampaign.ts"],"names":[],"mappings":"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"}
|
|
@@ -74,7 +74,8 @@ export const sendEmail = async ({ graphQLClient = throwIfMissing(), iexec = thro
|
|
|
74
74
|
const [datasetorderForApp, datasetorderForWhitelist, apporder, workerpoolorder,] = await Promise.all([
|
|
75
75
|
// Fetch dataset order for web3mail app
|
|
76
76
|
iexec.orderbook
|
|
77
|
-
.fetchDatasetOrderbook(
|
|
77
|
+
.fetchDatasetOrderbook({
|
|
78
|
+
dataset: vDatasetAddress,
|
|
78
79
|
app: dappAddressOrENS,
|
|
79
80
|
requester: requesterAddress,
|
|
80
81
|
})
|
|
@@ -84,7 +85,8 @@ export const sendEmail = async ({ graphQLClient = throwIfMissing(), iexec = thro
|
|
|
84
85
|
}),
|
|
85
86
|
// Fetch dataset order for web3mail whitelist
|
|
86
87
|
iexec.orderbook
|
|
87
|
-
.fetchDatasetOrderbook(
|
|
88
|
+
.fetchDatasetOrderbook({
|
|
89
|
+
dataset: vDatasetAddress,
|
|
88
90
|
app: vDappWhitelistAddress,
|
|
89
91
|
requester: requesterAddress,
|
|
90
92
|
})
|
|
@@ -94,7 +96,8 @@ export const sendEmail = async ({ graphQLClient = throwIfMissing(), iexec = thro
|
|
|
94
96
|
}),
|
|
95
97
|
// Fetch app order
|
|
96
98
|
iexec.orderbook
|
|
97
|
-
.fetchAppOrderbook(
|
|
99
|
+
.fetchAppOrderbook({
|
|
100
|
+
app: dappAddressOrENS,
|
|
98
101
|
minTag: ['tee', 'scone'],
|
|
99
102
|
maxTag: ['tee', 'scone'],
|
|
100
103
|
workerpool: workerpoolAddressOrEns,
|
|
@@ -204,15 +207,16 @@ export const sendEmail = async ({ graphQLClient = throwIfMissing(), iexec = thro
|
|
|
204
207
|
});
|
|
205
208
|
const requestorder = await iexec.order.signRequestorder(requestorderToSign);
|
|
206
209
|
// Match orders and compute task ID
|
|
207
|
-
const { dealid } = await iexec.order.matchOrders({
|
|
210
|
+
const { dealid: dealId } = await iexec.order.matchOrders({
|
|
208
211
|
apporder: apporder,
|
|
209
212
|
datasetorder: datasetorder,
|
|
210
213
|
workerpoolorder: workerpoolorder,
|
|
211
214
|
requestorder: requestorder,
|
|
212
215
|
}, { useVoucher: vUseVoucher });
|
|
213
|
-
const taskId = await iexec.deal.computeTaskId(
|
|
216
|
+
const taskId = await iexec.deal.computeTaskId(dealId, 0);
|
|
214
217
|
return {
|
|
215
218
|
taskId,
|
|
219
|
+
dealId,
|
|
216
220
|
};
|
|
217
221
|
}
|
|
218
222
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendEmail.js","sourceRoot":"","sources":["../../src/web3mail/sendEmail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,4BAA4B,EAC5B,kCAAkC,GACnC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAa/B,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,EAC9B,aAAa,GAAG,cAAc,EAAE,EAChC,KAAK,GAAG,cAAc,EAAE,EACxB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,GAAG,oBAAoB,EAClC,KAAK,EACL,YAAY,GAAG,4BAA4B,EAC3C,WAAW,GAAG,2BAA2B,EACzC,kBAAkB,GAAG,kCAAkC,EACvD,UAAU,EACV,aAAa,EACb,UAAU,GAAG,KAAK,GAOH,EAA8B,EAAE;IAC/C,MAAM,eAAe,GAAG,kBAAkB,EAAE;SACzC,QAAQ,EAAE;SACV,KAAK,CAAC,eAAe,CAAC;SACtB,YAAY,CAAC,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sendEmail.js","sourceRoot":"","sources":["../../src/web3mail/sendEmail.ts"],"names":[],"mappings":"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"}
|