protons 2.0.3 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +3 -20
- package/README.md +31 -124
- package/dist/bin/protons.js +34 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +206 -0
- package/dist/src/index.js.map +1 -0
- package/package.json +149 -71
- package/src/index.ts +282 -0
- package/.aegir.js +0 -11
- package/.github/ISSUE_TEMPLATE/config.yml +0 -8
- package/.github/ISSUE_TEMPLATE/open_an_issue.md +0 -19
- package/.github/config.yml +0 -68
- package/.github/workflows/main.yml +0 -79
- package/CHANGELOG.md +0 -93
- package/bench/bench.proto.js +0 -30
- package/bench/index.js +0 -57
- package/example.js +0 -19
- package/example.proto +0 -4
- package/src/compile/decode.js +0 -330
- package/src/compile/encode.js +0 -133
- package/src/compile/encoding-length.js +0 -102
- package/src/compile/encodings/bool.js +0 -21
- package/src/compile/encodings/bytes.js +0 -42
- package/src/compile/encodings/double.js +0 -21
- package/src/compile/encodings/encoder.js +0 -14
- package/src/compile/encodings/fixed32.js +0 -21
- package/src/compile/encodings/fixed64.js +0 -25
- package/src/compile/encodings/float.js +0 -21
- package/src/compile/encodings/index.js +0 -22
- package/src/compile/encodings/int32.js +0 -22
- package/src/compile/encodings/int64.js +0 -49
- package/src/compile/encodings/sfixed32.js +0 -21
- package/src/compile/encodings/sint64.js +0 -19
- package/src/compile/encodings/string.js +0 -41
- package/src/compile/encodings/varint.js +0 -19
- package/src/compile/index.js +0 -165
- package/src/compile/utils.js +0 -5
- package/src/index.js +0 -39
- package/test/basic.spec.js +0 -109
- package/test/booleans.spec.js +0 -37
- package/test/bytes.spec.js +0 -36
- package/test/corrupted.spec.js +0 -50
- package/test/custom-types.spec.js +0 -55
- package/test/defaults.spec.js +0 -44
- package/test/enums.spec.js +0 -21
- package/test/float.spec.js +0 -28
- package/test/integers.spec.js +0 -72
- package/test/map.spec.js +0 -35
- package/test/nan.spec.js +0 -28
- package/test/nested.spec.js +0 -70
- package/test/notpacked.spec.js +0 -33
- package/test/oneof.spec.js +0 -59
- package/test/optional.spec.js +0 -65
- package/test/packed.spec.js +0 -61
- package/test/repeated.spec.js +0 -74
- package/test/strings.spec.js +0 -45
- package/test/test.proto.js +0 -134
- package/test/utf-8.spec.js +0 -21
package/src/compile/encode.js
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
var defined = require('./utils').defined
|
|
4
|
-
var varint = require('varint')
|
|
5
|
-
|
|
6
|
-
function compileEncode (m, resolve, enc, oneofs, encodingLength) {
|
|
7
|
-
const oneofsKeys = Object.keys(oneofs)
|
|
8
|
-
const encLength = enc.length
|
|
9
|
-
const ints = {}
|
|
10
|
-
for (let i = 0; i < encLength; i++) {
|
|
11
|
-
ints[i] = {
|
|
12
|
-
p: varint.encode(m.fields[i].tag << 3 | 2),
|
|
13
|
-
h: varint.encode(m.fields[i].tag << 3 | enc[i].type)
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const field = m.fields[i]
|
|
17
|
-
m.fields[i].packed = field.repeated && field.options && field.options.packed && field.options.packed !== 'false'
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
function encodeField (buf, view, offset, h, e, packed, innerVal) {
|
|
21
|
-
let j = 0
|
|
22
|
-
if (!packed) {
|
|
23
|
-
for (j = 0; j < h.length; j++) {
|
|
24
|
-
buf[offset++] = h[j]
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
if (e.message) {
|
|
29
|
-
varint.encode(e.encodingLength(innerVal), buf, offset)
|
|
30
|
-
offset += varint.encode.bytes
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
e.encode(innerVal, buf, view, offset)
|
|
34
|
-
|
|
35
|
-
return offset + e.encode.bytes
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
return function encode (obj, buf, view, offset = 0) {
|
|
39
|
-
if (buf == null) {
|
|
40
|
-
buf = new Uint8Array(encodingLength(obj))
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
if (view == null) {
|
|
44
|
-
view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength)
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const oldOffset = offset
|
|
48
|
-
const objKeys = Object.keys(obj)
|
|
49
|
-
let i = 0
|
|
50
|
-
|
|
51
|
-
// oneof checks
|
|
52
|
-
|
|
53
|
-
let match = false
|
|
54
|
-
for (i = 0; i < oneofsKeys.length; i++) {
|
|
55
|
-
const name = oneofsKeys[i]
|
|
56
|
-
const prop = oneofs[i]
|
|
57
|
-
if (objKeys.indexOf(prop) > -1) {
|
|
58
|
-
if (match) {
|
|
59
|
-
throw new Error('only one of the properties defined in oneof ' + name + ' can be set')
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
match = true
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
for (i = 0; i < encLength; i++) {
|
|
67
|
-
const e = enc[i]
|
|
68
|
-
const field = m.fields[i] // was f
|
|
69
|
-
let val = obj[field.name]
|
|
70
|
-
let j = 0
|
|
71
|
-
|
|
72
|
-
if (!defined(val)) {
|
|
73
|
-
if (field.required) {
|
|
74
|
-
throw new Error(field.name + ' is required')
|
|
75
|
-
}
|
|
76
|
-
continue
|
|
77
|
-
}
|
|
78
|
-
const p = ints[i].p
|
|
79
|
-
const h = ints[i].h
|
|
80
|
-
|
|
81
|
-
const packed = field.packed
|
|
82
|
-
|
|
83
|
-
if (field.map) {
|
|
84
|
-
const tmp = Object.keys(val)
|
|
85
|
-
for (j = 0; j < tmp.length; j++) {
|
|
86
|
-
tmp[j] = {
|
|
87
|
-
key: tmp[j],
|
|
88
|
-
value: val[tmp[j]]
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
val = tmp
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
if (packed) {
|
|
95
|
-
let packedLen = 0
|
|
96
|
-
for (j = 0; j < val.length; j++) {
|
|
97
|
-
if (!Object.prototype.hasOwnProperty.call(val, j)) {
|
|
98
|
-
continue
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
packedLen += e.encodingLength(val[j])
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (packedLen) {
|
|
105
|
-
for (j = 0; j < h.length; j++) {
|
|
106
|
-
buf[offset++] = p[j]
|
|
107
|
-
}
|
|
108
|
-
varint.encode(packedLen, buf, offset)
|
|
109
|
-
offset += varint.encode.bytes
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
if (field.repeated) {
|
|
114
|
-
let innerVal
|
|
115
|
-
for (j = 0; j < val.length; j++) {
|
|
116
|
-
innerVal = val[j]
|
|
117
|
-
if (!defined(innerVal)) {
|
|
118
|
-
continue
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
offset = encodeField(buf, view, offset, h, e, packed, innerVal)
|
|
122
|
-
}
|
|
123
|
-
} else {
|
|
124
|
-
offset = encodeField(buf, view, offset, h, e, packed, val)
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
encode.bytes = offset - oldOffset
|
|
129
|
-
return buf
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
module.exports = compileEncode
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
var defined = require('./utils').defined
|
|
4
|
-
var varint = require('varint')
|
|
5
|
-
|
|
6
|
-
function compileEncodingLength (m, enc, oneofs) {
|
|
7
|
-
const oneofsKeys = Object.keys(oneofs)
|
|
8
|
-
const encLength = enc.length
|
|
9
|
-
|
|
10
|
-
const hls = new Array(encLength)
|
|
11
|
-
|
|
12
|
-
for (let i = 0; i < m.fields.length; i++) {
|
|
13
|
-
hls[i] = varint.encodingLength(m.fields[i].tag << 3 | enc[i].type)
|
|
14
|
-
|
|
15
|
-
const field = m.fields[i]
|
|
16
|
-
m.fields[i].packed = field.repeated && field.options && field.options.packed && field.options.packed !== 'false'
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return function encodingLength (obj) {
|
|
20
|
-
let length = 0
|
|
21
|
-
let i = 0
|
|
22
|
-
let j = 0
|
|
23
|
-
|
|
24
|
-
for (i = 0; i < oneofsKeys.length; i++) {
|
|
25
|
-
const name = oneofsKeys[i]
|
|
26
|
-
const props = oneofs[name]
|
|
27
|
-
|
|
28
|
-
let match = false
|
|
29
|
-
for (j = 0; j < props.length; j++) {
|
|
30
|
-
if (defined(obj[props[j]])) {
|
|
31
|
-
if (match) {
|
|
32
|
-
throw new Error('only one of the properties defined in oneof ' + name + ' can be set')
|
|
33
|
-
}
|
|
34
|
-
match = true
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
for (i = 0; i < encLength; i++) {
|
|
40
|
-
const e = enc[i]
|
|
41
|
-
const field = m.fields[i]
|
|
42
|
-
let val = obj[field.name]
|
|
43
|
-
const hl = hls[i]
|
|
44
|
-
let len
|
|
45
|
-
|
|
46
|
-
if (!defined(val)) {
|
|
47
|
-
if (field.required) {
|
|
48
|
-
throw new Error(field.name + ' is required')
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
continue
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
if (field.map) {
|
|
55
|
-
const tmp = Object.keys(val)
|
|
56
|
-
for (j = 0; j < tmp.length; j++) {
|
|
57
|
-
tmp[j] = {
|
|
58
|
-
key: tmp[j],
|
|
59
|
-
value: val[tmp[j]]
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
val = tmp
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
if (field.packed) {
|
|
67
|
-
let packedLen = 0
|
|
68
|
-
for (j = 0; j < val.length; j++) {
|
|
69
|
-
if (!defined(val[j])) {
|
|
70
|
-
continue
|
|
71
|
-
}
|
|
72
|
-
len = e.encodingLength(val[j])
|
|
73
|
-
packedLen += len
|
|
74
|
-
|
|
75
|
-
if (e.message) {
|
|
76
|
-
packedLen += varint.encodingLength(len)
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
if (packedLen) {
|
|
81
|
-
length += hl + packedLen + varint.encodingLength(packedLen)
|
|
82
|
-
}
|
|
83
|
-
} else if (field.repeated) {
|
|
84
|
-
for (j = 0; j < val.length; j++) {
|
|
85
|
-
if (!defined(val[j])) {
|
|
86
|
-
continue
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
len = e.encodingLength(val[j])
|
|
90
|
-
length += hl + len + (e.message ? varint.encodingLength(len) : 0)
|
|
91
|
-
}
|
|
92
|
-
} else {
|
|
93
|
-
len = e.encodingLength(val)
|
|
94
|
-
length += hl + len + (e.message ? varint.encodingLength(len) : 0)
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
return length
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
module.exports = compileEncodingLength
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const encoder = require('./encoder')
|
|
4
|
-
|
|
5
|
-
function boolEncodingLength () {
|
|
6
|
-
return 1
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
function boolEncode (value, buffer, dataView, offset) {
|
|
10
|
-
buffer[offset] = value ? 1 : 0
|
|
11
|
-
boolEncode.bytes = 1
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function boolDecode (buffer, dataView, offset) {
|
|
15
|
-
const bool = buffer[offset] > 0
|
|
16
|
-
boolDecode.bytes = 1
|
|
17
|
-
|
|
18
|
-
return bool
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
module.exports = encoder(0, boolEncode, boolDecode, boolEncodingLength)
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const varint = require('varint')
|
|
4
|
-
const encoder = require('./encoder')
|
|
5
|
-
|
|
6
|
-
function bytesBufferLength (val) {
|
|
7
|
-
return val.byteLength
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
function bytesEncodingLength (val) {
|
|
11
|
-
const len = bytesBufferLength(val)
|
|
12
|
-
return varint.encodingLength(len) + len
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
function bytesEncode (val, buffer, dataView, offset) {
|
|
16
|
-
const oldOffset = offset
|
|
17
|
-
const len = bytesBufferLength(val)
|
|
18
|
-
|
|
19
|
-
varint.encode(len, buffer, offset)
|
|
20
|
-
offset += varint.encode.bytes
|
|
21
|
-
|
|
22
|
-
buffer.set(val, offset)
|
|
23
|
-
offset += len
|
|
24
|
-
|
|
25
|
-
bytesEncode.bytes = offset - oldOffset
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
function bytesDecode (buffer, dataView, offset) {
|
|
29
|
-
const oldOffset = offset
|
|
30
|
-
|
|
31
|
-
const len = varint.decode(buffer, offset)
|
|
32
|
-
offset += varint.decode.bytes
|
|
33
|
-
|
|
34
|
-
const val = buffer.slice(offset, offset + len)
|
|
35
|
-
offset += val.length
|
|
36
|
-
|
|
37
|
-
bytesDecode.bytes = offset - oldOffset
|
|
38
|
-
|
|
39
|
-
return val
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
module.exports = encoder(2, bytesEncode, bytesDecode, bytesEncodingLength)
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const encoder = require('./encoder')
|
|
4
|
-
|
|
5
|
-
function doubleEncodingLength () {
|
|
6
|
-
return 8
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
function doubleEncode (val, buffer, dataView, offset) {
|
|
10
|
-
dataView.setFloat64(offset, val, true)
|
|
11
|
-
doubleEncode.bytes = 8
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function doubleDecode (buffer, dataView, offset) {
|
|
15
|
-
const val = dataView.getFloat64(offset, true)
|
|
16
|
-
doubleDecode.bytes = 8
|
|
17
|
-
|
|
18
|
-
return val
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
module.exports = encoder(1, doubleEncode, doubleDecode, doubleEncodingLength)
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const encoder = require('./encoder')
|
|
4
|
-
|
|
5
|
-
function fixed32EncodingLength (val) {
|
|
6
|
-
return 4
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
function fixed32Encode (val, buffer, dataView, offset) {
|
|
10
|
-
dataView.setUint32(offset, val, true)
|
|
11
|
-
fixed32Encode.bytes = 4
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function fixed32Decode (buffer, dataView, offset) {
|
|
15
|
-
const val = dataView.getUint32(offset, true)
|
|
16
|
-
fixed32Decode.bytes = 4
|
|
17
|
-
|
|
18
|
-
return val
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
module.exports = encoder(5, fixed32Encode, fixed32Decode, fixed32EncodingLength)
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const encoder = require('./encoder')
|
|
4
|
-
|
|
5
|
-
function fixed64EncodingLength () {
|
|
6
|
-
return 8
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
function fixed64Encode (val, buffer, dataView, offset) {
|
|
10
|
-
for (const byte of val) {
|
|
11
|
-
buffer[offset] = byte
|
|
12
|
-
offset++
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
fixed64Encode.bytes = 8
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function fixed64Decode (buffer, dataView, offset) {
|
|
19
|
-
const val = buffer.slice(offset, offset + 8)
|
|
20
|
-
fixed64Decode.bytes = 8
|
|
21
|
-
|
|
22
|
-
return val
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
module.exports = encoder(1, fixed64Encode, fixed64Decode, fixed64EncodingLength)
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const encoder = require('./encoder')
|
|
4
|
-
|
|
5
|
-
function floatEncodingLength () {
|
|
6
|
-
return 4
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
function floatEncode (val, buffer, dataView, offset) {
|
|
10
|
-
dataView.setFloat32(offset, val, true)
|
|
11
|
-
floatEncode.bytes = 4
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function floatDecode (buffer, dataView, offset) {
|
|
15
|
-
const val = dataView.getFloat32(offset, true)
|
|
16
|
-
floatDecode.bytes = 4
|
|
17
|
-
|
|
18
|
-
return val
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
module.exports = encoder(5, floatEncode, floatDecode, floatEncodingLength)
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
exports.make = require('./encoder')
|
|
4
|
-
exports.bytes = require('./bytes')
|
|
5
|
-
exports.string = require('./string')
|
|
6
|
-
exports.bool = require('./bool')
|
|
7
|
-
exports.int32 = require('./int32')
|
|
8
|
-
exports.int64 = require('./int64')
|
|
9
|
-
exports.sint32 =
|
|
10
|
-
exports.sint64 = require('./sint64')
|
|
11
|
-
exports.uint32 =
|
|
12
|
-
exports.uint64 =
|
|
13
|
-
exports.enum =
|
|
14
|
-
exports.varint = require('./varint')
|
|
15
|
-
|
|
16
|
-
// we cannot represent these in javascript so we just use buffers
|
|
17
|
-
exports.fixed64 =
|
|
18
|
-
exports.sfixed64 = require('./fixed64')
|
|
19
|
-
exports.double = require('./double')
|
|
20
|
-
exports.fixed32 = require('./fixed32')
|
|
21
|
-
exports.sfixed32 = require('./sfixed32')
|
|
22
|
-
exports.float = require('./float')
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const varint = require('varint')
|
|
4
|
-
const encoder = require('./encoder')
|
|
5
|
-
|
|
6
|
-
function in32Encode (val, buffer, dataView, offset) {
|
|
7
|
-
varint.encode(val < 0 ? val + 4294967296 : val, buffer, offset)
|
|
8
|
-
in32Encode.bytes = varint.encode.bytes
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
function int32Decode (buffer, dataView, offset) {
|
|
12
|
-
const val = varint.decode(buffer, offset)
|
|
13
|
-
int32Decode.bytes = varint.decode.bytes
|
|
14
|
-
|
|
15
|
-
return val > 2147483647 ? val - 4294967296 : val
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function int32EncodingLength (val) {
|
|
19
|
-
return varint.encodingLength(val < 0 ? val + 4294967296 : val)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
module.exports = encoder(0, in32Encode, int32Decode, int32EncodingLength)
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const varint = require('varint')
|
|
4
|
-
const encoder = require('./encoder')
|
|
5
|
-
|
|
6
|
-
function int64Encode (val, buffer, dataView, offset) {
|
|
7
|
-
if (val < 0) {
|
|
8
|
-
const last = offset + 9
|
|
9
|
-
varint.encode(val * -1, buffer, offset)
|
|
10
|
-
|
|
11
|
-
offset += varint.encode.bytes - 1
|
|
12
|
-
buffer[offset] = buffer[offset] | 0x80
|
|
13
|
-
|
|
14
|
-
while (offset < last - 1) {
|
|
15
|
-
offset++
|
|
16
|
-
buffer[offset] = 0xff
|
|
17
|
-
}
|
|
18
|
-
buffer[last] = 0x01
|
|
19
|
-
|
|
20
|
-
int64Encode.bytes = 10
|
|
21
|
-
} else {
|
|
22
|
-
varint.encode(val, buffer, offset)
|
|
23
|
-
int64Encode.bytes = varint.encode.bytes
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function int64Decode (buffer, dataView, offset) {
|
|
28
|
-
let val = varint.decode(buffer, offset)
|
|
29
|
-
|
|
30
|
-
if (val >= Math.pow(2, 63)) {
|
|
31
|
-
let limit = 9
|
|
32
|
-
while (buffer[offset + limit - 1] === 0xff) limit--
|
|
33
|
-
limit = limit || 9
|
|
34
|
-
const subset = buffer.subarray(offset, offset + limit)
|
|
35
|
-
subset[limit - 1] = subset[limit - 1] & 0x7f
|
|
36
|
-
val = -1 * varint.decode(subset, 0)
|
|
37
|
-
int64Decode.bytes = 10
|
|
38
|
-
} else {
|
|
39
|
-
int64Decode.bytes = varint.decode.bytes
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return val
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function int64EncodingLength (val) {
|
|
46
|
-
return val < 0 ? 10 : varint.encodingLength(val)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
module.exports = encoder(0, int64Encode, int64Decode, int64EncodingLength)
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const encoder = require('./encoder')
|
|
4
|
-
|
|
5
|
-
function sfixed32EncodingLength (val) {
|
|
6
|
-
return 4
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
function sfixed32Encode (val, buffer, dataView, offset) {
|
|
10
|
-
dataView.setInt32(offset, val, true)
|
|
11
|
-
sfixed32Encode.bytes = 4
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function sfixed32Decode (buffer, dataView, offset) {
|
|
15
|
-
const val = dataView.getInt32(offset, true)
|
|
16
|
-
sfixed32Decode.bytes = 4
|
|
17
|
-
|
|
18
|
-
return val
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
module.exports = encoder(5, sfixed32Encode, sfixed32Decode, sfixed32EncodingLength)
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const svarint = require('signed-varint')
|
|
4
|
-
const encoder = require('./encoder')
|
|
5
|
-
|
|
6
|
-
function svarintEncode (val, buffer, dataView, offset) {
|
|
7
|
-
svarint.encode(val, buffer, offset)
|
|
8
|
-
|
|
9
|
-
svarintEncode.bytes = svarint.encode.bytes
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
function svarintDecode (buffer, dataView, offset) {
|
|
13
|
-
const val = svarint.decode(buffer, offset)
|
|
14
|
-
svarintDecode.bytes = svarint.decode.bytes
|
|
15
|
-
|
|
16
|
-
return val
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
module.exports = encoder(0, svarintEncode, svarintDecode, svarint.encodingLength)
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const varint = require('varint')
|
|
4
|
-
const { fromString: uint8ArrayFromString } = require('uint8arrays/from-string')
|
|
5
|
-
const { toString: uint8ArrayToString } = require('uint8arrays/to-string')
|
|
6
|
-
const encoder = require('./encoder')
|
|
7
|
-
|
|
8
|
-
function stringEncodingLength (val) {
|
|
9
|
-
const len = uint8ArrayFromString(val).byteLength
|
|
10
|
-
return varint.encodingLength(len) + len
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
function stringEncode (val, buffer, dataView, offset) {
|
|
14
|
-
const oldOffset = offset
|
|
15
|
-
const len = uint8ArrayFromString(val).byteLength
|
|
16
|
-
|
|
17
|
-
varint.encode(len, buffer, offset, 'utf-8')
|
|
18
|
-
offset += varint.encode.bytes
|
|
19
|
-
|
|
20
|
-
const arr = uint8ArrayFromString(val)
|
|
21
|
-
buffer.set(arr, offset)
|
|
22
|
-
offset += arr.length
|
|
23
|
-
|
|
24
|
-
stringEncode.bytes = offset - oldOffset
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function stringDecode (buffer, dataView, offset) {
|
|
28
|
-
const oldOffset = offset
|
|
29
|
-
|
|
30
|
-
const len = varint.decode(buffer, offset)
|
|
31
|
-
offset += varint.decode.bytes
|
|
32
|
-
|
|
33
|
-
const val = uint8ArrayToString(buffer.subarray(offset, offset + len))
|
|
34
|
-
offset += len
|
|
35
|
-
|
|
36
|
-
stringDecode.bytes = offset - oldOffset
|
|
37
|
-
|
|
38
|
-
return val
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
module.exports = encoder(2, stringEncode, stringDecode, stringEncodingLength)
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const varint = require('varint')
|
|
4
|
-
const encoder = require('./encoder')
|
|
5
|
-
|
|
6
|
-
function varintEncode (val, buffer, dataView, offset) {
|
|
7
|
-
varint.encode(val, buffer, offset)
|
|
8
|
-
|
|
9
|
-
varintEncode.bytes = varint.encode.bytes
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
function varintDecode (buffer, dataView, offset) {
|
|
13
|
-
const val = varint.decode(buffer, offset)
|
|
14
|
-
varintDecode.bytes = varint.decode.bytes
|
|
15
|
-
|
|
16
|
-
return val
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
module.exports = encoder(0, varintEncode, varintDecode, varint.encodingLength)
|