Skip to content

Commit 1d3c348

Browse files
authored
feat: rename peak() to peek() and deprecate peak()
Rename `peak()` to `peek()` in IReaderBase with backward compatibility
2 parents 2628004 + f0fd4ff commit 1d3c348

File tree

5 files changed

+154
-3
lines changed

5 files changed

+154
-3
lines changed

src/buffers/Reader.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,20 @@ export class Reader implements IReader, IReaderResettable {
1212
this.view = new DataView(uint8.buffer, uint8.byteOffset, uint8.length);
1313
}
1414

15-
public peak(): number {
15+
/**
16+
* Get current byte value without advancing the cursor.
17+
*/
18+
public peek(): number {
1619
return this.view.getUint8(this.x);
1720
}
1821

22+
/**
23+
* @deprecated Use peek() instead.
24+
*/
25+
public peak(): number {
26+
return this.peek();
27+
}
28+
1929
public skip(length: number): void {
2030
this.x += length;
2131
}

src/buffers/StreamingOctetReader.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,11 +129,19 @@ export class StreamingOctetReader {
129129
this.skipUnsafe(n);
130130
}
131131

132-
public peak(): number {
132+
public peek(): number {
133133
this.assertSize(1);
134134
return this.chunks[0]![this.x];
135135
}
136136

137+
/**
138+
* Get current byte value without advancing the cursor.
139+
* @deprecated Use peek() instead.
140+
*/
141+
public peak(): number {
142+
return this.peek();
143+
}
144+
137145
public utf8(length: number, mask: [number, number, number, number], maskIndex: number): string {
138146
this.assertSize(length);
139147
let i = 0;

src/buffers/StreamingReader.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,19 @@ export class StreamingReader implements IReader, IReaderResettable {
6868
this.dx = x - this.writer.x0;
6969
}
7070

71-
public peak(): number {
71+
public peek(): number {
7272
this.assertSize(1);
7373
return this.view.getUint8(this.x);
7474
}
7575

76+
/**
77+
* Get current byte value without advancing the cursor.
78+
* @deprecated Use peek() instead.
79+
*/
80+
public peak(): number {
81+
return this.peek();
82+
}
83+
7684
public skip(length: number): void {
7785
this.assertSize(length);
7886
this.x += length;
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
import {Reader} from '../Reader';
2+
import {StreamingReader} from '../StreamingReader';
3+
import {StreamingOctetReader} from '../StreamingOctetReader';
4+
5+
describe('peak() and peek() methods', () => {
6+
describe('Reader', () => {
7+
test('peak() returns current byte without advancing cursor', () => {
8+
const reader = new Reader();
9+
reader.reset(new Uint8Array([1, 2, 3, 4, 5]));
10+
expect(reader.x).toBe(0);
11+
expect(reader.peak()).toBe(1);
12+
expect(reader.x).toBe(0); // cursor should not advance
13+
14+
reader.u8(); // advance cursor
15+
expect(reader.x).toBe(1);
16+
expect(reader.peak()).toBe(2);
17+
expect(reader.x).toBe(1); // cursor should not advance
18+
});
19+
20+
test('peek() returns current byte without advancing cursor', () => {
21+
const reader = new Reader();
22+
reader.reset(new Uint8Array([1, 2, 3, 4, 5]));
23+
24+
expect(reader.x).toBe(0);
25+
expect(reader.peek()).toBe(1);
26+
expect(reader.x).toBe(0); // cursor should not advance
27+
28+
reader.u8(); // advance cursor
29+
expect(reader.x).toBe(1);
30+
expect(reader.peek()).toBe(2);
31+
expect(reader.x).toBe(1); // cursor should not advance
32+
});
33+
34+
test('peak() and peek() return the same value', () => {
35+
const reader = new Reader();
36+
reader.reset(new Uint8Array([42, 100, 255]));
37+
38+
expect(reader.peak()).toBe(reader.peek());
39+
reader.u8(); // advance cursor
40+
expect(reader.peak()).toBe(reader.peek());
41+
reader.u8(); // advance cursor
42+
expect(reader.peak()).toBe(reader.peek());
43+
});
44+
});
45+
46+
describe('StreamingReader', () => {
47+
test('peak() returns current byte without advancing cursor', () => {
48+
const reader = new StreamingReader();
49+
reader.push(new Uint8Array([10, 20, 30]));
50+
51+
expect(reader.x).toBe(0);
52+
expect(reader.peak()).toBe(10);
53+
expect(reader.x).toBe(0); // cursor should not advance
54+
55+
reader.u8(); // advance cursor
56+
expect(reader.x).toBe(1);
57+
expect(reader.peak()).toBe(20);
58+
expect(reader.x).toBe(1); // cursor should not advance
59+
});
60+
61+
test('peek() returns current byte without advancing cursor', () => {
62+
const reader = new StreamingReader();
63+
reader.push(new Uint8Array([10, 20, 30]));
64+
65+
expect(reader.x).toBe(0);
66+
expect(reader.peek()).toBe(10);
67+
expect(reader.x).toBe(0); // cursor should not advance
68+
69+
reader.u8(); // advance cursor
70+
expect(reader.x).toBe(1);
71+
expect(reader.peek()).toBe(20);
72+
expect(reader.x).toBe(1); // cursor should not advance
73+
});
74+
75+
test('peak() and peek() return the same value', () => {
76+
const reader = new StreamingReader();
77+
reader.push(new Uint8Array([42, 100, 255]));
78+
79+
expect(reader.peak()).toBe(reader.peek());
80+
reader.u8(); // advance cursor
81+
expect(reader.peak()).toBe(reader.peek());
82+
reader.u8(); // advance cursor
83+
expect(reader.peak()).toBe(reader.peek());
84+
});
85+
});
86+
87+
describe('StreamingOctetReader', () => {
88+
test('peak() returns current byte without advancing cursor', () => {
89+
const reader = new StreamingOctetReader();
90+
reader.push(new Uint8Array([100, 200, 150]));
91+
92+
expect(reader.peak()).toBe(100);
93+
94+
reader.u8(); // advance cursor internally
95+
expect(reader.peak()).toBe(200);
96+
});
97+
98+
test('peek() returns current byte without advancing cursor', () => {
99+
const reader = new StreamingOctetReader();
100+
reader.push(new Uint8Array([100, 200, 150]));
101+
102+
expect(reader.peek()).toBe(100);
103+
104+
reader.u8(); // advance cursor internally
105+
expect(reader.peek()).toBe(200);
106+
});
107+
108+
test('peak() and peek() return the same value', () => {
109+
const reader = new StreamingOctetReader();
110+
reader.push(new Uint8Array([42, 100, 255]));
111+
112+
expect(reader.peak()).toBe(reader.peek());
113+
reader.u8(); // advance cursor
114+
expect(reader.peak()).toBe(reader.peek());
115+
reader.u8(); // advance cursor
116+
expect(reader.peak()).toBe(reader.peek());
117+
});
118+
});
119+
});

src/buffers/types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,12 @@ export interface IWriterGrowable {
7171

7272
export interface IReaderBase {
7373
/** Get current byte value without advancing the cursor. */
74+
peek(): number;
75+
76+
/**
77+
* Get current byte value without advancing the cursor.
78+
* @deprecated Use peek() instead.
79+
*/
7480
peak(): number;
7581

7682
/** Advance the cursor given number of octets. */

0 commit comments

Comments
 (0)