Skip to content

Commit d168f29

Browse files
committed
feat(core): mol.padding for padding codec
1 parent a5d3537 commit d168f29

4 files changed

Lines changed: 32 additions & 13 deletions

File tree

‎.changeset/fair-items-shout.md‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@ckb-ccc/core": minor
3+
---
4+
5+
feat(core): `mol.padding` for padding codec
6+

‎packages/core/src/ckb/epoch.test.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,13 @@ describe("Epoch", () => {
9999
expect(c.denominator).toBe(e.denominator);
100100
});
101101

102-
it("genesis and oneNervosDaoCycle helpers", () => {
103-
const g = Epoch.genesis();
102+
it("Genesis and OneNervosDaoCycle helpers", () => {
103+
const g = Epoch.Genesis;
104104
expect(g.integer).toBe(0n);
105105
expect(g.numerator).toBe(0n);
106106
expect(g.denominator).toBe(0n);
107107

108-
const o = Epoch.oneNervosDaoCycle();
108+
const o = Epoch.OneNervosDaoCycle;
109109
expect(o.integer).toBe(180n);
110110
expect(o.numerator).toBe(0n);
111111
expect(o.denominator).toBe(1n);

‎packages/core/src/ckb/epoch.ts‎

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,10 @@ export type EpochLike =
5656
*/
5757
@mol.codec(
5858
mol.struct({
59-
padding: mol.Codec.from({
60-
byteLength: 1,
61-
encode: (_) => new Uint8Array(1),
62-
decode: (_) => "0x00",
63-
}),
64-
denominator: mol.uint(2, false),
65-
numerator: mol.uint(2, false),
66-
integer: mol.uint(3, false),
59+
padding: mol.padding(1),
60+
denominator: mol.uint(2),
61+
numerator: mol.uint(2),
62+
integer: mol.uint(3),
6763
}),
6864
)
6965
export class Epoch extends mol.Entity.Base<EpochLike, Epoch>() {
@@ -290,7 +286,7 @@ export class Epoch extends mol.Entity.Base<EpochLike, Epoch>() {
290286
*
291287
* @returns Epoch with integer = 0, numerator = 0, denominator = 0.
292288
*/
293-
static genesis(): Epoch {
289+
static get Genesis(): Epoch {
294290
return new Epoch(Zero, Zero, Zero);
295291
}
296292

@@ -299,7 +295,7 @@ export class Epoch extends mol.Entity.Base<EpochLike, Epoch>() {
299295
*
300296
* @returns Epoch equal to 180 with denominator set to 1 to represent an exact whole unit.
301297
*/
302-
static oneNervosDaoCycle(): Epoch {
298+
static get OneNervosDaoCycle(): Epoch {
303299
return new Epoch(numFrom(180), Zero, numFrom(1));
304300
}
305301

‎packages/core/src/molecule/codec.ts‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -718,3 +718,20 @@ export function uintNumber(
718718
outMap: (num) => Number(num),
719719
});
720720
}
721+
722+
/**
723+
* Create a codec for padding bytes.
724+
* The padding bytes are zero-filled when encoding and ignored when decoding.
725+
* @param byteLength The length of the padding in bytes.
726+
*/
727+
export function padding(
728+
byteLength: number,
729+
): Codec<void | undefined | null, void> {
730+
return Codec.from({
731+
byteLength,
732+
encode: () => {
733+
return new Uint8Array(byteLength);
734+
},
735+
decode: () => {},
736+
});
737+
}

0 commit comments

Comments
 (0)