ox 0.14.15 → 0.14.17

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 (40) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/_cjs/tempo/TransactionRequest.js +40 -0
  3. package/_cjs/tempo/TransactionRequest.js.map +1 -1
  4. package/_cjs/tempo/ZoneId.js +13 -0
  5. package/_cjs/tempo/ZoneId.js.map +1 -0
  6. package/_cjs/tempo/ZoneRpcAuthentication.js +101 -0
  7. package/_cjs/tempo/ZoneRpcAuthentication.js.map +1 -0
  8. package/_cjs/tempo/index.js +3 -1
  9. package/_cjs/tempo/index.js.map +1 -1
  10. package/_cjs/version.js +1 -1
  11. package/_esm/tempo/TransactionRequest.js +59 -0
  12. package/_esm/tempo/TransactionRequest.js.map +1 -1
  13. package/_esm/tempo/ZoneId.js +47 -0
  14. package/_esm/tempo/ZoneId.js.map +1 -0
  15. package/_esm/tempo/ZoneRpcAuthentication.js +256 -0
  16. package/_esm/tempo/ZoneRpcAuthentication.js.map +1 -0
  17. package/_esm/tempo/index.js +55 -0
  18. package/_esm/tempo/index.js.map +1 -1
  19. package/_esm/version.js +1 -1
  20. package/_types/tempo/TransactionRequest.d.ts +30 -4
  21. package/_types/tempo/TransactionRequest.d.ts.map +1 -1
  22. package/_types/tempo/ZoneId.d.ts +50 -0
  23. package/_types/tempo/ZoneId.d.ts.map +1 -0
  24. package/_types/tempo/ZoneRpcAuthentication.d.ts +268 -0
  25. package/_types/tempo/ZoneRpcAuthentication.d.ts.map +1 -0
  26. package/_types/tempo/index.d.ts +55 -0
  27. package/_types/tempo/index.d.ts.map +1 -1
  28. package/_types/version.d.ts +1 -1
  29. package/package.json +11 -1
  30. package/tempo/TransactionRequest.test.ts +198 -0
  31. package/tempo/TransactionRequest.ts +86 -4
  32. package/tempo/ZoneId/package.json +6 -0
  33. package/tempo/ZoneId.test.ts +42 -0
  34. package/tempo/ZoneId.ts +58 -0
  35. package/tempo/ZoneRpcAuthentication/package.json +6 -0
  36. package/tempo/ZoneRpcAuthentication.test.ts +226 -0
  37. package/tempo/ZoneRpcAuthentication.ts +423 -0
  38. package/tempo/e2e.test.ts +2 -0
  39. package/tempo/index.ts +55 -8
  40. package/version.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # ox
2
2
 
