thirdweb 5.121.2 → 5.121.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/cjs/react/core/hooks/x402/useFetchWithPaymentCore.js +1 -0
  2. package/dist/cjs/react/core/hooks/x402/useFetchWithPaymentCore.js.map +1 -1
  3. package/dist/cjs/react/native/hooks/x402/useFetchWithPayment.js +1 -1
  4. package/dist/cjs/react/web/hooks/x402/useFetchWithPayment.js +2 -2
  5. package/dist/cjs/react/web/hooks/x402/useFetchWithPayment.js.map +1 -1
  6. package/dist/cjs/react/web/ui/x402/PaymentErrorModal.js +4 -4
  7. package/dist/cjs/react/web/ui/x402/PaymentErrorModal.js.map +1 -1
  8. package/dist/cjs/version.js +1 -1
  9. package/dist/cjs/x402/encode.js +41 -2
  10. package/dist/cjs/x402/encode.js.map +1 -1
  11. package/dist/cjs/x402/fetchWithPayment.js +56 -33
  12. package/dist/cjs/x402/fetchWithPayment.js.map +1 -1
  13. package/dist/cjs/x402/schemas.js +134 -2
  14. package/dist/cjs/x402/schemas.js.map +1 -1
  15. package/dist/cjs/x402/sign.js +56 -15
  16. package/dist/cjs/x402/sign.js.map +1 -1
  17. package/dist/esm/react/core/hooks/x402/useFetchWithPaymentCore.js +2 -1
  18. package/dist/esm/react/core/hooks/x402/useFetchWithPaymentCore.js.map +1 -1
  19. package/dist/esm/react/native/hooks/x402/useFetchWithPayment.js +1 -1
  20. package/dist/esm/react/web/hooks/x402/useFetchWithPayment.js +2 -2
  21. package/dist/esm/react/web/hooks/x402/useFetchWithPayment.js.map +1 -1
  22. package/dist/esm/react/web/ui/x402/PaymentErrorModal.js +5 -5
  23. package/dist/esm/react/web/ui/x402/PaymentErrorModal.js.map +1 -1
  24. package/dist/esm/version.js +1 -1
  25. package/dist/esm/x402/encode.js +40 -2
  26. package/dist/esm/x402/encode.js.map +1 -1
  27. package/dist/esm/x402/fetchWithPayment.js +57 -35
  28. package/dist/esm/x402/fetchWithPayment.js.map +1 -1
  29. package/dist/esm/x402/schemas.js +129 -1
  30. package/dist/esm/x402/schemas.js.map +1 -1
  31. package/dist/esm/x402/sign.js +57 -16
  32. package/dist/esm/x402/sign.js.map +1 -1
  33. package/dist/scripts/bridge-widget.js +2 -2
  34. package/dist/types/react/core/hooks/x402/useFetchWithPaymentCore.d.ts +1 -0
  35. package/dist/types/react/core/hooks/x402/useFetchWithPaymentCore.d.ts.map +1 -1
  36. package/dist/types/react/native/hooks/x402/useFetchWithPayment.d.ts +1 -1
  37. package/dist/types/react/web/hooks/x402/useFetchWithPayment.d.ts +1 -1
  38. package/dist/types/react/web/hooks/x402/useFetchWithPayment.d.ts.map +1 -1
  39. package/dist/types/react/web/ui/x402/PaymentErrorModal.d.ts +1 -0
  40. package/dist/types/react/web/ui/x402/PaymentErrorModal.d.ts.map +1 -1
  41. package/dist/types/version.d.ts +1 -1
  42. package/dist/types/x402/encode.d.ts +7 -0
  43. package/dist/types/x402/encode.d.ts.map +1 -1
  44. package/dist/types/x402/fetchWithPayment.d.ts +10 -1
  45. package/dist/types/x402/fetchWithPayment.d.ts.map +1 -1
  46. package/dist/types/x402/schemas.d.ts +60 -2
  47. package/dist/types/x402/schemas.d.ts.map +1 -1
  48. package/dist/types/x402/sign.d.ts +13 -1
  49. package/dist/types/x402/sign.d.ts.map +1 -1
  50. package/package.json +3 -3
  51. package/src/contract/actions/resolve-abi.test.ts +3 -5
  52. package/src/extensions/airdrop/write/airdropERC721WithSignature.test.ts +4 -5
  53. package/src/extensions/erc1155/drop1155.test.ts +1 -1
  54. package/src/extensions/erc1155/write/sigMint1155.test.ts +189 -187
  55. package/src/extensions/erc20/drop20.test.ts +1 -1
  56. package/src/extensions/erc721/write/sigMint721.test.ts +4 -6
  57. package/src/extensions/modules/ClaimableERC1155/claimableERC1155.test.ts +180 -178
  58. package/src/extensions/modules/ClaimableERC20/claimableERC20.test.ts +1 -1
  59. package/src/extensions/modules/ClaimableERC721/claimableERC721.test.ts +1 -1
  60. package/src/extensions/prebuilts/process-ref-deployments.test.ts +1 -1
  61. package/src/react/core/hooks/x402/useFetchWithPaymentCore.ts +6 -1
  62. package/src/react/native/hooks/x402/useFetchWithPayment.ts +1 -1
  63. package/src/react/web/hooks/x402/useFetchWithPayment.tsx +3 -1
  64. package/src/react/web/ui/x402/PaymentErrorModal.tsx +9 -4
  65. package/src/version.ts +1 -1
  66. package/src/x402/encode.ts +46 -2
  67. package/src/x402/fetchWithPayment.test.ts +1173 -104
  68. package/src/x402/fetchWithPayment.ts +72 -54
  69. package/src/x402/schemas.test.ts +123 -0
  70. package/src/x402/schemas.ts +199 -6
  71. package/src/x402/sign.ts +86 -10
