thirdweb 5.105.0-nightly-e6504340616ef680226e5224ba89aae22a5fa57a-20250626000427 → 5.105.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/bridge/Webhook.js +45 -21
- package/dist/cjs/bridge/Webhook.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/esm/bridge/Webhook.js +45 -21
- package/dist/esm/bridge/Webhook.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/types/bridge/Webhook.d.ts +40 -44
- package/dist/types/bridge/Webhook.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/bridge/Status.test.ts +3 -3
- package/src/bridge/Webhook.test.ts +17 -6
- package/src/bridge/Webhook.ts +49 -24
- package/src/version.ts +1 -1
@@ -10,37 +10,31 @@ const hexSchema = v4_mini_1.z
|
|
10
10
|
const addressSchema = v4_mini_1.z
|
11
11
|
.string()
|
12
12
|
.check(v4_mini_1.z.refine(address_js_1.isAddress, { message: "Invalid address" }));
|
13
|
-
const
|
13
|
+
const tokenSchema = v4_mini_1.z.object({
|
14
|
+
address: addressSchema,
|
15
|
+
chainId: v4_mini_1.z.coerce.number(),
|
16
|
+
decimals: v4_mini_1.z.coerce.number(),
|
17
|
+
iconUri: v4_mini_1.z.optional(v4_mini_1.z.string()),
|
18
|
+
name: v4_mini_1.z.string(),
|
19
|
+
priceUsd: v4_mini_1.z.coerce.number(),
|
20
|
+
symbol: v4_mini_1.z.string(),
|
21
|
+
});
|
22
|
+
const onchainWebhookSchema = v4_mini_1.z.discriminatedUnion("version", [
|
14
23
|
v4_mini_1.z.object({
|
15
24
|
data: v4_mini_1.z.object({}),
|
25
|
+
type: v4_mini_1.z.literal("pay.onchain-transaction"),
|
16
26
|
version: v4_mini_1.z.literal(1),
|
17
27
|
}),
|
18
28
|
v4_mini_1.z.object({
|
19
29
|
data: v4_mini_1.z.object({
|
20
30
|
action: v4_mini_1.z.enum(["TRANSFER", "BUY", "SELL"]),
|
21
31
|
clientId: v4_mini_1.z.string(),
|
22
|
-
destinationAmount: v4_mini_1.z.
|
23
|
-
destinationToken:
|
24
|
-
address: addressSchema,
|
25
|
-
chainId: v4_mini_1.z.coerce.number(),
|
26
|
-
decimals: v4_mini_1.z.coerce.number(),
|
27
|
-
iconUri: v4_mini_1.z.optional(v4_mini_1.z.string()),
|
28
|
-
name: v4_mini_1.z.string(),
|
29
|
-
priceUsd: v4_mini_1.z.coerce.number(),
|
30
|
-
symbol: v4_mini_1.z.string(),
|
31
|
-
}),
|
32
|
+
destinationAmount: v4_mini_1.z.coerce.bigint(),
|
33
|
+
destinationToken: tokenSchema,
|
32
34
|
developerFeeBps: v4_mini_1.z.coerce.number(),
|
33
35
|
developerFeeRecipient: addressSchema,
|
34
|
-
originAmount: v4_mini_1.z.
|
35
|
-
originToken:
|
36
|
-
address: addressSchema,
|
37
|
-
chainId: v4_mini_1.z.coerce.number(),
|
38
|
-
decimals: v4_mini_1.z.coerce.number(),
|
39
|
-
iconUri: v4_mini_1.z.optional(v4_mini_1.z.string()),
|
40
|
-
name: v4_mini_1.z.string(),
|
41
|
-
priceUsd: v4_mini_1.z.coerce.number(),
|
42
|
-
symbol: v4_mini_1.z.string(),
|
43
|
-
}),
|
36
|
+
originAmount: v4_mini_1.z.coerce.bigint(),
|
37
|
+
originToken: tokenSchema,
|
44
38
|
paymentId: v4_mini_1.z.string(),
|
45
39
|
// only exists when the payment was triggered from a developer specified payment link
|
46
40
|
paymentLinkId: v4_mini_1.z.optional(v4_mini_1.z.string()),
|
@@ -54,9 +48,39 @@ const webhookSchema = v4_mini_1.z.union([
|
|
54
48
|
})),
|
55
49
|
type: v4_mini_1.z.string(),
|
56
50
|
}),
|
51
|
+
type: v4_mini_1.z.literal("pay.onchain-transaction"),
|
52
|
+
version: v4_mini_1.z.literal(2),
|
53
|
+
}),
|
54
|
+
]);
|
55
|
+
const onrampWebhookSchema = v4_mini_1.z.discriminatedUnion("version", [
|
56
|
+
v4_mini_1.z.object({
|
57
|
+
data: v4_mini_1.z.object({}),
|
58
|
+
type: v4_mini_1.z.literal("pay.onramp-transaction"),
|
59
|
+
version: v4_mini_1.z.literal(1),
|
60
|
+
}),
|
61
|
+
v4_mini_1.z.object({
|
62
|
+
data: v4_mini_1.z.object({
|
63
|
+
amount: v4_mini_1.z.coerce.bigint(),
|
64
|
+
currency: v4_mini_1.z.string(),
|
65
|
+
currencyAmount: v4_mini_1.z.number(),
|
66
|
+
id: v4_mini_1.z.string(),
|
67
|
+
onramp: v4_mini_1.z.string(),
|
68
|
+
paymentLinkId: v4_mini_1.z.optional(v4_mini_1.z.string()),
|
69
|
+
purchaseData: v4_mini_1.z.unknown(),
|
70
|
+
receiver: v4_mini_1.z.optional(addressSchema),
|
71
|
+
sender: v4_mini_1.z.optional(addressSchema),
|
72
|
+
status: v4_mini_1.z.enum(["PENDING", "COMPLETED", "FAILED"]),
|
73
|
+
token: tokenSchema,
|
74
|
+
transactionHash: v4_mini_1.z.optional(hexSchema),
|
75
|
+
}),
|
76
|
+
type: v4_mini_1.z.literal("pay.onramp-transaction"),
|
57
77
|
version: v4_mini_1.z.literal(2),
|
58
78
|
}),
|
59
79
|
]);
|
80
|
+
const webhookSchema = v4_mini_1.z.discriminatedUnion("type", [
|
81
|
+
onchainWebhookSchema,
|
82
|
+
onrampWebhookSchema,
|
83
|
+
]);
|
60
84
|
/**
|
61
85
|
* Parses an incoming Universal Bridge webhook payload.
|
62
86
|
*
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Webhook.js","sourceRoot":"","sources":["../../../src/bridge/Webhook.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"Webhook.js","sourceRoot":"","sources":["../../../src/bridge/Webhook.ts"],"names":[],"mappings":";;AAoGA,sBAsFC;AA1LD,yCAAgC;AAChC,oDAAgD;AAChD,qDAAiD;AAEjD,MAAM,SAAS,GAAG,WAAC;KAChB,MAAM,EAAE;KACR,KAAK,CAAC,WAAC,CAAC,MAAM,CAAC,cAAK,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC;AAC7D,MAAM,aAAa,GAAG,WAAC;KACpB,MAAM,EAAE;KACR,KAAK,CAAC,WAAC,CAAC,MAAM,CAAC,sBAAS,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;AAC9D,MAAM,WAAW,GAAG,WAAC,CAAC,MAAM,CAAC;IAC3B,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,WAAC,CAAC,MAAM,CAAC,MAAM,EAAE;IAC1B,QAAQ,EAAE,WAAC,CAAC,MAAM,CAAC,MAAM,EAAE;IAC3B,OAAO,EAAE,WAAC,CAAC,QAAQ,CAAC,WAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,IAAI,EAAE,WAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,WAAC,CAAC,MAAM,CAAC,MAAM,EAAE;IAC3B,MAAM,EAAE,WAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,WAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;IAC3D,WAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,WAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QAClB,IAAI,EAAE,WAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC;QAC1C,OAAO,EAAE,WAAC,CAAC,OAAO,CAAC,CAAC,CAAC;KACtB,CAAC;IACF,WAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,WAAC,CAAC,MAAM,CAAC;YACb,MAAM,EAAE,WAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC3C,QAAQ,EAAE,WAAC,CAAC,MAAM,EAAE;YACpB,iBAAiB,EAAE,WAAC,CAAC,MAAM,CAAC,MAAM,EAAE;YACpC,gBAAgB,EAAE,WAAW;YAC7B,eAAe,EAAE,WAAC,CAAC,MAAM,CAAC,MAAM,EAAE;YAClC,qBAAqB,EAAE,aAAa;YACpC,YAAY,EAAE,WAAC,CAAC,MAAM,CAAC,MAAM,EAAE;YAC/B,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,WAAC,CAAC,MAAM,EAAE;YACrB,qFAAqF;YACrF,aAAa,EAAE,WAAC,CAAC,QAAQ,CAAC,WAAC,CAAC,MAAM,EAAE,CAAC;YACrC,YAAY,EAAE,WAAC,CAAC,QAAQ,CAAC,WAAC,CAAC,MAAM,CAAC,WAAC,CAAC,MAAM,EAAE,EAAE,WAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3D,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,WAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YAClD,YAAY,EAAE,WAAC,CAAC,KAAK,CACnB,WAAC,CAAC,MAAM,CAAC;gBACP,OAAO,EAAE,WAAC,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC1B,eAAe,EAAE,SAAS;aAC3B,CAAC,CACH;YACD,IAAI,EAAE,WAAC,CAAC,MAAM,EAAE;SACjB,CAAC;QACF,IAAI,EAAE,WAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC;QAC1C,OAAO,EAAE,WAAC,CAAC,OAAO,CAAC,CAAC,CAAC;KACtB,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,WAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;IAC1D,WAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,WAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QAClB,IAAI,EAAE,WAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC;QACzC,OAAO,EAAE,WAAC,CAAC,OAAO,CAAC,CAAC,CAAC;KACtB,CAAC;IACF,WAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,WAAC,CAAC,MAAM,CAAC;YACb,MAAM,EAAE,WAAC,CAAC,MAAM,CAAC,MAAM,EAAE;YACzB,QAAQ,EAAE,WAAC,CAAC,MAAM,EAAE;YACpB,cAAc,EAAE,WAAC,CAAC,MAAM,EAAE;YAC1B,EAAE,EAAE,WAAC,CAAC,MAAM,EAAE;YACd,MAAM,EAAE,WAAC,CAAC,MAAM,EAAE;YAClB,aAAa,EAAE,WAAC,CAAC,QAAQ,CAAC,WAAC,CAAC,MAAM,EAAE,CAAC;YACrC,YAAY,EAAE,WAAC,CAAC,OAAO,EAAE;YACzB,QAAQ,EAAE,WAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;YACnC,MAAM,EAAE,WAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;YACjC,MAAM,EAAE,WAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;YAClD,KAAK,EAAE,WAAW;YAClB,eAAe,EAAE,WAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;SACvC,CAAC;QACF,IAAI,EAAE,WAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC;QACzC,OAAO,EAAE,WAAC,CAAC,OAAO,CAAC,CAAC,CAAC;KACtB,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,WAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACjD,oBAAoB;IACpB,mBAAmB;CACpB,CAAC,CAAC;AAMH;;;;;;;;GAQG;AACI,KAAK,UAAU,KAAK;AACzB;;GAEG;AACH,OAAe;AAEf;;GAEG;AACH,OAA+B;AAE/B;;GAEG;AACH,MAAc;AAEd;;GAEG;AACH,SAAS,GAAG,GAAG;IAEf,+CAA+C;IAC/C,MAAM,iBAAiB,GACrB,OAAO,CAAC,qBAAqB,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/D,MAAM,iBAAiB,GACrB,OAAO,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEvD,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IAED,mBAAmB;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IAEvC,IAAI,IAAI,GAAG,SAAS,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,6CAA6C,IAAI,iBAAiB,SAAS,GAAG,CAC/E,CAAC;IACJ,CAAC;IAED,yDAAyD;IACzD,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CACvC,KAAK,EACL,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EACtB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,EACjC,KAAK,EACL,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CACxC,MAAM,EACN,GAAG,EACH,OAAO,CAAC,MAAM,CAAC,GAAG,iBAAiB,IAAI,OAAO,EAAE,CAAC,CAClD,CAAC;IAEF,sCAAsC;IACtC,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;SAC5D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,qBAAqB;IACrB,IAAI,iBAAiB,KAAK,iBAAiB,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,4BAA4B;IAC5B,IAAI,aAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAEzD,4BAA4B;IAC5B,IAAI,aAAa,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,iGAAiG,CAClG,CAAC;IACJ,CAAC;IAED,OAAO,aAAsC,CAAC;AAChD,CAAC"}
|
package/dist/cjs/version.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.version = void 0;
|
4
|
-
exports.version = "5.105.
|
4
|
+
exports.version = "5.105.1";
|
5
5
|
//# sourceMappingURL=version.js.map
|
package/dist/cjs/version.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,SAAS,CAAC"}
|
@@ -7,37 +7,31 @@ const hexSchema = z
|
|
7
7
|
const addressSchema = z
|
8
8
|
.string()
|
9
9
|
.check(z.refine(isAddress, { message: "Invalid address" }));
|
10
|
-
const
|
10
|
+
const tokenSchema = z.object({
|
11
|
+
address: addressSchema,
|
12
|
+
chainId: z.coerce.number(),
|
13
|
+
decimals: z.coerce.number(),
|
14
|
+
iconUri: z.optional(z.string()),
|
15
|
+
name: z.string(),
|
16
|
+
priceUsd: z.coerce.number(),
|
17
|
+
symbol: z.string(),
|
18
|
+
});
|
19
|
+
const onchainWebhookSchema = z.discriminatedUnion("version", [
|
11
20
|
z.object({
|
12
21
|
data: z.object({}),
|
22
|
+
type: z.literal("pay.onchain-transaction"),
|
13
23
|
version: z.literal(1),
|
14
24
|
}),
|
15
25
|
z.object({
|
16
26
|
data: z.object({
|
17
27
|
action: z.enum(["TRANSFER", "BUY", "SELL"]),
|
18
28
|
clientId: z.string(),
|
19
|
-
destinationAmount: z.
|
20
|
-
destinationToken:
|
21
|
-
address: addressSchema,
|
22
|
-
chainId: z.coerce.number(),
|
23
|
-
decimals: z.coerce.number(),
|
24
|
-
iconUri: z.optional(z.string()),
|
25
|
-
name: z.string(),
|
26
|
-
priceUsd: z.coerce.number(),
|
27
|
-
symbol: z.string(),
|
28
|
-
}),
|
29
|
+
destinationAmount: z.coerce.bigint(),
|
30
|
+
destinationToken: tokenSchema,
|
29
31
|
developerFeeBps: z.coerce.number(),
|
30
32
|
developerFeeRecipient: addressSchema,
|
31
|
-
originAmount: z.
|
32
|
-
originToken:
|
33
|
-
address: addressSchema,
|
34
|
-
chainId: z.coerce.number(),
|
35
|
-
decimals: z.coerce.number(),
|
36
|
-
iconUri: z.optional(z.string()),
|
37
|
-
name: z.string(),
|
38
|
-
priceUsd: z.coerce.number(),
|
39
|
-
symbol: z.string(),
|
40
|
-
}),
|
33
|
+
originAmount: z.coerce.bigint(),
|
34
|
+
originToken: tokenSchema,
|
41
35
|
paymentId: z.string(),
|
42
36
|
// only exists when the payment was triggered from a developer specified payment link
|
43
37
|
paymentLinkId: z.optional(z.string()),
|
@@ -51,9 +45,39 @@ const webhookSchema = z.union([
|
|
51
45
|
})),
|
52
46
|
type: z.string(),
|
53
47
|
}),
|
48
|
+
type: z.literal("pay.onchain-transaction"),
|
49
|
+
version: z.literal(2),
|
50
|
+
}),
|
51
|
+
]);
|
52
|
+
const onrampWebhookSchema = z.discriminatedUnion("version", [
|
53
|
+
z.object({
|
54
|
+
data: z.object({}),
|
55
|
+
type: z.literal("pay.onramp-transaction"),
|
56
|
+
version: z.literal(1),
|
57
|
+
}),
|
58
|
+
z.object({
|
59
|
+
data: z.object({
|
60
|
+
amount: z.coerce.bigint(),
|
61
|
+
currency: z.string(),
|
62
|
+
currencyAmount: z.number(),
|
63
|
+
id: z.string(),
|
64
|
+
onramp: z.string(),
|
65
|
+
paymentLinkId: z.optional(z.string()),
|
66
|
+
purchaseData: z.unknown(),
|
67
|
+
receiver: z.optional(addressSchema),
|
68
|
+
sender: z.optional(addressSchema),
|
69
|
+
status: z.enum(["PENDING", "COMPLETED", "FAILED"]),
|
70
|
+
token: tokenSchema,
|
71
|
+
transactionHash: z.optional(hexSchema),
|
72
|
+
}),
|
73
|
+
type: z.literal("pay.onramp-transaction"),
|
54
74
|
version: z.literal(2),
|
55
75
|
}),
|
56
76
|
]);
|
77
|
+
const webhookSchema = z.discriminatedUnion("type", [
|
78
|
+
onchainWebhookSchema,
|
79
|
+
onrampWebhookSchema,
|
80
|
+
]);
|
57
81
|
/**
|
58
82
|
* Parses an incoming Universal Bridge webhook payload.
|
59
83
|
*
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Webhook.js","sourceRoot":"","sources":["../../../src/bridge/Webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD,MAAM,SAAS,GAAG,CAAC;KAChB,MAAM,EAAE;KACR,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC;AAC7D,MAAM,aAAa,GAAG,CAAC;KACpB,MAAM,EAAE;KACR,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"Webhook.js","sourceRoot":"","sources":["../../../src/bridge/Webhook.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/version.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export const version = "5.105.
|
1
|
+
export const version = "5.105.1";
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/dist/esm/version.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC"}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import { z } from "zod/v4-mini";
|
2
|
-
declare const webhookSchema: z.
|
2
|
+
declare const webhookSchema: z.ZodMiniDiscriminatedUnion<[z.ZodMiniDiscriminatedUnion<[z.ZodMiniObject<{
|
3
3
|
data: z.ZodMiniObject<{}, z.core.$strip>;
|
4
|
+
type: z.ZodMiniLiteral<"pay.onchain-transaction">;
|
4
5
|
version: z.ZodMiniLiteral<1>;
|
5
6
|
}, z.core.$strip>, z.ZodMiniObject<{
|
6
7
|
data: z.ZodMiniObject<{
|
@@ -10,7 +11,7 @@ declare const webhookSchema: z.ZodMiniUnion<readonly [z.ZodMiniObject<{
|
|
10
11
|
SELL: "SELL";
|
11
12
|
}>;
|
12
13
|
clientId: z.ZodMiniString<string>;
|
13
|
-
destinationAmount: z.
|
14
|
+
destinationAmount: z.ZodMiniBigInt<unknown>;
|
14
15
|
destinationToken: z.ZodMiniObject<{
|
15
16
|
address: z.ZodMiniString<string>;
|
16
17
|
chainId: z.ZodMiniNumber<unknown>;
|
@@ -22,7 +23,7 @@ declare const webhookSchema: z.ZodMiniUnion<readonly [z.ZodMiniObject<{
|
|
22
23
|
}, z.core.$strip>;
|
23
24
|
developerFeeBps: z.ZodMiniNumber<unknown>;
|
24
25
|
developerFeeRecipient: z.ZodMiniString<string>;
|
25
|
-
originAmount: z.
|
26
|
+
originAmount: z.ZodMiniBigInt<unknown>;
|
26
27
|
originToken: z.ZodMiniObject<{
|
27
28
|
address: z.ZodMiniString<string>;
|
28
29
|
chainId: z.ZodMiniNumber<unknown>;
|
@@ -48,8 +49,42 @@ declare const webhookSchema: z.ZodMiniUnion<readonly [z.ZodMiniObject<{
|
|
48
49
|
}, z.core.$strip>>;
|
49
50
|
type: z.ZodMiniString<string>;
|
50
51
|
}, z.core.$strip>;
|
52
|
+
type: z.ZodMiniLiteral<"pay.onchain-transaction">;
|
51
53
|
version: z.ZodMiniLiteral<2>;
|
52
|
-
}, z.core.$strip>]
|
54
|
+
}, z.core.$strip>]>, z.ZodMiniDiscriminatedUnion<[z.ZodMiniObject<{
|
55
|
+
data: z.ZodMiniObject<{}, z.core.$strip>;
|
56
|
+
type: z.ZodMiniLiteral<"pay.onramp-transaction">;
|
57
|
+
version: z.ZodMiniLiteral<1>;
|
58
|
+
}, z.core.$strip>, z.ZodMiniObject<{
|
59
|
+
data: z.ZodMiniObject<{
|
60
|
+
amount: z.ZodMiniBigInt<unknown>;
|
61
|
+
currency: z.ZodMiniString<string>;
|
62
|
+
currencyAmount: z.ZodMiniNumber<number>;
|
63
|
+
id: z.ZodMiniString<string>;
|
64
|
+
onramp: z.ZodMiniString<string>;
|
65
|
+
paymentLinkId: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
66
|
+
purchaseData: z.ZodMiniUnknown;
|
67
|
+
receiver: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
68
|
+
sender: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
69
|
+
status: z.ZodMiniEnum<{
|
70
|
+
COMPLETED: "COMPLETED";
|
71
|
+
PENDING: "PENDING";
|
72
|
+
FAILED: "FAILED";
|
73
|
+
}>;
|
74
|
+
token: z.ZodMiniObject<{
|
75
|
+
address: z.ZodMiniString<string>;
|
76
|
+
chainId: z.ZodMiniNumber<unknown>;
|
77
|
+
decimals: z.ZodMiniNumber<unknown>;
|
78
|
+
iconUri: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
79
|
+
name: z.ZodMiniString<string>;
|
80
|
+
priceUsd: z.ZodMiniNumber<unknown>;
|
81
|
+
symbol: z.ZodMiniString<string>;
|
82
|
+
}, z.core.$strip>;
|
83
|
+
transactionHash: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
84
|
+
}, z.core.$strip>;
|
85
|
+
type: z.ZodMiniLiteral<"pay.onramp-transaction">;
|
86
|
+
version: z.ZodMiniLiteral<2>;
|
87
|
+
}, z.core.$strip>]>]>;
|
53
88
|
export type WebhookPayload = Exclude<z.infer<typeof webhookSchema>, {
|
54
89
|
version: 1;
|
55
90
|
}>;
|
@@ -78,45 +113,6 @@ secret: string,
|
|
78
113
|
/**
|
79
114
|
* The tolerance in seconds for the timestamp verification.
|
80
115
|
*/
|
81
|
-
tolerance?: number): Promise<
|
82
|
-
data: {
|
83
|
-
action: "TRANSFER" | "BUY" | "SELL";
|
84
|
-
clientId: string;
|
85
|
-
destinationAmount: string;
|
86
|
-
destinationToken: {
|
87
|
-
address: string;
|
88
|
-
chainId: number;
|
89
|
-
decimals: number;
|
90
|
-
name: string;
|
91
|
-
priceUsd: number;
|
92
|
-
symbol: string;
|
93
|
-
iconUri?: string | undefined;
|
94
|
-
};
|
95
|
-
developerFeeBps: number;
|
96
|
-
developerFeeRecipient: string;
|
97
|
-
originAmount: string;
|
98
|
-
originToken: {
|
99
|
-
address: string;
|
100
|
-
chainId: number;
|
101
|
-
decimals: number;
|
102
|
-
name: string;
|
103
|
-
priceUsd: number;
|
104
|
-
symbol: string;
|
105
|
-
iconUri?: string | undefined;
|
106
|
-
};
|
107
|
-
paymentId: string;
|
108
|
-
receiver: string;
|
109
|
-
sender: string;
|
110
|
-
status: "COMPLETED" | "PENDING" | "FAILED";
|
111
|
-
transactions: {
|
112
|
-
chainId: number;
|
113
|
-
transactionHash: string;
|
114
|
-
}[];
|
115
|
-
type: string;
|
116
|
-
paymentLinkId?: string | undefined;
|
117
|
-
purchaseData?: Record<string, unknown> | undefined;
|
118
|
-
};
|
119
|
-
version: 2;
|
120
|
-
}>;
|
116
|
+
tolerance?: number): Promise<WebhookPayload>;
|
121
117
|
export {};
|
122
118
|
//# sourceMappingURL=Webhook.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Webhook.d.ts","sourceRoot":"","sources":["../../../src/bridge/Webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;
|
1
|
+
{"version":3,"file":"Webhook.d.ts","sourceRoot":"","sources":["../../../src/bridge/Webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAkFhC,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAGjB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,CAClC,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,EAC7B;IAAE,OAAO,EAAE,CAAC,CAAA;CAAE,CACf,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,KAAK;AACzB;;GAEG;AACH,OAAO,EAAE,MAAM;AAEf;;GAEG;AACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;AAE/B;;GAEG;AACH,MAAM,EAAE,MAAM;AAEd;;GAEG;AACH,SAAS,SAAM,GACd,OAAO,CAAC,cAAc,CAAC,CAkEzB"}
|
package/dist/types/version.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare const version = "5.105.
|
1
|
+
export declare const version = "5.105.1";
|
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,YAAY,CAAC"}
|
package/package.json
CHANGED
@@ -38,8 +38,8 @@
|
|
38
38
|
"uqr": "0.1.2",
|
39
39
|
"viem": "2.28.1",
|
40
40
|
"zod": "3.25.62",
|
41
|
-
"@thirdweb-dev/engine": "3.1.0
|
42
|
-
"@thirdweb-dev/insight": "1.1.0
|
41
|
+
"@thirdweb-dev/engine": "3.1.0",
|
42
|
+
"@thirdweb-dev/insight": "1.1.0"
|
43
43
|
},
|
44
44
|
"devDependencies": {
|
45
45
|
"@aws-sdk/client-kms": "3.592.0",
|
@@ -375,7 +375,7 @@
|
|
375
375
|
}
|
376
376
|
},
|
377
377
|
"typings": "./dist/types/exports/thirdweb.d.ts",
|
378
|
-
"version": "5.105.
|
378
|
+
"version": "5.105.1",
|
379
379
|
"scripts": {
|
380
380
|
"bench": "vitest -c ./test/vitest.config.ts bench",
|
381
381
|
"bench:compare": "bun run ./benchmarks/run.ts",
|
@@ -7,10 +7,10 @@ describe.runIf(process.env.TW_SECRET_KEY)("Bridge.status", () => {
|
|
7
7
|
// TODO: flaky test
|
8
8
|
it.skip("should handle successful status", async () => {
|
9
9
|
const result = await status({
|
10
|
-
chainId:
|
10
|
+
chainId: 8453,
|
11
11
|
client: TEST_CLIENT,
|
12
12
|
transactionHash:
|
13
|
-
"
|
13
|
+
"0x8e8ab7c998bdfef6e10951c801a862373ce87af62c21fb870e62fca57683bf10",
|
14
14
|
});
|
15
15
|
|
16
16
|
expect(result).toBeDefined();
|
@@ -46,7 +46,7 @@ describe.runIf(process.env.TW_SECRET_KEY)("Bridge.status", () => {
|
|
46
46
|
chain: defineChain(8453),
|
47
47
|
client: TEST_CLIENT,
|
48
48
|
transactionHash:
|
49
|
-
"
|
49
|
+
"0x8e8ab7c998bdfef6e10951c801a862373ce87af62c21fb870e62fca57683bf10",
|
50
50
|
});
|
51
51
|
|
52
52
|
expect(result).toBeDefined();
|
@@ -21,11 +21,11 @@ const generateSignature = async (
|
|
21
21
|
|
22
22
|
describe("parseIncomingWebhook", () => {
|
23
23
|
const testTimestamp = Math.floor(Date.now() / 1000).toString();
|
24
|
-
const
|
24
|
+
const validWebhook: WebhookPayload = {
|
25
25
|
data: {
|
26
26
|
action: "TRANSFER",
|
27
27
|
clientId: "client123",
|
28
|
-
destinationAmount:
|
28
|
+
destinationAmount: 10n,
|
29
29
|
destinationToken: {
|
30
30
|
address: "0x1234567890123456789012345678901234567890" as const,
|
31
31
|
chainId: 1,
|
@@ -37,7 +37,7 @@ describe("parseIncomingWebhook", () => {
|
|
37
37
|
},
|
38
38
|
developerFeeBps: 100,
|
39
39
|
developerFeeRecipient: "0x1234567890123456789012345678901234567890",
|
40
|
-
originAmount:
|
40
|
+
originAmount: 10n,
|
41
41
|
originToken: {
|
42
42
|
address: "0x1234567890123456789012345678901234567890" as const,
|
43
43
|
chainId: 1,
|
@@ -64,8 +64,17 @@ describe("parseIncomingWebhook", () => {
|
|
64
64
|
],
|
65
65
|
type: "transfer",
|
66
66
|
},
|
67
|
+
type: "pay.onchain-transaction",
|
67
68
|
version: 2,
|
68
69
|
};
|
70
|
+
const validPayload = {
|
71
|
+
...validWebhook,
|
72
|
+
data: {
|
73
|
+
...validWebhook.data,
|
74
|
+
destinationAmount: validWebhook.data.destinationAmount.toString(),
|
75
|
+
originAmount: validWebhook.data.originAmount.toString(),
|
76
|
+
},
|
77
|
+
};
|
69
78
|
|
70
79
|
it("should successfully verify a valid webhook", async () => {
|
71
80
|
const signature = await generateSignature(
|
@@ -78,7 +87,7 @@ describe("parseIncomingWebhook", () => {
|
|
78
87
|
};
|
79
88
|
|
80
89
|
const result = await parse(JSON.stringify(validPayload), headers, secret);
|
81
|
-
expect(result).toEqual(
|
90
|
+
expect(result).toEqual(validWebhook);
|
82
91
|
});
|
83
92
|
|
84
93
|
it("should accept alternative header names", async () => {
|
@@ -92,7 +101,7 @@ describe("parseIncomingWebhook", () => {
|
|
92
101
|
};
|
93
102
|
|
94
103
|
const result = await parse(JSON.stringify(validPayload), headers, secret);
|
95
|
-
expect(result).toEqual(
|
104
|
+
expect(result).toEqual(validWebhook);
|
96
105
|
});
|
97
106
|
|
98
107
|
it("should throw error for missing headers", async () => {
|
@@ -149,6 +158,7 @@ describe("parseIncomingWebhook", () => {
|
|
149
158
|
data: {
|
150
159
|
someField: "value",
|
151
160
|
},
|
161
|
+
type: "pay.onchain-transaction",
|
152
162
|
version: 1,
|
153
163
|
};
|
154
164
|
const v1PayloadString = JSON.stringify(v1Payload);
|
@@ -180,7 +190,7 @@ describe("parseIncomingWebhook", () => {
|
|
180
190
|
secret,
|
181
191
|
300,
|
182
192
|
);
|
183
|
-
expect(result).toEqual(
|
193
|
+
expect(result).toEqual(validWebhook);
|
184
194
|
});
|
185
195
|
|
186
196
|
describe("payload validation", () => {
|
@@ -575,6 +585,7 @@ describe("parseIncomingWebhook", () => {
|
|
575
585
|
|
576
586
|
it("should throw error for version 1 payload missing data object", async () => {
|
577
587
|
const invalidPayload = {
|
588
|
+
type: "pay.onchain-transaction",
|
578
589
|
version: 1,
|
579
590
|
// no data field
|
580
591
|
} as unknown as WebhookPayload;
|
package/src/bridge/Webhook.ts
CHANGED
@@ -8,38 +8,32 @@ const hexSchema = z
|
|
8
8
|
const addressSchema = z
|
9
9
|
.string()
|
10
10
|
.check(z.refine(isAddress, { message: "Invalid address" }));
|
11
|
-
|
12
|
-
|
11
|
+
const tokenSchema = z.object({
|
12
|
+
address: addressSchema,
|
13
|
+
chainId: z.coerce.number(),
|
14
|
+
decimals: z.coerce.number(),
|
15
|
+
iconUri: z.optional(z.string()),
|
16
|
+
name: z.string(),
|
17
|
+
priceUsd: z.coerce.number(),
|
18
|
+
symbol: z.string(),
|
19
|
+
});
|
20
|
+
|
21
|
+
const onchainWebhookSchema = z.discriminatedUnion("version", [
|
13
22
|
z.object({
|
14
23
|
data: z.object({}),
|
24
|
+
type: z.literal("pay.onchain-transaction"),
|
15
25
|
version: z.literal(1),
|
16
26
|
}),
|
17
27
|
z.object({
|
18
28
|
data: z.object({
|
19
29
|
action: z.enum(["TRANSFER", "BUY", "SELL"]),
|
20
30
|
clientId: z.string(),
|
21
|
-
destinationAmount: z.
|
22
|
-
destinationToken:
|
23
|
-
address: addressSchema,
|
24
|
-
chainId: z.coerce.number(),
|
25
|
-
decimals: z.coerce.number(),
|
26
|
-
iconUri: z.optional(z.string()),
|
27
|
-
name: z.string(),
|
28
|
-
priceUsd: z.coerce.number(),
|
29
|
-
symbol: z.string(),
|
30
|
-
}),
|
31
|
+
destinationAmount: z.coerce.bigint(),
|
32
|
+
destinationToken: tokenSchema,
|
31
33
|
developerFeeBps: z.coerce.number(),
|
32
34
|
developerFeeRecipient: addressSchema,
|
33
|
-
originAmount: z.
|
34
|
-
originToken:
|
35
|
-
address: addressSchema,
|
36
|
-
chainId: z.coerce.number(),
|
37
|
-
decimals: z.coerce.number(),
|
38
|
-
iconUri: z.optional(z.string()),
|
39
|
-
name: z.string(),
|
40
|
-
priceUsd: z.coerce.number(),
|
41
|
-
symbol: z.string(),
|
42
|
-
}),
|
35
|
+
originAmount: z.coerce.bigint(),
|
36
|
+
originToken: tokenSchema,
|
43
37
|
paymentId: z.string(),
|
44
38
|
// only exists when the payment was triggered from a developer specified payment link
|
45
39
|
paymentLinkId: z.optional(z.string()),
|
@@ -55,10 +49,41 @@ const webhookSchema = z.union([
|
|
55
49
|
),
|
56
50
|
type: z.string(),
|
57
51
|
}),
|
52
|
+
type: z.literal("pay.onchain-transaction"),
|
53
|
+
version: z.literal(2),
|
54
|
+
}),
|
55
|
+
]);
|
56
|
+
|
57
|
+
const onrampWebhookSchema = z.discriminatedUnion("version", [
|
58
|
+
z.object({
|
59
|
+
data: z.object({}),
|
60
|
+
type: z.literal("pay.onramp-transaction"),
|
61
|
+
version: z.literal(1),
|
62
|
+
}),
|
63
|
+
z.object({
|
64
|
+
data: z.object({
|
65
|
+
amount: z.coerce.bigint(),
|
66
|
+
currency: z.string(),
|
67
|
+
currencyAmount: z.number(),
|
68
|
+
id: z.string(),
|
69
|
+
onramp: z.string(),
|
70
|
+
paymentLinkId: z.optional(z.string()),
|
71
|
+
purchaseData: z.unknown(),
|
72
|
+
receiver: z.optional(addressSchema),
|
73
|
+
sender: z.optional(addressSchema),
|
74
|
+
status: z.enum(["PENDING", "COMPLETED", "FAILED"]),
|
75
|
+
token: tokenSchema,
|
76
|
+
transactionHash: z.optional(hexSchema),
|
77
|
+
}),
|
78
|
+
type: z.literal("pay.onramp-transaction"),
|
58
79
|
version: z.literal(2),
|
59
80
|
}),
|
60
81
|
]);
|
61
82
|
|
83
|
+
const webhookSchema = z.discriminatedUnion("type", [
|
84
|
+
onchainWebhookSchema,
|
85
|
+
onrampWebhookSchema,
|
86
|
+
]);
|
62
87
|
export type WebhookPayload = Exclude<
|
63
88
|
z.infer<typeof webhookSchema>,
|
64
89
|
{ version: 1 }
|
@@ -93,7 +118,7 @@ export async function parse(
|
|
93
118
|
* The tolerance in seconds for the timestamp verification.
|
94
119
|
*/
|
95
120
|
tolerance = 300, // Default to 5 minutes if not specified
|
96
|
-
) {
|
121
|
+
): Promise<WebhookPayload> {
|
97
122
|
// Get the signature and timestamp from headers
|
98
123
|
const receivedSignature =
|
99
124
|
headers["x-payload-signature"] || headers["x-pay-signature"];
|
@@ -158,5 +183,5 @@ export async function parse(
|
|
158
183
|
);
|
159
184
|
}
|
160
185
|
|
161
|
-
return parsedPayload;
|
186
|
+
return parsedPayload satisfies WebhookPayload;
|
162
187
|
}
|
package/src/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = "5.105.
|
1
|
+
export const version = "5.105.1";
|