diff --git a/dist/tsc/paymasterclient.d.ts b/dist/tsc/paymasterclient.d.ts index fab3bfc..3749539 100644 --- a/dist/tsc/paymasterclient.d.ts +++ b/dist/tsc/paymasterclient.d.ts @@ -7,6 +7,9 @@ export type IsSponsorableResponse = { SponsorIcon: string; SponsorWebsite: string; }; +export type SendRawTransactionOptions = { + UserAgent?: string; +}; export declare enum GaslessTransactionStatus { New = 0, Pending = 1, @@ -49,10 +52,13 @@ export type Bundle = { readonly ChainID: number; }; export declare class PaymasterClient extends ethers.JsonRpcProvider { - constructor(url?: string | FetchRequest, network?: Networkish, options?: JsonRpcApiProviderOptions); + private privatePolicyUUID?; + private constructor(); + static new(url?: string | FetchRequest, network?: Networkish, options?: JsonRpcApiProviderOptions): PaymasterClient; + static newPrivatePaymaster(url: string | FetchRequest, privatePolicyUUID: string, network?: Networkish, options?: JsonRpcApiProviderOptions): PaymasterClient; chainID(): Promise; isSponsorable(tx: TransactionRequest): Promise; - sendRawTransaction(signedTx: string): Promise; + sendRawTransaction(signedTx: string, opts?: SendRawTransactionOptions): Promise; getGaslessTransactionByHash(hash: string): Promise; getSponsorTxByTxHash(hash: string): Promise; getSponsorTxByBundleUuid(bundleUuid: string): Promise; diff --git a/dist/tsc/paymasterclient.js b/dist/tsc/paymasterclient.js index 9f9e10a..97dfb61 100644 --- a/dist/tsc/paymasterclient.js +++ b/dist/tsc/paymasterclient.js @@ -12,8 +12,17 @@ var GaslessTransactionStatus; GaslessTransactionStatus[GaslessTransactionStatus["Invalid"] = 4] = "Invalid"; })(GaslessTransactionStatus = exports.GaslessTransactionStatus || (exports.GaslessTransactionStatus = {})); class PaymasterClient extends ethers_1.ethers.JsonRpcProvider { - constructor(url, network, options) { + constructor(url, network, options, privatePolicyUUID) { super(url, network, options); + this.privatePolicyUUID = privatePolicyUUID; + } + // Static method to create a new standard PaymasterClient + static new(url, network, options) { + return new PaymasterClient(url, network, options); + } + // Static method to create a new PaymasterClient with private policy + static newPrivatePaymaster(url, privatePolicyUUID, network, options) { + return new PaymasterClient(url, network, options, privatePolicyUUID); } chainID() { return tslib_1.__awaiter(this, void 0, void 0, function* () { @@ -22,11 +31,38 @@ class PaymasterClient extends ethers_1.ethers.JsonRpcProvider { } isSponsorable(tx) { return tslib_1.__awaiter(this, void 0, void 0, function* () { + const policyUUID = this.privatePolicyUUID; + if (policyUUID) { + const newConnection = this._getConnection(); + newConnection.setHeader("X-MegaFuel-Policy-Uuid", policyUUID); + const provider = new ethers_1.ethers.JsonRpcProvider(newConnection, this._network, { + staticNetwork: this._network, + batchMaxCount: this.batchMaxCount, + polling: this.polling + }); + return yield provider.send('pm_isSponsorable', [tx]); + } return yield this.send('pm_isSponsorable', [tx]); }); } - sendRawTransaction(signedTx) { + sendRawTransaction(signedTx, opts = {}) { return tslib_1.__awaiter(this, void 0, void 0, function* () { + const policyUUID = this.privatePolicyUUID; + if (opts.UserAgent || this.privatePolicyUUID) { + const newConnection = this._getConnection(); + if (opts.UserAgent) { + newConnection.setHeader("User-Agent", opts.UserAgent); + } + if (policyUUID) { + newConnection.setHeader("X-MegaFuel-Policy-Uuid", policyUUID); + } + const provider = new ethers_1.ethers.JsonRpcProvider(newConnection, this._network, { + staticNetwork: this._network, + batchMaxCount: this.batchMaxCount, + polling: this.polling + }); + return yield provider.send('eth_sendRawTransaction', [signedTx]); + } return yield this.send('eth_sendRawTransaction', [signedTx]); }); } diff --git a/dist/tsc/paymasterclient.js.map b/dist/tsc/paymasterclient.js.map index b88c4ae..007fb81 100644 --- a/dist/tsc/paymasterclient.js.map +++ b/dist/tsc/paymasterclient.js.map @@ -1 +1 @@ -{"version":3,"file":"paymasterclient.js","sourceRoot":"","sources":["../../src/paymasterclient.ts"],"names":[],"mappings":";;;;AAAA,mCAAsG;AAWtG,IAAY,wBAAwF;AAApG,WAAY,wBAAwB;IAAG,qEAAO,CAAA;IAAE,6EAAW,CAAA;IAAE,iFAAa,CAAA;IAAE,2EAAU,CAAA;IAAE,6EAAW,CAAA;AAAA,CAAC,EAAxF,wBAAwB,GAAxB,gCAAwB,KAAxB,gCAAwB,QAAgE;AAuCpG,MAAa,eAAgB,SAAQ,eAAM,CAAC,eAAe;IACzD,YAAY,GAA2B,EAAE,OAAoB,EAAE,OAAmC;QAChG,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC9B,CAAC;IAEK,OAAO;;YACX,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;QAC3C,CAAC;KAAA;IAEK,aAAa,CAAC,EAAsB;;YACxC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QAClD,CAAC;KAAA;IAEK,kBAAkB,CAAC,QAAgB;;YACvC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC9D,CAAC;KAAA;IAEK,2BAA2B,CAAC,IAAY;;YAC5C,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;QACnE,CAAC;KAAA;IAEK,oBAAoB,CAAC,IAAY;;YACrC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;QAC3D,CAAC;KAAA;IAEK,wBAAwB,CAAC,UAAkB;;YAC/C,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;QACrE,CAAC;KAAA;IAEK,eAAe,CAAC,UAAkB;;YACtC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;QAC5D,CAAC;KAAA;CACF;AAhCD,0CAgCC"} \ No newline at end of file +{"version":3,"file":"paymasterclient.js","sourceRoot":"","sources":["../../src/paymasterclient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index c66925e..a77f9fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,16 @@ { "name": "megafuel-js-sdk", - "version": "1.0.5", + "version": "1.0.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "megafuel-js-sdk", - "version": "1.0.5", + "version": "1.0.6", "license": "GPL-3.0-or-later", "dependencies": { "dotenv": "^16.4.5", - "ethers": "^6.13.2" + "ethers": "^6.13.4" }, "devDependencies": { "@types/jest": "^29.2.4", @@ -24,7 +24,7 @@ "ts-jest": "^29.0.3", "ts-node": "^10.9.1", "typedoc": "^0.23.21", - "typescript": "^4.9.3" + "typescript": "^5.0.4" }, "engines": { "node": ">=16.0.0" @@ -2911,9 +2911,9 @@ } }, "node_modules/ethers": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.2.tgz", - "integrity": "sha512-9VkriTTed+/27BGuY1s0hf441kqwHJ1wtN2edksEtiRvXx+soxRX3iSXTfFqq2+YwrOqbDoTHjIhQnjJRlzKmg==", + "version": "6.13.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.4.tgz", + "integrity": "sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==", "funding": [ { "type": "individual", @@ -2928,9 +2928,9 @@ "@adraffy/ens-normalize": "1.10.1", "@noble/curves": "1.2.0", "@noble/hashes": "1.3.2", - "@types/node": "18.15.13", + "@types/node": "22.7.5", "aes-js": "4.0.0-beta.5", - "tslib": "2.4.0", + "tslib": "2.7.0", "ws": "8.17.1" }, "engines": { @@ -2938,9 +2938,17 @@ } }, "node_modules/ethers/node_modules/@types/node": { - "version": "18.15.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", - "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/ethers/node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" }, "node_modules/execa": { "version": "5.1.1", @@ -5235,9 +5243,9 @@ } }, "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -5339,16 +5347,16 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=12.20" } }, "node_modules/undici-types": { @@ -7616,23 +7624,31 @@ "dev": true }, "ethers": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.2.tgz", - "integrity": "sha512-9VkriTTed+/27BGuY1s0hf441kqwHJ1wtN2edksEtiRvXx+soxRX3iSXTfFqq2+YwrOqbDoTHjIhQnjJRlzKmg==", + "version": "6.13.4", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.4.tgz", + "integrity": "sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==", "requires": { "@adraffy/ens-normalize": "1.10.1", "@noble/curves": "1.2.0", "@noble/hashes": "1.3.2", - "@types/node": "18.15.13", + "@types/node": "22.7.5", "aes-js": "4.0.0-beta.5", - "tslib": "2.4.0", + "tslib": "2.7.0", "ws": "8.17.1" }, "dependencies": { "@types/node": { - "version": "18.15.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", - "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "requires": { + "undici-types": "~6.19.2" + } + }, + "undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" } } }, @@ -9311,9 +9327,9 @@ } }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "tsutils": { "version": "3.21.0", @@ -9386,9 +9402,9 @@ } }, "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", "dev": true }, "undici-types": { diff --git a/package.json b/package.json index 1a2ba43..e1a832f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "megafuel-js-sdk", - "version": "1.0.5", + "version": "1.0.6", "description": "SDK for megafuel product", "repository": "https://github.com/node-real/megafuel-js-sdk", "license": "GPL-3.0-or-later", @@ -33,10 +33,10 @@ "ts-jest": "^29.0.3", "ts-node": "^10.9.1", "typedoc": "^0.23.21", - "typescript": "^4.9.3" + "typescript": "^5.0.4" }, "dependencies": { "dotenv": "^16.4.5", - "ethers": "^6.13.2" + "ethers": "^6.13.4" } } diff --git a/tsconfig.json b/tsconfig.json index cb50ef9..dda1909 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,8 +8,8 @@ "noImplicitAny": true, "strictNullChecks": true, "strictFunctionTypes": true, - "noUnusedLocals": true, - "noUnusedParameters": true, + "noUnusedLocals": false, + "noUnusedParameters": false, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true, "importHelpers": true,