@@ -20,212 +20,214 @@ import { generateMintSignature, mintWithSignature } from "./sigMint.js";
20
20
 
21
21
  // skip this test suite if there is no secret key available to test with
22
22
  // TODO: remove reliance on secret key during unit tests entirely
23
- describe.runIf(process.env.TW_SECRET_KEY)("generateMintSignature1155", () => {
24
- let erc1155Contract: ThirdwebContract;
25
- let erc20TokenContract: ThirdwebContract;
23
+ describe
24
+ .runIf(process.env.TW_SECRET_KEY)
25
+ .skip("generateMintSignature1155", () => {
26
+ let erc1155Contract: ThirdwebContract;
27
+ let erc20TokenContract: ThirdwebContract;
26
28
 
27
- beforeAll(async () => {
28
- erc1155Contract = getContract({
29
- address: await deployERC1155Contract({
30
- account: TEST_ACCOUNT_A,
29
+ beforeAll(async () => {
30
+ erc1155Contract = getContract({
31
+ address: await deployERC1155Contract({
32
+ account: TEST_ACCOUNT_A,
33
+ chain: ANVIL_CHAIN,
34
+ client: TEST_CLIENT,
35
+ params: {
36
+ name: "Test",
37
+ symbol: "TST",
38
+ },
39
+ type: "TokenERC1155",
40
+ }),
31
41
  chain: ANVIL_CHAIN,
32
42
  client: TEST_CLIENT,
33
- params: {
34
- name: "Test",
35
- symbol: "TST",
36
- },
37
- type: "TokenERC1155",
38
- }),
39
- chain: ANVIL_CHAIN,
40
- client: TEST_CLIENT,
41
- });
43
+ });
42
44
 
43
- erc20TokenContract = getContract({
44
- address: await deployERC20Contract({
45
- account: TEST_ACCOUNT_A,
45
+ erc20TokenContract = getContract({
46
+ address: await deployERC20Contract({
47
+ account: TEST_ACCOUNT_A,
48
+ chain: ANVIL_CHAIN,
49
+ client: TEST_CLIENT,
50
+ params: {
51
+ name: "TestToken",
52
+ symbol: "TSTT",
53
+ },
54
+ type: "TokenERC20",
55
+ }),
46
56
  chain: ANVIL_CHAIN,
47
57
  client: TEST_CLIENT,
48
- params: {
49
- name: "TestToken",
50
- symbol: "TSTT",
51
- },
52
- type: "TokenERC20",
53
- }),
54
- chain: ANVIL_CHAIN,
55
- client: TEST_CLIENT,
56
- });
57
- }, 60000);
58
+ });
59
+ }, 60000);
58
60
 
59
- it("should generate a mint signature and mint an NFT", async () => {
60
- const { payload, signature } = await generateMintSignature({
61
- account: TEST_ACCOUNT_A,
62
- contract: erc1155Contract,
63
- mintRequest: {
64
- metadata: {
65
- description: "This is my NFT",
66
- image: "https://example.com/image.png",
67
- name: "My NFT",
61
+ it("should generate a mint signature and mint an NFT", async () => {
62
+ const { payload, signature } = await generateMintSignature({
63
+ account: TEST_ACCOUNT_A,
64
+ contract: erc1155Contract,
65
+ mintRequest: {
66
+ metadata: {
67
+ description: "This is my NFT",
68
+ image: "https://example.com/image.png",
69
+ name: "My NFT",
70
+ },
71
+ pricePerToken: "0.1",
72
+ quantity: 10n,
73
+ to: TEST_ACCOUNT_B.address,
68
74
  },
69
- pricePerToken: "0.1",
70
- quantity: 10n,
71
- to: TEST_ACCOUNT_B.address,
72
- },
73
- });
74
- const transaction = mintWithSignature({
75
- contract: erc1155Contract,
76
- payload,
77
- signature,
78
- });
79
- const { transactionHash } = await sendAndConfirmTransaction({
80
- account: TEST_ACCOUNT_A,
81
- transaction,
82
- });
83
- expect(transactionHash.length).toBe(66);
84
- const nft = await getNFT({
85
- contract: erc1155Contract,
86
- tokenId: 0n,
75
+ });
76
+ const transaction = mintWithSignature({
77
+ contract: erc1155Contract,
78
+ payload,
79
+ signature,
80
+ });
81
+ const { transactionHash } = await sendAndConfirmTransaction({
82
+ account: TEST_ACCOUNT_A,
83
+ transaction,
84
+ });
85
+ expect(transactionHash.length).toBe(66);
86
+ const nft = await getNFT({
87
+ contract: erc1155Contract,
88
+ tokenId: 0n,
89
+ });
90
+ if (nft.type !== "ERC1155") throw new Error("Expected ERC1155 NFT");
91
+ expect(nft.id).toBe(0n);
92
+ expect(nft.supply).toBe(10n);
93
+ expect(nft.metadata.name).toBe("My NFT");
94
+ expect(nft.metadata.description).toBe("This is my NFT");
87
95
  });
88
- if (nft.type !== "ERC1155") throw new Error("Expected ERC1155 NFT");
89
- expect(nft.id).toBe(0n);
90
- expect(nft.supply).toBe(10n);
91
- expect(nft.metadata.name).toBe("My NFT");
92
- expect(nft.metadata.description).toBe("This is my NFT");
93
- });
94
96
 
95
- it("should mint additional supply", async () => {
96
- const { payload, signature } = await generateMintSignature({
97
- account: TEST_ACCOUNT_A,
98
- contract: erc1155Contract,
99
- mintRequest: {
100
- quantity: 5n,
101
- to: TEST_ACCOUNT_B.address,
97
+ it("should mint additional supply", async () => {
98
+ const { payload, signature } = await generateMintSignature({
99
+ account: TEST_ACCOUNT_A,
100
+ contract: erc1155Contract,
101
+ mintRequest: {
102
+ quantity: 5n,
103
+ to: TEST_ACCOUNT_B.address,
104
+ tokenId: 0n,
105
+ },
106
+ });
107
+ const transaction = mintWithSignature({
108
+ contract: erc1155Contract,
109
+ payload,
110
+ signature,
111
+ });
112
+ const { transactionHash } = await sendAndConfirmTransaction({
113
+ account: TEST_ACCOUNT_A,
114
+ transaction,
115
+ });
116
+ expect(transactionHash.length).toBe(66);
117
+ const nft = await getNFT({
118
+ contract: erc1155Contract,
102
119
  tokenId: 0n,
103
- },
104
- });
105
- const transaction = mintWithSignature({
106
- contract: erc1155Contract,
107
- payload,
108
- signature,
109
- });
110
- const { transactionHash } = await sendAndConfirmTransaction({
111
- account: TEST_ACCOUNT_A,
112
- transaction,
120
+ });
121
+ if (nft.type !== "ERC1155") throw new Error("Expected ERC1155 NFT");
122
+ expect(nft.id).toBe(0n);
123
+ expect(nft.supply).toBe(15n);
124
+ expect(nft.metadata.name).toBe("My NFT");
125
+ expect(nft.metadata.description).toBe("This is my NFT");
113
126
  });
114
- expect(transactionHash.length).toBe(66);
115
- const nft = await getNFT({
116
- contract: erc1155Contract,
117
- tokenId: 0n,
118
- });
119
- if (nft.type !== "ERC1155") throw new Error("Expected ERC1155 NFT");
120
- expect(nft.id).toBe(0n);
121
- expect(nft.supply).toBe(15n);
122
- expect(nft.metadata.name).toBe("My NFT");
123
- expect(nft.metadata.description).toBe("This is my NFT");
124
- });
125
127
 
126
- it("should generate a mint signature with default values", async () => {
127
- const { payload, signature } = await generateMintSignature({
128
- account: TEST_ACCOUNT_A,
129
- contract: erc1155Contract,
130
- mintRequest: {
131
- metadata: "https://example.com/token",
132
- quantity: 10n,
133
- to: TEST_ACCOUNT_B.address,
134
- },
135
- });
128
+ it("should generate a mint signature with default values", async () => {
129
+ const { payload, signature } = await generateMintSignature({
130
+ account: TEST_ACCOUNT_A,
131
+ contract: erc1155Contract,
132
+ mintRequest: {
133
+ metadata: "https://example.com/token",
134
+ quantity: 10n,
135
+ to: TEST_ACCOUNT_B.address,
136
+ },
137
+ });
136
138
 
137
- expect(payload.to).toBe(TEST_ACCOUNT_B.address);
138
- expect(payload.tokenId).toBe(maxUint256);
139
- expect(payload.royaltyRecipient).toBe(TEST_ACCOUNT_A.address);
140
- expect(payload.royaltyBps).toBe(0n);
141
- expect(payload.primarySaleRecipient).toBe(TEST_ACCOUNT_A.address);
142
- expect(payload.uri).toBe("https://example.com/token");
143
- expect(payload.pricePerToken).toBe(0n);
144
- expect(payload.quantity).toBe(10n);
145
- expect(payload.currency).toBe(NATIVE_TOKEN_ADDRESS);
146
- expect(payload.validityStartTimestamp).toBe(0n);
147
- expect(payload.validityEndTimestamp).toBeGreaterThan(0n);
148
- expect(payload.uid).toBeDefined();
149
- expect(signature.length).toBe(132);
139
+ expect(payload.to).toBe(TEST_ACCOUNT_B.address);
140
+ expect(payload.tokenId).toBe(maxUint256);
141
+ expect(payload.royaltyRecipient).toBe(TEST_ACCOUNT_A.address);
142
+ expect(payload.royaltyBps).toBe(0n);
143
+ expect(payload.primarySaleRecipient).toBe(TEST_ACCOUNT_A.address);
144
+ expect(payload.uri).toBe("https://example.com/token");
145
+ expect(payload.pricePerToken).toBe(0n);
146
+ expect(payload.quantity).toBe(10n);
147
+ expect(payload.currency).toBe(NATIVE_TOKEN_ADDRESS);
148
+ expect(payload.validityStartTimestamp).toBe(0n);
149
+ expect(payload.validityEndTimestamp).toBeGreaterThan(0n);
150
+ expect(payload.uid).toBeDefined();
151
+ expect(signature.length).toBe(132);
150
152
 
151
- const transaction = mintWithSignature({
152
- contract: erc1155Contract,
153
- payload,
154
- signature,
155
- });
156
- const { transactionHash } = await sendAndConfirmTransaction({
157
- account: TEST_ACCOUNT_A,
158
- transaction,
153
+ const transaction = mintWithSignature({
154
+ contract: erc1155Contract,
155
+ payload,
156
+ signature,
157
+ });
158
+ const { transactionHash } = await sendAndConfirmTransaction({
159
+ account: TEST_ACCOUNT_A,
160
+ transaction,
161
+ });
162
+ expect(transactionHash.length).toBe(66);
159
163
  });
160
- expect(transactionHash.length).toBe(66);
161
- });
162
164
 
163
- it("should generate a mint signature with custom values", async () => {
164
- const uid = toHex("abcdef1234567890", { size: 32 });
165
- const { payload, signature } = await generateMintSignature({
166
- account: TEST_ACCOUNT_A,
167
- contract: erc1155Contract,
168
- mintRequest: {
169
- currency: erc20TokenContract.address,
170
- pricePerToken: "0.2",
171
- primarySaleRecipient: TEST_ACCOUNT_A.address,
172
- quantity: 10n,
173
- royaltyBps: 500,
174
- royaltyRecipient: TEST_ACCOUNT_B.address,
175
- to: TEST_ACCOUNT_B.address,
176
- tokenId: 0n,
177
- uid,
178
- validityEndTimestamp: new Date(1867260800),
179
- validityStartTimestamp: new Date(1635724800),
180
- },
165
+ it("should generate a mint signature with custom values", async () => {
166
+ const uid = toHex("abcdef1234567890", { size: 32 });
167
+ const { payload, signature } = await generateMintSignature({
168
+ account: TEST_ACCOUNT_A,
169
+ contract: erc1155Contract,
170
+ mintRequest: {
171
+ currency: erc20TokenContract.address,
172
+ pricePerToken: "0.2",
173
+ primarySaleRecipient: TEST_ACCOUNT_A.address,
174
+ quantity: 10n,
175
+ royaltyBps: 500,
176
+ royaltyRecipient: TEST_ACCOUNT_B.address,
177
+ to: TEST_ACCOUNT_B.address,
178
+ tokenId: 0n,
179
+ uid,
180
+ validityEndTimestamp: new Date(1867260800),
181
+ validityStartTimestamp: new Date(1635724800),
182
+ },
183
+ });
184
+
185
+ expect(payload.to).toBe(TEST_ACCOUNT_B.address);
186
+ expect(payload.tokenId).toBe(0n);
187
+ expect(payload.royaltyRecipient).toBe(TEST_ACCOUNT_B.address);
188
+ expect(payload.royaltyBps).toBe(500n);
189
+ expect(payload.primarySaleRecipient).toBe(TEST_ACCOUNT_A.address);
190
+ expect(payload.uri).toBe("");
191
+ expect(payload.pricePerToken).toBe(200000000000000000n);
192
+ expect(payload.quantity).toBe(10n);
193
+ expect(payload.currency).toBe(erc20TokenContract.address);
194
+ expect(payload.validityStartTimestamp).toBe(1635724n);
195
+ expect(payload.validityEndTimestamp).toBe(1867260n);
196
+ expect(payload.uid).toBe(uid);
197
+ expect(signature.length).toBe(132);
181
198
  });
182
199
 
183
- expect(payload.to).toBe(TEST_ACCOUNT_B.address);
184
- expect(payload.tokenId).toBe(0n);
185
- expect(payload.royaltyRecipient).toBe(TEST_ACCOUNT_B.address);
186
- expect(payload.royaltyBps).toBe(500n);
187
- expect(payload.primarySaleRecipient).toBe(TEST_ACCOUNT_A.address);
188
- expect(payload.uri).toBe("");
189
- expect(payload.pricePerToken).toBe(200000000000000000n);
190
- expect(payload.quantity).toBe(10n);
191
- expect(payload.currency).toBe(erc20TokenContract.address);
192
- expect(payload.validityStartTimestamp).toBe(1635724n);
193
- expect(payload.validityEndTimestamp).toBe(1867260n);
194
- expect(payload.uid).toBe(uid);
195
- expect(signature.length).toBe(132);
196
- });
200
+ it("should generate a mint signature with custom values", async () => {
201
+ const { payload, signature } = await generateMintSignature({
202
+ account: TEST_ACCOUNT_A,
203
+ contract: erc1155Contract,
204
+ mintRequest: {
205
+ currency: erc20TokenContract.address,
206
+ pricePerToken: "0.2",
207
+ primarySaleRecipient: TEST_ACCOUNT_A.address,
208
+ quantity: 10n,
209
+ royaltyBps: 500,
210
+ royaltyRecipient: TEST_ACCOUNT_B.address,
211
+ to: TEST_ACCOUNT_B.address,
212
+ tokenId: 0n,
213
+ uid: "abcdef1234567890",
214
+ validityEndTimestamp: new Date(1867260800),
215
+ validityStartTimestamp: new Date(1635724800),
216
+ },
217
+ });
197
218
 
198
- it("should generate a mint signature with custom values", async () => {
199
- const { payload, signature } = await generateMintSignature({
200
- account: TEST_ACCOUNT_A,
201
- contract: erc1155Contract,
202
- mintRequest: {
203
- currency: erc20TokenContract.address,
204
- pricePerToken: "0.2",
205
- primarySaleRecipient: TEST_ACCOUNT_A.address,
206
- quantity: 10n,
207
- royaltyBps: 500,
208
- royaltyRecipient: TEST_ACCOUNT_B.address,
209
- to: TEST_ACCOUNT_B.address,
210
- tokenId: 0n,
211
- uid: "abcdef1234567890",
212
- validityEndTimestamp: new Date(1867260800),
213
- validityStartTimestamp: new Date(1635724800),
214
- },
219
+ expect(payload.to).toBe(TEST_ACCOUNT_B.address);
220
+ expect(payload.tokenId).toBe(0n);
221
+ expect(payload.royaltyRecipient).toBe(TEST_ACCOUNT_B.address);
222
+ expect(payload.royaltyBps).toBe(500n);
223
+ expect(payload.primarySaleRecipient).toBe(TEST_ACCOUNT_A.address);
224
+ expect(payload.uri).toBe("");
225
+ expect(payload.pricePerToken).toBe(200000000000000000n);
226
+ expect(payload.quantity).toBe(10n);
227
+ expect(payload.currency).toBe(erc20TokenContract.address);
228
+ expect(payload.validityStartTimestamp).toBe(1635724n);
229
+ expect(payload.validityEndTimestamp).toBe(1867260n);
230
+ expect(payload.uid).toBe(toHex("abcdef1234567890", { size: 32 }));
231
+ expect(signature.length).toBe(132);
215
232
  });
216
-
217
- expect(payload.to).toBe(TEST_ACCOUNT_B.address);
218
- expect(payload.tokenId).toBe(0n);
219
- expect(payload.royaltyRecipient).toBe(TEST_ACCOUNT_B.address);
220
- expect(payload.royaltyBps).toBe(500n);
221
- expect(payload.primarySaleRecipient).toBe(TEST_ACCOUNT_A.address);
222
- expect(payload.uri).toBe("");
223
- expect(payload.pricePerToken).toBe(200000000000000000n);
224
- expect(payload.quantity).toBe(10n);
225
- expect(payload.currency).toBe(erc20TokenContract.address);
226
- expect(payload.validityStartTimestamp).toBe(1635724n);
227
- expect(payload.validityEndTimestamp).toBe(1867260n);
228
- expect(payload.uid).toBe(toHex("abcdef1234567890", { size: 32 }));
229
- expect(signature.length).toBe(132);
230
233
  });
231
- });
@@ -23,7 +23,7 @@ import { getBalance } from "./read/getBalance.js";
23
23
  import { getApprovalForTransaction } from "./write/getApprovalForTransaction.js";
24
24
  import { mintTo } from "./write/mintTo.js";
25
25
 
26
- describe.runIf(process.env.TW_SECRET_KEY)(
26
+ describe.runIf(process.env.TW_SECRET_KEY).skip(
27
27
  "DropERC20",
28
28
  {
29
29
  retry: 0,
@@ -19,10 +19,9 @@ import { generateMintSignature, mintWithSignature } from "./sigMint.js";
19
19
 
20
20
  // skip this test suite if there is no secret key available to test with
21
21
  // TODO: remove reliance on secret key during unit tests entirely
22
- describe.runIf(process.env.TW_SECRET_KEY)(
23
- "generateMintSignature721",
24
-
25
- () => {
22
+ describe
23
+ .runIf(process.env.TW_SECRET_KEY)
24
+ .skip("generateMintSignature721", () => {
26
25
  let erc721Contract: ThirdwebContract;
27
26
  let erc20TokenContract: ThirdwebContract;
28
27
 
@@ -257,5 +256,4 @@ describe.runIf(process.env.TW_SECRET_KEY)(
257
256
  expect(payload.primarySaleRecipient).toBe(TEST_ACCOUNT_B.address);
258
257
  expect(signature.length).toBe(132);
259
258
  });
260
- },
261
- );
259
+ });