3.1.2 • Published 9 days ago

@thi.ng/leb128 v3.1.2

Weekly downloads
67
License
Apache-2.0
Repository
github
Last release
9 days ago

leb128

npm version npm downloads Twitter Follow

This project is part of the @thi.ng/umbrella monorepo.

About

WASM based Little Endian Base 128 varint encoding / decoding, supporting (u)int64 range (however for JS purposes only up to MAX_SAFE_INTEGER).

The WASM binary (~860 bytes) is embedded as base64 string in the TypeScript source to make it easier to use in both browser & node environments. The source code of the actual implementation (written in Zig) is included in /src/leb128.zig

All public functions throw an error if the WASM module could not be initialized.

References:

Status

STABLE - used in production

Search or submit any issues for this package

Installation

yarn add @thi.ng/leb128

ES module import:

<script type="module" src="https://cdn.skypack.dev/@thi.ng/leb128"></script>

Skypack documentation

For Node.js REPL:

# with flag only for < v16
node --experimental-repl-await

> const leb128 = await import("@thi.ng/leb128");

Package sizes (gzipped, pre-treeshake): ESM: 1.09 KB

Dependencies

API

Generated API docs

import * as leb from "@thi.ng/leb128";

// if WASM is unavailable, the encode/decode functions will throw an error
enc = leb.encodeULEB128(Number.MAX_SAFE_INTEGER);
// Uint8Array [ 255, 255, 255, 255, 255, 255, 255, 15 ]

// decoding returns tuple of [value, bytes consumed]
leb.decodeULEB128(enc);
// [ 9007199254740991, 8 ]

// encode signed int
enc = leb.encodeSLEB128(Number.MIN_SAFE_INTEGER)
// Uint8Array [ 129, 128, 128, 128, 128, 128, 128, 112 ]

leb.decodeSLEB128(enc)
// [ -9007199254740991, 8 ]

Building the binary

Requirements:

# install required tools
brew install zig binaryen

# first run native tests
zig test packages/leb128/src/leb128.zig
# Test 1/2 min safe integer...OK
# Test 2/2 max safe integer...OK
# All tests passed.

# build binary and regenerate src/binary.ts
yarn build:binary

# test TS/JS version
yarn test

Authors

Karsten Schmidt

If this project contributes to an academic publication, please cite it as:

@misc{thing-leb128,
  title = "@thi.ng/leb128",
  author = "Karsten Schmidt",
  note = "https://thi.ng/leb128",
  year = 2019
}

License

© 2019 - 2021 Karsten Schmidt // Apache Software License 2.0

3.1.2

9 days ago

3.1.1

11 days ago

3.1.0

14 days ago

3.0.88

21 days ago

3.0.87

23 days ago

3.0.86

26 days ago

3.0.85

1 month ago

3.0.84

1 month ago

3.0.83

1 month ago

3.0.82

1 month ago

3.0.81

1 month ago

3.0.80

2 months ago

3.0.79

2 months ago

3.0.78

2 months ago

3.0.77

2 months ago

3.0.76

2 months ago

3.0.75

2 months ago

3.0.74

2 months ago

3.0.73

2 months ago

3.0.70

2 months ago

3.0.71

2 months ago

3.0.72

2 months ago

3.0.68

2 months ago

3.0.69

2 months ago

3.0.67

3 months ago

3.0.66

3 months ago

3.0.65

3 months ago

3.0.63

3 months ago

3.0.64

3 months ago

3.0.62

3 months ago

3.0.60

3 months ago

3.0.59

3 months ago

3.0.57

4 months ago

3.0.58

4 months ago

3.0.56

5 months ago

3.0.54

5 months ago

3.0.55

5 months ago

3.0.53

5 months ago

3.0.52

5 months ago

3.0.45

6 months ago

3.0.46

6 months ago

3.0.43

6 months ago

3.0.44

6 months ago

3.0.49

6 months ago

3.0.48

6 months ago

3.0.41

6 months ago

3.0.42

6 months ago

3.0.40

7 months ago

3.0.50

