@fuel-ts/account 0.0.0-pr-1699-20240214105147 → 0.0.0-pr-1699-20240214162234

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.

Potentially problematic release.


This version of @fuel-ts/account might be problematic. Click here for more details.

Files changed (34) hide show
  1. package/dist/account.d.ts +1 -0
  2. package/dist/account.d.ts.map +1 -1
  3. package/dist/connectors/fuel.d.ts +9 -4
  4. package/dist/connectors/fuel.d.ts.map +1 -1
  5. package/dist/connectors/index.d.ts +0 -4
  6. package/dist/connectors/index.d.ts.map +1 -1
  7. package/dist/connectors/types/index.d.ts +1 -1
  8. package/dist/connectors/types/index.d.ts.map +1 -1
  9. package/dist/connectors/types/local-storage.d.ts +11 -0
  10. package/dist/connectors/types/local-storage.d.ts.map +1 -0
  11. package/dist/index.global.js +72 -1270
  12. package/dist/index.global.js.map +1 -1
  13. package/dist/index.js +74 -302
  14. package/dist/index.js.map +1 -1
  15. package/dist/index.mjs +73 -298
  16. package/dist/index.mjs.map +1 -1
  17. package/dist/providers/provider.d.ts.map +1 -1
  18. package/dist/test-utils.global.js +43 -24
  19. package/dist/test-utils.global.js.map +1 -1
  20. package/dist/test-utils.js +43 -24
  21. package/dist/test-utils.js.map +1 -1
  22. package/dist/test-utils.mjs +43 -24
  23. package/dist/test-utils.mjs.map +1 -1
  24. package/package.json +16 -16
  25. package/dist/connectors/default-connector.d.ts +0 -7
  26. package/dist/connectors/default-connector.d.ts.map +0 -1
  27. package/dist/connectors/fuel-wallet-connector.d.ts +0 -54
  28. package/dist/connectors/fuel-wallet-connector.d.ts.map +0 -1
  29. package/dist/connectors/fuel-wallet-development-connector.d.ts +0 -7
  30. package/dist/connectors/fuel-wallet-development-connector.d.ts.map +0 -1
  31. package/dist/connectors/fuelet-wallet-connector.d.ts +0 -8
  32. package/dist/connectors/fuelet-wallet-connector.d.ts.map +0 -1
  33. package/dist/connectors/types/fuel-storage.d.ts +0 -11
  34. package/dist/connectors/types/fuel-storage.d.ts.map +0 -1
