ox 0.13.1 → 0.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Base32/package.json +6 -0
- package/CHANGELOG.md +6 -0
- package/CompactSize/package.json +6 -0
- package/_cjs/core/Base32.js +73 -0
- package/_cjs/core/Base32.js.map +1 -0
- package/_cjs/core/CompactSize.js +91 -0
- package/_cjs/core/CompactSize.js.map +1 -0
- package/_cjs/index.js +4 -2
- package/_cjs/index.js.map +1 -1
- package/_cjs/tempo/TempoAddress.js +116 -0
- package/_cjs/tempo/TempoAddress.js.map +1 -0
- package/_cjs/tempo/index.js +2 -1
- package/_cjs/tempo/index.js.map +1 -1
- package/_cjs/version.js +1 -1
- package/_esm/core/Base32.js +119 -0
- package/_esm/core/Base32.js.map +1 -0
- package/_esm/core/CompactSize.js +150 -0
- package/_esm/core/CompactSize.js.map +1 -0
- package/_esm/index.js +48 -0
- package/_esm/index.js.map +1 -1
- package/_esm/tempo/TempoAddress.js +181 -0
- package/_esm/tempo/TempoAddress.js.map +1 -0
- package/_esm/tempo/index.js +21 -0
- package/_esm/tempo/index.js.map +1 -1
- package/_esm/version.js +1 -1
- package/_types/core/Base32.d.ts +79 -0
- package/_types/core/Base32.d.ts.map +1 -0
- package/_types/core/CompactSize.d.ts +107 -0
- package/_types/core/CompactSize.d.ts.map +1 -0
- package/_types/index.d.ts +48 -0
- package/_types/index.d.ts.map +1 -1
- package/_types/tempo/TempoAddress.d.ts +118 -0
- package/_types/tempo/TempoAddress.d.ts.map +1 -0
- package/_types/tempo/index.d.ts +21 -0
- package/_types/tempo/index.d.ts.map +1 -1
- package/_types/version.d.ts +1 -1
- package/core/Base32.ts +134 -0
- package/core/CompactSize.ts +169 -0
- package/index.ts +51 -0
- package/package.json +16 -1
- package/tempo/TempoAddress/package.json +6 -0
- package/tempo/TempoAddress.test.ts +202 -0
- package/tempo/TempoAddress.ts +225 -0
- package/tempo/index.ts +21 -3
- package/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# ox
|
|
2
2
|
|
|
3
|
+
## 0.13.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#179](https://github.com/wevm/ox/pull/179) [`4b91335`](https://github.com/wevm/ox/commit/4b91335b5a68cfee39248ab91c78a0b98b1d1859) Thanks [@jxom](https://github.com/jxom)! - Added `Base32`, `CompactSize`, and `TempoAddress` modules. `Base32` implements BIP-173 bech32 base32 encoding/decoding. `CompactSize` implements Bitcoin's variable-length integer encoding. `TempoAddress` provides human-readable Tempo address formatting and parsing with `tempo1`/`tempoz1` prefixes, CompactSize zone ID encoding, and double-SHA256 checksumming.
|
|
8
|
+
|
|
3
9
|
## 0.13.1
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvalidCharacterError = void 0;
|
|
4
|
+
exports.fromBytes = fromBytes;
|
|
5
|
+
exports.fromHex = fromHex;
|
|
6
|
+
exports.toBytes = toBytes;
|
|
7
|
+
exports.toHex = toHex;
|
|
8
|
+
const Bytes = require("./Bytes.js");
|
|
9
|
+
const Errors = require("./Errors.js");
|
|
10
|
+
const Hex = require("./Hex.js");
|
|
11
|
+
const alphabet = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';
|
|
12
|
+
const alphabetMap = (() => {
|
|
13
|
+
const map = {};
|
|
14
|
+
for (let i = 0; i < alphabet.length; i++)
|
|
15
|
+
map[alphabet[i]] = i;
|
|
16
|
+
return map;
|
|
17
|
+
})();
|
|
18
|
+
function fromBytes(value) {
|
|
19
|
+
let bits = 0;
|
|
20
|
+
let acc = 0;
|
|
21
|
+
let result = '';
|
|
22
|
+
for (const byte of value) {
|
|
23
|
+
acc = (acc << 8) | byte;
|
|
24
|
+
bits += 8;
|
|
25
|
+
while (bits >= 5) {
|
|
26
|
+
bits -= 5;
|
|
27
|
+
result += alphabet[(acc >>> bits) & 0x1f];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (bits > 0)
|
|
31
|
+
result += alphabet[(acc << (5 - bits)) & 0x1f];
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
function fromHex(value) {
|
|
35
|
+
return fromBytes(Bytes.fromHex(value));
|
|
36
|
+
}
|
|
37
|
+
function toBytes(value) {
|
|
38
|
+
const values = [];
|
|
39
|
+
for (const char of value) {
|
|
40
|
+
const v = alphabetMap[char];
|
|
41
|
+
if (v === undefined)
|
|
42
|
+
throw new InvalidCharacterError({ character: char });
|
|
43
|
+
values.push(v);
|
|
44
|
+
}
|
|
45
|
+
let bits = 0;
|
|
46
|
+
let acc = 0;
|
|
47
|
+
const bytes = [];
|
|
48
|
+
for (const v of values) {
|
|
49
|
+
acc = (acc << 5) | v;
|
|
50
|
+
bits += 5;
|
|
51
|
+
if (bits >= 8) {
|
|
52
|
+
bits -= 8;
|
|
53
|
+
bytes.push((acc >>> bits) & 0xff);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return new Uint8Array(bytes);
|
|
57
|
+
}
|
|
58
|
+
function toHex(value) {
|
|
59
|
+
return Hex.fromBytes(toBytes(value));
|
|
60
|
+
}
|
|
61
|
+
class InvalidCharacterError extends Errors.BaseError {
|
|
62
|
+
constructor({ character }) {
|
|
63
|
+
super(`Invalid bech32 base32 character: "${character}".`);
|
|
64
|
+
Object.defineProperty(this, "name", {
|
|
65
|
+
enumerable: true,
|
|
66
|
+
configurable: true,
|
|
67
|
+
writable: true,
|
|
68
|
+
value: 'Base32.InvalidCharacterError'
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.InvalidCharacterError = InvalidCharacterError;
|
|
73
|
+
//# sourceMappingURL=Base32.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Base32.js","sourceRoot":"","sources":["../../core/Base32.ts"],"names":[],"mappings":";;;AAyBA,8BAcC;AAmBD,0BAEC;AAmBD,0BAoBC;AAmBD,sBAEC;AAxHD,oCAAmC;AACnC,sCAAqC;AACrC,gCAA+B;AAG/B,MAAM,QAAQ,GAAG,kCAAkC,CAAA;AACnD,MAAM,WAAW,GAAiB,CAAC,GAAG,EAAE;IACtC,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAA;IAC/D,OAAO,GAAG,CAAA;AACZ,CAAC,CAAC,EAAE,CAAA;AAeJ,SAAgB,SAAS,CAAC,KAAkB;IAC1C,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;QACvB,IAAI,IAAI,CAAC,CAAA;QACT,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,CAAA;YACT,MAAM,IAAI,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC;IACD,IAAI,IAAI,GAAG,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC5D,OAAO,MAAM,CAAA;AACf,CAAC;AAmBD,SAAgB,OAAO,CAAC,KAAc;IACpC,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;AACxC,CAAC;AAmBD,SAAgB,OAAO,CAAC,KAAa;IACnC,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAC3B,IAAI,CAAC,KAAK,SAAS;YAAE,MAAM,IAAI,qBAAqB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACzE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC;IAED,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACpB,IAAI,IAAI,CAAC,CAAA;QACT,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,CAAA;YACT,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAmBD,SAAgB,KAAK,CAAC,KAAa;IACjC,OAAO,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;AACtC,CAAC;AAOD,MAAa,qBAAsB,SAAQ,MAAM,CAAC,SAAS;IAGzD,YAAY,EAAE,SAAS,EAAyB;QAC9C,KAAK,CAAC,qCAAqC,SAAS,IAAI,CAAC,CAAA;QAHzC;;;;mBAAO,8BAA8B;WAAA;IAIvD,CAAC;CACF;AAND,sDAMC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InsufficientBytesError = exports.NegativeValueError = void 0;
|
|
4
|
+
exports.toBytes = toBytes;
|
|
5
|
+
exports.toHex = toHex;
|
|
6
|
+
exports.fromBytes = fromBytes;
|
|
7
|
+
exports.fromHex = fromHex;
|
|
8
|
+
const Bytes = require("./Bytes.js");
|
|
9
|
+
const Errors = require("./Errors.js");
|
|
10
|
+
const Hex = require("./Hex.js");
|
|
11
|
+
function toBytes(value) {
|
|
12
|
+
const n = BigInt(value);
|
|
13
|
+
if (n < 0n)
|
|
14
|
+
throw new NegativeValueError({ value: n });
|
|
15
|
+
if (n <= 252n)
|
|
16
|
+
return new Uint8Array([Number(n)]);
|
|
17
|
+
if (n <= 0xffffn) {
|
|
18
|
+
const buf = new Uint8Array(3);
|
|
19
|
+
buf[0] = 0xfd;
|
|
20
|
+
const view = new DataView(buf.buffer);
|
|
21
|
+
view.setUint16(1, Number(n), true);
|
|
22
|
+
return buf;
|
|
23
|
+
}
|
|
24
|
+
if (n <= 0xffffffffn) {
|
|
25
|
+
const buf = new Uint8Array(5);
|
|
26
|
+
buf[0] = 0xfe;
|
|
27
|
+
const view = new DataView(buf.buffer);
|
|
28
|
+
view.setUint32(1, Number(n), true);
|
|
29
|
+
return buf;
|
|
30
|
+
}
|
|
31
|
+
const buf = new Uint8Array(9);
|
|
32
|
+
buf[0] = 0xff;
|
|
33
|
+
const view = new DataView(buf.buffer);
|
|
34
|
+
view.setBigUint64(1, n, true);
|
|
35
|
+
return buf;
|
|
36
|
+
}
|
|
37
|
+
function toHex(value) {
|
|
38
|
+
return Hex.fromBytes(toBytes(value));
|
|
39
|
+
}
|
|
40
|
+
function fromBytes(data) {
|
|
41
|
+
if (data.length === 0)
|
|
42
|
+
throw new InsufficientBytesError({ expected: 1, actual: 0 });
|
|
43
|
+
const first = data[0];
|
|
44
|
+
if (first < 0xfd)
|
|
45
|
+
return { value: BigInt(first), size: 1 };
|
|
46
|
+
const view = new DataView(data.buffer, data.byteOffset);
|
|
47
|
+
if (first === 0xfd) {
|
|
48
|
+
if (data.length < 3)
|
|
49
|
+
throw new InsufficientBytesError({ expected: 3, actual: data.length });
|
|
50
|
+
return { value: BigInt(view.getUint16(1, true)), size: 3 };
|
|
51
|
+
}
|
|
52
|
+
if (first === 0xfe) {
|
|
53
|
+
if (data.length < 5)
|
|
54
|
+
throw new InsufficientBytesError({ expected: 5, actual: data.length });
|
|
55
|
+
return { value: BigInt(view.getUint32(1, true)), size: 5 };
|
|
56
|
+
}
|
|
57
|
+
if (data.length < 9)
|
|
58
|
+
throw new InsufficientBytesError({ expected: 9, actual: data.length });
|
|
59
|
+
return {
|
|
60
|
+
value: view.getBigUint64(1, true),
|
|
61
|
+
size: 9,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function fromHex(data) {
|
|
65
|
+
return fromBytes(Bytes.fromHex(data));
|
|
66
|
+
}
|
|
67
|
+
class NegativeValueError extends Errors.BaseError {
|
|
68
|
+
constructor({ value }) {
|
|
69
|
+
super(`CompactSize value must be non-negative, got ${value}.`);
|
|
70
|
+
Object.defineProperty(this, "name", {
|
|
71
|
+
enumerable: true,
|
|
72
|
+
configurable: true,
|
|
73
|
+
writable: true,
|
|
74
|
+
value: 'CompactSize.NegativeValueError'
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.NegativeValueError = NegativeValueError;
|
|
79
|
+
class InsufficientBytesError extends Errors.BaseError {
|
|
80
|
+
constructor({ expected, actual }) {
|
|
81
|
+
super(`Insufficient bytes for CompactSize decoding. Expected at least ${expected}, got ${actual}.`);
|
|
82
|
+
Object.defineProperty(this, "name", {
|
|
83
|
+
enumerable: true,
|
|
84
|
+
configurable: true,
|
|
85
|
+
writable: true,
|
|
86
|
+
value: 'CompactSize.InsufficientBytesError'
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.InsufficientBytesError = InsufficientBytesError;
|
|
91
|
+
//# sourceMappingURL=CompactSize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompactSize.js","sourceRoot":"","sources":["../../core/CompactSize.ts"],"names":[],"mappings":"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"}
|
package/_cjs/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.X25519 = exports.Withdrawal = exports.WebCryptoP256 = exports.WebAuthnP256 = exports.Value = exports.ValidatorData = exports.TypedData = exports.TxEnvelopeLegacy = exports.TxEnvelopeEip7702 = exports.TxEnvelopeEip4844 = exports.TxEnvelopeEip2930 = exports.TxEnvelopeEip1559 = exports.TransactionEnvelope = exports.TransactionRequest = exports.TransactionReceipt = exports.Transaction = exports.StateOverrides = exports.Solidity = exports.Siwe = void 0;
|
|
3
|
+
exports.RpcTransport = exports.RpcSchema = exports.RpcResponse = exports.RpcRequest = exports.Rlp = exports.PublicKey = exports.Provider = exports.PersonalMessage = exports.P256 = exports.Mnemonic = exports.Log = exports.Kzg = exports.Keystore = exports.Json = exports.Hex = exports.HdKey = exports.Hash = exports.Filter = exports.Fee = exports.Errors = exports.Ens = exports.Ed25519 = exports.CoseKey = exports.ContractAddress = exports.CompactSize = exports.Cbor = exports.Caches = exports.Bytes = exports.BlsPoint = exports.Bls = exports.Bloom = exports.BlockOverrides = exports.Block = exports.Blobs = exports.BinaryStateTree = exports.Base64 = exports.Base58 = exports.Base32 = exports.Authorization = exports.AesGcm = exports.Address = exports.AccountProof = exports.AccessList = exports.AbiParameters = exports.AbiItem = exports.AbiFunction = exports.AbiEvent = exports.AbiError = exports.AbiConstructor = exports.Abi = void 0;
|
|
4
|
+
exports.X25519 = exports.Withdrawal = exports.WebCryptoP256 = exports.WebAuthnP256 = exports.Value = exports.ValidatorData = exports.TypedData = exports.TxEnvelopeLegacy = exports.TxEnvelopeEip7702 = exports.TxEnvelopeEip4844 = exports.TxEnvelopeEip2930 = exports.TxEnvelopeEip1559 = exports.TransactionEnvelope = exports.TransactionRequest = exports.TransactionReceipt = exports.Transaction = exports.StateOverrides = exports.Solidity = exports.Siwe = exports.Signature = exports.Secp256k1 = void 0;
|
|
5
5
|
exports.Abi = require("./core/Abi.js");
|
|
6
6
|
exports.AbiConstructor = require("./core/AbiConstructor.js");
|
|
7
7
|
exports.AbiError = require("./core/AbiError.js");
|
|
@@ -14,6 +14,7 @@ exports.AccountProof = require("./core/AccountProof.js");
|
|
|
14
14
|
exports.Address = require("./core/Address.js");
|
|
15
15
|
exports.AesGcm = require("./core/AesGcm.js");
|
|
16
16
|
exports.Authorization = require("./core/Authorization.js");
|
|
17
|
+
exports.Base32 = require("./core/Base32.js");
|
|
17
18
|
exports.Base58 = require("./core/Base58.js");
|
|
18
19
|
exports.Base64 = require("./core/Base64.js");
|
|
19
20
|
exports.BinaryStateTree = require("./core/BinaryStateTree.js");
|
|
@@ -26,6 +27,7 @@ exports.BlsPoint = require("./core/BlsPoint.js");
|
|
|
26
27
|
exports.Bytes = require("./core/Bytes.js");
|
|
27
28
|
exports.Caches = require("./core/Caches.js");
|
|
28
29
|
exports.Cbor = require("./core/Cbor.js");
|
|
30
|
+
exports.CompactSize = require("./core/CompactSize.js");
|
|
29
31
|
exports.ContractAddress = require("./core/ContractAddress.js");
|
|
30
32
|
exports.CoseKey = require("./core/CoseKey.js");
|
|
31
33
|
exports.Ed25519 = require("./core/Ed25519.js");
|
package/_cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AAuHA,uCAAoC;AA4EpC,6DAA0D;AAwE1D,iDAA8C;AAmH9C,iDAA8C;AA8F9C,uDAAoD;AA8EpD,+CAA4C;AAwG5C,2DAAwD;AAOxD,qDAAkD;AAOlD,yDAAsD;AAuDtD,+CAA4C;AAqC5C,6CAA0C;AA0E1C,2DAAwD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AAuHA,uCAAoC;AA4EpC,6DAA0D;AAwE1D,iDAA8C;AAmH9C,iDAA8C;AA8F9C,uDAAoD;AA8EpD,+CAA4C;AAwG5C,2DAAwD;AAOxD,qDAAkD;AAOlD,yDAAsD;AAuDtD,+CAA4C;AAqC5C,6CAA0C;AA0E1C,2DAAwD;AAyBxD,6CAA0C;AAuD1C,6CAA0C;AAsD1C,6CAA0C;AAO1C,+DAA4D;AAO5D,2CAAwC;AAgCxC,2CAAwC;AAOxC,6DAA0D;AAO1D,2CAAwC;AAoHxC,uCAAoC;AA6CpC,iDAA8C;AAgI9C,2CAAwC;AAExC,6CAA0C;AAiC1C,yCAAsC;AAyBtC,uDAAoD;AAsCpD,+DAA4D;AAgC5D,+CAA4C;AAgC5C,+CAA4C;AA+B5C,uCAAoC;AAEpC,6CAA0C;AAI1C,uCAAoC;AAMpC,6CAA0C;AAc1C,yCAAsC;AAatC,2CAAwC;AAkHxC,uCAAoC;AAkCpC,yCAAsC;AA+DtC,iDAA8C;AAQ9C,uCAAoC;AA0DpC,uCAAoC;AA4DpC,iDAA8C;AAwE9C,yCAAsC;AAmBtC,+DAA4D;AAoF5D,iDAA8C;AAwC9C,mDAAgD;AAiBhD,uCAAoC;AAmCpC,qDAAkD;AAmFlD,uDAAoD;AAMpD,mDAAgD;AAyBhD,yDAAsD;AAwEtD,mDAAgD;AAmChD,mDAAgD;AAqGhD,yCAAsC;AAEtC,iDAA8C;AAO9C,6DAA0D;AAuC1D,uDAAoD;AA4CpD,qEAAkE;AAwBlE,qEAAkE;AAelE,8DAA2D;AAsK3D,mEAAgE;AA8JhE,mEAAgE;AAuLhE,mEAAgE;AAoIhE,mEAAgE;AA0JhE,iEAA8D;AAkD9D,mDAAgD;AAOhD,2DAAwD;AAsBxD,2CAAwC;AAkFxC,yDAAsD;AAiEtD,2DAAwD;AAOxD,qDAAkD;AAmClD,6CAA0C"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvalidChecksumError = exports.InvalidLengthError = exports.InvalidPrefixError = void 0;
|
|
4
|
+
exports.format = format;
|
|
5
|
+
exports.parse = parse;
|
|
6
|
+
exports.validate = validate;
|
|
7
|
+
const Address = require("../core/Address.js");
|
|
8
|
+
const Base32 = require("../core/Base32.js");
|
|
9
|
+
const Bytes = require("../core/Bytes.js");
|
|
10
|
+
const CompactSize = require("../core/CompactSize.js");
|
|
11
|
+
const Errors = require("../core/Errors.js");
|
|
12
|
+
const Hash = require("../core/Hash.js");
|
|
13
|
+
const Hex = require("../core/Hex.js");
|
|
14
|
+
function format(address, options = {}) {
|
|
15
|
+
const { zoneId } = options;
|
|
16
|
+
const prefix = zoneId != null ? 'tempoz1' : 'tempo1';
|
|
17
|
+
const zone = zoneId != null ? CompactSize.toBytes(zoneId) : new Uint8Array();
|
|
18
|
+
const address_bytes = Bytes.fromHex(address);
|
|
19
|
+
const input = Bytes.concat(Bytes.fromString(prefix), zone, address_bytes);
|
|
20
|
+
const checksum = Hash.sha256(Hash.sha256(input, { as: 'Bytes' }), {
|
|
21
|
+
as: 'Bytes',
|
|
22
|
+
}).slice(0, 4);
|
|
23
|
+
const payload = Bytes.concat(zone, address_bytes, checksum);
|
|
24
|
+
return `${prefix}${Base32.fromBytes(payload)}`;
|
|
25
|
+
}
|
|
26
|
+
function parse(tempoAddress) {
|
|
27
|
+
const lower = tempoAddress.toLowerCase();
|
|
28
|
+
let prefix;
|
|
29
|
+
let hasZone;
|
|
30
|
+
if (lower.startsWith('tempoz1')) {
|
|
31
|
+
prefix = 'tempoz1';
|
|
32
|
+
hasZone = true;
|
|
33
|
+
}
|
|
34
|
+
else if (lower.startsWith('tempo1')) {
|
|
35
|
+
prefix = 'tempo1';
|
|
36
|
+
hasZone = false;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
throw new InvalidPrefixError({ address: tempoAddress });
|
|
40
|
+
}
|
|
41
|
+
const payload = Base32.toBytes(lower.slice(prefix.length));
|
|
42
|
+
let zoneId;
|
|
43
|
+
let remaining;
|
|
44
|
+
if (hasZone) {
|
|
45
|
+
const { value, size } = CompactSize.fromBytes(payload);
|
|
46
|
+
zoneId = value;
|
|
47
|
+
remaining = payload.slice(size);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
zoneId = undefined;
|
|
51
|
+
remaining = payload;
|
|
52
|
+
}
|
|
53
|
+
if (remaining.length !== 24)
|
|
54
|
+
throw new InvalidLengthError({
|
|
55
|
+
address: tempoAddress,
|
|
56
|
+
expected: 24,
|
|
57
|
+
actual: remaining.length,
|
|
58
|
+
});
|
|
59
|
+
const rawAddress = remaining.slice(0, 20);
|
|
60
|
+
const checksum = remaining.slice(20, 24);
|
|
61
|
+
const zoneBytes = zoneId != null ? CompactSize.toBytes(zoneId) : new Uint8Array();
|
|
62
|
+
const checksumInput = Bytes.concat(Bytes.fromString(prefix), zoneBytes, rawAddress);
|
|
63
|
+
const expected = Hash.sha256(Hash.sha256(checksumInput, { as: 'Bytes' }), {
|
|
64
|
+
as: 'Bytes',
|
|
65
|
+
}).slice(0, 4);
|
|
66
|
+
if (!Bytes.isEqual(checksum, expected))
|
|
67
|
+
throw new InvalidChecksumError({ address: tempoAddress });
|
|
68
|
+
const address = Address.checksum(Hex.fromBytes(rawAddress));
|
|
69
|
+
return { address, zoneId };
|
|
70
|
+
}
|
|
71
|
+
function validate(tempoAddress) {
|
|
72
|
+
try {
|
|
73
|
+
parse(tempoAddress);
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
class InvalidPrefixError extends Errors.BaseError {
|
|
81
|
+
constructor({ address }) {
|
|
82
|
+
super(`Tempo address "${address}" has an invalid prefix. Expected "tempo1" or "tempoz1".`);
|
|
83
|
+
Object.defineProperty(this, "name", {
|
|
84
|
+
enumerable: true,
|
|
85
|
+
configurable: true,
|
|
86
|
+
writable: true,
|
|
87
|
+
value: 'TempoAddress.InvalidPrefixError'
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.InvalidPrefixError = InvalidPrefixError;
|
|
92
|
+
class InvalidLengthError extends Errors.BaseError {
|
|
93
|
+
constructor({ address, expected, actual, }) {
|
|
94
|
+
super(`Tempo address "${address}" has an invalid payload length. Expected ${expected} bytes, got ${actual}.`);
|
|
95
|
+
Object.defineProperty(this, "name", {
|
|
96
|
+
enumerable: true,
|
|
97
|
+
configurable: true,
|
|
98
|
+
writable: true,
|
|
99
|
+
value: 'TempoAddress.InvalidLengthError'
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.InvalidLengthError = InvalidLengthError;
|
|
104
|
+
class InvalidChecksumError extends Errors.BaseError {
|
|
105
|
+
constructor({ address }) {
|
|
106
|
+
super(`Tempo address "${address}" has an invalid checksum.`);
|
|
107
|
+
Object.defineProperty(this, "name", {
|
|
108
|
+
enumerable: true,
|
|
109
|
+
configurable: true,
|
|
110
|
+
writable: true,
|
|
111
|
+
value: 'TempoAddress.InvalidChecksumError'
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.InvalidChecksumError = InvalidChecksumError;
|
|
116
|
+
//# sourceMappingURL=TempoAddress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TempoAddress.js","sourceRoot":"","sources":["../../tempo/TempoAddress.ts"],"names":[],"mappings":"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"}
|
package/_cjs/tempo/index.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
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.SignatureEnvelope = exports.PoolId = exports.KeyAuthorization = exports.AuthorizationTempo = void 0;
|
|
3
|
+
exports.TxEnvelopeTempo = exports.TransactionRequest = exports.TransactionReceipt = exports.Transaction = exports.TokenRole = exports.TokenId = exports.Tick = exports.TempoAddress = exports.SignatureEnvelope = exports.PoolId = exports.KeyAuthorization = exports.AuthorizationTempo = void 0;
|
|
4
4
|
exports.AuthorizationTempo = require("./AuthorizationTempo.js");
|
|
5
5
|
exports.KeyAuthorization = require("./KeyAuthorization.js");
|
|
6
6
|
exports.PoolId = require("./PoolId.js");
|
|
7
7
|
exports.SignatureEnvelope = require("./SignatureEnvelope.js");
|
|
8
|
+
exports.TempoAddress = require("./TempoAddress.js");
|
|
8
9
|
exports.Tick = require("./Tick.js");
|
|
9
10
|
exports.TokenId = require("./TokenId.js");
|
|
10
11
|
exports.TokenRole = require("./TokenRole.js");
|
package/_cjs/tempo/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tempo/index.ts"],"names":[],"mappings":";;;AAoCA,gEAA6D;AAwC7D,4DAAyD;AAsBzD,wCAAqC;AAuBrC,8DAA2D;AAqB3D,oCAAiC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tempo/index.ts"],"names":[],"mappings":";;;AAoCA,gEAA6D;AAwC7D,4DAAyD;AAsBzD,wCAAqC;AAuBrC,8DAA2D;AAqB3D,oDAAiD;AAoBjD,oCAAiC;AAqBjC,0CAAuC;AAkBvC,8CAA2C;AAmD3C,kDAA+C;AAuB/C,gEAA6D;AAqB7D,gEAA6D;AA6B7D,0DAAuD"}
|
package/_cjs/version.js
CHANGED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import * as Bytes from './Bytes.js';
|
|
2
|
+
import * as Errors from './Errors.js';
|
|
3
|
+
import * as Hex from './Hex.js';
|
|
4
|
+
/** Bech32 base32 alphabet (BIP-173). */
|
|
5
|
+
const alphabet = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';
|
|
6
|
+
const alphabetMap = /*#__PURE__*/ (() => {
|
|
7
|
+
const map = {};
|
|
8
|
+
for (let i = 0; i < alphabet.length; i++)
|
|
9
|
+
map[alphabet[i]] = i;
|
|
10
|
+
return map;
|
|
11
|
+
})();
|
|
12
|
+
/**
|
|
13
|
+
* Encodes a {@link ox#Bytes.Bytes} value to a Base32-encoded string (using the BIP-173 bech32 alphabet).
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts twoslash
|
|
17
|
+
* import { Base32, Bytes } from 'ox'
|
|
18
|
+
*
|
|
19
|
+
* const value = Base32.fromBytes(new Uint8Array([0x00, 0xff, 0x00]))
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @param value - The byte array to encode.
|
|
23
|
+
* @returns The Base32 encoded string.
|
|
24
|
+
*/
|
|
25
|
+
export function fromBytes(value) {
|
|
26
|
+
let bits = 0;
|
|
27
|
+
let acc = 0;
|
|
28
|
+
let result = '';
|
|
29
|
+
for (const byte of value) {
|
|
30
|
+
acc = (acc << 8) | byte;
|
|
31
|
+
bits += 8;
|
|
32
|
+
while (bits >= 5) {
|
|
33
|
+
bits -= 5;
|
|
34
|
+
result += alphabet[(acc >>> bits) & 0x1f];
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (bits > 0)
|
|
38
|
+
result += alphabet[(acc << (5 - bits)) & 0x1f];
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Encodes a {@link ox#Hex.Hex} value to a Base32-encoded string (using the BIP-173 bech32 alphabet).
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts twoslash
|
|
46
|
+
* import { Base32 } from 'ox'
|
|
47
|
+
*
|
|
48
|
+
* const value = Base32.fromHex('0x00ff00')
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @param value - The hex value to encode.
|
|
52
|
+
* @returns The Base32 encoded string.
|
|
53
|
+
*/
|
|
54
|
+
export function fromHex(value) {
|
|
55
|
+
return fromBytes(Bytes.fromHex(value));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Decodes a Base32-encoded string (using the BIP-173 bech32 alphabet) to {@link ox#Bytes.Bytes}.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts twoslash
|
|
62
|
+
* import { Base32 } from 'ox'
|
|
63
|
+
*
|
|
64
|
+
* const value = Base32.toBytes('qqsa0')
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @param value - The Base32 encoded string.
|
|
68
|
+
* @returns The decoded byte array.
|
|
69
|
+
*/
|
|
70
|
+
export function toBytes(value) {
|
|
71
|
+
const values = [];
|
|
72
|
+
for (const char of value) {
|
|
73
|
+
const v = alphabetMap[char];
|
|
74
|
+
if (v === undefined)
|
|
75
|
+
throw new InvalidCharacterError({ character: char });
|
|
76
|
+
values.push(v);
|
|
77
|
+
}
|
|
78
|
+
let bits = 0;
|
|
79
|
+
let acc = 0;
|
|
80
|
+
const bytes = [];
|
|
81
|
+
for (const v of values) {
|
|
82
|
+
acc = (acc << 5) | v;
|
|
83
|
+
bits += 5;
|
|
84
|
+
if (bits >= 8) {
|
|
85
|
+
bits -= 8;
|
|
86
|
+
bytes.push((acc >>> bits) & 0xff);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return new Uint8Array(bytes);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Decodes a Base32-encoded string (using the BIP-173 bech32 alphabet) to {@link ox#Hex.Hex}.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```ts twoslash
|
|
96
|
+
* import { Base32 } from 'ox'
|
|
97
|
+
*
|
|
98
|
+
* const value = Base32.toHex('qqsa0')
|
|
99
|
+
* ```
|
|
100
|
+
*
|
|
101
|
+
* @param value - The Base32 encoded string.
|
|
102
|
+
* @returns The decoded hex string.
|
|
103
|
+
*/
|
|
104
|
+
export function toHex(value) {
|
|
105
|
+
return Hex.fromBytes(toBytes(value));
|
|
106
|
+
}
|
|
107
|
+
/** Thrown when a Base32 string contains an invalid character. */
|
|
108
|
+
export class InvalidCharacterError extends Errors.BaseError {
|
|
109
|
+
constructor({ character }) {
|
|
110
|
+
super(`Invalid bech32 base32 character: "${character}".`);
|
|
111
|
+
Object.defineProperty(this, "name", {
|
|
112
|
+
enumerable: true,
|
|
113
|
+
configurable: true,
|
|
114
|
+
writable: true,
|
|
115
|
+
value: 'Base32.InvalidCharacterError'
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=Base32.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Base32.js","sourceRoot":"","sources":["../../core/Base32.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B,wCAAwC;AACxC,MAAM,QAAQ,GAAG,kCAAkC,CAAA;AACnD,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,GAAG,EAAE;IACtC,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAA;IAC/D,OAAO,GAAG,CAAA;AACZ,CAAC,CAAC,EAAE,CAAA;AAEJ;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CAAC,KAAkB;IAC1C,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;QACvB,IAAI,IAAI,CAAC,CAAA;QACT,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,CAAA;YACT,MAAM,IAAI,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC;IACD,IAAI,IAAI,GAAG,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC5D,OAAO,MAAM,CAAA;AACf,CAAC;AAMD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;AACxC,CAAC;AAMD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAC3B,IAAI,CAAC,KAAK,SAAS;YAAE,MAAM,IAAI,qBAAqB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACzE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC;IAED,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACpB,IAAI,IAAI,CAAC,CAAA;QACT,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,CAAA;YACT,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAMD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;AACtC,CAAC;AAMD,iEAAiE;AACjE,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,SAAS;IAGzD,YAAY,EAAE,SAAS,EAAyB;QAC9C,KAAK,CAAC,qCAAqC,SAAS,IAAI,CAAC,CAAA;QAHzC;;;;mBAAO,8BAA8B;WAAA;IAIvD,CAAC;CACF"}
|