thirdweb 5.86.1-nightly-b38604cce81832303dcf51ab058f6621045e9aff-20250122000325 → 5.86.2
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/cjs/auth/verify-hash.js +24 -0
- package/dist/cjs/auth/verify-hash.js.map +1 -1
- package/dist/cjs/gas/fee-data.js +1 -0
- package/dist/cjs/gas/fee-data.js.map +1 -1
- package/dist/cjs/react/web/ui/SiteEmbed.js +5 -2
- package/dist/cjs/react/web/ui/SiteEmbed.js.map +1 -1
- package/dist/cjs/react/web/ui/SiteLink.js +5 -2
- package/dist/cjs/react/web/ui/SiteLink.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Wallet/provider.js +0 -1
- package/dist/cjs/react/web/ui/prebuilt/Wallet/provider.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/wallets/in-app/core/authentication/backend.js +2 -1
- package/dist/cjs/wallets/in-app/core/authentication/backend.js.map +1 -1
- package/dist/cjs/wallets/in-app/web/lib/auth/iframe-auth.js +4 -7
- package/dist/cjs/wallets/in-app/web/lib/auth/iframe-auth.js.map +1 -1
- package/dist/cjs/wallets/in-app/web/utils/iFrameCommunication/IframeCommunicator.js +14 -3
- package/dist/cjs/wallets/in-app/web/utils/iFrameCommunication/IframeCommunicator.js.map +1 -1
- package/dist/cjs/wallets/in-app/web/utils/iFrameCommunication/InAppWalletIframeCommunicator.js +1 -1
- package/dist/cjs/wallets/in-app/web/utils/iFrameCommunication/InAppWalletIframeCommunicator.js.map +1 -1
- package/dist/cjs/wallets/smart/index.js +38 -2
- package/dist/cjs/wallets/smart/index.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/signing.js +1 -1
- package/dist/cjs/wallets/wallet-connect/controller.js +4 -2
- package/dist/cjs/wallets/wallet-connect/controller.js.map +1 -1
- package/dist/esm/auth/verify-hash.js +24 -0
- package/dist/esm/auth/verify-hash.js.map +1 -1
- package/dist/esm/gas/fee-data.js +1 -0
- package/dist/esm/gas/fee-data.js.map +1 -1
- package/dist/esm/react/web/ui/SiteEmbed.js +5 -2
- package/dist/esm/react/web/ui/SiteEmbed.js.map +1 -1
- package/dist/esm/react/web/ui/SiteLink.js +5 -2
- package/dist/esm/react/web/ui/SiteLink.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Wallet/provider.js +0 -1
- package/dist/esm/react/web/ui/prebuilt/Wallet/provider.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/wallets/in-app/core/authentication/backend.js +2 -1
- package/dist/esm/wallets/in-app/core/authentication/backend.js.map +1 -1
- package/dist/esm/wallets/in-app/web/lib/auth/iframe-auth.js +4 -7
- package/dist/esm/wallets/in-app/web/lib/auth/iframe-auth.js.map +1 -1
- package/dist/esm/wallets/in-app/web/utils/iFrameCommunication/IframeCommunicator.js +14 -3
- package/dist/esm/wallets/in-app/web/utils/iFrameCommunication/IframeCommunicator.js.map +1 -1
- package/dist/esm/wallets/in-app/web/utils/iFrameCommunication/InAppWalletIframeCommunicator.js +1 -1
- package/dist/esm/wallets/in-app/web/utils/iFrameCommunication/InAppWalletIframeCommunicator.js.map +1 -1
- package/dist/esm/wallets/smart/index.js +38 -2
- package/dist/esm/wallets/smart/index.js.map +1 -1
- package/dist/esm/wallets/smart/lib/signing.js +1 -1
- package/dist/esm/wallets/wallet-connect/controller.js +4 -2
- package/dist/esm/wallets/wallet-connect/controller.js.map +1 -1
- package/dist/types/auth/verify-hash.d.ts.map +1 -1
- package/dist/types/gas/fee-data.d.ts.map +1 -1
- package/dist/types/react/web/ui/SiteEmbed.d.ts.map +1 -1
- package/dist/types/react/web/ui/SiteLink.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/Wallet/provider.d.ts +0 -1
- package/dist/types/react/web/ui/prebuilt/Wallet/provider.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/authentication/backend.d.ts.map +1 -1
- package/dist/types/wallets/in-app/web/lib/auth/iframe-auth.d.ts.map +1 -1
- package/dist/types/wallets/in-app/web/utils/iFrameCommunication/IframeCommunicator.d.ts +1 -1
- package/dist/types/wallets/in-app/web/utils/iFrameCommunication/IframeCommunicator.d.ts.map +1 -1
- package/dist/types/wallets/smart/index.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/signing.d.ts +1 -1
- package/dist/types/wallets/wallet-connect/controller.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/auth/verify-hash.ts +29 -0
- package/src/gas/fee-data.ts +1 -0
- package/src/react/web/ui/SiteEmbed.test.tsx +16 -1
- package/src/react/web/ui/SiteEmbed.tsx +5 -2
- package/src/react/web/ui/SiteLink.test.tsx +17 -0
- package/src/react/web/ui/SiteLink.tsx +5 -2
- package/src/react/web/ui/prebuilt/Wallet/provider.tsx +0 -1
- package/src/version.ts +1 -1
- package/src/wallets/in-app/core/authentication/backend.ts +3 -1
- package/src/wallets/in-app/web/lib/auth/iframe-auth.ts +4 -8
- package/src/wallets/in-app/web/utils/iFrameCommunication/IframeCommunicator.test.tsx +102 -0
- package/src/wallets/in-app/web/utils/iFrameCommunication/IframeCommunicator.ts +17 -4
- package/src/wallets/in-app/web/utils/iFrameCommunication/InAppWalletIframeCommunicator.ts +1 -1
- package/src/wallets/smart/index.ts +42 -2
- package/src/wallets/smart/lib/signing.ts +1 -1
- package/src/wallets/wallet-connect/controller.ts +4 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"fee-data.d.ts","sourceRoot":"","sources":["../../../src/gas/fee-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAWjF,KAAK,aAAa,GACd;IACE,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,GACD;IACE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,oBAAoB,CAAC,EAAE,KAAK,CAAC;CAC9B,CAAC;
|
1
|
+
{"version":3,"file":"fee-data.d.ts","sourceRoot":"","sources":["../../../src/gas/fee-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAWjF,KAAK,aAAa,GACd;IACE,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,GACD;IACE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,oBAAoB,CAAC,EAAE,KAAK,CAAC;CAC9B,CAAC;AAkBN;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,WAAW,EAAE,mBAAmB,GAC/B,OAAO,CAAC,aAAa,CAAC,CAmDxB;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,KAAK;;;;;;;;GAkBb"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SiteEmbed.d.ts","sourceRoot":"","sources":["../../../../../src/react/web/ui/SiteEmbed.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAKhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8CAA8C,CAAC;AAG9E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,SAAS,CAAC,EACxB,GAAG,EACH,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,GAAG,KAAK,CAAC,iBAAiB,CACzB,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAC7C,iBAAiB,CAClB,
|
1
|
+
{"version":3,"file":"SiteEmbed.d.ts","sourceRoot":"","sources":["../../../../../src/react/web/ui/SiteEmbed.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAKhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8CAA8C,CAAC;AAG9E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,SAAS,CAAC,EACxB,GAAG,EACH,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,GAAG,KAAK,CAAC,iBAAiB,CACzB,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAC7C,iBAAiB,CAClB,8CAmDA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SiteLink.d.ts","sourceRoot":"","sources":["../../../../../src/react/web/ui/SiteLink.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAKhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8CAA8C,CAAC;AAG9E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,MAAM,EACN,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,
|
1
|
+
{"version":3,"file":"SiteLink.d.ts","sourceRoot":"","sources":["../../../../../src/react/web/ui/SiteLink.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAKhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8CAA8C,CAAC;AAG9E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,MAAM,EACN,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,8CA+C9D"}
|
@@ -12,7 +12,6 @@ export type WalletProviderProps = {
|
|
12
12
|
* @internal Exported for tests only
|
13
13
|
*/
|
14
14
|
export declare const WalletProviderContext: React.Context<WalletProviderProps | undefined>;
|
15
|
-
/**
|
16
15
|
/**
|
17
16
|
* A React context provider component that supplies Wallet-related data to its child components.
|
18
17
|
*
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/prebuilt/Wallet/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,QAAQ,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,gDAEtB,CAAC;AAEb
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/prebuilt/Wallet/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,QAAQ,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,gDAEtB,CAAC;AAEb;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,8CAOpD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,wBAQ/B"}
|
package/dist/types/version.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare const version = "5.86.
|
1
|
+
export declare const version = "5.86.2";
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../../../../../src/wallets/in-app/core/authentication/backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,YAAY,CAAC;AAEtE;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,GAAG,OAAO,CAAC,mCAAmC,CAAC,
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../../../../../src/wallets/in-app/core/authentication/backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,YAAY,CAAC;AAEtE;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAsB/C"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"iframe-auth.d.ts","sourceRoot":"","sources":["../../../../../../../src/wallets/in-app/web/lib/auth/iframe-auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uDAAuD,CAAC;AACjG,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EACnB,mCAAmC,EACnC,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kEAAkE,CAAC;AACtH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE;QACV,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;KAClC,CAAC;IACF,2BAA2B,EAAE;QAC3B,WAAW,EAAE,mCAAmC,CAAC,aAAa,CAAC,CAAC;QAChE,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,yBAAyB,EAAE;QACzB,WAAW,EAAE,mCAAmC,CAAC,aAAa,CAAC,CAAC;KACjE,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,qBAAa,IAAI;IACf,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;IACjC,SAAS,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAChC,SAAS,CAAC,WAAW,EAAE,6BAA6B,CAAC,gBAAgB,CAAC,CAAC;IACvE,SAAS,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC5C,SAAS,CAAC,aAAa,EAAE,CACvB,WAAW,EAAE,0BAA0B,KACpC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAClC,OAAO,CAAC,SAAS,CAAY;IAE7B;;;OAGG;gBACS,EACV,MAAM,EACN,OAAO,EACP,aAAa,EACb,SAAS,EACT,OAAO,EACP,YAAY,GACb,EAAE,uBAAuB,GAAG;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,aAAa,EAAE,CACb,WAAW,EAAE,0BAA0B,KACpC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAClC,YAAY,EAAE,mBAAmB,CAAC;KACnC;YAqBa,QAAQ;YAIR,SAAS;IAcjB,kBAAkB,CACtB,SAAS,EAAE,mCAAmC,EAC9C,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,mBAAmB,CAAC;
|
1
|
+
{"version":3,"file":"iframe-auth.d.ts","sourceRoot":"","sources":["../../../../../../../src/wallets/in-app/web/lib/auth/iframe-auth.ts"],"names":[],"mappings":"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"}
|
@@ -16,7 +16,7 @@ type IFrameCommunicatorProps = {
|
|
16
16
|
export declare class IframeCommunicator<T extends {
|
17
17
|
[key: string]: any;
|
18
18
|
}> {
|
19
|
-
private iframe
|
19
|
+
private iframe?;
|
20
20
|
private POLLING_INTERVAL_SECONDS;
|
21
21
|
private iframeBaseUrl;
|
22
22
|
protected localStorage: ClientScopedStorage;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"IframeCommunicator.d.ts","sourceRoot":"","sources":["../../../../../../../src/wallets/in-app/web/utils/iFrameCommunication/IframeCommunicator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4EAA4E,CAAC;AACtH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oDAAoD,CAAC;AAEpF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,YAAY,EAAE,mBAAmB,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAmBF;;GAEG;AAEH,qBAAa,kBAAkB,CAAC,CAAC,SAAS;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE;IAC9D,OAAO,CAAC,MAAM,CAAoB;
|
1
|
+
{"version":3,"file":"IframeCommunicator.d.ts","sourceRoot":"","sources":["../../../../../../../src/wallets/in-app/web/utils/iFrameCommunication/IframeCommunicator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4EAA4E,CAAC;AACtH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oDAAoD,CAAC;AAEpF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,YAAY,EAAE,mBAAmB,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAmBF;;GAEG;AAEH,qBAAa,kBAAkB,CAAC,CAAC,SAAS;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE;IAC9D,OAAO,CAAC,MAAM,CAAC,CAAoB;IACnC,OAAO,CAAC,wBAAwB,CAAO;IACvC,OAAO,CAAC,aAAa,CAAC;IACtB,SAAS,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC5C,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAEhC;;OAEG;gBACS,EACV,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,QAAQ,EACR,SAAS,GACV,EAAE,uBAAuB;cAoDV,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAW3E;;OAEG;IACH,mBAAmB,CACjB,MAAM,EAAE,iBAAiB,EACzB,kBAAkB,CAAC,EAAE,MAAM,IAAI;IAkCjC;;OAEG;IACG,IAAI,CAAC,UAAU,EAAE,EACrB,aAAa,EACb,MAAM,EACN,UAAkB,GACnB,EAAE;QACD,aAAa,EAAE,MAAM,CAAC,CAAC;QACvB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACnB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB;IAmDD;;;;OAIG;IACH,OAAO;CAKR"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/wallets/smart/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/wallets/smart/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAoBnD,OAAO,KAAK,EACV,OAAO,EAEP,MAAM,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAuBnD,OAAO,KAAK,EAIV,4BAA4B,EAC5B,kBAAkB,EAInB,MAAM,YAAY,CAAC;AACpB;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,GACvB,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,CAE3B;AAUD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,iBAAiB,EAAE,4BAA4B,EAC/C,eAAe,EAAE,kBAAkB,GAClC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAiG3B;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ5E"}
|
@@ -28,7 +28,7 @@ export declare function confirmContractDeployment(args: {
|
|
28
28
|
accountContract: ThirdwebContract;
|
29
29
|
}): Promise<void>;
|
30
30
|
/**
|
31
|
-
* Deployes a smart account via a dummy transaction.
|
31
|
+
* Deployes a smart account via a dummy transaction. If the account is already deployed, this will do nothing.
|
32
32
|
*
|
33
33
|
* @param args - Arguments for the deployment.
|
34
34
|
* @param args.smartAccount - The smart account to deploy.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../src/wallets/wallet-connect/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAYzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAMnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAU7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAOxE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,KAAK,EACV,OAAO,EAEP,MAAM,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEzE,KAAK,UAAU,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAiBxD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,GACvB,MAAM,IAAI,MAAM,CAAC,eAAe,CAAC,CAEnC;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC5C,QAAQ,EAAE,oBAAoB,GAAG,eAAe,EAChD,OAAO,EAAE,YAAY,EACrB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACrC,OAAO,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../src/wallets/wallet-connect/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAYzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAMnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAU7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAOxE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,KAAK,EACV,OAAO,EAEP,MAAM,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEzE,KAAK,UAAU,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAiBxD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,GACvB,MAAM,IAAI,MAAM,CAAC,eAAe,CAAC,CAEnC;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC5C,QAAQ,EAAE,oBAAoB,GAAG,eAAe,EAChD,OAAO,EAAE,YAAY,EACrB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACrC,OAAO,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CA0FvC;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC5C,QAAQ,EAAE,oBAAoB,GAAG,eAAe,EAChD,OAAO,EAAE,YAAY,EACrB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACrC,OAAO,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAsCvC;AAsLD,iBAAS,SAAS,CAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC5C,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,cAAc,GACrB,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC,CAgD/C"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "thirdweb",
|
3
|
-
"version": "5.86.
|
3
|
+
"version": "5.86.2",
|
4
4
|
"repository": {
|
5
5
|
"type": "git",
|
6
6
|
"url": "git+https://github.com/thirdweb-dev/js.git#main"
|
@@ -350,7 +350,7 @@
|
|
350
350
|
"typedoc": "0.27.5",
|
351
351
|
"typedoc-better-json": "0.9.4",
|
352
352
|
"typescript": "5.7.2",
|
353
|
-
"vite": "6.0.
|
353
|
+
"vite": "6.0.11",
|
354
354
|
"vitest": "2.1.8"
|
355
355
|
},
|
356
356
|
"scripts": {
|
package/src/auth/verify-hash.ts
CHANGED
@@ -10,6 +10,7 @@ import { isValidSignature } from "../extensions/erc1271/__generated__/isValidSig
|
|
10
10
|
import { eth_call } from "../rpc/actions/eth_call.js";
|
11
11
|
import { getRpcClient } from "../rpc/rpc.js";
|
12
12
|
import { isZkSyncChain } from "../utils/any-evm/zksync/isZkSyncChain.js";
|
13
|
+
import { isContractDeployed } from "../utils/bytecode/is-contract-deployed.js";
|
13
14
|
import { fromBytes } from "../utils/encoding/from-bytes.js";
|
14
15
|
import { type Hex, hexToBool, isHex } from "../utils/encoding/hex.js";
|
15
16
|
import { serializeErc6492Signature } from "./serialize-erc6492-signature.js";
|
@@ -75,6 +76,33 @@ export async function verifyHash({
|
|
75
76
|
);
|
76
77
|
})();
|
77
78
|
|
79
|
+
const isDeployed = await isContractDeployed(
|
80
|
+
getContract({
|
81
|
+
address,
|
82
|
+
client,
|
83
|
+
chain,
|
84
|
+
}),
|
85
|
+
);
|
86
|
+
|
87
|
+
if (isDeployed) {
|
88
|
+
const validEip1271 = await verifyEip1271Signature({
|
89
|
+
hash,
|
90
|
+
signature: signatureHex,
|
91
|
+
contract: getContract({
|
92
|
+
chain,
|
93
|
+
address,
|
94
|
+
client,
|
95
|
+
}),
|
96
|
+
}).catch((err) => {
|
97
|
+
console.error("Error verifying EIP-1271 signature", err);
|
98
|
+
return false;
|
99
|
+
});
|
100
|
+
if (validEip1271) {
|
101
|
+
return true;
|
102
|
+
}
|
103
|
+
}
|
104
|
+
|
105
|
+
// contract not deployed, use erc6492 validator to verify signature
|
78
106
|
const wrappedSignature: Hex = await (async () => {
|
79
107
|
// If no factory is provided, we have to assume its already deployed or is an EOA
|
80
108
|
// TODO: Figure out how to automatically tell if our default factory was used
|
@@ -95,6 +123,7 @@ export async function verifyHash({
|
|
95
123
|
to?: string;
|
96
124
|
data: Hex;
|
97
125
|
};
|
126
|
+
|
98
127
|
const zkSyncChain = await isZkSyncChain(chain);
|
99
128
|
const abi = ox__Abi.from(ox__WrappedSignature.universalSignatureValidatorAbi);
|
100
129
|
if (zkSyncChain) {
|
package/src/gas/fee-data.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
2
|
-
import { render } from "../../../../test/src/react-render.js";
|
2
|
+
import { render, waitFor } from "../../../../test/src/react-render.js";
|
3
3
|
import { TEST_CLIENT } from "../../../../test/src/test-clients.js";
|
4
4
|
import { SiteEmbed } from "./SiteEmbed.js";
|
5
5
|
|
@@ -21,4 +21,19 @@ describe("SiteEmbed", () => {
|
|
21
21
|
render(<SiteEmbed src={testUrl} client={{} as any} />),
|
22
22
|
).toThrow("The SiteEmbed client must have a clientId");
|
23
23
|
});
|
24
|
+
|
25
|
+
it("uses inApp wallet when wallet is a smart wallet", async () => {
|
26
|
+
const testUrl = "https://thirdweb.com/";
|
27
|
+
const { container } = render(
|
28
|
+
<SiteEmbed src={testUrl} client={TEST_CLIENT} />,
|
29
|
+
{
|
30
|
+
setConnectedWallet: true,
|
31
|
+
walletId: "smart",
|
32
|
+
},
|
33
|
+
);
|
34
|
+
|
35
|
+
const iframe = container.querySelector("iframe");
|
36
|
+
expect(iframe).toBeTruthy();
|
37
|
+
await waitFor(() => expect(iframe?.src).toContain("walletId=inApp"));
|
38
|
+
});
|
24
39
|
});
|
@@ -53,7 +53,10 @@ export function SiteEmbed({
|
|
53
53
|
} = useQuery({
|
54
54
|
queryKey: ["site-embed", walletId, src, client.clientId, ecosystem],
|
55
55
|
enabled:
|
56
|
-
activeWallet &&
|
56
|
+
activeWallet &&
|
57
|
+
(isEcosystemWallet(activeWallet) ||
|
58
|
+
walletId === "inApp" ||
|
59
|
+
walletId === "smart"),
|
57
60
|
queryFn: async () => {
|
58
61
|
const storage = new ClientScopedStorage({
|
59
62
|
storage: webLocalStorage,
|
@@ -70,7 +73,7 @@ export function SiteEmbed({
|
|
70
73
|
|
71
74
|
const url = new URL(src);
|
72
75
|
if (walletId) {
|
73
|
-
url.searchParams.set("walletId", walletId);
|
76
|
+
url.searchParams.set("walletId", walletId === "smart" ? "inApp" : walletId);
|
74
77
|
}
|
75
78
|
if (authProvider) {
|
76
79
|
url.searchParams.set("authProvider", authProvider);
|
@@ -45,4 +45,21 @@ describe("SiteLink", () => {
|
|
45
45
|
expect(anchor).toBeTruthy();
|
46
46
|
await waitFor(() => expect(anchor?.href).toContain("walletId="));
|
47
47
|
});
|
48
|
+
|
49
|
+
it("uses inApp wallet when wallet is a smart wallet", async () => {
|
50
|
+
const testUrl = "https://example.com/";
|
51
|
+
const { container } = render(
|
52
|
+
<SiteLink href={testUrl} client={TEST_CLIENT}>
|
53
|
+
Test Link
|
54
|
+
</SiteLink>,
|
55
|
+
{
|
56
|
+
setConnectedWallet: true,
|
57
|
+
walletId: "smart",
|
58
|
+
},
|
59
|
+
);
|
60
|
+
|
61
|
+
const anchor = container.querySelector("a");
|
62
|
+
expect(anchor).toBeTruthy();
|
63
|
+
await waitFor(() => expect(anchor?.href).toContain("walletId=inApp"));
|
64
|
+
});
|
48
65
|
});
|
@@ -53,7 +53,10 @@ export function SiteLink({
|
|
53
53
|
} = useQuery({
|
54
54
|
queryKey: ["site-link", walletId, href, client.clientId, ecosystem],
|
55
55
|
enabled:
|
56
|
-
activeWallet &&
|
56
|
+
activeWallet &&
|
57
|
+
(isEcosystemWallet(activeWallet) ||
|
58
|
+
walletId === "inApp" ||
|
59
|
+
walletId === "smart"),
|
57
60
|
queryFn: async () => {
|
58
61
|
const storage = new ClientScopedStorage({
|
59
62
|
storage: webLocalStorage,
|
@@ -70,7 +73,7 @@ export function SiteLink({
|
|
70
73
|
|
71
74
|
const url = new URL(href);
|
72
75
|
if (walletId) {
|
73
|
-
url.searchParams.set("walletId", walletId);
|
76
|
+
url.searchParams.set("walletId", walletId === "smart" ? "inApp" : walletId);
|
74
77
|
}
|
75
78
|
if (authProvider) {
|
76
79
|
url.searchParams.set("authProvider", authProvider);
|
package/src/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = "5.86.
|
1
|
+
export const version = "5.86.2";
|
@@ -30,7 +30,9 @@ export async function backendAuthenticate(args: {
|
|
30
30
|
}),
|
31
31
|
});
|
32
32
|
|
33
|
-
if (!res.ok)
|
33
|
+
if (!res.ok) {
|
34
|
+
throw new Error("Failed to generate backend account");
|
35
|
+
}
|
34
36
|
|
35
37
|
return (await res.json()) satisfies AuthStoredTokenWithCookieReturnType;
|
36
38
|
}
|
@@ -107,7 +107,10 @@ export class Auth {
|
|
107
107
|
authToken: AuthStoredTokenWithCookieReturnType,
|
108
108
|
recoveryCode?: string,
|
109
109
|
): Promise<AuthLoginReturnType> {
|
110
|
-
|
110
|
+
// We don't call logout for backend auth because that is handled on the backend where the iframe isn't available to call. Moreover, logout clears the local storage which isn't applicable for backend auth.
|
111
|
+
if (authToken.storedToken.authProvider !== "Backend") {
|
112
|
+
await this.preLogin();
|
113
|
+
}
|
111
114
|
|
112
115
|
const user = await getUserStatus({
|
113
116
|
authToken: authToken.storedToken.cookieString,
|
@@ -321,13 +324,6 @@ export class Auth {
|
|
321
324
|
* @internal
|
322
325
|
*/
|
323
326
|
async logout(): Promise<LogoutReturnType> {
|
324
|
-
if (this.AuthQuerier) {
|
325
|
-
await this.AuthQuerier.call<LogoutReturnType>({
|
326
|
-
procedureName: "logout",
|
327
|
-
params: undefined,
|
328
|
-
});
|
329
|
-
}
|
330
|
-
|
331
327
|
const isRemoveAuthCookie = await this.localStorage.removeAuthCookie();
|
332
328
|
const isRemoveUserId = await this.localStorage.removeWalletUserId();
|
333
329
|
|
@@ -0,0 +1,102 @@
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from "vitest";
|
2
|
+
import { IframeCommunicator } from "./IframeCommunicator.js";
|
3
|
+
|
4
|
+
describe("IframeCommunicator", () => {
|
5
|
+
// biome-ignore lint/suspicious/noExplicitAny: mock
|
6
|
+
let mockLocalStorage: any;
|
7
|
+
let mockContainer: HTMLElement;
|
8
|
+
let mockIframe: HTMLIFrameElement;
|
9
|
+
|
10
|
+
beforeEach(() => {
|
11
|
+
// Mock localStorage
|
12
|
+
vi.restoreAllMocks();
|
13
|
+
|
14
|
+
mockLocalStorage = {
|
15
|
+
getAuthCookie: vi.fn().mockResolvedValue("mockAuthCookie"),
|
16
|
+
getDeviceShare: vi.fn().mockResolvedValue("mockDeviceShare"),
|
17
|
+
getWalletUserId: vi.fn().mockResolvedValue("mockWalletUserId"),
|
18
|
+
};
|
19
|
+
// Mock DOM elements
|
20
|
+
mockContainer = document.createElement("div");
|
21
|
+
mockIframe = document.createElement("iframe");
|
22
|
+
vi.spyOn(document, "createElement").mockReturnValue(mockIframe);
|
23
|
+
vi.spyOn(document, "getElementById").mockReturnValue(null);
|
24
|
+
});
|
25
|
+
|
26
|
+
it("should create an iframe with correct properties", () => {
|
27
|
+
new IframeCommunicator({
|
28
|
+
link: "https://example.com",
|
29
|
+
baseUrl: "https://example.com",
|
30
|
+
iframeId: "test-iframe",
|
31
|
+
container: mockContainer,
|
32
|
+
localStorage: mockLocalStorage,
|
33
|
+
clientId: "test-client",
|
34
|
+
});
|
35
|
+
|
36
|
+
expect(document.createElement).toHaveBeenCalledWith("iframe");
|
37
|
+
expect(mockIframe.id).toBe("test-iframe");
|
38
|
+
expect(mockIframe.src).toBe("https://example.com/");
|
39
|
+
expect(mockIframe.style.display).toBe("none");
|
40
|
+
});
|
41
|
+
|
42
|
+
it("should initialize with correct variables", async () => {
|
43
|
+
const communicator = new IframeCommunicator({
|
44
|
+
link: "https://example.com",
|
45
|
+
baseUrl: "https://example.com",
|
46
|
+
iframeId: "test-iframe",
|
47
|
+
container: mockContainer,
|
48
|
+
localStorage: mockLocalStorage,
|
49
|
+
clientId: "test-client",
|
50
|
+
});
|
51
|
+
|
52
|
+
// biome-ignore lint/complexity/useLiteralKeys: accessing protected method
|
53
|
+
const vars = await communicator["onIframeLoadedInitVariables"]();
|
54
|
+
|
55
|
+
expect(vars).toEqual({
|
56
|
+
authCookie: "mockAuthCookie",
|
57
|
+
deviceShareStored: "mockDeviceShare",
|
58
|
+
walletUserId: "mockWalletUserId",
|
59
|
+
clientId: "test-client",
|
60
|
+
partnerId: undefined,
|
61
|
+
ecosystemId: undefined,
|
62
|
+
});
|
63
|
+
});
|
64
|
+
|
65
|
+
it("should throw error when calling methods without iframe", async () => {
|
66
|
+
const temp = global.document;
|
67
|
+
// @ts-expect-error - Testing undefined document scenario
|
68
|
+
global.document = undefined;
|
69
|
+
|
70
|
+
const communicator = new IframeCommunicator({
|
71
|
+
link: "https://example.com",
|
72
|
+
baseUrl: "https://example.com",
|
73
|
+
iframeId: "test-iframe",
|
74
|
+
localStorage: mockLocalStorage,
|
75
|
+
clientId: "test-client",
|
76
|
+
});
|
77
|
+
|
78
|
+
await expect(
|
79
|
+
communicator.call({
|
80
|
+
procedureName: "test",
|
81
|
+
params: {},
|
82
|
+
}),
|
83
|
+
).rejects.toThrow("Iframe not found");
|
84
|
+
global.document = temp;
|
85
|
+
});
|
86
|
+
|
87
|
+
it("should cleanup on destroy", () => {
|
88
|
+
const communicator = new IframeCommunicator({
|
89
|
+
link: "https://example.com",
|
90
|
+
baseUrl: "https://example.com",
|
91
|
+
iframeId: "test-iframe",
|
92
|
+
container: mockContainer,
|
93
|
+
localStorage: mockLocalStorage,
|
94
|
+
clientId: "test-client",
|
95
|
+
});
|
96
|
+
|
97
|
+
communicator.destroy();
|
98
|
+
|
99
|
+
// biome-ignore lint/complexity/useLiteralKeys: accessing protected field
|
100
|
+
expect(communicator["iframe"]).toBeDefined();
|
101
|
+
});
|
102
|
+
});
|
@@ -35,7 +35,7 @@ const isIframeLoaded = new Map<string, boolean>();
|
|
35
35
|
*/
|
36
36
|
// biome-ignore lint/suspicious/noExplicitAny: TODO: fix later
|
37
37
|
export class IframeCommunicator<T extends { [key: string]: any }> {
|
38
|
-
private iframe
|
38
|
+
private iframe?: HTMLIFrameElement;
|
39
39
|
private POLLING_INTERVAL_SECONDS = 1.4;
|
40
40
|
private iframeBaseUrl;
|
41
41
|
protected localStorage: ClientScopedStorage;
|
@@ -49,7 +49,7 @@ export class IframeCommunicator<T extends { [key: string]: any }> {
|
|
49
49
|
link,
|
50
50
|
baseUrl,
|
51
51
|
iframeId,
|
52
|
-
container
|
52
|
+
container,
|
53
53
|
onIframeInitialize,
|
54
54
|
localStorage,
|
55
55
|
clientId,
|
@@ -60,6 +60,10 @@ export class IframeCommunicator<T extends { [key: string]: any }> {
|
|
60
60
|
this.ecosystem = ecosystem;
|
61
61
|
this.iframeBaseUrl = baseUrl;
|
62
62
|
|
63
|
+
if (typeof document === "undefined") {
|
64
|
+
return;
|
65
|
+
}
|
66
|
+
container = container ?? document.body;
|
63
67
|
// Creating the IFrame element for communication
|
64
68
|
let iframe = document.getElementById(iframeId) as HTMLIFrameElement | null;
|
65
69
|
const hrefLink = new URL(link);
|
@@ -164,6 +168,11 @@ export class IframeCommunicator<T extends { [key: string]: any }> {
|
|
164
168
|
params: T[keyof T];
|
165
169
|
showIframe?: boolean;
|
166
170
|
}) {
|
171
|
+
if (!this.iframe) {
|
172
|
+
throw new Error(
|
173
|
+
"Iframe not found. You are likely calling this from the backend where the DOM is not available.",
|
174
|
+
);
|
175
|
+
}
|
167
176
|
while (!isIframeLoaded.get(this.iframe.src)) {
|
168
177
|
await sleep(this.POLLING_INTERVAL_SECONDS * 1000);
|
169
178
|
}
|
@@ -182,7 +191,9 @@ export class IframeCommunicator<T extends { [key: string]: any }> {
|
|
182
191
|
if (showIframe) {
|
183
192
|
// magic number to let modal fade out before hiding it
|
184
193
|
await sleep(0.1 * 1000);
|
185
|
-
this.iframe
|
194
|
+
if (this.iframe) {
|
195
|
+
this.iframe.style.display = "none";
|
196
|
+
}
|
186
197
|
}
|
187
198
|
if (!data.success) {
|
188
199
|
rej(new Error(data.error));
|
@@ -213,6 +224,8 @@ export class IframeCommunicator<T extends { [key: string]: any }> {
|
|
213
224
|
* @internal
|
214
225
|
*/
|
215
226
|
destroy() {
|
216
|
-
|
227
|
+
if (this.iframe) {
|
228
|
+
isIframeLoaded.delete(this.iframe.src);
|
229
|
+
}
|
217
230
|
}
|
218
231
|
}
|
@@ -32,7 +32,7 @@ export class InAppWalletIframeCommunicator<
|
|
32
32
|
baseUrl,
|
33
33
|
}).href,
|
34
34
|
baseUrl,
|
35
|
-
container: document.body,
|
35
|
+
container: typeof document === "undefined" ? undefined : document.body,
|
36
36
|
localStorage: new ClientScopedStorage({
|
37
37
|
storage: webLocalStorage,
|
38
38
|
clientId,
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import type * as ox__TypedData from "ox/TypedData";
|
2
|
+
import { trackTransaction } from "../../analytics/track/transaction.js";
|
2
3
|
import type { Chain } from "../../chains/types.js";
|
3
4
|
import { getCachedChain } from "../../chains/utils.js";
|
4
5
|
import type { ThirdwebClient } from "../../client/client.js";
|
@@ -16,6 +17,7 @@ import { readContract } from "../../transaction/read-contract.js";
|
|
16
17
|
import { getAddress } from "../../utils/address.js";
|
17
18
|
import { isZkSyncChain } from "../../utils/any-evm/zksync/isZkSyncChain.js";
|
18
19
|
import type { Hex } from "../../utils/encoding/hex.js";
|
20
|
+
import { resolvePromisedValue } from "../../utils/promise/resolve-promised-value.js";
|
19
21
|
import { parseTypedData } from "../../utils/signatures/helpers/parse-typed-data.js";
|
20
22
|
import { type SignableMessage, maxUint96 } from "../../utils/types.js";
|
21
23
|
import type {
|
@@ -251,7 +253,8 @@ async function createSmartAccount(
|
|
251
253
|
transaction,
|
252
254
|
executeOverride: options.overrides?.execute,
|
253
255
|
});
|
254
|
-
|
256
|
+
|
257
|
+
const result = await _sendUserOp({
|
255
258
|
executeTx,
|
256
259
|
options: {
|
257
260
|
...options,
|
@@ -263,6 +266,15 @@ async function createSmartAccount(
|
|
263
266
|
},
|
264
267
|
},
|
265
268
|
});
|
269
|
+
trackTransaction({
|
270
|
+
client: options.client,
|
271
|
+
chainId: options.chain.id,
|
272
|
+
transactionHash: result.transactionHash,
|
273
|
+
walletAddress: options.accountContract.address,
|
274
|
+
walletType: "smart",
|
275
|
+
contractAddress: transaction.to ?? undefined,
|
276
|
+
});
|
277
|
+
return result;
|
266
278
|
},
|
267
279
|
async sendBatchTransaction(transactions: SendTransactionOption[]) {
|
268
280
|
const executeTx = prepareBatchExecute({
|
@@ -270,7 +282,7 @@ async function createSmartAccount(
|
|
270
282
|
transactions,
|
271
283
|
executeBatchOverride: options.overrides?.executeBatch,
|
272
284
|
});
|
273
|
-
|
285
|
+
const result = await _sendUserOp({
|
274
286
|
executeTx,
|
275
287
|
options: {
|
276
288
|
...options,
|
@@ -278,6 +290,15 @@ async function createSmartAccount(
|
|
278
290
|
accountContract,
|
279
291
|
},
|
280
292
|
});
|
293
|
+
trackTransaction({
|
294
|
+
client: options.client,
|
295
|
+
chainId: options.chain.id,
|
296
|
+
transactionHash: result.transactionHash,
|
297
|
+
walletAddress: options.accountContract.address,
|
298
|
+
walletType: "smart",
|
299
|
+
contractAddress: transactions[0]?.to ?? undefined,
|
300
|
+
});
|
301
|
+
return result;
|
281
302
|
},
|
282
303
|
async signMessage({ message }: { message: SignableMessage }) {
|
283
304
|
if (options.overrides?.signMessage) {
|
@@ -433,6 +454,16 @@ function createZkSyncAccount(args: {
|
|
433
454
|
transaction: serializableTransaction,
|
434
455
|
signedTransaction,
|
435
456
|
});
|
457
|
+
|
458
|
+
trackTransaction({
|
459
|
+
client: connectionOptions.client,
|
460
|
+
chainId: chain.id,
|
461
|
+
transactionHash: txHash.transactionHash,
|
462
|
+
walletAddress: account.address,
|
463
|
+
walletType: "smart",
|
464
|
+
contractAddress: transaction.to ?? undefined,
|
465
|
+
});
|
466
|
+
|
436
467
|
return {
|
437
468
|
transactionHash: txHash.transactionHash,
|
438
469
|
client: connectionOptions.client,
|
@@ -495,6 +526,15 @@ async function _sendUserOp(args: {
|
|
495
526
|
userOpHash,
|
496
527
|
});
|
497
528
|
|
529
|
+
trackTransaction({
|
530
|
+
client: options.client,
|
531
|
+
chainId: options.chain.id,
|
532
|
+
transactionHash: receipt.transactionHash,
|
533
|
+
walletAddress: options.accountContract.address,
|
534
|
+
walletType: "smart",
|
535
|
+
contractAddress: await resolvePromisedValue(executeTx.to ?? undefined),
|
536
|
+
});
|
537
|
+
|
498
538
|
return {
|
499
539
|
client: options.client,
|
500
540
|
chain: options.chain,
|
@@ -268,7 +268,7 @@ async function checkFor712Factory({
|
|
268
268
|
}
|
269
269
|
|
270
270
|
/**
|
271
|
-
* Deployes a smart account via a dummy transaction.
|
271
|
+
* Deployes a smart account via a dummy transaction. If the account is already deployed, this will do nothing.
|
272
272
|
*
|
273
273
|
* @param args - Arguments for the deployment.
|
274
274
|
* @param args.smartAccount - The smart account to deploy.
|
@@ -93,12 +93,14 @@ export async function connectWC(
|
|
93
93
|
let { onDisplayUri } = wcOptions || {};
|
94
94
|
|
95
95
|
// use default sessionHandler unless onDisplayUri is explicitly provided
|
96
|
-
if (!onDisplayUri && sessionHandler
|
96
|
+
if (!onDisplayUri && sessionHandler) {
|
97
97
|
const walletInfo = await getWalletInfo(walletId);
|
98
98
|
const deeplinkHandler = (uri: string) => {
|
99
99
|
const appUrl = walletInfo.mobile.native || walletInfo.mobile.universal;
|
100
100
|
if (!appUrl) {
|
101
|
-
|
101
|
+
// generic wc uri
|
102
|
+
sessionHandler(uri);
|
103
|
+
return;
|
102
104
|
}
|
103
105
|
const fullUrl = formatWalletConnectUrl(appUrl, uri).redirect;
|
104
106
|
sessionHandler(fullUrl);
|