package/dist/index.mjs CHANGED
@@ -3759,23 +3759,6 @@ var _Provider = class {
3759
3759
  if (estimateTxDependencies) {
3760
3760
  await this.estimateTxDependencies(transactionRequest);
3761
3761
  }
3762
- const { gasUsed, minGasPrice } = await this.getTransactionCost(transactionRequest, [], {
3763
- estimateTxDependencies: false,
3764
- estimatePredicates: false
3765
- });
3766
- if (bn14(minGasPrice).gt(bn14(transactionRequest.gasPrice))) {
3767
- throw new FuelError12(
3768
- ErrorCode11.GAS_PRICE_TOO_LOW,
3769
- `Gas price '${transactionRequest.gasPrice}' is lower than the required: '${minGasPrice}'.`
3770
- );
3771
- }
3772
- const isScriptTransaction = transactionRequest.type === TransactionType8.Script;
3773
- if (isScriptTransaction && bn14(gasUsed).gt(bn14(transactionRequest.gasLimit))) {
3774
- throw new FuelError12(
3775
- ErrorCode11.GAS_LIMIT_TOO_LOW,
3776
- `Gas limit '${transactionRequest.gasLimit}' is lower than the required: '${gasUsed}'.`
3777
- );
3778
- }
3779
3762
  const encodedTransaction = hexlify12(transactionRequest.toTransactionBytes());
3780
3763
  if (awaitExecution) {
3781
3764
  const subscription = this.operations.submitAndAwait({ encodedTransaction });
@@ -4735,10 +4718,14 @@ var Account = class extends AbstractAccount {
4735
4718
  const request = new ScriptTransactionRequest(params);
4736
4719
  request.addCoinOutput(Address3.fromAddressOrString(destination), amount, assetId);
4737
4720
  const { maxFee, requiredQuantities, gasUsed } = await this.provider.getTransactionCost(request);
4738
- const gasPriceToUse = bn16(txParams.gasPrice ?? minGasPrice);
4739
- const gasLimitToUse = bn16(txParams.gasLimit ?? gasUsed);
4740
- request.gasPrice = gasPriceToUse;
4741
- request.gasLimit = gasLimitToUse;
4721
+ request.gasPrice = bn16(txParams.gasPrice ?? minGasPrice);
4722
+ request.gasLimit = bn16(txParams.gasLimit ?? gasUsed);
4723
+ this.validateGas({
4724
+ gasUsed,
4725
+ gasPrice: request.gasPrice,
4726
+ gasLimit: request.gasLimit,
4727
+ minGasPrice
4728
+ });
4742
4729
  await this.fund(request, requiredQuantities, maxFee);
4743
4730
  return request;
4744
4731
  }
@@ -4783,7 +4770,13 @@ var Account = class extends AbstractAccount {
4783
4770
  request,
4784
4771
  [{ amount: bn16(amount), assetId: String(assetId) }]
4785
4772
  );
4786
- request.gasLimit = bn16(params.gasLimit || gasUsed);
4773
+ request.gasLimit = bn16(params.gasLimit ?? gasUsed);
4774
+ this.validateGas({
4775
+ gasUsed,
4776
+ gasPrice: request.gasPrice,
4777
+ gasLimit: request.gasLimit,
4778
+ minGasPrice
4779
+ });
4787
4780
  await this.fund(request, requiredQuantities, maxFee);
4788
4781
  return this.sendTransaction(request);
4789
4782
  }
@@ -4796,6 +4789,7 @@ var Account = class extends AbstractAccount {
4796
4789
  * @returns A promise that resolves to the transaction response.
4797
4790
  */
4798
4791
  async withdrawToBaseLayer(recipient, amount, txParams = {}) {
4792
+ const { minGasPrice } = this.provider.getGasConfig();
4799
4793
  const recipientAddress = Address3.fromAddressOrString(recipient);
4800
4794
  const recipientDataArray = getBytesCopy15(
4801
4795
  "0x".concat(recipientAddress.toHexString().substring(2).padStart(64, "0"))
@@ -4808,14 +4802,20 @@ var Account = class extends AbstractAccount {
4808
4802
  ...recipientDataArray,
4809
4803
  ...amountDataArray
4810
4804
  ]);
4811
- const params = { script, ...txParams };
4805
+ const params = { script, gasPrice: minGasPrice, ...txParams };
4812
4806
  const request = new ScriptTransactionRequest(params);
4813
4807
  const forwardingQuantities = [{ amount: bn16(amount), assetId: BaseAssetId3 }];
4814
4808
  const { requiredQuantities, maxFee, gasUsed } = await this.provider.getTransactionCost(
4815
4809
  request,
4816
4810
  forwardingQuantities
4817
4811
  );
4818
- request.gasLimit = params.gasLimit ? bn16(params.gasLimit) : gasUsed;
4812
+ request.gasLimit = bn16(params.gasLimit ?? gasUsed);
4813
+ this.validateGas({
4814
+ gasUsed,
4815
+ gasPrice: request.gasPrice,
4816
+ gasLimit: request.gasLimit,
4817
+ minGasPrice
4818
+ });
4819
4819
  await this.fund(request, requiredQuantities, maxFee);
4820
4820
  return this.sendTransaction(request);
4821
4821
  }
@@ -4844,6 +4844,25 @@ var Account = class extends AbstractAccount {
4844
4844
  await this.provider.estimateTxDependencies(transactionRequest);
4845
4845
  return this.provider.simulate(transactionRequest, { estimateTxDependencies: false });
4846
4846
  }
4847
+ validateGas({
4848
+ gasUsed,
4849
+ gasPrice,
4850
+ gasLimit,
4851
+ minGasPrice
4852
+ }) {
4853
+ if (minGasPrice.gt(gasPrice)) {
4854
+ throw new FuelError14(
4855
+ ErrorCode13.GAS_PRICE_TOO_LOW,
4856
+ `Gas price '${gasPrice}' is lower than the required: '${minGasPrice}'.`
4857
+ );
4858
+ }
4859
+ if (gasUsed.gt(gasLimit)) {
4860
+ throw new FuelError14(
4861
+ ErrorCode13.GAS_LIMIT_TOO_LOW,
4862
+ `Gas limit '${gasLimit}' is lower than the required: '${gasUsed}'.`
4863
+ );
4864
+ }
4865
+ }
4847
4866
  };
4848
4867
 
4849
4868
  // src/wallet/base-wallet-unlocked.ts
@@ -8529,10 +8548,6 @@ var Predicate = class extends Account {
8529
8548
  }
8530
8549
  };