3
+ ## 0.14.17
4
+
5
+ ### Patch Changes
6
+
7
+ - [#220](https://github.com/wevm/ox/pull/220) [`da7a62c`](https://github.com/wevm/ox/commit/da7a62cfbecb99b3cc24f275703e33b1320abb1b) Thanks [@Zygimantass](https://github.com/Zygimantass)! - Added Tempo zones support
8
+
9
+ - [#219](https://github.com/wevm/ox/pull/219) [`a934992`](https://github.com/wevm/ox/commit/a934992257add3724f16538c7a14d72e647a2b66) Thanks [@jxom](https://github.com/jxom)! - Added `feePayer` to `TransactionRequest` in `ox/tempo`.
10
+
11
+ - [#217](https://github.com/wevm/ox/pull/217) [`5e2ae4d`](https://github.com/wevm/ox/commit/5e2ae4d9a007bb4071896c5e4c0f258e9a637a54) Thanks [@jxom](https://github.com/jxom)! - Fixed `TransactionRequest.fromRpc` in `ox/tempo`. `TransactionRequest.toRpc` now folds top-level `to`/`data`/`value` into `calls` when `calls` is not provided.
12
+
13
+ ## 0.14.16
14
+
15
+ ### Patch Changes
16
+
17
+ - [`3ca1d56`](https://github.com/wevm/ox/commit/3ca1d56ac70a883fad5100e3d4da8208b84f5a20) Thanks [@jxom](https://github.com/jxom)! - Added `TransactionRequest.fromRpc` to `ox/tempo`.
18
+
3
19
  ## 0.14.15
4
20
 
5
21
  ### Patch Changes
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fromRpc = fromRpc;
3
4
  exports.toRpc = toRpc;
4
5
  const Hex = require("../core/Hex.js");
5
6
  const ox_TransactionRequest = require("../core/TransactionRequest.js");
@@ -8,6 +9,36 @@ const KeyAuthorization = require("./KeyAuthorization.js");
8
9
  const TempoAddress = require("./TempoAddress.js");
9
10
  const TokenId = require("./TokenId.js");
10
11
  const Transaction = require("./Transaction.js");
12
+ function fromRpc(request) {
13
+ const { authorizationList: _, ...rest } = request;
14
+ const request_ = ox_TransactionRequest.fromRpc(rest);
15
+ if (typeof request.type !== 'undefined')
16
+ request_.type =
17
+ Transaction.fromRpcType[request.type] || request_.type;
18
+ if (request.authorizationList)
19
+ request_.authorizationList = AuthorizationTempo.fromRpcList(request.authorizationList);
20
+ if (request.calls)
21
+ request_.calls = request.calls.map((call) => {
22
+ const mapped = {
23
+ to: call.to,
24
+ data: call.data,
25
+ };
26
+ if (call.value && call.value !== '0x')
27
+ mapped.value = Hex.toBigInt(call.value);
28
+ return mapped;
29
+ });
30
+ if (typeof request.feeToken !== 'undefined')
31
+ request_.feeToken = request.feeToken;
32
+ if (request.keyAuthorization)
33
+ request_.keyAuthorization = KeyAuthorization.fromRpc(request.keyAuthorization);
34
+ if (typeof request.validBefore !== 'undefined')
35
+ request_.validBefore = Hex.toNumber(request.validBefore);
36
+ if (typeof request.validAfter !== 'undefined')
37
+ request_.validAfter = Hex.toNumber(request.validAfter);
38
+ if (typeof request.nonceKey !== 'undefined')
39
+ request_.nonceKey = Hex.toBigInt(request.nonceKey);
40
+ return request_;
41
+ }
11
42
  function toRpc(request) {
12
43
  const request_rpc = ox_TransactionRequest.toRpc({
13
44
  ...request,
@@ -21,6 +52,14 @@ function toRpc(request) {
21
52
  value: call.value ? Hex.fromNumber(call.value) : '0x',
22
53
  data: call.data ?? '0x',
23
54
  }));
55
+ else if (request.to || request.data || request.value)
56
+ request_rpc.calls = [
57
+ {
58
+ to: request.to ? TempoAddress.resolve(request.to) : undefined,
59
+ value: request.value ? Hex.fromNumber(request.value) : '0x',
60
+ data: request.data ?? '0x',
61
+ },
62
+ ];
24
63
  if (typeof request.feeToken !== 'undefined')
25
64
  request_rpc.feeToken = TokenId.toAddress(request.feeToken);
26
65
  if (request.keyAuthorization)
@@ -39,6 +78,7 @@ function toRpc(request) {
39
78
  if (nonceKey)
40
79
  request_rpc.nonceKey = nonceKey;
41
80
  if (typeof request.calls !== 'undefined' ||
81
+ typeof request.feePayer !== 'undefined' ||
42
82
  typeof request.feeToken !== 'undefined' ||
43
83
  typeof request.keyAuthorization !== 'undefined' ||
44
84
  typeof request.nonceKey !== 'undefined' ||
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionRequest.js","sourceRoot":"","sources":["../../tempo/TransactionRequest.ts"],"names":[],"mappings":";;AAuGA,sBAoDC;AA1JD,sCAAqC;AAErC,uEAAsE;AACtE,8DAA6D;AAC7D,0DAAyD;AACzD,kDAAiD;AACjD,wCAAuC;AACvC,gDAA+C;AA+F/C,SAAgB,KAAK,CAAC,OAA2B;IAC/C,MAAM,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAC9C,GAAG,OAAO;QACV,iBAAiB,EAAE,SAAS;KAC7B,CAAQ,CAAA;IAET,IAAI,OAAO,CAAC,iBAAiB;QAC3B,WAAW,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,SAAS,CAC1D,OAAO,CAAC,iBAAiB,CAC1B,CAAA;IACH,IAAI,OAAO,CAAC,KAAK;QACf,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/C,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;YACrD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;YACrD,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;SACxB,CAAC,CAAC,CAAA;IACL,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACzC,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC5D,IAAI,OAAO,CAAC,gBAAgB;QAC1B,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CACnD,OAAO,CAAC,gBAAgB,CACzB,CAAA;IACH,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,WAAW;QAC5C,WAAW,CAAC,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC/D,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,WAAW;QAC3C,WAAW,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAE7D,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE;QACrB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACvD,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;YACtC,OAAO,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACzC,OAAO,SAAS,CAAA;IAClB,CAAC,CAAC,EAAE,CAAA;IACJ,IAAI,QAAQ;QAAE,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAE7C,IACE,OAAO,OAAO,CAAC,KAAK,KAAK,WAAW;QACpC,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACvC,OAAO,OAAO,CAAC,gBAAgB,KAAK,WAAW;QAC/C,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACvC,OAAO,OAAO,CAAC,WAAW,KAAK,WAAW;QAC1C,OAAO,OAAO,CAAC,UAAU,KAAK,WAAW;QACzC,OAAO,CAAC,IAAI,KAAK,OAAO,EACxB,CAAC;QACD,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAA;QAC9C,OAAO,WAAW,CAAC,IAAI,CAAA;QACvB,OAAO,WAAW,CAAC,KAAK,CAAA;QACxB,OAAO,WAAW,CAAC,EAAE,CAAA;QACrB,OAAO,WAAW,CAAC,KAAK,CAAA;IAC1B,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"TransactionRequest.js","sourceRoot":"","sources":["../../tempo/TransactionRequest.ts"],"names":[],"mappings":";;AA6EA,0BAwCC;AA2DD,sBA6DC;AA5OD,sCAAqC;AAErC,uEAAsE;AACtE,8DAA6D;AAC7D,0DAAyD;AACzD,kDAAiD;AACjD,wCAAuC;AACvC,gDAA+C;AAqE/C,SAAgB,OAAO,CAAC,OAAY;IAClC,MAAM,EAAE,iBAAiB,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;IACjD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAC5C,IAAW,CACU,CAAA;IAEvB,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,WAAW;QACrC,QAAQ,CAAC,IAAI;YACX,WAAW,CAAC,WAAW,CACrB,OAAO,CAAC,IAA4C,CACrD,IAAI,QAAQ,CAAC,IAAI,CAAA;IAEtB,IAAI,OAAO,CAAC,iBAAiB;QAC3B,QAAQ,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,WAAW,CACzD,OAAO,CAAC,iBAAiB,CAC1B,CAAA;IACH,IAAI,OAAO,CAAC,KAAK;QACf,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAuC;gBACjD,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAA;YACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;gBACnC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACzC,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACzC,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;IACtC,IAAI,OAAO,CAAC,gBAAgB;QAC1B,QAAQ,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAClD,OAAO,CAAC,gBAAgB,CACzB,CAAA;IACH,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,WAAW;QAC5C,QAAQ,CAAC,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAsB,CAAC,CAAA;IACrE,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,WAAW;QAC3C,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAqB,CAAC,CAAA;IACnE,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACzC,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAmB,CAAC,CAAA;IAE/D,OAAO,QAAQ,CAAA;AACjB,CAAC;AA2DD,SAAgB,KAAK,CAAC,OAA2B;IAC/C,MAAM,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAC9C,GAAG,OAAO;QACV,iBAAiB,EAAE,SAAS;KAC7B,CAAQ,CAAA;IAET,IAAI,OAAO,CAAC,iBAAiB;QAC3B,WAAW,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,SAAS,CAC1D,OAAO,CAAC,iBAAiB,CAC1B,CAAA;IACH,IAAI,OAAO,CAAC,KAAK;QACf,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/C,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;YACrD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;YACrD,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;SACxB,CAAC,CAAC,CAAA;SACA,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK;QAClD,WAAW,CAAC,KAAK,GAAG;YAClB;gBACE,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC7D,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC3D,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;aAC3B;SACF,CAAA;IACH,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACzC,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC5D,IAAI,OAAO,CAAC,gBAAgB;QAC1B,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CACnD,OAAO,CAAC,gBAAgB,CACzB,CAAA;IACH,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,WAAW;QAC5C,WAAW,CAAC,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC/D,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,WAAW;QAC3C,WAAW,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAE7D,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE;QACrB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACvD,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;YACtC,OAAO,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACzC,OAAO,SAAS,CAAA;IAClB,CAAC,CAAC,EAAE,CAAA;IACJ,IAAI,QAAQ;QAAE,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAE7C,IACE,OAAO,OAAO,CAAC,KAAK,KAAK,WAAW;QACpC,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACvC,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACvC,OAAO,OAAO,CAAC,gBAAgB,KAAK,WAAW;QAC/C,OAAO,OAAO,CAAC,QAAQ,KAAK,WAAW;QACvC,OAAO,OAAO,CAAC,WAAW,KAAK,WAAW;QAC1C,OAAO,OAAO,CAAC,UAAU,KAAK,WAAW;QACzC,OAAO,CAAC,IAAI,KAAK,OAAO,EACxB,CAAC;QACD,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAA;QAC9C,OAAO,WAAW,CAAC,IAAI,CAAA;QACvB,OAAO,WAAW,CAAC,KAAK,CAAA;QACxB,OAAO,WAAW,CAAC,EAAE,CAAA;QACrB,OAAO,WAAW,CAAC,KAAK,CAAA;IAC1B,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.chainIdBase = void 0;
4
+ exports.fromChainId = fromChainId;
5
+ exports.toChainId = toChainId;
6
+ exports.chainIdBase = 4_217_000_000;
7
+ function fromChainId(chainId) {
8
+ return chainId - exports.chainIdBase;
9
+ }
10
+ function toChainId(zoneId) {
11
+ return exports.chainIdBase + zoneId;
12
+ }
13
+ //# sourceMappingURL=ZoneId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZoneId.js","sourceRoot":"","sources":["../../tempo/ZoneId.ts"],"names":[],"mappings":";;;AA0BA,kCAEC;AAuBD,8BAEC;AA9CY,QAAA,WAAW,GAAG,aAAsB,CAAA;AAmBjD,SAAgB,WAAW,CAAC,OAAe;IACzC,OAAO,OAAO,GAAG,mBAAW,CAAA;AAC9B,CAAC;AAuBD,SAAgB,SAAS,CAAC,MAAc;IACtC,OAAO,mBAAW,GAAG,MAAM,CAAA;AAC7B,CAAC"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MissingSignatureError = exports.InvalidSerializedError = exports.version = exports.fieldsSize = exports.magicBytes = exports.headerName = void 0;
4
+ exports.from = from;
5
+ exports.deserialize = deserialize;
6
+ exports.getFields = getFields;
7
+ exports.getSignPayload = getSignPayload;
8
+ exports.hash = hash;
9
+ exports.serialize = serialize;
10
+ const Errors = require("../core/Errors.js");
11
+ const Hash = require("../core/Hash.js");
12
+ const Hex = require("../core/Hex.js");
13
+ const SignatureEnvelope = require("./SignatureEnvelope.js");
14
+ const TempoAddress = require("./TempoAddress.js");
15
+ exports.headerName = 'X-Authorization-Token';
16
+ exports.magicBytes = '0x54656d706f5a6f6e655250430000000000000000000000000000000000000000';
17
+ exports.fieldsSize = 29;
18
+ exports.version = 0;
19
+ function from(authentication, options = {}) {
20
+ const auth = authentication;
21
+ const resolved = {
22
+ ...auth,
23
+ version: exports.version,
24
+ };
25
+ if (options.signature)
26
+ return {
27
+ ...resolved,
28
+ signature: SignatureEnvelope.from(options.signature),
29
+ };
30
+ return resolved;
31
+ }
32
+ function deserialize(serialized) {
33
+ const size = Hex.size(serialized);
34
+ if (size <= exports.fieldsSize)
35
+ throw new InvalidSerializedError({
36
+ reason: `Serialized authentication must be longer than ${exports.fieldsSize} bytes.`,
37
+ serialized,
38
+ });
39
+ const fieldsOffset = size - exports.fieldsSize;
40
+ const signature = Hex.slice(serialized, 0, fieldsOffset);
41
+ const fields = Hex.slice(serialized, fieldsOffset);
42
+ const parsedVersion = Hex.toNumber(Hex.slice(fields, 0, 1), { size: 1 });
43
+ if (parsedVersion !== exports.version)
44
+ throw new InvalidSerializedError({
45
+ reason: `Unsupported authentication version "${parsedVersion}". Expected "${exports.version}".`,
46
+ serialized,
47
+ });
48
+ return {
49
+ chainId: Hex.toNumber(Hex.slice(fields, 5, 13), { size: 8 }),
50
+ expiresAt: Hex.toNumber(Hex.slice(fields, 21, 29), { size: 8 }),
51
+ issuedAt: Hex.toNumber(Hex.slice(fields, 13, 21), { size: 8 }),
52
+ signature: SignatureEnvelope.deserialize(signature),
53
+ version: exports.version,
54
+ zoneId: Hex.toNumber(Hex.slice(fields, 1, 5), { size: 4 }),
55
+ };
56
+ }
57
+ function getFields(authentication) {
58
+ return Hex.concat(Hex.fromNumber(exports.version, { size: 1 }), Hex.fromNumber(authentication.zoneId, { size: 4 }), Hex.fromNumber(authentication.chainId, { size: 8 }), Hex.fromNumber(authentication.issuedAt, { size: 8 }), Hex.fromNumber(authentication.expiresAt, { size: 8 }));
59
+ }
60
+ function getSignPayload(authentication, options = {}) {
61
+ const authHash = hash(authentication);
62
+ if (options.userAddress)
63
+ return Hash.keccak256(Hex.concat('0x04', authHash, TempoAddress.resolve(options.userAddress)));
64
+ return authHash;
65
+ }
66
+ function hash(authentication) {
67
+ return Hash.keccak256(Hex.concat(exports.magicBytes, getFields(authentication)));
68
+ }
69
+ function serialize(authentication, options = {}) {
70
+ const signature = options.signature || authentication.signature;
71
+ if (!signature)
72
+ throw new MissingSignatureError();
73
+ return Hex.concat(SignatureEnvelope.serialize(SignatureEnvelope.from(signature)), getFields(authentication));
74
+ }
75
+ class InvalidSerializedError extends Errors.BaseError {
76
+ constructor({ reason, serialized }) {
77
+ super(`Unable to deserialize Zone RPC authentication: ${reason}`, {
78
+ metaMessages: [`Serialized: ${serialized}`],
79
+ });
80
+ Object.defineProperty(this, "name", {
81
+ enumerable: true,
82
+ configurable: true,
83
+ writable: true,
84
+ value: 'ZoneRpcAuthentication.InvalidSerializedError'
85
+ });
86
+ }
87
+ }
88
+ exports.InvalidSerializedError = InvalidSerializedError;
89
+ class MissingSignatureError extends Errors.BaseError {
90
+ constructor() {
91
+ super('Zone RPC authentication is missing a signature.');
92
+ Object.defineProperty(this, "name", {
93
+ enumerable: true,
94
+ configurable: true,
95
+ writable: true,
96
+ value: 'ZoneRpcAuthentication.MissingSignatureError'
97
+ });
98
+ }
99
+ }
100
+ exports.MissingSignatureError = MissingSignatureError;
101
+ //# sourceMappingURL=ZoneRpcAuthentication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZoneRpcAuthentication.js","sourceRoot":"","sources":["../../tempo/ZoneRpcAuthentication.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TxEnvelopeTempo = exports.TransactionRequest = exports.TransactionReceipt = exports.Transaction = exports.TokenRole = exports.TokenId = exports.Tick = exports.TempoAddress = exports.SignatureEnvelope = exports.RpcSchemaTempo = exports.PoolId = exports.Period = exports.KeyAuthorization = exports.AuthorizationTempo = void 0;
3
+ exports.ZoneRpcAuthentication = exports.ZoneId = exports.TxEnvelopeTempo = exports.TransactionRequest = exports.TransactionReceipt = exports.Transaction = exports.TokenRole = exports.TokenId = exports.Tick = exports.TempoAddress = exports.SignatureEnvelope = exports.RpcSchemaTempo = exports.PoolId = exports.Period = exports.KeyAuthorization = exports.AuthorizationTempo = void 0;
4
4
  exports.AuthorizationTempo = require("./AuthorizationTempo.js");
5
5
  exports.KeyAuthorization = require("./KeyAuthorization.js");
6
6
  exports.Period = require("./Period.js");
@@ -15,4 +15,6 @@ exports.Transaction = require("./Transaction.js");
15
15
  exports.TransactionReceipt = require("./TransactionReceipt.js");
16
16
  exports.TransactionRequest = require("./TransactionRequest.js");
17
17
  exports.TxEnvelopeTempo = require("./TxEnvelopeTempo.js");
18
+ exports.ZoneId = require("./ZoneId.js");
19
+ exports.ZoneRpcAuthentication = require("./ZoneRpcAuthentication.js");
18
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../tempo/index.ts"],"names":[],"mappings":";;;AAoCA,gEAA6D;AAyC7D,4DAAyD;AA8BzD,wCAAqC;AAsBrC,wCAAqC;AAoBrC,wDAAqD;AAuBrD,8DAA2D;AAoB3D,oDAAiD;AAqBjD,oCAAiC;AAsBjC,0CAAuC;AAmBvC,8CAA2C;AAmD3C,kDAA+C;AAuB/C,gEAA6D;AAqB7D,gEAA6D;AA6B7D,0DAAuD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../tempo/index.ts"],"names":[],"mappings":";;;AAoCA,gEAA6D;AAwC7D,4DAAyD;AA6BzD,wCAAqC;AAsBrC,wCAAqC;AAmBrC,wDAAqD;AAuBrD,8DAA2D;AAmB3D,oDAAiD;AAoBjD,oCAAiC;AAqBjC,0CAAuC;AAkBvC,8CAA2C;AAkD3C,kDAA+C;AAuB/C,gEAA6D;AAqB7D,gEAA6D;AA6B7D,0DAAuD;AAoBvD,wCAAqC;AAmCrC,sEAAmE"}
package/_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 = '0.14.15';
4
+ exports.version = '0.14.17';
5
5
  //# sourceMappingURL=version.js.map
@@ -5,6 +5,56 @@ import * as KeyAuthorization from './KeyAuthorization.js';
5
5
  import * as TempoAddress from './TempoAddress.js';
6
6
  import * as TokenId from './TokenId.js';
7
7
  import * as Transaction from './Transaction.js';
8
+ /**
9
+ * Converts a {@link ox#TransactionRequest.Rpc} to a {@link ox#TransactionRequest.TransactionRequest}.
10
+ *
11
+ * @example
12
+ * ```ts twoslash
13
+ * import { TransactionRequest } from 'ox/tempo'
14
+ *
15
+ * const request = TransactionRequest.fromRpc({
16
+ * calls: [{
17
+ * data: '0xdeadbeef',
18
+ * to: '0xcafebabecafebabecafebabecafebabecafebabe',
19
+ * }],
20
+ * feeToken: '0x20c0000000000000000000000000000000000000',
21
+ * type: '0x76',
22
+ * })
23
+ * ```
24
+ *
25
+ * @param request - The RPC request to convert.
26
+ * @returns A transaction request.
27
+ */
28
+ export function fromRpc(request) {
29
+ const { authorizationList: _, ...rest } = request;
30
+ const request_ = ox_TransactionRequest.fromRpc(rest);
31
+ if (typeof request.type !== 'undefined')
32
+ request_.type =
33
+ Transaction.fromRpcType[request.type] || request_.type;
34
+ if (request.authorizationList)
35
+ request_.authorizationList = AuthorizationTempo.fromRpcList(request.authorizationList);
36
+ if (request.calls)
37
+ request_.calls = request.calls.map((call) => {
38
+ const mapped = {
39
+ to: call.to,
40
+ data: call.data,
41
+ };
42
+ if (call.value && call.value !== '0x')
43
+ mapped.value = Hex.toBigInt(call.value);
44
+ return mapped;
45
+ });
46
+ if (typeof request.feeToken !== 'undefined')
47
+ request_.feeToken = request.feeToken;
48
+ if (request.keyAuthorization)
49
+ request_.keyAuthorization = KeyAuthorization.fromRpc(request.keyAuthorization);
50
+ if (typeof request.validBefore !== 'undefined')
51
+ request_.validBefore = Hex.toNumber(request.validBefore);
52
+ if (typeof request.validAfter !== 'undefined')
53
+ request_.validAfter = Hex.toNumber(request.validAfter);
54
+ if (typeof request.nonceKey !== 'undefined')
55
+ request_.nonceKey = Hex.toBigInt(request.nonceKey);
56
+ return request_;
57
+ }
8
58
  /**
9
59
  * Converts a {@link ox#TransactionRequest.TransactionRequest} to a {@link ox#TransactionRequest.Rpc}.
10
60
  *
@@ -67,6 +117,14 @@ export function toRpc(request) {
67
117
  value: call.value ? Hex.fromNumber(call.value) : '0x',
68
118
  data: call.data ?? '0x',
69
119
  }));
120
+ else if (request.to || request.data || request.value)
121
+ request_rpc.calls = [
122
+ {
123
+ to: request.to ? TempoAddress.resolve(request.to) : undefined,
124
+ value: request.value ? Hex.fromNumber(request.value) : '0x',
125
+ data: request.data ?? '0x',
126
+ },
127
+ ];
70
128
  if (typeof request.feeToken !== 'undefined')
71
129
  request_rpc.feeToken = TokenId.toAddress(request.feeToken);
72
130
  if (request.keyAuthorization)
@@ -85,6 +143,7 @@ export function toRpc(request) {
85
143
  if (nonceKey)
86
144
  request_rpc.nonceKey = nonceKey;
87
145
  if (typeof request.calls !== 'undefined' ||
146
+ typeof request.feePayer !== 'undefined' ||
88
147
  typeof request.feeToken !== 'undefined' ||
89
148
  typeof request.keyAuthorization !== 'undefined' ||
90
149
  typeof request.nonceKey !== 'undefined' ||
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionRequest.js","sourceRoot":"","sources":["../../tempo/TransactionRequest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TransactionRequest.js","sourceRoot":"","sources":["../../tempo/TransactionRequest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Base offset for deriving zone chain IDs.
3
+ *
4
+ * Zone chain IDs are computed as `chainIdBase + zoneId`.
5
+ */
6
+ export const chainIdBase = 4_217_000_000;
7
+ /**
8
+ * Derives a zone ID from a zone chain ID.
9
+ *
10
+ * Zone chain IDs follow the formula `4_217_000_000 + zoneId`, so a chain ID
11
+ * of `4217000006` corresponds to zone ID `6`.
12
+ *
13
+ * @example
14
+ * ```ts twoslash
15
+ * import { ZoneId } from 'ox/tempo'
16
+ *
17
+ * const zoneId = ZoneId.fromChainId(4_217_000_006)
18
+ * // @log: 6
19
+ * ```
20
+ *
21
+ * @param chainId - The zone chain ID.
22
+ * @returns The zone ID.
23
+ */
24
+ export function fromChainId(chainId) {
25
+ return chainId - chainIdBase;
26
+ }
27
+ /**
28
+ * Derives a zone chain ID from a zone ID.
29
+ *
30
+ * Zone chain IDs follow the formula `4_217_000_000 + zoneId`, so zone ID
31
+ * `6` corresponds to chain ID `4217000006`.
32
+ *
33
+ * @example
34
+ * ```ts twoslash
35
+ * import { ZoneId } from 'ox/tempo'
36
+ *
37
+ * const chainId = ZoneId.toChainId(6)
38
+ * // @log: 4217000006
39
+ * ```
40
+ *
41
+ * @param zoneId - The zone ID.
42
+ * @returns The zone chain ID.
43
+ */
44
+ export function toChainId(zoneId) {
45
+ return chainIdBase + zoneId;
46
+ }
47
+ //# sourceMappingURL=ZoneId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZoneId.js","sourceRoot":"","sources":["../../tempo/ZoneId.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,aAAsB,CAAA;AAEjD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,OAAO,GAAG,WAAW,CAAA;AAC9B,CAAC;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,OAAO,WAAW,GAAG,MAAM,CAAA;AAC7B,CAAC"}
@@ -0,0 +1,256 @@
1
+ import * as Errors from '../core/Errors.js';
2
+ import * as Hash from '../core/Hash.js';
3
+ import * as Hex from '../core/Hex.js';
4
+ import * as SignatureEnvelope from './SignatureEnvelope.js';
5
+ import * as TempoAddress from './TempoAddress.js';
6
+ /**
7
+ * Header name used to transport Zone RPC authentication tokens.
8
+ */
9
+ export const headerName = 'X-Authorization-Token';
10
+ /**
11
+ * 32-byte domain separator used when hashing Zone RPC authentication tokens.
12
+ */
13
+ export const magicBytes = '0x54656d706f5a6f6e655250430000000000000000000000000000000000000000';
14
+ /**
15
+ * Size, in bytes, of the fixed Zone RPC authentication fields.
16
+ */
17
+ export const fieldsSize = 29;
18
+ /** Current Zone RPC authentication version. */
19
+ export const version = 0;
20
+ /**
21
+ * Instantiates a typed Zone RPC authentication token.
22
+ *
23
+ * @example
24
+ * ```ts twoslash
25
+ * import { ZoneRpcAuthentication } from 'ox/tempo'
26
+ *
27
+ * const authentication = ZoneRpcAuthentication.from({
28
+ * chainId: 4217000026,
29
+ * expiresAt: 1711235160,
30
+ * issuedAt: 1711234560,
31
+ * zoneId: 26,
32
+ * })
33
+ * ```
34
+ *
35
+ * @example
36
+ * ### Attaching Signatures
37
+ *
38
+ * ```ts twoslash
39
+ * import { Secp256k1 } from 'ox'
40
+ * import { ZoneRpcAuthentication } from 'ox/tempo'
41
+ *
42
+ * const authentication = ZoneRpcAuthentication.from({
43
+ * chainId: 4217000026,
44
+ * expiresAt: 1711235160,
45
+ * issuedAt: 1711234560,
46
+ * zoneId: 26,
47
+ * })
48
+ *
49
+ * const signature = Secp256k1.sign({
50
+ * payload: ZoneRpcAuthentication.getSignPayload(authentication),
51
+ * privateKey: '0x...',
52
+ * })
53
+ *
54
+ * const authentication_signed = ZoneRpcAuthentication.from(authentication, {
55
+ * signature,
56
+ * })
57
+ * ```
58
+ *
59
+ * @param authentication - Zone RPC authentication token fields.
60
+ * @param options - Zone RPC authentication options.
61
+ * @returns The instantiated Zone RPC authentication token.
62
+ */
63
+ export function from(authentication, options = {}) {
64
+ const auth = authentication;
65
+ const resolved = {
66
+ ...auth,
67
+ version,
68
+ };
69
+ if (options.signature)
70
+ return {
71
+ ...resolved,
72
+ signature: SignatureEnvelope.from(options.signature),
73
+ };
74
+ return resolved;
75
+ }
76
+ /**
77
+ * Parses a serialized Zone RPC authentication token.
78
+ *
79
+ * The serialized format is `<signature><29-byte fields>`. The signature is parsed
80
+ * from the prefix and the fixed-length fields are parsed from the suffix.
81
+ *
82
+ * @example
83
+ * ```ts twoslash
84
+ * import { ZoneRpcAuthentication } from 'ox/tempo'
85
+ *
86
+ * const authentication = ZoneRpcAuthentication.deserialize('0x...')
87
+ * ```
88
+ *
89
+ * @param serialized - The serialized Zone RPC authentication token.
90
+ * @returns The parsed Zone RPC authentication token.
91
+ */
92
+ export function deserialize(serialized) {
93
+ const size = Hex.size(serialized);
94
+ if (size <= fieldsSize)
95
+ throw new InvalidSerializedError({
96
+ reason: `Serialized authentication must be longer than ${fieldsSize} bytes.`,
97
+ serialized,
98
+ });
99
+ const fieldsOffset = size - fieldsSize;
100
+ const signature = Hex.slice(serialized, 0, fieldsOffset);
101
+ const fields = Hex.slice(serialized, fieldsOffset);
102
+ const parsedVersion = Hex.toNumber(Hex.slice(fields, 0, 1), { size: 1 });
103
+ if (parsedVersion !== version)
104
+ throw new InvalidSerializedError({
105
+ reason: `Unsupported authentication version "${parsedVersion}". Expected "${version}".`,
106
+ serialized,
107
+ });
108
+ return {
109
+ chainId: Hex.toNumber(Hex.slice(fields, 5, 13), { size: 8 }),
110
+ expiresAt: Hex.toNumber(Hex.slice(fields, 21, 29), { size: 8 }),
111
+ issuedAt: Hex.toNumber(Hex.slice(fields, 13, 21), { size: 8 }),
112
+ signature: SignatureEnvelope.deserialize(signature),
113
+ version,
114
+ zoneId: Hex.toNumber(Hex.slice(fields, 1, 5), { size: 4 }),
115
+ };
116
+ }
117
+ /**
118
+ * Returns the 29-byte fixed field suffix for a Zone RPC authentication token.
119
+ *
120
+ * @example
121
+ * ```ts twoslash
122
+ * import { ZoneRpcAuthentication } from 'ox/tempo'
123
+ *
124
+ * const fields = ZoneRpcAuthentication.getFields({
125
+ * chainId: 4217000026,
126
+ * expiresAt: 1711235160,
127
+ * issuedAt: 1711234560,
128
+ * zoneId: 26,
129
+ * })
130
+ * ```
131
+ *
132
+ * @param authentication - The Zone RPC authentication token.
133
+ * @returns The fixed 29-byte field suffix.
134
+ */
135
+ export function getFields(authentication) {
136
+ return Hex.concat(Hex.fromNumber(version, { size: 1 }), Hex.fromNumber(authentication.zoneId, { size: 4 }), Hex.fromNumber(authentication.chainId, { size: 8 }), Hex.fromNumber(authentication.issuedAt, { size: 8 }), Hex.fromNumber(authentication.expiresAt, { size: 8 }));
137
+ }
138
+ /**
139
+ * Computes the sign payload for a Zone RPC authentication token.
140
+ *
141
+ * When `userAddress` is provided, the payload is wrapped as
142
+ * `keccak256(0x04 || authHash || userAddress)` to match V2 keychain signing.
143
+ *
144
+ * @example
145
+ * ```ts twoslash
146
+ * import { ZoneRpcAuthentication } from 'ox/tempo'
147
+ *
148
+ * const authentication = ZoneRpcAuthentication.from({
149
+ * chainId: 4217000026,
150
+ * expiresAt: 1711235160,
151
+ * issuedAt: 1711234560,
152
+ * zoneId: 26,
153
+ * })
154
+ *
155
+ * const payload = ZoneRpcAuthentication.getSignPayload(authentication)
156
+ * ```
157
+ *
158
+ * @param authentication - The Zone RPC authentication token.
159
+ * @param options - Options.
160
+ * @returns The sign payload.
161
+ */
162
+ export function getSignPayload(authentication, options = {}) {
163
+ const authHash = hash(authentication);
164
+ if (options.userAddress)
165
+ return Hash.keccak256(Hex.concat('0x04', authHash, TempoAddress.resolve(options.userAddress)));
166
+ return authHash;
167
+ }
168
+ /**
169
+ * Computes the raw authorization hash for a Zone RPC authentication token.
170
+ *
171
+ * The hash is `keccak256(magicBytes || fields)`.
172
+ *
173
+ * @example
174
+ * ```ts twoslash
175
+ * import { ZoneRpcAuthentication } from 'ox/tempo'
176
+ *
177
+ * const authentication = ZoneRpcAuthentication.from({
178
+ * chainId: 4217000026,
179
+ * expiresAt: 1711235160,
180
+ * issuedAt: 1711234560,
181
+ * zoneId: 26,
182
+ * })
183
+ *
184
+ * const hash = ZoneRpcAuthentication.hash(authentication)
185
+ * ```
186
+ *
187
+ * @param authentication - The Zone RPC authentication token.
188
+ * @returns The authorization hash.
189
+ */
190
+ export function hash(authentication) {
191
+ return Hash.keccak256(Hex.concat(magicBytes, getFields(authentication)));
192
+ }
193
+ /**
194
+ * Serializes a Zone RPC authentication token to hex.
195
+ *
196
+ * The serialized format is `<signature><29-byte fields>`.
197
+ *
198
+ * @example
199
+ * ```ts twoslash
200
+ * import { Secp256k1 } from 'ox'
201
+ * import { ZoneRpcAuthentication } from 'ox/tempo'
202
+ *
203
+ * const authentication = ZoneRpcAuthentication.from({
204
+ * chainId: 4217000026,
205
+ * expiresAt: 1711235160,
206
+ * issuedAt: 1711234560,
207
+ * zoneId: 26,
208
+ * })
209
+ *
210
+ * const signature = Secp256k1.sign({
211
+ * payload: ZoneRpcAuthentication.getSignPayload(authentication),
212
+ * privateKey: '0x...',
213
+ * })
214
+ *
215
+ * const serialized = ZoneRpcAuthentication.serialize(authentication, {
216
+ * signature,
217
+ * })
218
+ * ```
219
+ *
220
+ * @param authentication - The Zone RPC authentication token.
221
+ * @param options - Serialization options.
222
+ * @returns The serialized authentication token.
223
+ */
224
+ export function serialize(authentication, options = {}) {
225
+ const signature = options.signature || authentication.signature;
226
+ if (!signature)
227
+ throw new MissingSignatureError();
228
+ return Hex.concat(SignatureEnvelope.serialize(SignatureEnvelope.from(signature)), getFields(authentication));
229
+ }
230
+ /** Error thrown when a serialized authentication token cannot be deserialized. */
231
+ export class InvalidSerializedError extends Errors.BaseError {
232
+ constructor({ reason, serialized }) {
233
+ super(`Unable to deserialize Zone RPC authentication: ${reason}`, {
234
+ metaMessages: [`Serialized: ${serialized}`],
235
+ });
236
+ Object.defineProperty(this, "name", {
237
+ enumerable: true,
238
+ configurable: true,
239
+ writable: true,
240
+ value: 'ZoneRpcAuthentication.InvalidSerializedError'
241
+ });
242
+ }
243
+ }
244
+ /** Error thrown when serializing an authentication token without a signature. */
245
+ export class MissingSignatureError extends Errors.BaseError {
246
+ constructor() {
247
+ super('Zone RPC authentication is missing a signature.');
248
+ Object.defineProperty(this, "name", {
249
+ enumerable: true,
250
+ configurable: true,
251
+ writable: true,
252
+ value: 'ZoneRpcAuthentication.MissingSignatureError'
253
+ });
254
+ }
255
+ }
256
+ //# sourceMappingURL=ZoneRpcAuthentication.js.map