@iexec/web3mail 1.8.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +7 -7
  2. package/dist/config/config.d.ts +6 -1
  3. package/dist/config/config.js +23 -12
  4. package/dist/config/config.js.map +1 -1
  5. package/dist/utils/getChainId.js +7 -2
  6. package/dist/utils/getChainId.js.map +1 -1
  7. package/dist/utils/getWeb3Provider.d.ts +10 -2
  8. package/dist/utils/getWeb3Provider.js +12 -7
  9. package/dist/utils/getWeb3Provider.js.map +1 -1
  10. package/dist/utils/resolveDappAddressFromCompass.d.ts +2 -2
  11. package/dist/utils/resolveDappAddressFromCompass.js +1 -1
  12. package/dist/utils/resolveDappAddressFromCompass.js.map +1 -1
  13. package/dist/utils/validators.d.ts +0 -2
  14. package/dist/utils/validators.js +0 -4
  15. package/dist/utils/validators.js.map +1 -1
  16. package/dist/web3mail/IExecWeb3mail.d.ts +2 -2
  17. package/dist/web3mail/IExecWeb3mail.js +13 -14
  18. package/dist/web3mail/IExecWeb3mail.js.map +1 -1
  19. package/dist/web3mail/fetchMyContacts.d.ts +1 -1
  20. package/dist/web3mail/fetchMyContacts.js +2 -2
  21. package/dist/web3mail/fetchMyContacts.js.map +1 -1
  22. package/dist/web3mail/fetchUserContacts.d.ts +1 -1
  23. package/dist/web3mail/fetchUserContacts.js +20 -25
  24. package/dist/web3mail/fetchUserContacts.js.map +1 -1
  25. package/dist/web3mail/internalTypes.d.ts +2 -2
  26. package/dist/web3mail/prepareEmailCampaign.d.ts +1 -1
  27. package/dist/web3mail/prepareEmailCampaign.js +10 -10
  28. package/dist/web3mail/prepareEmailCampaign.js.map +1 -1
  29. package/dist/web3mail/sendEmail.d.ts +1 -1
  30. package/dist/web3mail/sendEmail.js +21 -41
  31. package/dist/web3mail/sendEmail.js.map +1 -1
  32. package/dist/web3mail/sendEmail.models.d.ts +8 -27
  33. package/dist/web3mail/sendEmail.models.js +5 -28
  34. package/dist/web3mail/sendEmail.models.js.map +1 -1
  35. package/dist/web3mail/sendEmailCampaign.d.ts +1 -1
  36. package/dist/web3mail/sendEmailCampaign.js +8 -9
  37. package/dist/web3mail/sendEmailCampaign.js.map +1 -1
  38. package/dist/web3mail/types.d.ts +8 -11
  39. package/package.json +4 -4
  40. package/src/config/config.ts +26 -14
  41. package/src/utils/getChainId.ts +11 -2
  42. package/src/utils/getWeb3Provider.ts +13 -6
  43. package/src/utils/resolveDappAddressFromCompass.ts +3 -3
  44. package/src/utils/validators.ts +0 -11
  45. package/src/web3mail/IExecWeb3mail.ts +20 -23
  46. package/src/web3mail/fetchMyContacts.ts +2 -2
  47. package/src/web3mail/fetchUserContacts.ts +21 -27
  48. package/src/web3mail/internalTypes.ts +2 -2
  49. package/src/web3mail/prepareEmailCampaign.ts +11 -11
  50. package/src/web3mail/sendEmail.models.ts +6 -68
  51. package/src/web3mail/sendEmail.ts +26 -58
  52. package/src/web3mail/sendEmailCampaign.ts +10 -11
  53. package/src/web3mail/types.ts +8 -13
@@ -2,12 +2,12 @@ import { Buffer } from 'buffer';
2
2
  import { DEFAULT_CONTENT_TYPE, MAX_DESIRED_APP_ORDER_PRICE, MAX_DESIRED_WORKERPOOL_ORDER_PRICE, } from '../config/config.js';
3
3
  import { handleIfProtocolError, WorkflowError } from '../utils/errors.js';