8531
8550
 
8532
- // src/connectors/fuel-wallet-connector.ts
8533
- import { JSONRPCClient } from "json-rpc-2.0";
8534
- import { v4 as randomUUID } from "uuid";
8535
-
8536
8551
  // src/connectors/fuel-connector.ts
8537
8552
  import { EventEmitter as EventEmitter2 } from "events";
8538
8553
 
@@ -8592,6 +8607,26 @@ var MessageTypes = /* @__PURE__ */ ((MessageTypes2) => {
8592
8607
  return MessageTypes2;
8593
8608
  })(MessageTypes || {});
8594
8609
 
8610
+ // src/connectors/types/local-storage.ts
8611
+ var LocalStorage = class {
8612
+ storage;
8613
+ constructor(localStorage) {
8614
+ this.storage = localStorage;
8615
+ }
8616
+ async setItem(key, value) {
8617
+ this.storage.setItem(key, value);
8618
+ }
8619
+ async getItem(key) {
8620
+ return this.storage.getItem(key);
8621
+ }
8622
+ async removeItem(key) {
8623
+ this.storage.removeItem(key);
8624
+ }
8625
+ async clear() {
8626
+ this.storage.clear();
8627
+ }
8628
+ };
8629
+
8595
8630
  // src/connectors/fuel-connector.ts
8596
8631
  var FuelConnector = class extends EventEmitter2 {
8597
8632
  name = "";
@@ -8810,261 +8845,6 @@ var FuelConnector = class extends EventEmitter2 {
8810
8845
  }
8811
8846
  };
8812
8847
 