5 months ago

3.0.51

5 months ago

3.0.23

9 months ago

3.0.22

10 months ago

3.0.27

9 months ago

3.0.28

9 months ago

3.0.25

9 months ago

3.0.26

9 months ago

3.0.34

8 months ago

3.0.35

8 months ago

3.0.32

8 months ago

3.0.33

8 months ago

3.0.38

7 months ago

3.0.39

7 months ago

3.0.36

8 months ago

3.0.37

7 months ago

3.0.30

8 months ago

3.0.31

8 months ago

3.0.29

9 months ago

3.0.21

10 months ago

3.0.20

11 months ago

3.0.19

12 months ago

3.0.17

1 year ago

3.0.18

1 year ago

3.0.12

1 year ago

3.0.13

1 year ago

3.0.11

1 year ago

3.0.16

1 year ago

3.0.14

1 year ago

3.0.15

1 year ago

3.0.10

1 year ago

3.0.9

1 year ago

3.0.8

1 year ago

3.0.6

1 year ago

3.0.4

1 year ago

3.0.3

1 year ago

3.0.2

1 year ago

3.0.1

1 year ago

3.0.5

1 year ago

2.1.27

2 years ago

2.1.28

1 year ago

2.1.25

2 years ago

2.1.26

2 years ago

2.1.23

2 years ago

2.1.24

2 years ago

2.1.21

2 years ago

2.1.22

2 years ago

2.1.29

1 year ago

2.1.30

1 year ago

3.0.0

1 year ago

2.1.19

2 years ago

2.1.20

2 years ago

2.1.18

2 years ago

2.1.16

2 years ago

2.1.17

2 years ago

2.1.14

2 years ago

2.1.15

2 years ago

2.1.12

2 years ago

2.1.13

2 years ago

2.1.11

2 years ago

2.1.9

2 years ago

2.1.10

2 years ago

2.1.8

2 years ago

2.1.7

2 years ago

2.1.6

2 years ago

2.1.5

2 years ago

2.0.8

2 years ago

2.1.2

2 years ago

2.1.1

2 years ago

2.1.4

2 years ago

2.1.3

2 years ago

2.1.0

2 years ago

2.0.7

3 years ago

2.0.4

3 years ago

2.0.6

3 years ago

2.0.3

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

1.0.69

3 years ago

1.0.68

3 years ago

1.0.66

3 years ago

1.0.67

3 years ago

1.0.65

3 years ago

1.0.64

3 years ago

1.0.63

3 years ago

1.0.62

3 years ago

1.0.61

3 years ago

1.0.60

3 years ago

1.0.59

3 years ago

1.0.58

3 years ago

1.0.57

3 years ago

1.0.56

3 years ago

1.0.55

3 years ago

1.0.54

3 years ago

1.0.53

3 years ago

1.0.52

3 years ago

1.0.51

3 years ago

1.0.50

3 years ago

1.0.49

3 years ago

1.0.45

3 years ago

1.0.44

3 years ago

1.0.43

3 years ago

1.0.42

3 years ago

1.0.41

3 years ago

1.0.40

3 years ago

1.0.39

3 years ago

1.0.38

3 years ago

1.0.37

3 years ago

1.0.36

3 years ago

1.0.35

3 years ago

1.0.34

4 years ago

1.0.33

4 years ago

1.0.32

4 years ago

1.0.31

4 years ago

1.0.30

4 years ago

1.0.29

4 years ago

1.0.28

4 years ago

1.0.27

4 years ago

1.0.26

4 years ago

1.0.25

4 years ago

1.0.24

4 years ago

1.0.23

4 years ago

1.0.22

4 years ago

1.0.21

4 years ago

1.0.20

4 years ago

1.0.19

4 years ago

1.0.18

4 years ago

1.0.17

4 years ago

1.0.16

4 years ago

1.0.15

4 years ago

1.0.14

4 years ago

1.0.13

4 years ago

1.0.12

4 years ago

1.0.11

4 years ago

1.0.10

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

0.1.5

5 years ago

0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago