cborg 1.8.0 → 1.9.1
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/README.md +15 -0
- package/cjs/browser-test/common.js +24 -0
- package/cjs/browser-test/test-6tag.js +5 -19
- package/cjs/browser-test/test-length.js +63 -0
- package/cjs/lib/4array.js +3 -0
- package/cjs/lib/5map.js +3 -0
- package/cjs/lib/6tag.js +3 -0
- package/cjs/lib/7float.js +1 -2
- package/cjs/lib/bl.js +3 -1
- package/cjs/lib/encode.js +15 -9
- package/cjs/lib/length.js +36 -0
- package/cjs/node-test/common.js +24 -0
- package/cjs/node-test/test-6tag.js +5 -19
- package/cjs/node-test/test-length.js +63 -0
- package/esm/browser-test/common.js +19 -0
- package/esm/browser-test/test-6tag.js +4 -15
- package/esm/browser-test/test-length.js +55 -0
- package/esm/lib/4array.js +4 -1
- package/esm/lib/5map.js +4 -1
- package/esm/lib/6tag.js +4 -1
- package/esm/lib/7float.js +1 -2
- package/esm/lib/bl.js +3 -1
- package/esm/lib/encode.js +14 -9
- package/esm/lib/length.js +31 -0
- package/esm/node-test/common.js +19 -0
- package/esm/node-test/test-6tag.js +4 -15
- package/esm/node-test/test-length.js +55 -0
- package/interface.ts +1 -0
- package/length +1 -0
- package/lib/4array.js +8 -0
- package/lib/5map.js +8 -0
- package/lib/6tag.js +8 -0
- package/lib/7float.js +1 -2
- package/lib/bl.js +3 -1
- package/lib/byte-utils.js +4 -4
- package/lib/encode.js +16 -10
- package/lib/length.js +61 -0
- package/package.json +12 -3
- package/test/common.js +18 -0
- package/test/test-6tag.js +1 -17
- package/test/test-length.js +65 -0
- package/types/interface.d.ts.map +1 -1
- package/types/lib/4array.d.ts +5 -0
- package/types/lib/4array.d.ts.map +1 -1
- package/types/lib/5map.d.ts +5 -0
- package/types/lib/5map.d.ts.map +1 -1
- package/types/lib/6tag.d.ts +5 -0
- package/types/lib/6tag.d.ts.map +1 -1
- package/types/lib/7float.d.ts.map +1 -1
- package/types/lib/bl.d.ts.map +1 -1
- package/types/lib/encode.d.ts +2 -0
- package/types/lib/encode.d.ts.map +1 -1
- package/types/lib/length.d.ts +27 -0
- package/types/lib/length.d.ts.map +1 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {
|
|
2
|
+
makeCborEncoders,
|
|
3
|
+
objectToTokens
|
|
4
|
+
} from './encode.js';
|
|
5
|
+
import { quickEncodeToken } from './jump.js';
|
|
6
|
+
const cborEncoders = makeCborEncoders();
|
|
7
|
+
const defaultEncodeOptions = {
|
|
8
|
+
float64: false,
|
|
9
|
+
quickEncodeToken
|
|
10
|
+
};
|
|
11
|
+
export function encodedLength(data, options) {
|
|
12
|
+
options = Object.assign({}, defaultEncodeOptions, options);
|
|
13
|
+
options.mapSorter = undefined;
|
|
14
|
+
const tokens = objectToTokens(data, options);
|
|
15
|
+
return tokensToLength(tokens, cborEncoders, options);
|
|
16
|
+
}
|
|
17
|
+
export function tokensToLength(tokens, encoders = cborEncoders, options = defaultEncodeOptions) {
|
|
18
|
+
if (Array.isArray(tokens)) {
|
|
19
|
+
let len = 0;
|
|
20
|
+
for (const token of tokens) {
|
|
21
|
+
len += tokensToLength(token, encoders, options);
|
|
22
|
+
}
|
|
23
|
+
return len;
|
|
24
|
+
} else {
|
|
25
|
+
const encoder = encoders[tokens.type.major];
|
|
26
|
+
if (encoder.encodedSize === undefined || typeof encoder.encodedSize !== 'function') {
|
|
27
|
+
throw new Error(`Encoder for ${ tokens.type.name } does not have an encodedSize()`);
|
|
28
|
+
}
|
|
29
|
+
return encoder.encodedSize(tokens, options);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Token,
|
|
3
|
+
Type
|
|
4
|
+
} from '../lib/token.js';
|
|
5
|
+
export function dateDecoder(obj) {
|
|
6
|
+
if (typeof obj !== 'string') {
|
|
7
|
+
throw new Error('expected string for tag 1');
|
|
8
|
+
}
|
|
9
|
+
return new Date(obj);
|
|
10
|
+
}
|
|
11
|
+
export function dateEncoder(obj) {
|
|
12
|
+
if (!(obj instanceof Date)) {
|
|
13
|
+
throw new Error('expected Date for "Date" encoder');
|
|
14
|
+
}
|
|
15
|
+
return [
|
|
16
|
+
new Token(Type.tag, 0),
|
|
17
|
+
new Token(Type.string, obj.toISOString().replace(/\.000Z$/, 'Z'))
|
|
18
|
+
];
|
|
19
|
+
}
|
|
@@ -11,22 +11,11 @@ import {
|
|
|
11
11
|
fromHex,
|
|
12
12
|
toHex
|
|
13
13
|
} from '../lib/byte-utils.js';
|
|
14
|
+
import {
|
|
15
|
+
dateDecoder,
|
|
16
|
+
dateEncoder
|
|
17
|
+
} from './common.js';
|
|
14
18
|
const {assert} = chai;
|
|
15
|
-
function dateDecoder(obj) {
|
|
16
|
-
if (typeof obj !== 'string') {
|
|
17
|
-
throw new Error('expected string for tag 1');
|
|
18
|
-
}
|
|
19
|
-
return new Date(obj);
|
|
20
|
-
}
|
|
21
|
-
function dateEncoder(obj) {
|
|
22
|
-
if (!(obj instanceof Date)) {
|
|
23
|
-
throw new Error('expected Date for "Date" encoder');
|
|
24
|
-
}
|
|
25
|
-
return [
|
|
26
|
-
new Token(Type.tag, 0),
|
|
27
|
-
new Token(Type.string, obj.toISOString().replace(/\.000Z$/, 'Z'))
|
|
28
|
-
];
|
|
29
|
-
}
|
|
30
19
|
function Uint16ArrayDecoder(obj) {
|
|
31
20
|
if (typeof obj !== 'string') {
|
|
32
21
|
throw new Error('expected string for tag 23');
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import chai from 'chai';
|
|
2
|
+
import { garbage } from 'ipld-garbage';
|
|
3
|
+
import { uintBoundaries } from '../lib/0uint.js';
|
|
4
|
+
import { encode } from '../cborg.js';
|
|
5
|
+
import { encodedLength } from '../lib/length.js';
|
|
6
|
+
import { dateEncoder } from './common.js';
|
|
7
|
+
const {assert} = chai;
|
|
8
|
+
function verifyLength(object, options) {
|
|
9
|
+
const len = encodedLength(object, options);
|
|
10
|
+
const encoded = encode(object, options);
|
|
11
|
+
const actual = encoded.length;
|
|
12
|
+
assert.strictEqual(actual, len, JSON.stringify(object));
|
|
13
|
+
}
|
|
14
|
+
describe('encodedLength', () => {
|
|
15
|
+
it('int boundaries', () => {
|
|
16
|
+
for (let ii = 0; ii < 4; ii++) {
|
|
17
|
+
verifyLength(uintBoundaries[ii]);
|
|
18
|
+
verifyLength(uintBoundaries[ii] - 1);
|
|
19
|
+
verifyLength(uintBoundaries[ii] + 1);
|
|
20
|
+
verifyLength(-1 * uintBoundaries[ii]);
|
|
21
|
+
verifyLength(-1 * uintBoundaries[ii] - 1);
|
|
22
|
+
verifyLength(-1 * uintBoundaries[ii] + 1);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
it('tags', () => {
|
|
26
|
+
verifyLength({ date: new Date('2013-03-21T20:04:00Z') }, { typeEncoders: { Date: dateEncoder } });
|
|
27
|
+
});
|
|
28
|
+
it('floats', () => {
|
|
29
|
+
verifyLength(0.5);
|
|
30
|
+
verifyLength(0.5, { float64: true });
|
|
31
|
+
verifyLength(8.940696716308594e-8);
|
|
32
|
+
verifyLength(8.940696716308594e-8, { float64: true });
|
|
33
|
+
});
|
|
34
|
+
it('small garbage', function () {
|
|
35
|
+
this.timeout(10000);
|
|
36
|
+
for (let ii = 0; ii < 1000; ii++) {
|
|
37
|
+
const gbg = garbage(1 << 6, { weights: { CID: 0 } });
|
|
38
|
+
verifyLength(gbg);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
it('medium garbage', function () {
|
|
42
|
+
this.timeout(10000);
|
|
43
|
+
for (let ii = 0; ii < 100; ii++) {
|
|
44
|
+
const gbg = garbage(1 << 16, { weights: { CID: 0 } });
|
|
45
|
+
verifyLength(gbg);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
it('large garbage', function () {
|
|
49
|
+
this.timeout(10000);
|
|
50
|
+
for (let ii = 0; ii < 10; ii++) {
|
|
51
|
+
const gbg = garbage(1 << 20, { weights: { CID: 0 } });
|
|
52
|
+
verifyLength(gbg);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
});
|
package/interface.ts
CHANGED
|
@@ -16,6 +16,7 @@ export type StrictTypeEncoder = (data: any, typ: string, options: EncodeOptions,
|
|
|
16
16
|
export type TokenTypeEncoder = {
|
|
17
17
|
(buf: Bl, token: Token, options?: EncodeOptions): void;
|
|
18
18
|
compareTokens(t1: Token, t2: Token): number;
|
|
19
|
+
// TODO: make this non-optional as a breaking change and remove the throw in length.js
|
|
19
20
|
encodedSize?(token: Token, options?: EncodeOptions): number;
|
|
20
21
|
}
|
|
21
22
|
|
package/length
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./cjs/lib/length.js')
|
package/lib/4array.js
CHANGED
|
@@ -103,3 +103,11 @@ export function encodeArray (buf, token) {
|
|
|
103
103
|
// using an array as a map key, are you sure about this? we can only sort
|
|
104
104
|
// by map length here, it's up to the encoder to decide to look deeper
|
|
105
105
|
encodeArray.compareTokens = uint.encodeUint.compareTokens
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* @param {Token} token
|
|
109
|
+
* @returns {number}
|
|
110
|
+
*/
|
|
111
|
+
encodeArray.encodedSize = function encodedSize (token) {
|
|
112
|
+
return uint.encodeUintValue.encodedSize(token.value)
|
|
113
|
+
}
|
package/lib/5map.js
CHANGED
|
@@ -103,3 +103,11 @@ export function encodeMap (buf, token) {
|
|
|
103
103
|
// using a map as a map key, are you sure about this? we can only sort
|
|
104
104
|
// by map length here, it's up to the encoder to decide to look deeper
|
|
105
105
|
encodeMap.compareTokens = uint.encodeUint.compareTokens
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* @param {Token} token
|
|
109
|
+
* @returns {number}
|
|
110
|
+
*/
|
|
111
|
+
encodeMap.encodedSize = function encodedSize (token) {
|
|
112
|
+
return uint.encodeUintValue.encodedSize(token.value)
|
|
113
|
+
}
|
package/lib/6tag.js
CHANGED
|
@@ -70,3 +70,11 @@ export function encodeTag (buf, token) {
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
encodeTag.compareTokens = uint.encodeUint.compareTokens
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @param {Token} token
|
|
76
|
+
* @returns {number}
|
|
77
|
+
*/
|
|
78
|
+
encodeTag.encodedSize = function encodedSize (token) {
|
|
79
|
+
return uint.encodeUintValue.encodedSize(token.value)
|
|
80
|
+
}
|
package/lib/7float.js
CHANGED
|
@@ -154,10 +154,9 @@ encodeFloat.encodedSize = function encodedSize (token, options) {
|
|
|
154
154
|
return 1
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
let decoded
|
|
158
157
|
if (!options || options.float64 !== true) {
|
|
159
158
|
encodeFloat16(float)
|
|
160
|
-
decoded = readFloat16(ui8a, 1)
|
|
159
|
+
let decoded = readFloat16(ui8a, 1)
|
|
161
160
|
if (float === decoded || Number.isNaN(float)) {
|
|
162
161
|
return 3
|
|
163
162
|
}
|
package/lib/bl.js
CHANGED
|
@@ -42,9 +42,11 @@ export class Bl {
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
reset () {
|
|
45
|
-
this.chunks = []
|
|
46
45
|
this.cursor = 0
|
|
47
46
|
this.maxCursor = -1
|
|
47
|
+
if (this.chunks.length) {
|
|
48
|
+
this.chunks = []
|
|
49
|
+
}
|
|
48
50
|
if (this._initReuseChunk !== null) {
|
|
49
51
|
this.chunks.push(this._initReuseChunk)
|
|
50
52
|
this.maxCursor = this._initReuseChunk.length - 1
|
package/lib/byte-utils.js
CHANGED
|
@@ -44,8 +44,8 @@ export const toString = useBuffer
|
|
|
44
44
|
(bytes, start, end) => {
|
|
45
45
|
return end - start > 64
|
|
46
46
|
? // eslint-disable-line operator-linebreak
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
// @ts-ignore
|
|
48
|
+
globalThis.Buffer.from(bytes.subarray(start, end)).toString('utf8')
|
|
49
49
|
: utf8Slice(bytes, start, end)
|
|
50
50
|
}
|
|
51
51
|
/* c8 ignore next 11 */
|
|
@@ -69,8 +69,8 @@ export const fromString = useBuffer
|
|
|
69
69
|
(string) => {
|
|
70
70
|
return string.length > 64
|
|
71
71
|
? // eslint-disable-line operator-linebreak
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
// @ts-ignore
|
|
73
|
+
globalThis.Buffer.from(string)
|
|
74
74
|
: utf8ToBytes(string)
|
|
75
75
|
}
|
|
76
76
|
/* c8 ignore next 7 */
|
package/lib/encode.js
CHANGED
|
@@ -30,16 +30,21 @@ const defaultEncodeOptions = {
|
|
|
30
30
|
quickEncodeToken
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
/** @
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
33
|
+
/** @returns {TokenTypeEncoder[]} */
|
|
34
|
+
export function makeCborEncoders () {
|
|
35
|
+
const encoders = []
|
|
36
|
+
encoders[Type.uint.major] = encodeUint
|
|
37
|
+
encoders[Type.negint.major] = encodeNegint
|
|
38
|
+
encoders[Type.bytes.major] = encodeBytes
|
|
39
|
+
encoders[Type.string.major] = encodeString
|
|
40
|
+
encoders[Type.array.major] = encodeArray
|
|
41
|
+
encoders[Type.map.major] = encodeMap
|
|
42
|
+
encoders[Type.tag.major] = encodeTag
|
|
43
|
+
encoders[Type.float.major] = encodeFloat
|
|
44
|
+
return encoders
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const cborEncoders = makeCborEncoders()
|
|
43
48
|
|
|
44
49
|
const buf = new Bl()
|
|
45
50
|
|
|
@@ -441,6 +446,7 @@ function encodeCustom (data, encoders, options) {
|
|
|
441
446
|
return asU8A(buf.chunks[0])
|
|
442
447
|
}
|
|
443
448
|
}
|
|
449
|
+
buf.reset()
|
|
444
450
|
tokensToEncoded(buf, tokens, encoders, options)
|
|
445
451
|
return buf.toBytes(true)
|
|
446
452
|
}
|
package/lib/length.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { makeCborEncoders, objectToTokens } from './encode.js'
|
|
2
|
+
import { quickEncodeToken } from './jump.js'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @typedef {import('../interface').EncodeOptions} EncodeOptions
|
|
6
|
+
* @typedef {import('../interface').TokenTypeEncoder} TokenTypeEncoder
|
|
7
|
+
* @typedef {import('../interface').TokenOrNestedTokens} TokenOrNestedTokens
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const cborEncoders = makeCborEncoders()
|
|
11
|
+
|
|
12
|
+
/** @type {EncodeOptions} */
|
|
13
|
+
const defaultEncodeOptions = {
|
|
14
|
+
float64: false,
|
|
15
|
+
quickEncodeToken
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Calculate the byte length of the given data when encoded as CBOR with the
|
|
20
|
+
* options provided.
|
|
21
|
+
* This calculation will be accurate if the same options are used as when
|
|
22
|
+
* performing a normal encode. Some encode options can change the encoding
|
|
23
|
+
* output length.
|
|
24
|
+
*
|
|
25
|
+
* @param {any} data
|
|
26
|
+
* @param {EncodeOptions} [options]
|
|
27
|
+
* @returns {number}
|
|
28
|
+
*/
|
|
29
|
+
export function encodedLength (data, options) {
|
|
30
|
+
options = Object.assign({}, defaultEncodeOptions, options)
|
|
31
|
+
options.mapSorter = undefined // won't change the length
|
|
32
|
+
const tokens = objectToTokens(data, options)
|
|
33
|
+
return tokensToLength(tokens, cborEncoders, options)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Calculate the byte length of the data as represented by the given tokens when
|
|
38
|
+
* encoded as CBOR with the options provided.
|
|
39
|
+
* This function is for advanced users and would not normally be called
|
|
40
|
+
* directly. See `encodedLength()` for appropriate use.
|
|
41
|
+
*
|
|
42
|
+
* @param {TokenOrNestedTokens} tokens
|
|
43
|
+
* @param {TokenTypeEncoder[]} [encoders]
|
|
44
|
+
* @param {EncodeOptions} [options]
|
|
45
|
+
*/
|
|
46
|
+
export function tokensToLength (tokens, encoders = cborEncoders, options = defaultEncodeOptions) {
|
|
47
|
+
if (Array.isArray(tokens)) {
|
|
48
|
+
let len = 0
|
|
49
|
+
for (const token of tokens) {
|
|
50
|
+
len += tokensToLength(token, encoders, options)
|
|
51
|
+
}
|
|
52
|
+
return len
|
|
53
|
+
} else {
|
|
54
|
+
const encoder = encoders[tokens.type.major]
|
|
55
|
+
/* c8 ignore next 3 */
|
|
56
|
+
if (encoder.encodedSize === undefined || typeof encoder.encodedSize !== 'function') {
|
|
57
|
+
throw new Error(`Encoder for ${tokens.type.name} does not have an encodedSize()`)
|
|
58
|
+
}
|
|
59
|
+
return encoder.encodedSize(tokens, options)
|
|
60
|
+
}
|
|
61
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cborg",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.1",
|
|
4
4
|
"description": "Fast CBOR with a focus on strictness",
|
|
5
5
|
"main": "./cjs/cborg.js",
|
|
6
6
|
"bin": {
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"ipld-garbage": "^4.0.10",
|
|
39
39
|
"mocha": "^9.1.3",
|
|
40
40
|
"polendina": "~2.0.1",
|
|
41
|
-
"standard": "^
|
|
42
|
-
"typescript": "~4.
|
|
41
|
+
"standard": "^17.0.0",
|
|
42
|
+
"typescript": "~4.6.2"
|
|
43
43
|
},
|
|
44
44
|
"exports": {
|
|
45
45
|
".": {
|
|
@@ -47,6 +47,11 @@
|
|
|
47
47
|
"require": "./cjs/cborg.js",
|
|
48
48
|
"import": "./esm/cborg.js"
|
|
49
49
|
},
|
|
50
|
+
"./length": {
|
|
51
|
+
"browser": "./esm/lib/length.js",
|
|
52
|
+
"require": "./cjs/lib/length.js",
|
|
53
|
+
"import": "./esm/lib/length.js"
|
|
54
|
+
},
|
|
50
55
|
"./taglib": {
|
|
51
56
|
"browser": "./esm/taglib.js",
|
|
52
57
|
"require": "./cjs/taglib.js",
|
|
@@ -64,6 +69,9 @@
|
|
|
64
69
|
"json": [
|
|
65
70
|
"types/lib/json/json.d.ts"
|
|
66
71
|
],
|
|
72
|
+
"length": [
|
|
73
|
+
"types/lib/length.d.ts"
|
|
74
|
+
],
|
|
67
75
|
"*": [
|
|
68
76
|
"types/*"
|
|
69
77
|
],
|
|
@@ -160,6 +168,7 @@
|
|
|
160
168
|
},
|
|
161
169
|
"browser": {
|
|
162
170
|
".": "./cjs/cborg.js",
|
|
171
|
+
"./length": "./cjs/lib/length.js",
|
|
163
172
|
"./taglib": "./cjs/taglib.js",
|
|
164
173
|
"./json": "./cjs/lib/json/json.js"
|
|
165
174
|
}
|
package/test/common.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Token, Type } from '../lib/token.js'
|
|
2
|
+
|
|
3
|
+
export function dateDecoder (obj) {
|
|
4
|
+
if (typeof obj !== 'string') {
|
|
5
|
+
throw new Error('expected string for tag 1')
|
|
6
|
+
}
|
|
7
|
+
return new Date(obj)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function dateEncoder (obj) {
|
|
11
|
+
if (!(obj instanceof Date)) {
|
|
12
|
+
throw new Error('expected Date for "Date" encoder')
|
|
13
|
+
}
|
|
14
|
+
return [
|
|
15
|
+
new Token(Type.tag, 0),
|
|
16
|
+
new Token(Type.string, obj.toISOString().replace(/\.000Z$/, 'Z'))
|
|
17
|
+
]
|
|
18
|
+
}
|
package/test/test-6tag.js
CHANGED
|
@@ -5,26 +5,10 @@ import chai from 'chai'
|
|
|
5
5
|
import { Token, Type } from '../lib/token.js'
|
|
6
6
|
import { decode, encode } from '../cborg.js'
|
|
7
7
|
import { fromHex, toHex } from '../lib/byte-utils.js'
|
|
8
|
+
import { dateDecoder, dateEncoder } from './common.js'
|
|
8
9
|
|
|
9
10
|
const { assert } = chai
|
|
10
11
|
|
|
11
|
-
function dateDecoder (obj) {
|
|
12
|
-
if (typeof obj !== 'string') {
|
|
13
|
-
throw new Error('expected string for tag 1')
|
|
14
|
-
}
|
|
15
|
-
return new Date(obj)
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
function dateEncoder (obj) {
|
|
19
|
-
if (!(obj instanceof Date)) {
|
|
20
|
-
throw new Error('expected Date for "Date" encoder')
|
|
21
|
-
}
|
|
22
|
-
return [
|
|
23
|
-
new Token(Type.tag, 0),
|
|
24
|
-
new Token(Type.string, obj.toISOString().replace(/\.000Z$/, 'Z'))
|
|
25
|
-
]
|
|
26
|
-
}
|
|
27
|
-
|
|
28
12
|
function Uint16ArrayDecoder (obj) {
|
|
29
13
|
if (typeof obj !== 'string') {
|
|
30
14
|
throw new Error('expected string for tag 23')
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/* eslint-env mocha */
|
|
2
|
+
|
|
3
|
+
import chai from 'chai'
|
|
4
|
+
import { garbage } from 'ipld-garbage'
|
|
5
|
+
import { uintBoundaries } from '../lib/0uint.js'
|
|
6
|
+
import { encode } from '../cborg.js'
|
|
7
|
+
import { encodedLength } from '../lib/length.js'
|
|
8
|
+
import { dateEncoder } from './common.js'
|
|
9
|
+
|
|
10
|
+
const { assert } = chai
|
|
11
|
+
|
|
12
|
+
function verifyLength (object, options) {
|
|
13
|
+
const len = encodedLength(object, options)
|
|
14
|
+
const encoded = encode(object, options)
|
|
15
|
+
const actual = encoded.length
|
|
16
|
+
assert.strictEqual(actual, len, JSON.stringify(object))
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
describe('encodedLength', () => {
|
|
20
|
+
it('int boundaries', () => {
|
|
21
|
+
for (let ii = 0; ii < 4; ii++) {
|
|
22
|
+
verifyLength(uintBoundaries[ii])
|
|
23
|
+
verifyLength(uintBoundaries[ii] - 1)
|
|
24
|
+
verifyLength(uintBoundaries[ii] + 1)
|
|
25
|
+
verifyLength(-1 * uintBoundaries[ii])
|
|
26
|
+
verifyLength(-1 * uintBoundaries[ii] - 1)
|
|
27
|
+
verifyLength(-1 * uintBoundaries[ii] + 1)
|
|
28
|
+
}
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
it('tags', () => {
|
|
32
|
+
verifyLength({ date: new Date('2013-03-21T20:04:00Z') }, { typeEncoders: { Date: dateEncoder } })
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
it('floats', () => {
|
|
36
|
+
verifyLength(0.5)
|
|
37
|
+
verifyLength(0.5, { float64: true })
|
|
38
|
+
verifyLength(8.940696716308594e-08)
|
|
39
|
+
verifyLength(8.940696716308594e-08, { float64: true })
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
it('small garbage', function () {
|
|
43
|
+
this.timeout(10000)
|
|
44
|
+
for (let ii = 0; ii < 1000; ii++) {
|
|
45
|
+
const gbg = garbage(1 << 6, { weights: { CID: 0 } })
|
|
46
|
+
verifyLength(gbg)
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
it('medium garbage', function () {
|
|
51
|
+
this.timeout(10000)
|
|
52
|
+
for (let ii = 0; ii < 100; ii++) {
|
|
53
|
+
const gbg = garbage(1 << 16, { weights: { CID: 0 } })
|
|
54
|
+
verifyLength(gbg)
|
|
55
|
+
}
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
it('large garbage', function () {
|
|
59
|
+
this.timeout(10000)
|
|
60
|
+
for (let ii = 0; ii < 10; ii++) {
|
|
61
|
+
const gbg = garbage(1 << 20, { weights: { CID: 0 } })
|
|
62
|
+
verifyLength(gbg)
|
|
63
|
+
}
|
|
64
|
+
})
|
|
65
|
+
})
|
package/types/interface.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAE7B,oBAAY,mBAAmB,GAAG,KAAK,GAAG,KAAK,EAAE,GAAG,mBAAmB,EAAE,CAAA;AAEzE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,SAAS,GAAG,SAAS,CAAA;IAC7B,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,CAAA;IACnB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAA;CACvC;AAED,oBAAY,mBAAmB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,mBAAmB,GAAG,IAAI,CAAA;AAEtI,oBAAY,iBAAiB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,mBAAmB,CAAA;AAE7H,oBAAY,gBAAgB,GAAG;IAC7B,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACvD,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAE7B,oBAAY,mBAAmB,GAAG,KAAK,GAAG,KAAK,EAAE,GAAG,mBAAmB,EAAE,CAAA;AAEzE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,SAAS,GAAG,SAAS,CAAA;IAC7B,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,CAAA;IACnB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAA;CACvC;AAED,oBAAY,mBAAmB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,mBAAmB,GAAG,IAAI,CAAA;AAEtI,oBAAY,iBAAiB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,mBAAmB,CAAA;AAE7H,oBAAY,gBAAgB,GAAG;IAC7B,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACvD,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC;IAE5C,WAAW,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;CAC7D,CAAA;AAED,oBAAY,SAAS,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,EAAE,KAAK,MAAM,CAAA;AAEpF,oBAAY,gBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,UAAU,GAAG,SAAS,CAAA;AAEvE,MAAM,WAAW,eAAe;IAC9B,IAAI,IAAI,OAAO,CAAC;IAChB,IAAI,IAAI,KAAK,CAAA;CACd;AAED,oBAAY,UAAU,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;AAE5C,MAAM,WAAW,aAAa;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,eAAe,CAAA;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,YAAY,CAAC,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAAA;KAAE,CAAA;CAC3D"}
|
package/types/lib/4array.d.ts
CHANGED
|
@@ -53,6 +53,11 @@ export function decodeArrayIndefinite(data: Uint8Array, pos: number, _minor: num
|
|
|
53
53
|
export function encodeArray(buf: Bl, token: Token): void;
|
|
54
54
|
export namespace encodeArray {
|
|
55
55
|
const compareTokens: (tok1: Token, tok2: Token) => number;
|
|
56
|
+
/**
|
|
57
|
+
* @param {Token} token
|
|
58
|
+
* @returns {number}
|
|
59
|
+
*/
|
|
60
|
+
function encodedSize(token: Token): number;
|
|
56
61
|
}
|
|
57
62
|
export type Bl = import('./bl.js').Bl;
|
|
58
63
|
export type DecodeOptions = import('../interface').DecodeOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"4array.d.ts","sourceRoot":"","sources":["../../lib/4array.js"],"names":[],"mappings":"AAoBA;;;;;;GAMG;AACH,yCANW,UAAU,OACV,MAAM,SACN,MAAM,YACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,mCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,oCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,oCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAGD;;;;;;GAMG;AACH,oCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAQjB;AAED;;;;;;GAMG;AACH,4CANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAOjB;AAED;;;GAGG;AACH,iCAHW,EAAE,SACF,KAAK,QAIf
|
|
1
|
+
{"version":3,"file":"4array.d.ts","sourceRoot":"","sources":["../../lib/4array.js"],"names":[],"mappings":"AAoBA;;;;;;GAMG;AACH,yCANW,UAAU,OACV,MAAM,SACN,MAAM,YACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,mCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,oCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,oCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAGD;;;;;;GAMG;AACH,oCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAQjB;AAED;;;;;;GAMG;AACH,4CANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAOjB;AAED;;;GAGG;AACH,iCAHW,EAAE,SACF,KAAK,QAIf;;;IAMD;;;OAGG;IACH,2CAEC;;iBA3GY,OAAO,SAAS,EAAE,EAAE;4BACpB,OAAO,cAAc,EAAE,aAAa"}
|
package/types/lib/5map.d.ts
CHANGED
|
@@ -53,6 +53,11 @@ export function decodeMapIndefinite(data: Uint8Array, pos: number, _minor: numbe
|
|
|
53
53
|
export function encodeMap(buf: Bl, token: Token): void;
|
|
54
54
|
export namespace encodeMap {
|
|
55
55
|
const compareTokens: (tok1: Token, tok2: Token) => number;
|
|
56
|
+
/**
|
|
57
|
+
* @param {Token} token
|
|
58
|
+
* @returns {number}
|
|
59
|
+
*/
|
|
60
|
+
function encodedSize(token: Token): number;
|
|
56
61
|
}
|
|
57
62
|
export type Bl = import('./bl.js').Bl;
|
|
58
63
|
export type DecodeOptions = import('../interface').DecodeOptions;
|
package/types/lib/5map.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"5map.d.ts","sourceRoot":"","sources":["../../lib/5map.js"],"names":[],"mappings":"AAoBA;;;;;;GAMG;AACH,uCANW,UAAU,OACV,MAAM,SACN,MAAM,YACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,iCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,kCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,kCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAGD;;;;;;GAMG;AACH,kCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAQjB;AAED;;;;;;GAMG;AACH,0CANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAOjB;AAED;;;GAGG;AACH,+BAHW,EAAE,SACF,KAAK,QAIf
|
|
1
|
+
{"version":3,"file":"5map.d.ts","sourceRoot":"","sources":["../../lib/5map.js"],"names":[],"mappings":"AAoBA;;;;;;GAMG;AACH,uCANW,UAAU,OACV,MAAM,SACN,MAAM,YACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,iCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,kCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,kCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAGD;;;;;;GAMG;AACH,kCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAQjB;AAED;;;;;;GAMG;AACH,0CANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAOjB;AAED;;;GAGG;AACH,+BAHW,EAAE,SACF,KAAK,QAIf;;;IAMD;;;OAGG;IACH,2CAEC;;iBA3GY,OAAO,SAAS,EAAE,EAAE;4BACpB,OAAO,cAAc,EAAE,aAAa"}
|
package/types/lib/6tag.d.ts
CHANGED
|
@@ -49,6 +49,11 @@ export function decodeTag64(data: Uint8Array, pos: number, _minor: number, optio
|
|
|
49
49
|
export function encodeTag(buf: Bl, token: Token): void;
|
|
50
50
|
export namespace encodeTag {
|
|
51
51
|
const compareTokens: (tok1: Token, tok2: Token) => number;
|
|
52
|
+
/**
|
|
53
|
+
* @param {Token} token
|
|
54
|
+
* @returns {number}
|
|
55
|
+
*/
|
|
56
|
+
function encodedSize(token: Token): number;
|
|
52
57
|
}
|
|
53
58
|
export type Bl = import('./bl.js').Bl;
|
|
54
59
|
export type DecodeOptions = import('../interface').DecodeOptions;
|
package/types/lib/6tag.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"6tag.d.ts","sourceRoot":"","sources":["../../lib/6tag.js"],"names":[],"mappings":"AAGA;;;GAGG;AAEH;;;;;;GAMG;AACH,wCANW,UAAU,QACV,MAAM,SACN,MAAM,YACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,iCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,kCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,kCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,kCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;GAGG;AACH,+BAHW,EAAE,SACF,KAAK,QAIf
|
|
1
|
+
{"version":3,"file":"6tag.d.ts","sourceRoot":"","sources":["../../lib/6tag.js"],"names":[],"mappings":"AAGA;;;GAGG;AAEH;;;;;;GAMG;AACH,wCANW,UAAU,QACV,MAAM,SACN,MAAM,YACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,iCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,kCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,kCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,kCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;GAGG;AACH,+BAHW,EAAE,SACF,KAAK,QAIf;;;IAID;;;OAGG;IACH,2CAEC;;iBA3EY,OAAO,SAAS,EAAE,EAAE;4BACpB,OAAO,cAAc,EAAE,aAAa"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"7float.d.ts","sourceRoot":"","sources":["../../lib/7float.js"],"names":[],"mappings":"AAkBA;;;;;;GAMG;AACH,uCANW,UAAU,QACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CASjB;AAED;;;;;;GAMG;AACH,mCANW,UAAU,QACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAOjB;AAoBD;;;;;;GAMG;AACH,oCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,oCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,oCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;GAIG;AACH,iCAJW,EAAE,SACF,KAAK,WACL,aAAa,QAwCvB;;IAED;;;;OAIG;IACH,
|
|
1
|
+
{"version":3,"file":"7float.d.ts","sourceRoot":"","sources":["../../lib/7float.js"],"names":[],"mappings":"AAkBA;;;;;;GAMG;AACH,uCANW,UAAU,QACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CASjB;AAED;;;;;;GAMG;AACH,mCANW,UAAU,QACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAOjB;AAoBD;;;;;;GAMG;AACH,oCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,oCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;;;GAMG;AACH,oCANW,UAAU,OACV,MAAM,UACN,MAAM,WACN,aAAa,GACX,KAAK,CAIjB;AAED;;;;GAIG;AACH,iCAJW,EAAE,SACF,KAAK,WACL,aAAa,QAwCvB;;IAED;;;;OAIG;IACH,0FAoBC;;;iBAjKY,OAAO,SAAS,EAAE,EAAE;4BACpB,OAAO,cAAc,EAAE,aAAa;4BACpC,OAAO,cAAc,EAAE,aAAa"}
|
package/types/lib/bl.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bl.d.ts","sourceRoot":"","sources":["../../lib/bl.js"],"names":[],"mappings":"AA0BA;IACE;;OAEG;IACH,4CAWC;IAVC,kBAA0B;IAC1B,qBAAqB;IACrB,QADW,MAAM,CACF;IACf,qBAAqB;IACrB,WADW,MAAM,CACE;IACnB,sCAAsC;IACtC,QADW,CAAC,UAAU,GAAC,MAAM,EAAE,CAAC,EAAE,CAClB;IAEhB,uCAAuC;IACvC,iBADW,UAAU,GAAC,MAAM,EAAE,GAAC,IAAI,CACR;IAG7B,
|
|
1
|
+
{"version":3,"file":"bl.d.ts","sourceRoot":"","sources":["../../lib/bl.js"],"names":[],"mappings":"AA0BA;IACE;;OAEG;IACH,4CAWC;IAVC,kBAA0B;IAC1B,qBAAqB;IACrB,QADW,MAAM,CACF;IACf,qBAAqB;IACrB,WADW,MAAM,CACE;IACnB,sCAAsC;IACtC,QADW,CAAC,UAAU,GAAC,MAAM,EAAE,CAAC,EAAE,CAClB;IAEhB,uCAAuC;IACvC,iBADW,UAAU,GAAC,MAAM,EAAE,GAAC,IAAI,CACR;IAG7B,cAUC;IAED;;OAEG;IACH,YAFW,UAAU,GAAC,MAAM,EAAE,QAsC7B;IAED;;;OAGG;IACH,sCAFa,UAAU,CAwBtB;CACF"}
|
package/types/lib/encode.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** @returns {TokenTypeEncoder[]} */
|
|
2
|
+
export function makeCborEncoders(): TokenTypeEncoder[];
|
|
1
3
|
export type EncodeOptions = import('../interface').EncodeOptions;
|
|
2
4
|
export type OptionalTypeEncoder = import('../interface').OptionalTypeEncoder;
|
|
3
5
|
export type Reference = import('../interface').Reference;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../../lib/encode.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../../lib/encode.js"],"names":[],"mappings":"AAgCA,oCAAoC;AACpC,oCADc,gBAAgB,EAAE,CAY/B;4BA3BY,OAAO,cAAc,EAAE,aAAa;kCACpC,OAAO,cAAc,EAAE,mBAAmB;wBAC1C,OAAO,cAAc,EAAE,SAAS;gCAChC,OAAO,cAAc,EAAE,iBAAiB;+BACxC,OAAO,cAAc,EAAE,gBAAgB;kCACvC,OAAO,cAAc,EAAE,mBAAmB;AAgQvD;;;;;GAKG;AACH,oCALW,GAAG,wHAGD,mBAAmB,CAgB/B;AA2JD;;;;GAIG;AACH,6BAJW,GAAG,+DAED,UAAU,CAKtB;AAvCD;;;;;GAKG;AACH,mCALW,GAAG,YACH,gBAAgB,EAAE,WAClB,aAAa,GACX,UAAU,CAyBtB;AAjZD,8BAA8B;AAC9B;IAyBE;;;;OAIG;IACH,0BAJW,SAAS,GAAC,SAAS,OACnB,MAAM,GAAC,GAAG,EAAE,GACV,SAAS,CAOrB;IAlCD;;;OAGG;IACH,iBAHW,MAAM,GAAC,GAAG,EAAE,UACZ,SAAS,GAAC,SAAS,EAK7B;IAFC,oBAAc;IACd,qDAAoB;IAGtB;;;OAGG;IACH,cAHW,MAAM,GAAC,GAAG,EAAE,GACV,OAAO,CAWnB;CAaF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate the byte length of the given data when encoded as CBOR with the
|
|
3
|
+
* options provided.
|
|
4
|
+
* This calculation will be accurate if the same options are used as when
|
|
5
|
+
* performing a normal encode. Some encode options can change the encoding
|
|
6
|
+
* output length.
|
|
7
|
+
*
|
|
8
|
+
* @param {any} data
|
|
9
|
+
* @param {EncodeOptions} [options]
|
|
10
|
+
* @returns {number}
|
|
11
|
+
*/
|
|
12
|
+
export function encodedLength(data: any, options?: import("../interface").EncodeOptions | undefined): number;
|
|
13
|
+
/**
|
|
14
|
+
* Calculate the byte length of the data as represented by the given tokens when
|
|
15
|
+
* encoded as CBOR with the options provided.
|
|
16
|
+
* This function is for advanced users and would not normally be called
|
|
17
|
+
* directly. See `encodedLength()` for appropriate use.
|
|
18
|
+
*
|
|
19
|
+
* @param {TokenOrNestedTokens} tokens
|
|
20
|
+
* @param {TokenTypeEncoder[]} [encoders]
|
|
21
|
+
* @param {EncodeOptions} [options]
|
|
22
|
+
*/
|
|
23
|
+
export function tokensToLength(tokens: TokenOrNestedTokens, encoders?: import("../interface").TokenTypeEncoder[] | undefined, options?: import("../interface").EncodeOptions | undefined): number;
|
|
24
|
+
export type EncodeOptions = import('../interface').EncodeOptions;
|
|
25
|
+
export type TokenTypeEncoder = import('../interface').TokenTypeEncoder;
|
|
26
|
+
export type TokenOrNestedTokens = import('../interface').TokenOrNestedTokens;
|
|
27
|
+
//# sourceMappingURL=length.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"length.d.ts","sourceRoot":"","sources":["../../lib/length.js"],"names":[],"mappings":"AAiBA;;;;;;;;;;GAUG;AACH,oCAJW,GAAG,+DAED,MAAM,CAOlB;AAED;;;;;;;;;GASG;AACH,uCAJW,mBAAmB,wIAmB7B;4BAxDY,OAAO,cAAc,EAAE,aAAa;+BACpC,OAAO,cAAc,EAAE,gBAAgB;kCACvC,OAAO,cAAc,EAAE,mBAAmB"}
|