8813
- // src/connectors/fuel-wallet-connector.ts
8814
- var FuelWalletConnector = class extends FuelConnector {
8815
- name = "";
8816
- connected = false;
8817
- installed = false;
8818
- events = FuelConnectorEventTypes;
8819
- metadata = {
8820
- image: "/connectors/fuel-wallet.svg",
8821
- install: {
8822
- action: "Install",
8823
- description: "To connect your Fuel Wallet, install the browser extension.",
8824
- link: "https://chrome.google.com/webstore/detail/fuel-wallet/dldjpboieedgcmpkchcjcbijingjcgok"
8825
- }
8826
- };
8827
- client;
8828
- constructor(name = "Fuel Wallet") {
8829
- super();
8830
- this.name = name;
8831
- this.setMaxListeners(100);
8832
- this.client = new JSONRPCClient(this.sendRequest.bind(this), this.createRequestId);
8833
- this.setupListener();
8834
- this.setupConnector();
8835
- }
8836
- /**
8837
- * ============================================================
8838
- * Application communication methods
8839
- * ============================================================
8840
- */
8841
- setupConnector() {
8842
- if (typeof window !== "undefined") {
8843
- this.ping().then(() => {
8844
- window.dispatchEvent(new CustomEvent("FuelConnector", { detail: this }));
8845
- }).catch(() => {
8846
- });
8847
- }
8848
- }
8849
- acceptMessage(message) {
8850
- const { data: event } = message;
8851
- return message.origin === window.origin && event.type !== "request" /* request */ && event.connectorName === this.name && event.target === CONNECTOR_SCRIPT;
8852
- }
8853
- setupListener() {
8854
- if (typeof window === "undefined") {
8855
- return;
8856
- }
8857
- window.addEventListener(EVENT_MESSAGE, this.onMessage.bind(this));
8858
- }
8859
- createRequestId() {
8860
- return randomUUID();
8861
- }
8862
- postMessage(message, origin) {
8863
- window.postMessage(message, origin || window.origin);
8864
- }
8865
- // eslint-disable-next-line @typescript-eslint/require-await
8866
- async sendRequest(request) {
8867
- if (!request) {
8868
- return;
8869
- }
8870
- this.postMessage({
8871
- type: "request" /* request */,
8872
- target: CONTENT_SCRIPT_NAME,
8873
- connectorName: this.name,
8874
- request
8875
- });
8876
- }
8877
- onResponse(message) {
8878
- this.client.receive(message.response);
8879
- }
8880
- onEvent(message) {
8881
- message.events.forEach((eventData) => {
8882
- if (eventData.event === "start") {
8883
- this.setupConnector();
8884
- } else {
8885
- this.emit(eventData.event, ...eventData.params);
8886
- }
8887
- });
8888
- }
8889
- onMessage = (message) => {
8890
- const messageFroze = Object.freeze(message);
8891
- if (!this.acceptMessage(messageFroze)) {
8892
- return;
8893
- }
8894
- const { data: event } = messageFroze;
8895
- this.onCommunicationMessage(event);
8896
- };
8897
- onCommunicationMessage = (message) => {
8898
- switch (message.type) {
8899
- case "response" /* response */:
8900
- this.onResponse(message);
8901
- break;
8902
- case "event" /* event */:
8903
- this.onEvent(message);
8904
- break;
8905
- default:
8906
- }
8907
- };
8908
- /**
8909
- * ============================================================
8910
- * Connector methods
8911
- * ============================================================
8912
- */
8913
- async ping() {
8914
- return this.client.timeout(800).request("ping", {});
8915
- }
8916
- async isConnected() {
8917
- try {
8918
- return await this.client.request("isConnected", {});
8919
- } catch {
8920
- return false;
8921
- }
8922
- }
8923
- async connect() {
8924
- return this.client.request("connect", {});
8925
- }
8926
- async disconnect() {
8927
- return this.client.request("disconnect", {});
8928
- }
8929
- async accounts() {
8930
- return this.client.request("accounts", {});
8931
- }
8932
- async currentAccount() {
8933
- return this.client.request("currentAccount", {});
8934
- }
8935
- async signMessage(address, message) {
8936
- if (!message.trim()) {
8937
- throw new Error("Message is required");
8938
- }
8939
- return this.client.request("signMessage", {
8940
- address,
8941
- message
8942
- });
8943
- }
8944
- async sendTransaction(address, transaction) {
8945
- if (!transaction) {
8946
- throw new Error("Transaction is required");
8947
- }
8948
- const txRequest = transactionRequestify(transaction);
8949
- const network = await this.currentNetwork();
8950
- const provider = {
8951
- url: network.url
8952
- };
8953
- return this.client.request("sendTransaction", {
8954
- address,
8955
- transaction: JSON.stringify(txRequest),
8956
- provider
8957
- });
8958
- }
8959
- async assets() {
8960
- return this.client.request("assets", {});
8961
- }
8962
- async addAsset(asset) {
8963
- return this.addAssets([asset]);
8964
- }
8965
- async addAssets(assets) {
8966
- const assetsData = assets.map((asset) => {
8967
- const fuelNetworkAsset = asset.networks.find((n) => n.type === "fuel");
8968
- if (!fuelNetworkAsset) {
8969
- throw new Error("Asset for Fuel Network not found!");
8970
- }
8971
- return {
8972
- ...asset,
8973
- imageUrl: asset.icon,
8974
- decimals: fuelNetworkAsset.decimals,
8975
- assetId: fuelNetworkAsset.assetId
8976
- };
8977
- });
8978
- return this.client.request("addAssets", {
8979
- assets: assetsData
8980
- });
8981
- }
8982
- async addABI(contractId, abi) {
8983
- return this.client.request("addAbi", {
8984
- abiMap: {
8985
- [contractId]: abi
8986
- }
8987
- });
8988
- }
8989
- async getABI(contractId) {
8990
- return this.client.request("getAbi", {
8991
- contractId
8992
- });
8993
- }
8994
- async hasABI(contractId) {
8995
- const abi = await this.getABI(contractId);
8996
- return !!abi;
8997
- }
8998
- async currentNetwork() {
8999
- return this.client.request("network", {});
9000
- }
9001
- // eslint-disable-next-line @typescript-eslint/require-await
9002
- async selectNetwork(_network) {
9003
- throw new Error("Method not implemented.");
9004
- }
9005
- async networks() {
9006
- return this.client.request("networks", {});
9007
- }
9008
- async addNetwork(networkUrl) {
9009
- const provider = await Provider.create(networkUrl);
9010
- return this.client.request("addNetwork", {
9011
- network: {
9012
- url: provider.url,
9013
- name: provider.getChain().name
9014
- }
9015
- });
9016
- }
9017
- async version() {
9018
- return this.client.request("version", {
9019
- app: "0.0.0",
9020
- network: "0.0.0"
9021
- });
9022
- }
9023
- };
9024
-
9025
- // src/connectors/fuel-wallet-development-connector.ts
9026
- var FuelWalletDevelopmentConnector = class extends FuelWalletConnector {
9027
- metadata = {
9028
- image: "/connectors/fuel-wallet-dev.svg",
9029
- install: {
9030
- action: "Install",
9031
- description: "To connect your Fuel Wallet, you need to install the browser extension first.",
9032
- link: "https://chrome.google.com/webstore/detail/fuel-wallet-development/hcgmehahnlbhpilepakbdinkhhaackmc"
9033
- }
9034
- };
9035
- constructor() {
9036
- super("Fuel Wallet Development");
9037
- }
9038
- };
9039
-
9040
- // src/connectors/fuelet-wallet-connector.ts
9041
- var FueletWalletConnector = class extends FuelWalletConnector {
9042
- name = "Fuelet Wallet";
9043
- metadata = {
9044
- image: {
9045
- light: "/connectors/fuelet-light.svg",
9046
- dark: "/connectors/fuelet-dark.svg"
9047
- },
9048
- install: {
9049
- action: "Install",
9050
- description: "Install Fuelet Wallet in order to connect it.",
9051
- link: "https://fuelet.app/download/"
9052
- }
9053
- };
9054
- constructor() {
9055
- super("Fuelet Wallet");
9056
- }
9057
- };
9058
-
9059
- // src/connectors/default-connector.ts
9060
- function defaultConnectors({ devMode } = {}) {
9061
- const connectors = [new FuelWalletConnector(), new FueletWalletConnector()];
9062
- if (devMode) {
9063
- connectors.push(new FuelWalletDevelopmentConnector());
9064
- }
9065
- return connectors;
9066
- }
9067
-
9068
8848
  // src/connectors/fuel-wallet-locked.ts
