zksync-sso 0.2.0 → 0.3.0
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/README.md +11 -2
- package/dist/_cjs/client/session/actions/session.js +53 -1
- package/dist/_cjs/client/session/actions/session.js.map +1 -1
- package/dist/_cjs/client/session/client.js +19 -0
- package/dist/_cjs/client/session/client.js.map +1 -1
- package/dist/_cjs/client/session/decorators/wallet.js +39 -0
- package/dist/_cjs/client/session/decorators/wallet.js.map +1 -1
- package/dist/_cjs/client-auth-server/Signer.js +25 -1
- package/dist/_cjs/client-auth-server/Signer.js.map +1 -1
- package/dist/_cjs/client-auth-server/WalletProvider.js +3 -1
- package/dist/_cjs/client-auth-server/WalletProvider.js.map +1 -1
- package/dist/_cjs/utils/helpers.js +26 -0
- package/dist/_cjs/utils/helpers.js.map +1 -1
- package/dist/_cjs/utils/session.js +283 -1
- package/dist/_cjs/utils/session.js.map +1 -1
- package/dist/_esm/client/session/actions/session.js +59 -1
- package/dist/_esm/client/session/actions/session.js.map +1 -1
- package/dist/_esm/client/session/client.js +20 -0
- package/dist/_esm/client/session/client.js.map +1 -1
- package/dist/_esm/client/session/decorators/wallet.js +47 -0
- package/dist/_esm/client/session/decorators/wallet.js.map +1 -1
- package/dist/_esm/client-auth-server/Signer.js +25 -1
- package/dist/_esm/client-auth-server/Signer.js.map +1 -1
- package/dist/_esm/client-auth-server/WalletProvider.js +3 -1
- package/dist/_esm/client-auth-server/WalletProvider.js.map +1 -1
- package/dist/_esm/utils/helpers.js +24 -0
- package/dist/_esm/utils/helpers.js.map +1 -1
- package/dist/_esm/utils/session.js +296 -1
- package/dist/_esm/utils/session.js.map +1 -1
- package/dist/_types/client/session/actions/session.d.ts +26 -1
- package/dist/_types/client/session/actions/session.d.ts.map +1 -1
- package/dist/_types/client/session/client.d.ts +6 -1
- package/dist/_types/client/session/client.d.ts.map +1 -1
- package/dist/_types/client/session/decorators/wallet.d.ts.map +1 -1
- package/dist/_types/client-auth-server/Signer.d.ts +10 -1
- package/dist/_types/client-auth-server/Signer.d.ts.map +1 -1
- package/dist/_types/client-auth-server/WalletProvider.d.ts +8 -1
- package/dist/_types/client-auth-server/WalletProvider.d.ts.map +1 -1
- package/dist/_types/utils/helpers.d.ts +7 -0
- package/dist/_types/utils/helpers.d.ts.map +1 -1
- package/dist/_types/utils/session.d.ts +51 -0
- package/dist/_types/utils/session.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/client/session/actions/session.ts +85 -2
- package/src/client/session/client.ts +28 -1
- package/src/client/session/decorators/wallet.ts +59 -3
- package/src/client-auth-server/Signer.ts +17 -1
- package/src/client-auth-server/WalletProvider.ts +6 -1
- package/src/utils/helpers.ts +28 -0
- package/src/utils/session.ts +356 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getPeriodIdsForTransaction = exports.SessionStatus = exports.ConstraintCondition = exports.LimitZero = exports.LimitUnlimited = exports.LimitType = void 0;
|
|
3
|
+
exports.SessionEventType = exports.SessionErrorType = exports.getPeriodIdsForTransaction = exports.SessionStatus = exports.ConstraintCondition = exports.LimitZero = exports.LimitUnlimited = exports.LimitType = void 0;
|
|
4
|
+
exports.validateSessionTransaction = validateSessionTransaction;
|
|
4
5
|
const viem_1 = require("viem");
|
|
6
|
+
const helpers_js_1 = require("./helpers.js");
|
|
5
7
|
var LimitType;
|
|
6
8
|
(function (LimitType) {
|
|
7
9
|
LimitType[LimitType["Unlimited"] = 0] = "Unlimited";
|
|
@@ -61,4 +63,284 @@ const getPeriodIdsForTransaction = (args) => {
|
|
|
61
63
|
return periodIds;
|
|
62
64
|
};
|
|
63
65
|
exports.getPeriodIdsForTransaction = getPeriodIdsForTransaction;
|
|
66
|
+
var SessionErrorType;
|
|
67
|
+
(function (SessionErrorType) {
|
|
68
|
+
SessionErrorType["SessionInactive"] = "session_inactive";
|
|
69
|
+
SessionErrorType["SessionExpired"] = "session_expired";
|
|
70
|
+
SessionErrorType["FeeLimitExceeded"] = "fee_limit_exceeded";
|
|
71
|
+
SessionErrorType["NoCallPolicy"] = "no_call_policy";
|
|
72
|
+
SessionErrorType["NoTransferPolicy"] = "no_transfer_policy";
|
|
73
|
+
SessionErrorType["MaxValuePerUseExceeded"] = "max_value_per_use_exceeded";
|
|
74
|
+
SessionErrorType["ValueLimitExceeded"] = "value_limit_exceeded";
|
|
75
|
+
SessionErrorType["ConstraintIndexOutOfBounds"] = "constraint_index_out_of_bounds";
|
|
76
|
+
SessionErrorType["NoLimitStateFound"] = "no_limit_state_found";
|
|
77
|
+
SessionErrorType["ParameterLimitExceeded"] = "parameter_limit_exceeded";
|
|
78
|
+
SessionErrorType["ConstraintEqualViolated"] = "constraint_equal_violated";
|
|
79
|
+
SessionErrorType["ConstraintGreaterViolated"] = "constraint_greater_violated";
|
|
80
|
+
SessionErrorType["ConstraintLessViolated"] = "constraint_less_violated";
|
|
81
|
+
SessionErrorType["ConstraintGreaterEqualViolated"] = "constraint_greater_equal_violated";
|
|
82
|
+
SessionErrorType["ConstraintLessEqualViolated"] = "constraint_less_equal_violated";
|
|
83
|
+
SessionErrorType["ConstraintNotEqualViolated"] = "constraint_not_equal_violated";
|
|
84
|
+
})(SessionErrorType || (exports.SessionErrorType = SessionErrorType = {}));
|
|
85
|
+
var SessionEventType;
|
|
86
|
+
(function (SessionEventType) {
|
|
87
|
+
SessionEventType["Expired"] = "session_expired";
|
|
88
|
+
SessionEventType["Revoked"] = "session_revoked";
|
|
89
|
+
SessionEventType["Inactive"] = "session_inactive";
|
|
90
|
+
})(SessionEventType || (exports.SessionEventType = SessionEventType = {}));
|
|
91
|
+
function validateSessionTransaction(args) {
|
|
92
|
+
const { sessionState, sessionConfig, transaction, currentTimestamp } = args;
|
|
93
|
+
const timestamp = currentTimestamp || BigInt(Math.floor(Date.now() / 1000));
|
|
94
|
+
if (sessionState.status !== SessionStatus.Active) {
|
|
95
|
+
return {
|
|
96
|
+
valid: false,
|
|
97
|
+
error: {
|
|
98
|
+
type: SessionErrorType.SessionInactive,
|
|
99
|
+
message: "Session is not active",
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
if (sessionConfig.expiresAt <= timestamp) {
|
|
104
|
+
return {
|
|
105
|
+
valid: false,
|
|
106
|
+
error: {
|
|
107
|
+
type: SessionErrorType.SessionExpired,
|
|
108
|
+
message: "Session has expired",
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
const to = (0, viem_1.getAddress)(transaction.to.toLowerCase());
|
|
113
|
+
const value = transaction.value || 0n;
|
|
114
|
+
const data = transaction.data || "0x";
|
|
115
|
+
const gas = transaction.gas || 0n;
|
|
116
|
+
const selector = data.length >= 10 ? data.slice(0, 10) : undefined;
|
|
117
|
+
if (!transaction.paymaster) {
|
|
118
|
+
const maxFee = (0, helpers_js_1.calculateMaxFee)({
|
|
119
|
+
gas,
|
|
120
|
+
gasPrice: transaction.gasPrice,
|
|
121
|
+
maxFeePerGas: transaction.maxFeePerGas,
|
|
122
|
+
maxPriorityFeePerGas: transaction.maxPriorityFeePerGas,
|
|
123
|
+
});
|
|
124
|
+
if (maxFee > sessionState.feesRemaining) {
|
|
125
|
+
return {
|
|
126
|
+
valid: false,
|
|
127
|
+
error: {
|
|
128
|
+
type: SessionErrorType.FeeLimitExceeded,
|
|
129
|
+
message: `Transaction max fee ${maxFee} exceeds remaining fee limit ${sessionState.feesRemaining}`,
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
const isContractCall = !!selector;
|
|
135
|
+
if (isContractCall) {
|
|
136
|
+
const policies = sessionConfig.callPolicies.filter((policy) => policy.target === to && policy.selector === selector);
|
|
137
|
+
if (!policies.length) {
|
|
138
|
+
return {
|
|
139
|
+
valid: false,
|
|
140
|
+
error: {
|
|
141
|
+
type: SessionErrorType.NoCallPolicy,
|
|
142
|
+
message: `No call policy found for target ${to} with selector ${selector}`,
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
const lowestMaxValuePerUse = (0, helpers_js_1.findSmallestBigInt)(policies.map((policy) => policy.maxValuePerUse));
|
|
147
|
+
if (value > lowestMaxValuePerUse) {
|
|
148
|
+
return {
|
|
149
|
+
valid: false,
|
|
150
|
+
error: {
|
|
151
|
+
type: SessionErrorType.MaxValuePerUseExceeded,
|
|
152
|
+
message: `Transaction value ${value} exceeds max value per use ${lowestMaxValuePerUse}`,
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
const remainingValue = findLowestRemainingValue(sessionState.callValue, to, selector);
|
|
157
|
+
if (value > remainingValue) {
|
|
158
|
+
return {
|
|
159
|
+
valid: false,
|
|
160
|
+
error: {
|
|
161
|
+
type: SessionErrorType.ValueLimitExceeded,
|
|
162
|
+
message: `Transaction value ${value} exceeds remaining value limit ${remainingValue || 0n}`,
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
for (const policy of policies) {
|
|
167
|
+
const constraintResult = validateConstraints(data, policy.constraints, sessionState.callParams);
|
|
168
|
+
if (!constraintResult.valid)
|
|
169
|
+
return constraintResult;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
const policies = sessionConfig.transferPolicies.filter((policy) => policy.target === to);
|
|
174
|
+
if (!policies.length) {
|
|
175
|
+
return {
|
|
176
|
+
valid: false,
|
|
177
|
+
error: {
|
|
178
|
+
type: SessionErrorType.NoTransferPolicy,
|
|
179
|
+
message: `No transfer policy found for target ${to}`,
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
const lowestMaxValuePerUse = (0, helpers_js_1.findSmallestBigInt)(policies.map((policy) => policy.maxValuePerUse));
|
|
184
|
+
if (value > lowestMaxValuePerUse) {
|
|
185
|
+
return {
|
|
186
|
+
valid: false,
|
|
187
|
+
error: {
|
|
188
|
+
type: SessionErrorType.MaxValuePerUseExceeded,
|
|
189
|
+
message: `Transaction value ${value} exceeds max value per use ${lowestMaxValuePerUse}`,
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
const remainingValue = findLowestRemainingValue(sessionState.transferValue, to);
|
|
194
|
+
if (value > remainingValue) {
|
|
195
|
+
return {
|
|
196
|
+
valid: false,
|
|
197
|
+
error: {
|
|
198
|
+
type: SessionErrorType.ValueLimitExceeded,
|
|
199
|
+
message: `Transaction value ${value} exceeds remaining value limit ${remainingValue || 0n}`,
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
valid: true,
|
|
206
|
+
error: null,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
function findLowestRemainingValue(valueArray, target, selector) {
|
|
210
|
+
if (selector) {
|
|
211
|
+
const filtered = valueArray
|
|
212
|
+
.filter((item) => item.target === target && item.selector === selector)
|
|
213
|
+
.map((item) => item.remaining);
|
|
214
|
+
if (!filtered.length)
|
|
215
|
+
return 0n;
|
|
216
|
+
return (0, helpers_js_1.findSmallestBigInt)(filtered);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
const filtered = valueArray
|
|
220
|
+
.filter((item) => item.target === target)
|
|
221
|
+
.map((item) => item.remaining);
|
|
222
|
+
if (!filtered.length)
|
|
223
|
+
return 0n;
|
|
224
|
+
return (0, helpers_js_1.findSmallestBigInt)(filtered);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
function validateConstraints(data, constraints, callParams) {
|
|
228
|
+
const dataBytes = (0, viem_1.hexToBytes)(data);
|
|
229
|
+
for (const constraint of constraints) {
|
|
230
|
+
const index = Number(constraint.index);
|
|
231
|
+
if (index + 32 > dataBytes.length) {
|
|
232
|
+
return {
|
|
233
|
+
valid: false,
|
|
234
|
+
error: {
|
|
235
|
+
type: SessionErrorType.ConstraintIndexOutOfBounds,
|
|
236
|
+
message: `Constraint index ${index} out of bounds for data length ${dataBytes.length}`,
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
const parameterBytes = dataBytes.slice(index, index + 32);
|
|
241
|
+
const parameterValue = (0, viem_1.bytesToHex)(parameterBytes);
|
|
242
|
+
const refValue = constraint.refValue;
|
|
243
|
+
let remaining;
|
|
244
|
+
if (constraint.limit.limitType !== LimitType.Unlimited) {
|
|
245
|
+
const paramItem = callParams.find((item) => Number(item.index) === index);
|
|
246
|
+
remaining = paramItem?.remaining;
|
|
247
|
+
if (remaining === undefined) {
|
|
248
|
+
return {
|
|
249
|
+
valid: false,
|
|
250
|
+
error: {
|
|
251
|
+
type: SessionErrorType.NoLimitStateFound,
|
|
252
|
+
message: `No remaining limit state found for constraint at index ${index}`,
|
|
253
|
+
},
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
const parameterValueBigInt = (0, viem_1.hexToBigInt)(parameterValue);
|
|
257
|
+
if (parameterValueBigInt > remaining) {
|
|
258
|
+
return {
|
|
259
|
+
valid: false,
|
|
260
|
+
error: {
|
|
261
|
+
type: SessionErrorType.ParameterLimitExceeded,
|
|
262
|
+
message: `Parameter value ${parameterValueBigInt} at index ${index} exceeds remaining limit ${remaining}`,
|
|
263
|
+
},
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
switch (constraint.condition) {
|
|
268
|
+
case ConstraintCondition.Equal:
|
|
269
|
+
if (parameterValue !== refValue) {
|
|
270
|
+
return {
|
|
271
|
+
valid: false,
|
|
272
|
+
error: {
|
|
273
|
+
type: SessionErrorType.ConstraintEqualViolated,
|
|
274
|
+
message: `Parameter value ${parameterValue} must equal ${refValue}`,
|
|
275
|
+
},
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
break;
|
|
279
|
+
case ConstraintCondition.Greater:
|
|
280
|
+
if (parameterValue <= refValue) {
|
|
281
|
+
return {
|
|
282
|
+
valid: false,
|
|
283
|
+
error: {
|
|
284
|
+
type: SessionErrorType.ConstraintGreaterViolated,
|
|
285
|
+
message: `Parameter value ${parameterValue} must be greater than ${refValue}`,
|
|
286
|
+
},
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
break;
|
|
290
|
+
case ConstraintCondition.Less:
|
|
291
|
+
if (parameterValue >= refValue) {
|
|
292
|
+
return {
|
|
293
|
+
valid: false,
|
|
294
|
+
error: {
|
|
295
|
+
type: SessionErrorType.ConstraintLessViolated,
|
|
296
|
+
message: `Parameter value ${parameterValue} must be less than ${refValue}`,
|
|
297
|
+
},
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
break;
|
|
301
|
+
case ConstraintCondition.GreaterEqual:
|
|
302
|
+
if (parameterValue < refValue) {
|
|
303
|
+
return {
|
|
304
|
+
valid: false,
|
|
305
|
+
error: {
|
|
306
|
+
type: SessionErrorType.ConstraintGreaterEqualViolated,
|
|
307
|
+
message: `Parameter value ${parameterValue} must be greater than or equal to ${refValue}`,
|
|
308
|
+
},
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
break;
|
|
312
|
+
case ConstraintCondition.LessEqual:
|
|
313
|
+
if (parameterValue > refValue) {
|
|
314
|
+
return {
|
|
315
|
+
valid: false,
|
|
316
|
+
error: {
|
|
317
|
+
type: SessionErrorType.ConstraintLessEqualViolated,
|
|
318
|
+
message: `Parameter value ${parameterValue} must be less than or equal to ${refValue}`,
|
|
319
|
+
},
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
break;
|
|
323
|
+
case ConstraintCondition.NotEqual:
|
|
324
|
+
if (parameterValue === refValue) {
|
|
325
|
+
return {
|
|
326
|
+
valid: false,
|
|
327
|
+
error: {
|
|
328
|
+
type: SessionErrorType.ConstraintNotEqualViolated,
|
|
329
|
+
message: `Parameter value ${parameterValue} must not equal ${refValue}`,
|
|
330
|
+
},
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
break;
|
|
334
|
+
case ConstraintCondition.Unconstrained:
|
|
335
|
+
break;
|
|
336
|
+
default:
|
|
337
|
+
console.warn(`Unhandled constraint condition: ${constraint.condition}`);
|
|
338
|
+
break;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
return {
|
|
342
|
+
valid: true,
|
|
343
|
+
error: null,
|
|
344
|
+
};
|
|
345
|
+
}
|
|
64
346
|
//# sourceMappingURL=session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/utils/session.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/utils/session.ts"],"names":[],"mappings":";;;AAoOA,gEA0IC;AA9WD,+BAA0G;AAE1G,6CAAmE;AAEnE,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,mDAAa,CAAA;IACb,iDAAY,CAAA;IACZ,mDAAa,CAAA;AACf,CAAC,EAJW,SAAS,yBAAT,SAAS,QAIpB;AAcY,QAAA,cAAc,GAAG;IAC5B,SAAS,EAAE,SAAS,CAAC,SAAS;IAC9B,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;CACX,CAAC;AAEW,QAAA,SAAS,GAAG;IACvB,SAAS,EAAE,SAAS,CAAC,QAAQ;IAC7B,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;CACX,CAAC;AAKF,IAAY,mBAQX;AARD,WAAY,mBAAmB;IAC7B,+EAAiB,CAAA;IACjB,+DAAS,CAAA;IACT,mEAAW,CAAA;IACX,6DAAQ,CAAA;IACR,6EAAgB,CAAA;IAChB,uEAAa,CAAA;IACb,qEAAY,CAAA;AACd,CAAC,EARW,mBAAmB,mCAAnB,mBAAmB,QAQ9B;AA6DD,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,qEAAkB,CAAA;IAClB,qDAAU,CAAA;IACV,qDAAU,CAAA;AACZ,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB;AAyBM,MAAM,0BAA0B,GAAG,CAAC,IAK1C,EAAE,EAAE;IACH,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAA,iBAAU,EAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAErD,MAAM,KAAK,GAAG,CAAC,KAAY,EAAU,EAAE;QACrC,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;YAC5C,OAAO,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;QAClC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IACxF,CAAC,CAAC;IACF,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CACzC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CACzE,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACvC,MAAM,MAAM,GAA4C,cAAc,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;IACjH,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAEpE,MAAM,SAAS,GAAG;QAChB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QAClC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;QACxB,GAAG,CAAC,cAAc,CAAC,CAAC,CAAE,MAAqB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3G,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAnCW,QAAA,0BAA0B,8BAmCrC;AAEF,IAAY,gBAiBX;AAjBD,WAAY,gBAAgB;IAC1B,wDAAoC,CAAA;IACpC,sDAAkC,CAAA;IAClC,2DAAuC,CAAA;IACvC,mDAA+B,CAAA;IAC/B,2DAAuC,CAAA;IACvC,yEAAqD,CAAA;IACrD,+DAA2C,CAAA;IAC3C,iFAA6D,CAAA;IAC7D,8DAA0C,CAAA;IAC1C,uEAAmD,CAAA;IACnD,yEAAqD,CAAA;IACrD,6EAAyD,CAAA;IACzD,uEAAmD,CAAA;IACnD,wFAAoE,CAAA;IACpE,kFAA8D,CAAA;IAC9D,gFAA4D,CAAA;AAC9D,CAAC,EAjBW,gBAAgB,gCAAhB,gBAAgB,QAiB3B;AAED,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,+CAA2B,CAAA;IAC3B,+CAA2B,CAAA;IAC3B,iDAA6B,CAAA;AAC/B,CAAC,EAJW,gBAAgB,gCAAhB,gBAAgB,QAI3B;AAiCD,SAAgB,0BAA0B,CAAC,IAA+B;IACxE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAC5E,MAAM,SAAS,GAAG,gBAAgB,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAG5E,IAAI,YAAY,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC;QACjD,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE;gBACL,IAAI,EAAE,gBAAgB,CAAC,eAAe;gBACtC,OAAO,EAAE,uBAAuB;aACjC;SACF,CAAC;IACJ,CAAC;IAGD,IAAI,aAAa,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC;QACzC,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE;gBACL,IAAI,EAAE,gBAAgB,CAAC,cAAc;gBACrC,OAAO,EAAE,qBAAqB;aAC/B;SACF,CAAC;IACJ,CAAC;IAGD,MAAM,EAAE,GAAG,IAAA,iBAAU,EAAC,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC;IACtC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,IAAI,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3E,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAA,4BAAe,EAAC;YAC7B,GAAG;YACH,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,YAAY,EAAE,WAAW,CAAC,YAAY;YACtC,oBAAoB,EAAE,WAAW,CAAC,oBAAoB;SACvD,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC;YACxC,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE;oBACL,IAAI,EAAE,gBAAgB,CAAC,gBAAgB;oBACvC,OAAO,EAAE,uBAAuB,MAAM,gCAAgC,YAAY,CAAC,aAAa,EAAE;iBACnG;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,CAAC,CAAC,QAAQ,CAAC;IAClC,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,aAAa,CAAC,YAAY,CAAC,MAAM,CAChD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,CACjE,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrB,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE;oBACL,IAAI,EAAE,gBAAgB,CAAC,YAAY;oBACnC,OAAO,EAAE,mCAAmC,EAAE,kBAAkB,QAAQ,EAAE;iBAC3E;aACF,CAAC;QACJ,CAAC;QAGD,MAAM,oBAAoB,GAAG,IAAA,+BAAkB,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QACjG,IAAI,KAAK,GAAG,oBAAoB,EAAE,CAAC;YACjC,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE;oBACL,IAAI,EAAE,gBAAgB,CAAC,sBAAsB;oBAC7C,OAAO,EAAE,qBAAqB,KAAK,8BAA8B,oBAAoB,EAAE;iBACxF;aACF,CAAC;QACJ,CAAC;QAGD,MAAM,cAAc,GAAG,wBAAwB,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QACtF,IAAI,KAAK,GAAG,cAAc,EAAE,CAAC;YAC3B,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE;oBACL,IAAI,EAAE,gBAAgB,CAAC,kBAAkB;oBACzC,OAAO,EAAE,qBAAqB,KAAK,kCAAkC,cAAc,IAAI,EAAE,EAAE;iBAC5F;aACF,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;YAChG,IAAI,CAAC,gBAAgB,CAAC,KAAK;gBAAE,OAAO,gBAAgB,CAAC;QACvD,CAAC;IACH,CAAC;SAAM,CAAC;QAEN,MAAM,QAAQ,GAAG,aAAa,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrB,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE;oBACL,IAAI,EAAE,gBAAgB,CAAC,gBAAgB;oBACvC,OAAO,EAAE,uCAAuC,EAAE,EAAE;iBACrD;aACF,CAAC;QACJ,CAAC;QAGD,MAAM,oBAAoB,GAAG,IAAA,+BAAkB,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QACjG,IAAI,KAAK,GAAG,oBAAoB,EAAE,CAAC;YACjC,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE;oBACL,IAAI,EAAE,gBAAgB,CAAC,sBAAsB;oBAC7C,OAAO,EAAE,qBAAqB,KAAK,8BAA8B,oBAAoB,EAAE;iBACxF;aACF,CAAC;QACJ,CAAC;QAGD,MAAM,cAAc,GAAG,wBAAwB,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAChF,IAAI,KAAK,GAAG,cAAc,EAAE,CAAC;YAC3B,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE;oBACL,IAAI,EAAE,gBAAgB,CAAC,kBAAkB;oBACzC,OAAO,EAAE,qBAAqB,KAAK,kCAAkC,cAAc,IAAI,EAAE,EAAE;iBAC5F;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,UAAqE,EACrE,MAAe,EACf,QAAe;IAEf,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,UAAU;aACxB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC;aACtE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAChC,OAAO,IAAA,+BAAkB,EAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,UAAU;aACxB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;aACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAChC,OAAO,IAAA,+BAAkB,EAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAS,EACT,WAAyB,EACzB,UAAsC;IAEtC,MAAM,SAAS,GAAG,IAAA,iBAAU,EAAC,IAAI,CAAC,CAAC;IAEnC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QAErC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE;oBACL,IAAI,EAAE,gBAAgB,CAAC,0BAA0B;oBACjD,OAAO,EAAE,oBAAoB,KAAK,kCAAkC,SAAS,CAAC,MAAM,EAAE;iBACvF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,IAAA,iBAAU,EAAC,cAAc,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QAGrC,IAAI,SAA6B,CAAC;QAClC,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;YACvD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;YAC1E,SAAS,GAAG,SAAS,EAAE,SAAS,CAAC;YAGjC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE;wBACL,IAAI,EAAE,gBAAgB,CAAC,iBAAiB;wBACxC,OAAO,EAAE,0DAA0D,KAAK,EAAE;qBAC3E;iBACF,CAAC;YACJ,CAAC;YAGD,MAAM,oBAAoB,GAAG,IAAA,kBAAW,EAAC,cAAc,CAAC,CAAC;YACzD,IAAI,oBAAoB,GAAG,SAAS,EAAE,CAAC;gBACrC,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE;wBACL,IAAI,EAAE,gBAAgB,CAAC,sBAAsB;wBAC7C,OAAO,EAAE,mBAAmB,oBAAoB,aAAa,KAAK,4BAA4B,SAAS,EAAE;qBAC1G;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;QAGD,QAAQ,UAAU,CAAC,SAAS,EAAE,CAAC;YAC7B,KAAK,mBAAmB,CAAC,KAAK;gBAC5B,IAAI,cAAc,KAAK,QAAQ,EAAE,CAAC;oBAChC,OAAO;wBACL,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE;4BACL,IAAI,EAAE,gBAAgB,CAAC,uBAAuB;4BAC9C,OAAO,EAAE,mBAAmB,cAAc,eAAe,QAAQ,EAAE;yBACpE;qBACF,CAAC;gBACJ,CAAC;gBACD,MAAM;YACR,KAAK,mBAAmB,CAAC,OAAO;gBAC9B,IAAI,cAAc,IAAI,QAAQ,EAAE,CAAC;oBAC/B,OAAO;wBACL,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE;4BACL,IAAI,EAAE,gBAAgB,CAAC,yBAAyB;4BAChD,OAAO,EAAE,mBAAmB,cAAc,yBAAyB,QAAQ,EAAE;yBAC9E;qBACF,CAAC;gBACJ,CAAC;gBACD,MAAM;YACR,KAAK,mBAAmB,CAAC,IAAI;gBAC3B,IAAI,cAAc,IAAI,QAAQ,EAAE,CAAC;oBAC/B,OAAO;wBACL,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE;4BACL,IAAI,EAAE,gBAAgB,CAAC,sBAAsB;4BAC7C,OAAO,EAAE,mBAAmB,cAAc,sBAAsB,QAAQ,EAAE;yBAC3E;qBACF,CAAC;gBACJ,CAAC;gBACD,MAAM;YACR,KAAK,mBAAmB,CAAC,YAAY;gBACnC,IAAI,cAAc,GAAG,QAAQ,EAAE,CAAC;oBAC9B,OAAO;wBACL,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE;4BACL,IAAI,EAAE,gBAAgB,CAAC,8BAA8B;4BACrD,OAAO,EAAE,mBAAmB,cAAc,qCAAqC,QAAQ,EAAE;yBAC1F;qBACF,CAAC;gBACJ,CAAC;gBACD,MAAM;YACR,KAAK,mBAAmB,CAAC,SAAS;gBAChC,IAAI,cAAc,GAAG,QAAQ,EAAE,CAAC;oBAC9B,OAAO;wBACL,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE;4BACL,IAAI,EAAE,gBAAgB,CAAC,2BAA2B;4BAClD,OAAO,EAAE,mBAAmB,cAAc,kCAAkC,QAAQ,EAAE;yBACvF;qBACF,CAAC;gBACJ,CAAC;gBACD,MAAM;YACR,KAAK,mBAAmB,CAAC,QAAQ;gBAC/B,IAAI,cAAc,KAAK,QAAQ,EAAE,CAAC;oBAChC,OAAO;wBACL,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE;4BACL,IAAI,EAAE,gBAAgB,CAAC,0BAA0B;4BACjD,OAAO,EAAE,mBAAmB,cAAc,mBAAmB,QAAQ,EAAE;yBACxE;qBACF,CAAC;gBACJ,CAAC;gBACD,MAAM;YACR,KAAK,mBAAmB,CAAC,aAAa;gBAEpC,MAAM;YACR;gBACE,OAAO,CAAC,IAAI,CAAC,mCAAmC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;gBACxE,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { encodeFunctionData } from "viem";
|
|
2
|
-
import { waitForTransactionReceipt } from "viem/actions";
|
|
2
|
+
import { readContract, waitForTransactionReceipt } from "viem/actions";
|
|
3
3
|
import { getGeneralPaymasterInput, sendTransaction } from "viem/zksync";
|
|
4
4
|
import { SessionKeyValidatorAbi } from "../../../abi/SessionKeyValidator.js";
|
|
5
5
|
import { getTransactionWithPaymasterData } from "../../../paymaster/index.js";
|
|
6
6
|
import { noThrow } from "../../../utils/helpers.js";
|
|
7
|
+
import { SessionEventType, SessionStatus } from "../../../utils/session.js";
|
|
7
8
|
export const createSession = async (client, args) => {
|
|
8
9
|
const callData = encodeFunctionData({
|
|
9
10
|
abi: SessionKeyValidatorAbi,
|
|
@@ -58,4 +59,61 @@ export const revokeSession = async (client, args) => {
|
|
|
58
59
|
transactionReceipt,
|
|
59
60
|
};
|
|
60
61
|
};
|
|
62
|
+
export const getSessionState = async (client, args) => {
|
|
63
|
+
const sessionState = await readContract(client, {
|
|
64
|
+
address: args.contracts.session,
|
|
65
|
+
abi: SessionKeyValidatorAbi,
|
|
66
|
+
functionName: "sessionState",
|
|
67
|
+
args: [args.account, args.sessionConfig],
|
|
68
|
+
});
|
|
69
|
+
return {
|
|
70
|
+
sessionState: sessionState,
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Checks the current session state and sets up expiry notification.
|
|
75
|
+
* This function will trigger the callback with the session state.
|
|
76
|
+
*/
|
|
77
|
+
export const sessionStateNotify = (args) => {
|
|
78
|
+
// Generate a session ID for tracking timeouts
|
|
79
|
+
const { sessionState } = args;
|
|
80
|
+
const now = BigInt(Math.floor(Date.now() / 1000));
|
|
81
|
+
// Check session status
|
|
82
|
+
if (sessionState.status === SessionStatus.NotInitialized) { // Not initialized
|
|
83
|
+
args.onSessionStateChange({
|
|
84
|
+
type: SessionEventType.Inactive,
|
|
85
|
+
message: "Session is not initialized",
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
else if (sessionState.status === SessionStatus.Closed) { // Closed/Revoked
|
|
89
|
+
args.onSessionStateChange({
|
|
90
|
+
type: SessionEventType.Revoked,
|
|
91
|
+
message: "Session has been revoked",
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
else if (args.sessionConfig.expiresAt <= now) {
|
|
95
|
+
// Session has expired
|
|
96
|
+
args.onSessionStateChange({
|
|
97
|
+
type: SessionEventType.Expired,
|
|
98
|
+
message: "Session has expired",
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// Session is active, set up expiry notification
|
|
103
|
+
const timeToExpiry = Number(args.sessionConfig.expiresAt - now) * 1000;
|
|
104
|
+
if (args.sessionNotifyTimeout) {
|
|
105
|
+
clearTimeout(args.sessionNotifyTimeout);
|
|
106
|
+
}
|
|
107
|
+
const newTimeout = setTimeout(() => {
|
|
108
|
+
args.onSessionStateChange({
|
|
109
|
+
type: SessionEventType.Expired,
|
|
110
|
+
message: "Session has expired",
|
|
111
|
+
});
|
|
112
|
+
}, timeToExpiry);
|
|
113
|
+
return {
|
|
114
|
+
newTimeout,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
return {};
|
|
118
|
+
};
|
|
61
119
|
//# sourceMappingURL=session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../../src/client/session/actions/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,kBAAkB,EAA+E,MAAM,MAAM,CAAC;AAC5K,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../../src/client/session/actions/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { privateKeyToAccount } from "viem/accounts";
|
|
|
3
3
|
import { zksyncInMemoryNode } from "viem/chains";
|
|
4
4
|
import { encodeSessionTx } from "../../utils/encoding.js";
|
|
5
5
|
import { toSessionAccount } from "./account.js";
|
|
6
|
+
import { getSessionState, sessionStateNotify } from "./actions/session.js";
|
|
6
7
|
import { publicActionsRewrite } from "./decorators/publicActionsRewrite.js";
|
|
7
8
|
import { zksyncSsoWalletActions } from "./decorators/wallet.js";
|
|
8
9
|
export const signSessionTransaction = (args) => {
|
|
@@ -63,10 +64,29 @@ export function createZksyncSessionClient(_parameters) {
|
|
|
63
64
|
sessionConfig: parameters.sessionConfig,
|
|
64
65
|
contracts: parameters.contracts,
|
|
65
66
|
paymasterHandler: parameters.paymasterHandler,
|
|
67
|
+
onSessionStateChange: parameters.onSessionStateChange,
|
|
68
|
+
_sessionNotifyTimeout: undefined,
|
|
66
69
|
}))
|
|
67
70
|
.extend(publicActions)
|
|
68
71
|
.extend(publicActionsRewrite)
|
|
69
72
|
.extend(zksyncSsoWalletActions);
|
|
73
|
+
// Check session state on initialization if callback is provided
|
|
74
|
+
if (client.onSessionStateChange) {
|
|
75
|
+
getSessionState(client, {
|
|
76
|
+
account: client.account.address,
|
|
77
|
+
sessionConfig: client.sessionConfig,
|
|
78
|
+
contracts: client.contracts,
|
|
79
|
+
}).then(({ sessionState }) => {
|
|
80
|
+
sessionStateNotify({
|
|
81
|
+
sessionConfig: client.sessionConfig,
|
|
82
|
+
sessionState,
|
|
83
|
+
onSessionStateChange: client.onSessionStateChange,
|
|
84
|
+
sessionNotifyTimeout: client._sessionNotifyTimeout,
|
|
85
|
+
});
|
|
86
|
+
}).catch((error) => {
|
|
87
|
+
console.error("Failed to get session state on initialization:", error);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
70
90
|
return client;
|
|
71
91
|
}
|
|
72
92
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/client/session/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/client/session/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,32 @@ import { bytesToHex, formatTransaction } from "viem";
|
|
|
2
2
|
import { deployContract, getAddresses, getCallsStatus, getCapabilities, getChainId, prepareAuthorization, sendCalls, sendRawTransaction, showCallsStatus, signAuthorization, signMessage, signTypedData, waitForCallsStatus, writeContract, } from "viem/actions";
|
|
3
3
|
import { signTransaction } from "viem/zksync";
|
|
4
4
|
import { getTransactionWithPaymasterData } from "../../../paymaster/index.js";
|
|
5
|
+
import { SessionErrorType, SessionEventType, validateSessionTransaction } from "../../../utils/session.js";
|
|
5
6
|
import { sendEip712Transaction } from "../actions/sendEip712Transaction.js";
|
|
7
|
+
import { getSessionState, sessionStateNotify } from "../actions/session.js";
|
|
8
|
+
const sessionErrorToSessionEventType = {
|
|
9
|
+
[SessionErrorType.SessionInactive]: SessionEventType.Inactive,
|
|
10
|
+
[SessionErrorType.SessionExpired]: SessionEventType.Expired,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Helper function to check session state and notify via callback
|
|
14
|
+
*/
|
|
15
|
+
async function getSessionStateAndNotify(client) {
|
|
16
|
+
const { sessionState } = await getSessionState(client, {
|
|
17
|
+
account: client.account.address,
|
|
18
|
+
sessionConfig: client.sessionConfig,
|
|
19
|
+
contracts: client.contracts,
|
|
20
|
+
});
|
|
21
|
+
if (client.onSessionStateChange) {
|
|
22
|
+
sessionStateNotify({
|
|
23
|
+
sessionConfig: client.sessionConfig,
|
|
24
|
+
sessionState,
|
|
25
|
+
onSessionStateChange: client.onSessionStateChange,
|
|
26
|
+
sessionNotifyTimeout: client._sessionNotifyTimeout,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return sessionState;
|
|
30
|
+
}
|
|
6
31
|
export function zksyncSsoWalletActions(client) {
|
|
7
32
|
return {
|
|
8
33
|
deployContract: (args) => deployContract(client, args),
|
|
@@ -29,6 +54,27 @@ export function zksyncSsoWalletActions(client) {
|
|
|
29
54
|
...format(unformattedTxWithPaymaster),
|
|
30
55
|
type: "eip712",
|
|
31
56
|
};
|
|
57
|
+
if (client.skipPreTransactionStateValidation !== false) {
|
|
58
|
+
// Get current session state and trigger callback if needed
|
|
59
|
+
const sessionState = await getSessionStateAndNotify(client);
|
|
60
|
+
// Validate transaction against session constraints
|
|
61
|
+
const validationResult = validateSessionTransaction({
|
|
62
|
+
sessionState,
|
|
63
|
+
sessionConfig: client.sessionConfig,
|
|
64
|
+
transaction: tx,
|
|
65
|
+
});
|
|
66
|
+
// Throw error if validation fails
|
|
67
|
+
if (validationResult.error) {
|
|
68
|
+
// If validation fails due to session issues, notify via callback
|
|
69
|
+
if (client.onSessionStateChange && Object.keys(sessionErrorToSessionEventType).includes(validationResult.error.type)) {
|
|
70
|
+
client.onSessionStateChange({
|
|
71
|
+
type: sessionErrorToSessionEventType[validationResult.error.type],
|
|
72
|
+
message: validationResult.error.message,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
throw new Error(`Session validation failed: ${validationResult.error.message} (${validationResult.error.type})`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
32
78
|
return await sendEip712Transaction(client, tx);
|
|
33
79
|
},
|
|
34
80
|
signMessage: (args) => signMessage(client, args),
|
|
@@ -37,6 +83,7 @@ export function zksyncSsoWalletActions(client) {
|
|
|
37
83
|
return signTransaction(client, {
|
|
38
84
|
...args,
|
|
39
85
|
unformattedTxWithPaymaster,
|
|
86
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
40
87
|
});
|
|
41
88
|
},
|
|
42
89
|
signTypedData: (args) => signTypedData(client, args),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../../../../src/client/session/decorators/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EACS,UAAU,EACO,iBAAiB,EACZ,MAAM,MAAM,CAAC;AACnD,OAAO,EACL,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,oBAAoB,EAAE,SAAS,EAAE,kBAAkB,EAC9H,eAAe,
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../../../../src/client/session/decorators/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EACS,UAAU,EACO,iBAAiB,EACZ,MAAM,MAAM,CAAC;AACnD,OAAO,EACL,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,oBAAoB,EAAE,SAAS,EAAE,kBAAkB,EAC9H,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,GAClG,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAwD,MAAM,aAAa,CAAC;AAEpG,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAqB,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAC9H,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAO5E,MAAM,8BAA8B,GAAG;IACrC,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,gBAAgB,CAAC,QAAQ;IAC7D,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,gBAAgB,CAAC,OAAO;CAC5D,CAAC;AAEF;;GAEG;AACH,KAAK,UAAU,wBAAwB,CAIrC,MAAiE;IACjE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE;QACrD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;QAC/B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAChC,kBAAkB,CAAC;YACjB,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,YAAY;YACZ,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;YACjD,oBAAoB,EAAE,MAAM,CAAC,qBAAqB;SACnD,CAAC,CAAC;IACL,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAIpC,MAAiE;IACjE,OAAO;QACL,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;QACtD,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;QACxC,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QACpC,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC;QAC9D,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC9B,8DAA8D;YAC9D,MAAM,aAAa,GAAQ,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAEnD,IAAI,YAAY,IAAI,aAAa,EAAE,CAAC;gBAClC,MAAM,UAAU,GAAG,aAAa,CAAC,UAA8B,CAAC;gBAChE,aAAa,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACtG,aAAa,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;gBACnD,aAAa,CAAC,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC;gBAC3D,aAAa,CAAC,SAAS,GAAG,UAAU,CAAC,eAAe,EAAE,SAAS,CAAC;gBAChE,aAAa,CAAC,cAAc,GAAG,UAAU,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/J,OAAO,aAAa,CAAC,UAAU,CAAC;YAClC,CAAC;YAED,sDAAsD;YACtD,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,0BAA0B,EAAE,GAAG,MAAM,+BAA+B,CACzF,MAAM,CAAC,KAAK,CAAC,EAAE,EACf,MAAM,CAAC,OAAO,CAAC,OAAO,EACtB,aAAa,EACb,MAAM,CAAC,gBAAgB,CACxB,CAAC;YAEF,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC;YAC5C,MAAM,MAAM,GAAG,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,iBAAiB,CAAC;YAEpE,MAAM,EAAE,GAAG;gBACT,GAAG,MAAM,CAAC,0BAA0D,CAAC;gBACrE,IAAI,EAAE,QAAQ;aACf,CAAC;YAEF,IAAI,MAAM,CAAC,iCAAiC,KAAK,KAAK,EAAE,CAAC;gBACvD,2DAA2D;gBAC3D,MAAM,YAAY,GAAG,MAAM,wBAAwB,CAAC,MAAM,CAAC,CAAC;gBAE5D,mDAAmD;gBACnD,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;oBAClD,YAAY;oBACZ,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,WAAW,EAAE,EAAE;iBAChB,CAAC,CAAC;gBAEH,kCAAkC;gBAClC,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC;oBAC3B,iEAAiE;oBACjE,IAAI,MAAM,CAAC,oBAAoB,IAAI,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;wBACrH,MAAM,CAAC,oBAAoB,CAAC;4BAC1B,IAAI,EAAE,8BAA8B,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAmD,CAAC;4BAChH,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,OAAO;yBACxC,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,gBAAgB,CAAC,KAAK,CAAC,OAAO,KAAK,gBAAgB,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;gBACnH,CAAC;YACH,CAAC;YAED,OAAO,MAAM,qBAAqB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC;QAEhD,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC9B,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,0BAA0B,EAAE,GAAG,MAAM,+BAA+B,CACzF,MAAM,CAAC,KAAK,CAAC,EAAE,EACf,MAAM,CAAC,OAAO,CAAC,OAAO,EACtB,IAAgC,EAChC,MAAM,CAAC,gBAAgB,CACxB,CAAC;YACF,OAAO,eAAe,CAAC,MAAM,EAAE;gBAC7B,GAAG,IAAI;gBACP,0BAA0B;gBAC1B,8DAA8D;aACxD,CAAQ,CAAC;QACnB,CAAC;QACD,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;QACpD,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC;QACpD,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC;QAC5D,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC;QACtD,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC;QACxD,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC;QAClE,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC;QAC5C,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC;QACxD,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC;KAC/D,CAAC;AACJ,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { getTransactionWithPaymasterData } from "../paymaster/index.js";
|
|
|
4
4
|
import { StorageItem } from "../utils/storage.js";
|
|
5
5
|
import { parseSessionConfigJSON } from "./session/utils.js";
|
|
6
6
|
export class Signer {
|
|
7
|
-
constructor({ metadata, communicator, updateListener, session, chains, transports, paymasterHandler }) {
|
|
7
|
+
constructor({ metadata, communicator, updateListener, session, chains, transports, paymasterHandler, onSessionStateChange, skipPreTransactionStateValidation }) {
|
|
8
8
|
Object.defineProperty(this, "getMetadata", {
|
|
9
9
|
enumerable: true,
|
|
10
10
|
configurable: true,
|
|
@@ -47,6 +47,18 @@ export class Signer {
|
|
|
47
47
|
writable: true,
|
|
48
48
|
value: void 0
|
|
49
49
|
});
|
|
50
|
+
Object.defineProperty(this, "onSessionStateChange", {
|
|
51
|
+
enumerable: true,
|
|
52
|
+
configurable: true,
|
|
53
|
+
writable: true,
|
|
54
|
+
value: void 0
|
|
55
|
+
});
|
|
56
|
+
Object.defineProperty(this, "skipPreTransactionStateValidation", {
|
|
57
|
+
enumerable: true,
|
|
58
|
+
configurable: true,
|
|
59
|
+
writable: true,
|
|
60
|
+
value: void 0
|
|
61
|
+
});
|
|
50
62
|
Object.defineProperty(this, "_account", {
|
|
51
63
|
enumerable: true,
|
|
52
64
|
configurable: true,
|
|
@@ -83,6 +95,8 @@ export class Signer {
|
|
|
83
95
|
this.chains = chains;
|
|
84
96
|
this.transports = transports || {};
|
|
85
97
|
this.paymasterHandler = paymasterHandler;
|
|
98
|
+
this.onSessionStateChange = onSessionStateChange;
|
|
99
|
+
this.skipPreTransactionStateValidation = skipPreTransactionStateValidation;
|
|
86
100
|
this._account = new StorageItem(StorageItem.scopedStorageKey("account"), null, {
|
|
87
101
|
onChange: (newValue) => {
|
|
88
102
|
if (newValue) {
|
|
@@ -153,6 +167,16 @@ export class Signer {
|
|
|
153
167
|
chain,
|
|
154
168
|
transport: this.transports[chain.id] || http(),
|
|
155
169
|
paymasterHandler: this.paymasterHandler,
|
|
170
|
+
onSessionStateChange: (event) => {
|
|
171
|
+
if (!this.onSessionStateChange)
|
|
172
|
+
return;
|
|
173
|
+
this.onSessionStateChange({
|
|
174
|
+
state: event,
|
|
175
|
+
address: this.account.address,
|
|
176
|
+
chainId: chain.id,
|
|
177
|
+
});
|
|
178
|
+
},
|
|
179
|
+
skipPreTransactionStateValidation: this.skipPreTransactionStateValidation,
|
|
156
180
|
}),
|
|
157
181
|
};
|
|
158
182
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Signer.js","sourceRoot":"","sources":["../../../src/client-auth-server/Signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,kBAAkB,EAAE,MAAM,EAAa,IAAI,EAAyG,MAAM,MAAM,CAAC;AAGpM,OAAO,EAAE,yBAAyB,EAA+B,MAAM,oBAAoB,CAAC;AAE5F,OAAO,EAA+B,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"Signer.js","sourceRoot":"","sources":["../../../src/client-auth-server/Signer.ts"],"names":[],"mappings":"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"}
|