3.1.43 • Published 5 months ago

@thi.ng/leb128 v3.1.43

Weekly downloads
67
License
Apache-2.0
Repository
github
Last release
5 months 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.41

6 months ago

3.1.43

5 months ago

3.1.42

5 months ago

3.1.40

6 months ago

3.1.38

6 months ago

3.1.39

6 months ago

3.1.36

7 months ago

3.1.35

7 months ago

3.1.37

6 months ago

3.1.34

7 months ago

3.1.33

7 months ago

3.1.32

7 months ago

3.1.31

7 months ago

3.1.30

8 months ago

3.1.29

8 months ago

3.1.28

8 months ago

3.1.27

9 months ago

3.1.25

10 months ago

3.1.26

10 months ago

3.1.24

10 months ago

3.1.23

10 months ago

3.1.22

10 months ago

3.1.7

1 year ago

3.1.6

1 year ago

3.1.5

1 year ago

3.1.4

1 year ago

3.1.9

1 year ago

3.1.8

1 year ago

3.1.12

1 year ago

3.1.11

1 year ago

3.1.14

1 year ago

3.1.13

1 year ago

3.1.16

12 months ago

3.1.15

12 months ago

3.1.18

11 months ago

3.1.17

11 months ago

3.1.10

1 year ago

3.1.21

11 months ago

3.1.20

11 months ago

3.1.19

11 months ago

3.1.3

1 year ago

3.1.2

1 year ago

3.1.1

1 year ago

3.1.0

1 year ago

3.0.88

1 year ago

3.0.87

1 year ago

3.0.86

1 year ago

3.0.85

1 year ago

3.0.84

1 year ago

3.0.83

1 year ago

3.0.82

1 year ago

3.0.81

1 year ago

3.0.80

1 year ago

3.0.79

1 year ago

3.0.78

1 year ago

3.0.77

1 year ago

3.0.76

1 year ago

3.0.75

1 year ago

3.0.74

1 year ago

3.0.73

1 year ago

3.0.70

2 years ago

3.0.71

1 year ago

3.0.72

1 year ago

3.0.68

2 years ago

3.0.69

2 years ago

3.0.67

2 years ago

3.0.66

2 years ago

3.0.65

2 years ago

3.0.63

2 years ago

3.0.64

2 years ago

3.0.62

2 years ago

3.0.60

2 years ago

3.0.59

2 years ago

3.0.57

2 years ago

3.0.58

2 years ago

3.0.56

2 years ago

3.0.54

2 years ago

3.0.55

2 years ago

3.0.53

2 years ago

3.0.52

2 years ago

3.0.45

2 years ago

3.0.46

2 years ago

3.0.43

2 years ago

3.0.44

2 years ago

3.0.49

2 years ago

3.0.48

2 years ago

3.0.41

2 years ago

3.0.42

2 years ago

3.0.40

2 years ago

3.0.50

2 years ago

3.0.51

2 years ago

3.0.23

2 years ago

3.0.22

2 years ago

3.0.27

2 years ago

3.0.28

2 years ago

3.0.25

2 years ago

3.0.26

2 years ago

3.0.34

2 years ago

3.0.35

2 years ago

3.0.32

2 years ago

3.0.33

2 years ago

3.0.38

2 years ago

3.0.39

2 years ago

3.0.36

2 years ago

3.0.37

2 years ago

3.0.30

2 years ago

3.0.31

2 years ago

3.0.29

2 years ago

3.0.21

2 years ago

3.0.20

2 years ago

3.0.19

2 years ago

3.0.17

2 years ago

3.0.18

2 years ago

3.0.12

2 years ago

3.0.13

2 years ago

3.0.11

2 years ago

3.0.16

2 years ago

3.0.14

2 years ago

3.0.15

2 years ago

3.0.10

2 years ago

3.0.9

3 years ago

3.0.8

3 years ago

3.0.6

3 years ago

3.0.4

3 years ago

3.0.3

3 years ago

3.0.2

3 years ago

3.0.1

3 years ago

3.0.5

3 years ago

2.1.27

3 years ago

2.1.28

3 years ago

2.1.25

3 years ago

2.1.26

3 years ago

2.1.23

3 years ago

2.1.24

3 years ago

2.1.21

3 years ago

2.1.22

3 years ago

2.1.29

3 years ago

2.1.30

3 years ago

3.0.0

3 years ago

2.1.19

3 years ago

2.1.20

3 years ago

2.1.18

3 years ago

2.1.16

3 years ago

2.1.17

3 years ago

2.1.14

3 years ago

2.1.15

3 years ago

2.1.12

3 years ago

2.1.13

3 years ago

2.1.11

3 years ago

2.1.9

3 years ago

2.1.10

3 years ago

2.1.8

3 years ago

2.1.7

3 years ago

2.1.6

3 years ago

2.1.5

3 years ago

2.0.8

4 years ago

2.1.2

4 years ago

2.1.1

4 years ago

2.1.4

4 years ago

2.1.3

4 years ago

2.1.0

4 years ago

2.0.7

4 years ago

2.0.4

4 years ago

2.0.6

4 years ago

2.0.3

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.0.69

4 years ago

1.0.68

4 years ago

1.0.66

4 years ago

1.0.67

4 years ago

1.0.65

4 years ago

1.0.64

4 years ago

1.0.63

4 years ago

1.0.62

4 years ago

1.0.61

4 years ago

1.0.60

4 years ago

1.0.59

4 years ago

1.0.58

4 years ago

1.0.57

4 years ago

1.0.56

4 years ago

1.0.55

4 years ago

1.0.54

4 years ago

1.0.53

4 years ago

1.0.52

4 years ago

1.0.51

4 years ago

1.0.50

4 years ago

1.0.49

4 years ago

1.0.45

4 years ago

1.0.44

5 years ago

1.0.43

5 years ago

1.0.42

5 years ago

1.0.41

5 years ago

1.0.40

5 years ago

1.0.39

5 years ago

1.0.38

5 years ago

1.0.37

5 years ago

1.0.36

5 years ago

1.0.35

5 years ago

1.0.34

5 years ago

1.0.33

5 years ago

1.0.32

5 years ago

1.0.31

5 years ago

1.0.30

5 years ago

1.0.29

5 years ago

1.0.28

5 years ago

1.0.27

5 years ago

1.0.26

5 years ago

1.0.25

5 years ago

1.0.24

5 years ago

1.0.23

5 years ago

1.0.22

5 years ago

1.0.21

5 years ago

1.0.20

5 years ago

1.0.19

5 years ago

1.0.18

5 years ago

1.0.17

5 years ago

1.0.16

5 years ago

1.0.15

5 years ago

1.0.14

5 years ago

1.0.13

5 years ago

1.0.12

5 years ago

1.0.11

5 years ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago

0.1.5

6 years ago

0.1.4

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago