Skip to content

Commit 7fe8fae

Browse files
committed
2 parents 11c6899 + 5e3c5cb commit 7fe8fae

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+937
-829
lines changed

README.md

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# Byteform
22

3-
![GitHub branch check runs](https://img.shields.io/github/check-runs/theevenstarspace/byteform/main?style=flat)
4-
![npm package minimized gzipped size (scoped)](https://img.shields.io/bundlejs/size/%40evenstar/byteform?style=flat)
5-
![NPM Version](https://img.shields.io/npm/v/%40evenstar%2Fbyteform?style=flat)
3+
![GitHub branch check runs][checks]
4+
[![Build Size][build-size]][build-size-url]
5+
[![NPM Package][npm]][npm-url]
66

77
**Byteform** is a lightweight and versatile TypeScript library designed for encoding and decoding binary data. It provides an intuitive API to work with binary structures, making it an excellent choice for developers dealing with low-level data operations in both browser and Node.js environments.
88

@@ -70,12 +70,12 @@ const Player = new Struct({
7070
### Encode data
7171

7272
```typescript
73-
import { BinaryEncoder } from '@evenstar/byteform';
73+
import { ByteStreamWriter } from '@evenstar/byteform';
7474

75-
const encoder = BinaryEncoder.create(1024); // 1KB buffer
75+
const encoder = new ByteStreamWriter(1024); // 1KB buffer
7676

7777
// Encode a Player instance
78-
encoder.encode(Player, {
78+
encoder.writeSchema(Player, {
7979
name: 'Alice',
8080
level: 10,
8181
position: { x: 1.0, y: 2.0, z: 3.0 },
@@ -97,19 +97,25 @@ encoder.encode(Player, {
9797
* Get the encoded binary data
9898
* Send the buffer over the network, save it to a file, etc.
9999
*/
100-
const buffer = encoder.commit();
100+
const { buffer } = encoder.commit();
101101
```
102102

103103
### Decode data
104104

105105
```typescript
106-
import { BinaryDecoder } from '@evenstar/byteform';
106+
import { ByteStreamReader } from '@evenstar/byteform';
107107

108-
const decoder = BinaryDecoder.fromArrayBuffer(buffer);
109-
const player = decoder.decode(Player);
108+
const decoder = new ByteStreamReader(buffer);
109+
const player = decoder.readSchema(Player);
110110

111111
console.log(player);
112112
```
113113

114114
## Contributing
115115
Contributions are welcome! Please open an issue or submit a pull request to get involved.
116+
117+
[npm]: https://img.shields.io/npm/v/@evenstar/byteform?style=flat-square
118+
[npm-url]: https://www.npmjs.com/package/@evenstar/byteform
119+
[build-size]: https://flat.badgen.net/bundlephobia/minzip/@evenstar/byteform
120+
[build-size-url]: https://bundlephobia.com/result?p=@evenstar/byteform
121+
[checks]: https://img.shields.io/github/check-runs/theevenstarspace/byteform/main?style=flat-square

benchmark/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@evenstar/byteform-benchmark",
3-
"version": "0.9.2",
3+
"version": "1.0.0",
44
"description": "Byteform benchmark space",
55
"main": "src/index.ts",
66
"scripts": {
@@ -18,7 +18,7 @@
1818
"tsx": "^4.19.2"
1919
},
2020
"dependencies": {
21-
"@evenstar/byteform": "^0.9.2",
21+
"@evenstar/byteform": "link:../",
2222
"benny": "^3.7.1",
2323
"bson": "^6.10.0",
2424
"flatbuffers": "^24.3.25",

benchmark/results/player-decoding.json renamed to benchmark/results/byteform/player-decoding.json

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,37 @@
11
{
22
"name": "Player decoding",
3-
"date": "2024-11-29T22:51:54.323Z",
4-
"version": "0.9.2",
3+
"date": "2024-12-15T17:15:05.805Z",
4+
"version": "1.0.0",
55
"results": [
66
{
77
"name": "Byteform",
8-
"ops": 1911408,
9-
"margin": 0.27,
10-
"percentSlower": 21.49
8+
"ops": 1312033,
9+
"margin": 2.51,
10+
"percentSlower": 26.69
1111
},
1212
{
1313
"name": "JSON",
14-
"ops": 682279,
15-
"margin": 0.2,
16-
"percentSlower": 71.98
14+
"ops": 515914,
15+
"margin": 0.56,
16+
"percentSlower": 71.17
1717
},
1818
{
1919
"name": "Msgpack-lite",
20-
"ops": 182240,
21-
"margin": 0.33,
22-
"percentSlower": 92.51
20+
"ops": 136780,
21+
"margin": 0.4,
22+
"percentSlower": 92.36
2323
},
2424
{
2525
"name": "Flatbuffers",
26-
"ops": 2434659,
27-
"margin": 0.22,
26+
"ops": 1789599,
27+
"margin": 1.1,
2828
"percentSlower": 0
2929
},
3030
{
3131
"name": "BSON",
32-
"ops": 724156,
33-
"margin": 0.25,
34-
"percentSlower": 70.26
32+
"ops": 525847,
33+
"margin": 1.23,
34+
"percentSlower": 70.62
3535
}
3636
],
3737
"fastest": {
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
{
2+
"name": "Player encoding",
3+
"date": "2024-12-15T17:16:48.999Z",
4+
"version": "1.0.0",
5+
"results": [
6+
{
7+
"name": "Byteform",
8+
"ops": 814927,
9+
"margin": 0.64,
10+
"percentSlower": 0
11+
},
12+
{
13+
"name": "JSON",
14+
"ops": 705122,
15+
"margin": 0.53,
16+
"percentSlower": 13.47
17+
},
18+
{
19+
"name": "Msgpack-lite",
20+
"ops": 281329,
21+
"margin": 0.89,
22+
"percentSlower": 65.48
23+
},
24+
{
25+
"name": "Flatbuffers",
26+
"ops": 705143,
27+
"margin": 0.42,
28+
"percentSlower": 13.47
29+
},
30+
{
31+
"name": "BSON",
32+
"ops": 151379,
33+
"margin": 2.01,
34+
"percentSlower": 81.42
35+
}
36+
],
37+
"fastest": {
38+
"name": "Byteform",
39+
"index": 0
40+
},
41+
"slowest": {
42+
"name": "BSON",
43+
"index": 4
44+
}
45+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"name": "Buffer Slice",
3+
"date": "2024-12-15T17:15:16.599Z",
4+
"version": "1.0.0",
5+
"results": [
6+
{
7+
"name": "ArrayBuffer",
8+
"ops": 1986177,
9+
"margin": 2.37,
10+
"percentSlower": 38.99
11+
},
12+
{
13+
"name": "Uint8Array",
14+
"ops": 3255680,
15+
"margin": 2.79,
16+
"percentSlower": 0
17+
}
18+
],
19+
"fastest": {
20+
"name": "Uint8Array",
21+
"index": 1
22+
},
23+
"slowest": {
24+
"name": "ArrayBuffer",
25+
"index": 0
26+
}
27+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"name": "String Decoding",
3+
"date": "2024-12-15T17:15:48.943Z",
4+
"version": "1.0.0",
5+
"results": [
6+
{
7+
"name": "TextDecoder",
8+
"ops": 9980192,
9+
"margin": 0.84,
10+
"percentSlower": 0
11+
},
12+
{
13+
"name": "Manual utf8",
14+
"ops": 4057171,
15+
"margin": 1.17,
16+
"percentSlower": 59.35
17+
}
18+
],
19+
"fastest": {
20+
"name": "TextDecoder",
21+
"index": 0
22+
},
23+
"slowest": {
24+
"name": "Manual utf8",
25+
"index": 1
26+
}
27+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{
2+
"name": "String Encoding",
3+
"date": "2024-12-15T17:15:38.233Z",
4+
"version": "1.0.0",
5+
"results": [
6+
{
7+
"name": "TextEncoder Direct",
8+
"ops": 15270747,
9+
"margin": 1.71,
10+
"percentSlower": 0
11+
},
12+
{
13+
"name": "TextEncoder Indirect (Set)",
14+
"ops": 2691057,
15+
"margin": 1.24,
16+
"percentSlower": 82.38
17+
},
18+
{
19+
"name": "TextEncoder Indirect (Manual)",
20+
"ops": 2117128,
21+
"margin": 1.29,
22+
"percentSlower": 86.14
23+
},
24+
{
25+
"name": "Manual utf8",
26+
"ops": 11836180,
27+
"margin": 0.91,
28+
"percentSlower": 22.49
29+
}
30+
],
31+
"fastest": {
32+
"name": "TextEncoder Direct",
33+
"index": 0
34+
},
35+
"slowest": {
36+
"name": "TextEncoder Indirect (Manual)",
37+
"index": 2
38+
}
39+
}

benchmark/results/player-encoding.json

Lines changed: 0 additions & 45 deletions
This file was deleted.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)