9069
8849
  var FuelWalletLocked = class extends WalletLocked {
9070
8850
  connector;
@@ -9177,9 +8957,7 @@ var _Fuel = class extends FuelConnector {
9177
8957
  constructor(config = _Fuel.defaultConfig) {
9178
8958
  super();
9179
8959
  this.setMaxListeners(1e3);
9180
- this._connectors = config.connectors ?? defaultConnectors({
9181
- devMode: config.devMode
9182
- });
8960
+ this._connectors = config.connectors ?? [];
9183
8961
  this._targetObject = this.getTargetObject(config.targetObject);
9184
8962
  this._storage = config.storage === void 0 ? this.getStorage() : config.storage;
9185
8963
  this.setupMethods();
@@ -9206,15 +8984,15 @@ var _Fuel = class extends FuelConnector {
9206
8984
  */
9207
8985
  getStorage() {
9208
8986
  if (typeof window !== "undefined") {
9209
- return window.localStorage;
8987
+ return new LocalStorage(window.localStorage);
9210
8988
  }
9211
8989
  return void 0;
9212
8990
  }
9213
8991
  /**
9214
8992
  * Setup the default connector from the storage.
9215
8993
  */
9216
- setDefaultConnector() {
9217
- const connectorName = this._storage?.getItem(_Fuel.STORAGE_KEY) || this._connectors[0]?.name;
8994
+ async setDefaultConnector() {
8995
+ const connectorName = await this._storage?.getItem(_Fuel.STORAGE_KEY) || this._connectors[0]?.name;
9218
8996
  if (connectorName) {
9219
8997
  return this.selectConnector(connectorName, {
9220
8998
  emitEvents: false
@@ -9402,7 +9180,7 @@ var _Fuel = class extends FuelConnector {
9402
9180
  this._currentConnector = connector;
9403
9181
  this.emit(this.events.currentConnector, connector);
9404
9182
  this.setupConnectorEvents(Object.values(FuelConnectorEventTypes));
9405
- this._storage?.setItem(_Fuel.STORAGE_KEY, connector.name);
9183
+ await this._storage?.setItem(_Fuel.STORAGE_KEY, connector.name);
9406
9184
  if (options.emitEvents) {
9407
9185
  this.triggerConnectorEvents();
9408
9186
  }
@@ -9484,15 +9262,15 @@ var _Fuel = class extends FuelConnector {
9484
9262
  /**
9485
9263
  * Clean all the data from the storage.
9486
9264
  */
9487
- clean() {
9488
- this._storage?.removeItem(_Fuel.STORAGE_KEY);
9265
+ async clean() {
9266
+ await this._storage?.removeItem(_Fuel.STORAGE_KEY);
9489
9267
  }
9490
9268
  /**
9491
9269
  * Removes all listeners and cleans the storage.
9492
9270
  */
9493
- destroy() {
9271
+ async destroy() {
9494
9272
  this.unsubscribe();
9495
- this.clean();
9273
+ await this.clean();
9496
9274
  }
9497
9275
  };
9498
9276
  var Fuel = _Fuel;
@@ -9515,13 +9293,11 @@ export {
9515
9293
  FuelConnectorEventType,
9516
9294
  FuelConnectorEventTypes,
9517
9295
  FuelConnectorMethods,
9518
- FuelWalletConnector,
9519
- FuelWalletDevelopmentConnector,
9520
9296
  FuelWalletLocked,
9521
9297
  FuelWalletProvider,
9522
- FueletWalletConnector,
9523
9298
  hdwallet_default as HDWallet,
9524
9299
  Language,
9300
+ LocalStorage,
9525
9301
  MNEMONIC_SIZES,
9526
9302
  MemoryStorage,
9527
9303
  MessageTypes,
@@ -9558,7 +9334,6 @@ export {
9558
9334
  calculatePriceWithFactor,
9559
9335
  calculateTransactionFee,
9560
9336
  coinQuantityfy,
9561
- defaultConnectors,
9562
9337
  deferPromise,
9563
9338
  dispatchFuelConnectorEvent,
9564
9339
  english,