4
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, }) => {
5
+ import { addressSchema, contentTypeSchema, emailContentSchema, emailSubjectSchema, labelSchema, positiveNumberSchema, senderNameSchema, throwIfMissing, } from '../utils/validators.js';
6
+ export const prepareEmailCampaign = async ({ iexec = throwIfMissing(), dataProtector = throwIfMissing(), workerpoolAddress, dappAddress, 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
7
  try {
8
- const vWorkerpoolAddressOrEns = addressOrEnsSchema()
9
- .label('WorkerpoolAddressOrEns')
10
- .validateSync(workerpoolAddressOrEns);
8
+ const vWorkerpoolAddress = addressSchema()
9
+ .label('workerpoolAddress')
10
+ .validateSync(workerpoolAddress);
11
11
  const vSenderName = senderNameSchema()
12
12
  .label('senderName')
13
13
  .validateSync(senderName);
@@ -23,10 +23,10 @@ export const prepareEmailCampaign = async ({ iexec = throwIfMissing(), dataProte
23
23
  .label('contentType')
24
24
  .validateSync(contentType);
25
25
  const vLabel = labelSchema().label('label').validateSync(label);
26
- const vDappAddressOrENS = addressOrEnsSchema()
26
+ const vDappAddress = addressSchema()
27
27
  .required()
28
- .label('dappAddressOrENS')
29
- .validateSync(dappAddressOrENS);
28
+ .label('dappAddress')
29
+ .validateSync(dappAddress);
30
30
  const vAppMaxPrice = positiveNumberSchema()
31
31
  .label('appMaxPrice')
32
32
  .validateSync(appMaxPrice);
@@ -76,10 +76,10 @@ export const prepareEmailCampaign = async ({ iexec = throwIfMissing(), dataProte
76
76
  };
77
77
  // TODO: end factor this
78
78
  const { bulkRequest: campaignRequest } = await dataProtector.prepareBulkRequest({
79
- app: vDappAddressOrENS,
79
+ app: vDappAddress,
80
80
  appMaxPrice: vAppMaxPrice,
81
81
  workerpoolMaxPrice: vWorkerpoolMaxPrice,
82
- workerpool: vWorkerpoolAddressOrEns,
82
+ workerpool: vWorkerpoolAddress,
83
83
  args: vLabel,
84
84
  inputFiles: [],
85
85
  secrets,
@@ -1 +1 @@
1
- {"version":3,"file":"prepareEmailCampaign.js","sourceRoot":"","sources":["../../src/web3mail/prepareEmailCampaign.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prepareEmailCampaign.js","sourceRoot":"","sources":["../../src/web3mail/prepareEmailCampaign.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { SendEmailParams, SendEmailResponse } from './types.js';
2
2
  import { DappAddressConsumer, DappWhitelistAddressConsumer, IExecConsumer, IpfsGatewayConfigConsumer, IpfsNodeConfigConsumer, SubgraphConsumer } from './internalTypes.js';
3
3
  export type SendEmail = typeof sendEmail;
4
- export declare const sendEmail: ({ graphQLClient, iexec, workerpoolAddressOrEns, dappAddressOrENS, dappWhitelistAddress, ipfsNode, ipfsGateway, emailSubject, emailContent, contentType, label, dataMaxPrice, appMaxPrice, workerpoolMaxPrice, senderName, protectedData, useVoucher, }: IExecConsumer & SubgraphConsumer & DappAddressConsumer & DappWhitelistAddressConsumer & IpfsNodeConfigConsumer & IpfsGatewayConfigConsumer & SendEmailParams) => Promise<SendEmailResponse>;
4
+ export declare const sendEmail: ({ graphQLClient, iexec, workerpoolAddress, dappAddress, dappWhitelistAddress, ipfsNode, ipfsGateway, emailSubject, emailContent, contentType, label, dataMaxPrice, appMaxPrice, workerpoolMaxPrice, senderName, protectedData, }: IExecConsumer & SubgraphConsumer & DappAddressConsumer & DappWhitelistAddressConsumer & IpfsNodeConfigConsumer & IpfsGatewayConfigConsumer & SendEmailParams) => Promise<SendEmailResponse>;
@@ -4,10 +4,10 @@ import { handleIfProtocolError, WorkflowError } from '../utils/errors.js';
4
4
  import { generateSecureUniqueId } from '../utils/generateUniqueId.js';
5
5
  import * as ipfs from '../utils/ipfs-service.js';
6
6
  import { checkProtectedDataValidity } from '../utils/subgraphQuery.js';
7
- import { addressOrEnsSchema, addressSchema, booleanSchema, contentTypeSchema, emailContentSchema, emailSubjectSchema, labelSchema, positiveNumberSchema, senderNameSchema, throwIfMissing, } from '../utils/validators.js';
8
- import { checkUserVoucher, filterWorkerpoolOrders, } from './sendEmail.models.js';
9
- export const sendEmail = async ({ graphQLClient = throwIfMissing(), iexec = throwIfMissing(), workerpoolAddressOrEns, dappAddressOrENS, dappWhitelistAddress, ipfsNode, ipfsGateway, emailSubject, emailContent, contentType = DEFAULT_CONTENT_TYPE, label, dataMaxPrice = MAX_DESIRED_DATA_ORDER_PRICE, appMaxPrice = MAX_DESIRED_APP_ORDER_PRICE, workerpoolMaxPrice = MAX_DESIRED_WORKERPOOL_ORDER_PRICE, senderName, protectedData, useVoucher = false, }) => {
10
- const vDatasetAddress = addressOrEnsSchema()
7
+ import { addressSchema, contentTypeSchema, emailContentSchema, emailSubjectSchema, labelSchema, positiveNumberSchema, senderNameSchema, throwIfMissing, } from '../utils/validators.js';
8
+ import { filterWorkerpoolOrders } from './sendEmail.models.js';
9
+ export const sendEmail = async ({ graphQLClient = throwIfMissing(), iexec = throwIfMissing(), workerpoolAddress, dappAddress, dappWhitelistAddress, ipfsNode, ipfsGateway, emailSubject, emailContent, contentType = DEFAULT_CONTENT_TYPE, label, dataMaxPrice = MAX_DESIRED_DATA_ORDER_PRICE, appMaxPrice = MAX_DESIRED_APP_ORDER_PRICE, workerpoolMaxPrice = MAX_DESIRED_WORKERPOOL_ORDER_PRICE, senderName, protectedData, }) => {
10
+ const vDatasetAddress = addressSchema()
11
11
  .required()
12
12
  .label('protectedData')
13
13
  .validateSync(protectedData);
@@ -27,14 +27,14 @@ export const sendEmail = async ({ graphQLClient = throwIfMissing(), iexec = thro
27
27
  .label('senderName')
28
28
  .validateSync(senderName);
29
29
  const vLabel = labelSchema().label('label').validateSync(label);
30
- const vWorkerpoolAddressOrEns = addressOrEnsSchema()
30
+ const vWorkerpoolAddress = addressSchema()
31
31
  .required()
32
- .label('WorkerpoolAddressOrEns')
33
- .validateSync(workerpoolAddressOrEns);
34
- const vDappAddressOrENS = addressOrEnsSchema()
32
+ .label('workerpoolAddress')
33
+ .validateSync(workerpoolAddress);
34
+ const vDappAddress = addressSchema()
35
35
  .required()
36
- .label('dappAddressOrENS')
37
- .validateSync(dappAddressOrENS);
36
+ .label('dappAddress')
37
+ .validateSync(dappAddress);
38
38
  const vDappWhitelistAddress = addressSchema()
39
39
  .required()
40
40
  .label('dappWhitelistAddress')
@@ -48,35 +48,19 @@ export const sendEmail = async ({ graphQLClient = throwIfMissing(), iexec = thro
48
48
  const vWorkerpoolMaxPrice = positiveNumberSchema()
49
49
  .label('workerpoolMaxPrice')
50
50
  .validateSync(workerpoolMaxPrice);
51
- const vUseVoucher = booleanSchema()
52
- .label('useVoucher')
53
- .validateSync(useVoucher);
54
51
  // Check protected data schema through subgraph
55
52
  const isValidProtectedData = await checkProtectedDataValidity(graphQLClient, vDatasetAddress);
56
53
  if (!isValidProtectedData) {
57
54
  throw new Error('This protected data does not contain "email:string" in its schema.');
58
55
  }
59
56
  const requesterAddress = await iexec.wallet.getAddress();
60
- let userVoucher;
61
- if (vUseVoucher) {
62
- try {
63
- userVoucher = await iexec.voucher.showUserVoucher(requesterAddress);
64
- checkUserVoucher({ userVoucher });
65
- }
66
- catch (err) {
67
- if (err?.message?.startsWith('No Voucher found for address')) {
68
- throw new Error('Oops, it seems your wallet is not associated with any voucher. Check on https://builder.iex.ec/');
69
- }
70
- throw err;
71
- }
72
- }
73
57
  try {
74
58
  // Fetch app order first to determine TEE framework
75
59
  const apporder = await iexec.orderbook
76
60
  .fetchAppOrderbook({
77
- app: dappAddressOrENS,
61
+ app: vDappAddress,
78
62
  minTag: ['tee'],
79
- workerpool: workerpoolAddressOrEns,
63
+ workerpool: vWorkerpoolAddress,
80
64
  })
81
65
  .then((appOrderbook) => {
82
66
  const desiredPriceAppOrderbook = appOrderbook.orders.filter((order) => order.order.appprice <= vAppMaxPrice);
@@ -92,7 +76,7 @@ export const sendEmail = async ({ graphQLClient = throwIfMissing(), iexec = thro
92
76
  iexec.orderbook
93
77
  .fetchDatasetOrderbook({
94
78
  dataset: vDatasetAddress,
95
- app: dappAddressOrENS,
79
+ app: vDappAddress,
96
80
  requester: requesterAddress,
97
81
  })
98
82
  .then((datasetOrderbook) => {
@@ -114,21 +98,19 @@ export const sendEmail = async ({ graphQLClient = throwIfMissing(), iexec = thro
114
98
  Promise.all([
115
99
  // for app
116
100
  iexec.orderbook.fetchWorkerpoolOrderbook({
117
- workerpool: workerpoolAddressOrEns,
118
- app: vDappAddressOrENS,
101
+ workerpool: vWorkerpoolAddress,
102
+ app: vDappAddress,
119
103
  dataset: vDatasetAddress,
120
- requester: requesterAddress, // public orders + user specific orders
121
- isRequesterStrict: useVoucher, // If voucher, we only want user specific orders
104
+ requester: requesterAddress,
122
105
  minTag: workerpoolMinTag,
123
106
  category: 0,
124
107
  }),
125
108
  // for app whitelist
126
109
  iexec.orderbook.fetchWorkerpoolOrderbook({
127
- workerpool: workerpoolAddressOrEns,
110
+ workerpool: vWorkerpoolAddress,
128
111
  app: vDappWhitelistAddress,
129
112
  dataset: vDatasetAddress,
130
- requester: requesterAddress, // public orders + user specific orders
131
- isRequesterStrict: useVoucher, // If voucher, we only want user specific orders
113
+ requester: requesterAddress,
132
114
  minTag: workerpoolMinTag,
133
115
  category: 0,
134
116
  }),
@@ -139,8 +121,6 @@ export const sendEmail = async ({ graphQLClient = throwIfMissing(), iexec = thro
139
121
  ...workerpoolOrderbookForAppWhitelist.orders,
140
122
  ],
141
123
  workerpoolMaxPrice: vWorkerpoolMaxPrice,
142
- useVoucher: vUseVoucher,
143
- userVoucher,
144
124
  });
145
125
  if (!desiredPriceWorkerpoolOrder) {
146
126
  throw new Error('No Workerpool order found for the desired price');
@@ -187,14 +167,14 @@ export const sendEmail = async ({ graphQLClient = throwIfMissing(), iexec = thro
187
167
  useCallback: true,
188
168
  }));
189
169
  const requestorderToSign = await iexec.order.createRequestorder({
190
- app: vDappAddressOrENS,
170
+ app: vDappAddress,
191
171
  category: workerpoolorder.category,
192
172
  dataset: vDatasetAddress,
193
173
  datasetmaxprice: datasetorder.datasetprice,
194
174
  appmaxprice: apporder.appprice,
195
175
  workerpoolmaxprice: workerpoolorder.workerpoolprice,
196
176
  tag: ['tee'],
197
- workerpool: vWorkerpoolAddressOrEns,
177
+ workerpool: vWorkerpoolAddress,
198
178
  callback: CALLBACK_WEB3MAIL,
199
179
  params: {
200
180
  iexec_secrets: {
@@ -210,7 +190,7 @@ export const sendEmail = async ({ graphQLClient = throwIfMissing(), iexec = thro
210
190
  datasetorder: datasetorder,
211
191
  workerpoolorder: workerpoolorder,
212
192
  requestorder: requestorder,
213
- }, { useVoucher: vUseVoucher });
193
+ });
214
194
  const taskId = await iexec.deal.computeTaskId(dealId, 0);
215
195
  return {
216
196
  taskId,
@@ -1 +1 @@
1
- {"version":3,"file":"sendEmail.js","sourceRoot":"","sources":["../../src/web3mail/sendEmail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sendEmail.js","sourceRoot":"","sources":["../../src/web3mail/sendEmail.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,17 @@
1
- import { Address, BN } from 'iexec';
2
1
  import { PublishedWorkerpoolorder } from 'iexec/IExecOrderbookModule';
3
- type VoucherInfo = {
4
- owner: Address;
5
- address: Address;
6
- type: BN;
7
- balance: BN;
8
- expirationTimestamp: BN;
9
- sponsoredApps: Address[];
10
- sponsoredDatasets: Address[];
11
- sponsoredWorkerpools: Address[];
12
- allowanceAmount: BN;
13
- authorizedAccounts: Address[];
14
- };
15
- export declare function checkUserVoucher({ userVoucher, }: {
16
- userVoucher: VoucherInfo;
17
- }): void;
18
- export declare function filterWorkerpoolOrders({ workerpoolOrders, workerpoolMaxPrice, useVoucher, userVoucher, }: {
2
+ export declare function filterWorkerpoolOrders({ workerpoolOrders, workerpoolMaxPrice, }: {
19
3
  workerpoolOrders: PublishedWorkerpoolorder[];
20
4
  workerpoolMaxPrice: number;
21
- useVoucher: boolean;
22
- userVoucher?: VoucherInfo;
23
5
  }): {
24
- workerpool: Address;
6
+ workerpool: import("iexec/IExecOrderbookModule").Address;
25
7
  workerpoolprice: number;
26
8
  volume: number;
27
- tag: import("iexec").Bytes32;
9
+ tag: import("iexec/IExecOrderbookModule").Bytes32;
28
10
  category: number;
29
11
  trust: number;
30
- apprestrict: Address;
31
- datasetrestrict: Address;
32
- requesterrestrict: Address;
33
- salt: import("iexec").Bytes32;
34
- sign: import("iexec").Bytes;
12
+ apprestrict: import("iexec/IExecOrderbookModule").Address;
13
+ datasetrestrict: import("iexec/IExecOrderbookModule").Address;
14
+ requesterrestrict: import("iexec/IExecOrderbookModule").Address;
15
+ salt: import("iexec/IExecOrderbookModule").Bytes32;
16
+ sign: import("iexec/IExecOrderbookModule").Bytes;
35
17
  };
36
- export {};
@@ -1,35 +1,12 @@
1
- function bnToNumber(bn) {
2
- return Number(bn.toString());
3
- }
4
- export function checkUserVoucher({ userVoucher, }) {
5
- if (bnToNumber(userVoucher.expirationTimestamp) < Date.now() / 1000) {
6
- throw new Error('Oops, it seems your voucher has expired. You might want to ask for a top up. Check on https://builder.iex.ec/');
7
- }
8
- if (bnToNumber(userVoucher.balance) === 0) {
9
- throw new Error('Oops, it seems your voucher is empty. You might want to ask for a top up. Check on https://builder.iex.ec/');
10
- }
11
- }
12
- export function filterWorkerpoolOrders({ workerpoolOrders, workerpoolMaxPrice, useVoucher, userVoucher, }) {
1
+ export function filterWorkerpoolOrders({ workerpoolOrders, workerpoolMaxPrice, }) {
13
2
  if (workerpoolOrders.length === 0) {
14
3
  return null;
15
4
  }
16
- let eligibleWorkerpoolOrders = workerpoolOrders;
17
- let maxVoucherSponsoredAmount = 0; // may be safer to use bigint
18
- if (useVoucher) {
19
- if (!userVoucher) {
20
- throw new Error('useVoucher === true but userVoucher is undefined? Hum...');
21
- }
22
- // only voucher sponsored workerpoolorders
23
- eligibleWorkerpoolOrders = eligibleWorkerpoolOrders.filter(({ order }) => userVoucher.sponsoredWorkerpools.includes(order.workerpool));
24
- if (eligibleWorkerpoolOrders.length === 0) {
25
- throw new Error('Found some workerpool orders but none can be sponsored by your voucher.');
26
- }
27
- maxVoucherSponsoredAmount = bnToNumber(userVoucher.balance);
28
- }
29
- const [cheapestOrder] = eligibleWorkerpoolOrders.sort((order1, order2) => order1.order.workerpoolprice - order2.order.workerpoolprice);
5
+ const [cheapestOrder] = workerpoolOrders
6
+ .slice()
7
+ .sort((order1, order2) => order1.order.workerpoolprice - order2.order.workerpoolprice);
30
8
  if (!cheapestOrder ||
31
- cheapestOrder.order.workerpoolprice >
32
- workerpoolMaxPrice + maxVoucherSponsoredAmount) {
9
+ cheapestOrder.order.workerpoolprice > workerpoolMaxPrice) {
33
10
  return null;
34
11
  }
35
12
  return cheapestOrder.order;
@@ -1 +1 @@
1
- {"version":3,"file":"sendEmail.models.js","sourceRoot":"","sources":["../../src/web3mail/sendEmail.models.ts"],"names":[],"mappings":"AAkBA,SAAS,UAAU,CAAC,EAAM;IACxB,OAAO,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,WAAW,GAGZ;IACC,IAAI,UAAU,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CACb,+GAA+G,CAChH,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,4GAA4G,CAC7G,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,EACrC,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,WAAW,GAMZ;IACC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,wBAAwB,GAAG,gBAAgB,CAAC;IAChD,IAAI,yBAAyB,GAAG,CAAC,CAAC,CAAC,6BAA6B;IAEhE,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;QACJ,CAAC;QACD,0CAA0C;QAC1C,wBAAwB,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CACvE,WAAW,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAC5D,CAAC;QACF,IAAI,wBAAwB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E,CAAC;QACJ,CAAC;QACD,yBAAyB,GAAG,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,GAAG,wBAAwB,CAAC,IAAI,CACnD,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CACjB,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAC9D,CAAC;IAEF,IACE,CAAC,aAAa;QACd,aAAa,CAAC,KAAK,CAAC,eAAe;YACjC,kBAAkB,GAAG,yBAAyB,EAChD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,aAAa,CAAC,KAAK,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"sendEmail.models.js","sourceRoot":"","sources":["../../src/web3mail/sendEmail.models.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,EACrC,gBAAgB,EAChB,kBAAkB,GAInB;IACC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,GAAG,gBAAgB;SACrC,KAAK,EAAE;SACP,IAAI,CACH,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CACjB,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAC9D,CAAC;IAEJ,IACE,CAAC,aAAa;QACd,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,kBAAkB,EACxD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,aAAa,CAAC,KAAK,CAAC;AAC7B,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { SendEmailCampaignParams, SendEmailCampaignResponse } from './types.js';
2
2
  import { DataProtectorConsumer } from './internalTypes.js';
3
3
  export type SendEmailCampaign = typeof sendEmailCampaign;
4
- export declare const sendEmailCampaign: ({ dataProtector, workerpoolAddressOrEns, campaignRequest, }: DataProtectorConsumer & SendEmailCampaignParams) => Promise<SendEmailCampaignResponse>;
4
+ export declare const sendEmailCampaign: ({ dataProtector, workerpoolAddress, campaignRequest, }: DataProtectorConsumer & SendEmailCampaignParams) => Promise<SendEmailCampaignResponse>;
@@ -1,26 +1,26 @@
1
1
  import { NULL_ADDRESS } from 'iexec/utils';
2
2
  import { ValidationError } from 'yup';
3
3
  import { handleIfProtocolError, WorkflowError } from '../utils/errors.js';
4
- import { addressOrEnsSchema, campaignRequestSchema, throwIfMissing, } from '../utils/validators.js';
5
- export const sendEmailCampaign = async ({ dataProtector = throwIfMissing(), workerpoolAddressOrEns = throwIfMissing(), campaignRequest, }) => {
4
+ import { addressSchema, campaignRequestSchema, throwIfMissing, } from '../utils/validators.js';
5
+ export const sendEmailCampaign = async ({ dataProtector = throwIfMissing(), workerpoolAddress = throwIfMissing(), campaignRequest, }) => {
6
6
  const vCampaignRequest = campaignRequestSchema()
7
7
  .required()
8
8
  .label('campaignRequest')
9
9
  .validateSync(campaignRequest);
10
- const vWorkerpoolAddressOrEns = addressOrEnsSchema()
10
+ const vWorkerpoolAddress = addressSchema()
11
11
  .required()
12
- .label('workerpoolAddressOrEns')
13
- .validateSync(workerpoolAddressOrEns);
12
+ .label('workerpoolAddress')
13
+ .validateSync(workerpoolAddress);
14
14
  if (vCampaignRequest.workerpool !== NULL_ADDRESS &&
15
15
  vCampaignRequest.workerpool.toLowerCase() !==
16
- vWorkerpoolAddressOrEns.toLowerCase()) {
17
- throw new ValidationError("workerpoolAddressOrEns doesn't match campaignRequest workerpool");
16
+ vWorkerpoolAddress.toLowerCase()) {
17
+ throw new ValidationError("workerpoolAddress doesn't match campaignRequest workerpool");
18
18
  }
19
19
  try {
20
20
  // Process the prepared bulk request
21
21
  const processBulkRequestResponse = await dataProtector.processBulkRequest({
22
22
  bulkRequest: vCampaignRequest,
23
- workerpool: vWorkerpoolAddressOrEns,
23
+ workerpool: vWorkerpoolAddress,
24
24
  waitForResult: false,
25
25
  });
26
26
  return processBulkRequestResponse;
@@ -31,7 +31,6 @@ export const sendEmailCampaign = async ({ dataProtector = throwIfMissing(), work
31
31
  throw error;
32
32
  }
33
33
  // Handle protocol errors - this will throw if it's an ApiCallError
34
- // handleIfProtocolError transforms ApiCallError into a WorkflowError with isProtocolError=true
35
34
  handleIfProtocolError(error);
36
35
  // For all other errors
37
36
  throw new WorkflowError({
@@ -1 +1 @@
1
- {"version":3,"file":"sendEmailCampaign.js","sourceRoot":"","sources":["../../src/web3mail/sendEmailCampaign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,GACf,MAAM,wBAAwB,CAAC;AAUhC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,aAAa,GAAG,cAAc,EAAE,EAChC,sBAAsB,GAAG,cAAc,EAAE,EACzC,eAAe,GAEQ,EAAsC,EAAE;IAC/D,MAAM,gBAAgB,GAAG,qBAAqB,EAAE;SAC7C,QAAQ,EAAE;SACV,KAAK,CAAC,iBAAiB,CAAC;SACxB,YAAY,CAAC,eAAe,CAAoB,CAAC;IAEpD,MAAM,uBAAuB,GAAG,kBAAkB,EAAE;SACjD,QAAQ,EAAE;SACV,KAAK,CAAC,wBAAwB,CAAC;SAC/B,YAAY,CAAC,sBAAsB,CAAC,CAAC;IAExC,IACE,gBAAgB,CAAC,UAAU,KAAK,YAAY;QAC5C,gBAAgB,CAAC,UAAU,CAAC,WAAW,EAAE;YACvC,uBAAuB,CAAC,WAAW,EAAE,EACvC,CAAC;QACD,MAAM,IAAI,eAAe,CACvB,iEAAiE,CAClE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,0BAA0B,GAAG,MAAM,aAAa,CAAC,kBAAkB,CAAC;YACxE,WAAW,EAAE,gBAAgB;YAC7B,UAAU,EAAE,uBAAuB;YACnC,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;QAEH,OAAO,0BAA0B,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,6CAA6C;QAC7C,IAAK,KAAa,EAAE,eAAe,KAAK,IAAI,EAAE,CAAC;YAC7C,MAAM,KAAK,CAAC;QACd,CAAC;QAED,mEAAmE;QACnE,+FAA+F;QAC/F,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAE7B,uBAAuB;QACvB,MAAM,IAAI,aAAa,CAAC;YACtB,OAAO,EAAE,6BAA6B;YACtC,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"sendEmailCampaign.js","sourceRoot":"","sources":["../../src/web3mail/sendEmailCampaign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,cAAc,GACf,MAAM,wBAAwB,CAAC;AAUhC,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,aAAa,GAAG,cAAc,EAAE,EAChC,iBAAiB,GAAG,cAAc,EAAE,EACpC,eAAe,GAEQ,EAAsC,EAAE;IAC/D,MAAM,gBAAgB,GAAG,qBAAqB,EAAE;SAC7C,QAAQ,EAAE;SACV,KAAK,CAAC,iBAAiB,CAAC;SACxB,YAAY,CAAC,eAAe,CAAoB,CAAC;IAEpD,MAAM,kBAAkB,GAAG,aAAa,EAAE;SACvC,QAAQ,EAAE;SACV,KAAK,CAAC,mBAAmB,CAAC;SAC1B,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAEnC,IACE,gBAAgB,CAAC,UAAU,KAAK,YAAY;QAC5C,gBAAgB,CAAC,UAAU,CAAC,WAAW,EAAE;YACvC,kBAAkB,CAAC,WAAW,EAAE,EAClC,CAAC;QACD,MAAM,IAAI,eAAe,CACvB,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,0BAA0B,GAAG,MAAM,aAAa,CAAC,kBAAkB,CAAC;YACxE,WAAW,EAAE,gBAAgB;YAC7B,UAAU,EAAE,kBAAkB;YAC9B,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;QAEH,OAAO,0BAA0B,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,6CAA6C;QAC7C,IAAK,KAAa,EAAE,eAAe,KAAK,IAAI,EAAE,CAAC;YAC7C,MAAM,KAAK,CAAC;QACd,CAAC;QAED,mEAAmE;QACnE,qBAAqB,CAAC,KAAc,CAAC,CAAC;QAEtC,uBAAuB;QACvB,MAAM,IAAI,aAAa,CAAC;YACtB,OAAO,EAAE,6BAA6B;YACtC,UAAU,EAAE,KAAc;SAC3B,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}
@@ -1,9 +1,7 @@
1
- import { EnhancedWallet } from 'iexec';
1
+ import type { AbstractSigner } from 'ethers';
2
2
  import { IExecConfigOptions } from 'iexec/IExecConfig';
3
3
  import type { BulkRequest } from '@iexec/dataprotector';
4
- export type Web3SignerProvider = EnhancedWallet;
5
- export type ENS = string;
6
- export type AddressOrENS = Address | ENS;
4
+ export type Web3SignerProvider = AbstractSigner;
7
5
  export type Address = string;
8
6
  export type TimeStamp = string;
9
7
  /**
@@ -50,11 +48,10 @@ export type SendEmailParams = {
50
48
  contentType?: string;
51
49
  senderName?: string;
52
50
  label?: string;
53
- workerpoolAddressOrEns?: AddressOrENS;
51
+ workerpoolAddress?: Address;
54
52
  dataMaxPrice?: number;
55
53
  appMaxPrice?: number;
56
54
  workerpoolMaxPrice?: number;
57
- useVoucher?: boolean;
58
55
  };
59
56
  export type FetchMyContactsParams = {
60
57
  /**
@@ -87,10 +84,10 @@ export type SendEmailResponse = {
87
84
  */
88
85
  export type Web3MailConfigOptions = {
89
86
  /**
90
- * The Ethereum contract address or ENS (Ethereum Name Service) for the email sender dapp.
87
+ * Ethereum contract address for the email sender dapp.
91
88
  * If not provided, the default web3mail address will be used.
92
89
  */
93
- dappAddressOrENS?: AddressOrENS;
90
+ dappAddress?: Address;
94
91
  /**
95
92
  * The Ethereum contract address for the whitelist.
96
93
  * If not provided, the default whitelist smart contract address will be used.
@@ -136,7 +133,7 @@ export type PrepareEmailCampaignParams = {
136
133
  emailContent: string;
137
134
  contentType?: string;
138
135
  label?: string;
139
- workerpoolAddressOrEns?: AddressOrENS;
136
+ workerpoolAddress?: Address;
140
137
  dataMaxPrice?: number;
141
138
  appMaxPrice?: number;
142
139
  workerpoolMaxPrice?: number;
@@ -155,9 +152,9 @@ export type SendEmailCampaignParams = {
155
152
  */
156
153
  campaignRequest: CampaignRequest;
157
154
  /**
158
- * Workerpool address or ENS to use for processing
155
+ * Workerpool contract address used for processing
159
156
  */
160
- workerpoolAddressOrEns?: AddressOrENS;
157
+ workerpoolAddress?: string;
161
158
  };
162
159
  export type SendEmailCampaignResponse = {
163
160
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iexec/web3mail",
3
- "version": "1.8.0",
3
+ "version": "2.0.0",
4
4
  "description": "This product enables users to confidentially store data–such as mail address, documents, personal information ...",
5
5
  "main": "./dist/index.js",
6
6
  "type": "module",
@@ -20,7 +20,7 @@
20
20
  "scripts": {
21
21
  "build": "rm -rf dist && tsc --project tsconfig.build.json",
22
22
  "check-types": "tsc --noEmit",
23
- "test:prepare": "node tests/scripts/prepare-bellecour-fork-for-tests.js && node tests/scripts/prepare-iexec.js",
23
+ "test:prepare": "node tests/scripts/prepare-forks-for-tests.js",
24
24
  "test:coverage": "NODE_OPTIONS=--experimental-vm-modules jest --testMatch \"**/tests/**/*.test.ts\" --forceExit --coverage",
25
25
  "test:unit": "NODE_OPTIONS=--experimental-vm-modules jest --testMatch \"**/tests/unit/**/*.test.ts\" -b",
26
26
  "test:unit:coverage": "NODE_OPTIONS=--experimental-vm-modules jest --testMatch \"**/tests/unit/**/*.unit.ts\" --coverage",
@@ -46,11 +46,11 @@
46
46
  },
47
47
  "homepage": "https://github.com/iExecBlockchainComputing/web3mail-sdk#readme",
48
48
  "dependencies": {
49
- "@iexec/dataprotector": "^2.0.0-beta.24",
49
+ "@iexec/dataprotector": "^2.0.0-beta.27",
50
50
  "buffer": "^6.0.3",
51
51
  "ethers": "^6.15.0",
52
52
  "graphql-request": "^6.1.0",
53
- "iexec": "^8.24.0",
53
+ "iexec": "^9.0.0",
54
54
  "kubo-rpc-client": "^5.4.1",
55
55
  "yup": "^1.1.1"
56
56
  },
@@ -5,8 +5,6 @@ export const DEFAULT_CONTENT_TYPE = 'text/plain';
5
5
  export const ANY_DATASET_ADDRESS = 'any';
6
6
  export const CALLBACK_WEB3MAIL = '0x5f936db7ad6d29371808e42a87015595d90509ba';
7
7
 
8
- export const DEFAULT_CHAIN_ID = 134;
9
-
10
8
  interface ChainConfig {
11
9
  name: string;
12
10
  dappAddress?: string;
@@ -19,20 +17,10 @@ interface ChainConfig {
19
17
  }
20
18
 
21
19
  const CHAIN_CONFIG: Record<number, ChainConfig> = {
22
- 134: {
23
- name: 'bellecour',
24
- dappAddress: 'web3mail.apps.iexec.eth',
25
- prodWorkerpoolAddress: 'prod-v8-bellecour.main.pools.iexec.eth',
26
- dataProtectorSubgraph:
27
- 'https://thegraph.iex.ec/subgraphs/name/bellecour/dataprotector-v2',
28
- ipfsUploadUrl: '/dns4/ipfs-upload.v8-bellecour.iex.ec/https',
29
- ipfsGateway: 'https://ipfs-gateway.v8-bellecour.iex.ec',
30
- whitelistSmartContract: '0x781482C39CcE25546583EaC4957Fb7Bf04C277D2',
31
- },
32
20
  421614: {
33
21
  name: 'arbitrum-sepolia-testnet',
34
22
  dappAddress: undefined, // ENS not supported on this network, address will be resolved from Compass
35
- prodWorkerpoolAddress: '0xB967057a21dc6A66A29721d96b8Aa7454B7c383F',
23
+ prodWorkerpoolAddress: '0x2956f0cb779904795a5f30d3b3ea88b714c3123f', // TDX workerpool
36
24
  dataProtectorSubgraph:
37
25
  'https://thegraph.arbitrum-sepolia-testnet.iex.ec/api/subgraphs/id/5YjRPLtjS6GH6bB4yY55Qg4HzwtRGQ8TaHtGf9UBWWd',
38
26
  ipfsGateway: 'https://ipfs-gateway.arbitrum-sepolia-testnet.iex.ec',
@@ -42,7 +30,7 @@ const CHAIN_CONFIG: Record<number, ChainConfig> = {
42
30
  42161: {
43
31
  name: 'arbitrum-mainnet',
44
32
  dappAddress: undefined, // ENS not supported on this network, address will be resolved from Compass
45
- prodWorkerpoolAddress: '0x2C06263943180Cc024dAFfeEe15612DB6e5fD248',
33
+ prodWorkerpoolAddress: '0x8ef2ec3ef9535d4b4349bfec7d8b31a580e60244', // TDX workerpool
46
34
  dataProtectorSubgraph:
47
35
  'https://thegraph.arbitrum.iex.ec/api/subgraphs/id/Ep5zs5zVr4tDiVuQJepUu51e5eWYJpka624X4DMBxe3u',
48
36
  ipfsGateway: 'https://ipfs-gateway.arbitrum-mainnet.iex.ec',
@@ -67,3 +55,27 @@ export const getChainDefaultConfig = (
67
55
 
68
56
  return config;
69
57
  };
58
+
59
+ /**
60
+ * When `ethProvider` is a string, it may be an RPC URL, a decimal chain id, or an
61
+ * iExec chain host name (see each chain's `name` in CHAIN_CONFIG). RPC URLs are not
62
+ * resolved here (returns undefined); JsonRpcProvider handles those.
63
+ */
64
+ export function tryResolveChainIdFromProviderString(
65
+ hint: string
66
+ ): number | undefined {
67
+ const trimmed = hint.trim();
68
+ if (/^https?:\/\//i.test(trimmed)) {
69
+ return undefined;
70
+ }
71
+ if (/^\d+$/.test(trimmed)) {
72
+ return Number(trimmed);
73
+ }
74
+ const lower = trimmed.toLowerCase();
75
+ for (const [id, cfg] of Object.entries(CHAIN_CONFIG)) {
76
+ if (cfg.name.toLowerCase() === lower) {
77
+ return Number(id);
78
+ }
79
+ }
80
+ return undefined;
81
+ }
@@ -5,7 +5,7 @@ import {
5
5
  AbstractSigner,
6
6
  Eip1193Provider,
7
7
  } from 'ethers';
8
- import { DEFAULT_CHAIN_ID } from '../config/config.js';
8
+ import { tryResolveChainIdFromProviderString } from '../config/config.js';
9
9
 
10
10
  type EthersCompatibleProvider =
11
11
  | string
@@ -18,6 +18,10 @@ export async function getChainIdFromProvider(
18
18
  ): Promise<number> {
19
19
  try {
20
20
  if (typeof ethProvider === 'string') {
21
+ const resolved = tryResolveChainIdFromProviderString(ethProvider);
22
+ if (resolved !== undefined) {
23
+ return resolved;
24
+ }
21
25
  const provider = new JsonRpcProvider(ethProvider);
22
26
  const network = await provider.getNetwork();
23
27
  return Number(network.chainId);
@@ -38,6 +42,11 @@ export async function getChainIdFromProvider(
38
42
  }
39
43
  } catch (e) {
40
44
  console.warn('Failed to detect chainId:', e);
45
+ throw new Error(
46
+ `Failed to detect chainId from ethProvider: ${
47
+ e instanceof Error ? e.message : String(e)
48
+ }`
49
+ );
41
50
  }
42
- return DEFAULT_CHAIN_ID;
51
+ throw new Error('Unsupported ethProvider for chain ID detection');
43
52
  }
@@ -1,13 +1,20 @@
1
1
  import { getSignerFromPrivateKey } from 'iexec/utils';
2
2
  import { Web3SignerProvider } from '../web3mail/types.js';
3
3
 
4
+ /**
5
+ * Build an ethers signer for Node.js from a private key and an explicit chain.
6
+ *
7
+ * `host` must be provided (chain id or iExec chain host string). There is no default
8
+ * chain: omitting it used to fall back to Arbitrum Sepolia and could migrate users
9
+ * silently when defaults change.
10
+ *
11
+ * @see https://github.com/iExecBlockchainComputing/dataprotector-sdk/blob/dataprotector-v2.0.0-beta.27/packages/sdk/src/utils/getWeb3Provider.ts
12
+ */
4
13
  export const getWeb3Provider = (
5
14
  privateKey: string,
6
- options: { allowExperimentalNetworks?: boolean; host?: number | string } = {}
7
- ): Web3SignerProvider => {
8
- const chainHost = options?.host ? `${options.host}` : 'bellecour';
9
- return getSignerFromPrivateKey(chainHost, privateKey, {
15
+ host: number | string,
16
+ options: { allowExperimentalNetworks?: boolean } = {}
17
+ ): Web3SignerProvider =>
18
+ getSignerFromPrivateKey(`${host}`, privateKey, {
10
19
  allowExperimentalNetworks: options?.allowExperimentalNetworks,
11
- providers: {},
12
20
  });
13
- };