@atcute/cbor 1.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 +17 -0
- package/README.md +19 -0
- package/dist/base64.d.ts +2 -0
- package/dist/base64.js +72 -0
- package/dist/base64.js.map +1 -0
- package/dist/bytes.d.ts +11 -0
- package/dist/bytes.js +23 -0
- package/dist/bytes.js.map +1 -0
- package/dist/cid-link.d.ts +12 -0
- package/dist/cid-link.js +23 -0
- package/dist/cid-link.js.map +1 -0
- package/dist/decode.d.ts +2 -0
- package/dist/decode.js +177 -0
- package/dist/decode.js.map +1 -0
- package/dist/encode.d.ts +1 -0
- package/dist/encode.js +255 -0
- package/dist/encode.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/package.json +32 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
2
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
3
|
+
in the Software without restriction, including without limitation the rights
|
|
4
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
5
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
6
|
+
furnished to do so, subject to the following conditions:
|
|
7
|
+
|
|
8
|
+
The above copyright notice and this permission notice shall be included in all
|
|
9
|
+
copies or substantial portions of the Software.
|
|
10
|
+
|
|
11
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
12
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
13
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
14
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
15
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
16
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
17
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# @atcute/cbor
|
|
2
|
+
|
|
3
|
+
DAG-CBOR codec that deals in AT Protocol's HTTP wire format.
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
import { encode } from '@atcute/cbor';
|
|
7
|
+
|
|
8
|
+
const record = {
|
|
9
|
+
$type: 'app.bsky.feed.post',
|
|
10
|
+
createdAt: '2024-08-18T03:18:24.000Z',
|
|
11
|
+
langs: ['en'],
|
|
12
|
+
text: 'hello world!',
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const cbor = encode(record);
|
|
16
|
+
// ^? Uint8Array(90) [ ... ]
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Implementation based on the excellent [`microcbor` library](https://github.com/joeltg/microcbor).
|
package/dist/base64.d.ts
ADDED
package/dist/base64.js
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
const BASE64_CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
2
|
+
const BASE64_BITS = 6;
|
|
3
|
+
const BASE64_CODES = /*#__PURE__*/ (() => {
|
|
4
|
+
const codes = {};
|
|
5
|
+
for (let i = 0, ilen = BASE64_CHARSET.length; i < ilen; i++) {
|
|
6
|
+
codes[BASE64_CHARSET[i]] = i;
|
|
7
|
+
}
|
|
8
|
+
return codes;
|
|
9
|
+
})();
|
|
10
|
+
export const decode = (str) => {
|
|
11
|
+
// Calculate padding
|
|
12
|
+
// let end = str.length;
|
|
13
|
+
// while (str[end - 1] === '=') {
|
|
14
|
+
// --end;
|
|
15
|
+
// }
|
|
16
|
+
const end = str.length;
|
|
17
|
+
// Allocate
|
|
18
|
+
const out = new Uint8Array(((end * BASE64_BITS) / 8) | 0);
|
|
19
|
+
// Parse
|
|
20
|
+
let bits = 0; // Number of bits currently in the buffer
|
|
21
|
+
let buffer = 0; // Bits waiting to be written out, MSB first
|
|
22
|
+
let written = 0; // Next byte to write
|
|
23
|
+
for (let i = 0; i < end; ++i) {
|
|
24
|
+
// Read one character from the string:
|
|
25
|
+
const value = BASE64_CODES[str[i]];
|
|
26
|
+
if (value === undefined) {
|
|
27
|
+
throw new SyntaxError(`invalid base64 string`);
|
|
28
|
+
}
|
|
29
|
+
// Append the bits to the buffer:
|
|
30
|
+
buffer = (buffer << BASE64_BITS) | value;
|
|
31
|
+
bits += BASE64_BITS;
|
|
32
|
+
// Write out some bits if the buffer has a byte's worth:
|
|
33
|
+
if (bits >= 8) {
|
|
34
|
+
bits -= 8;
|
|
35
|
+
out[written++] = 0xff & (buffer >> bits);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Verify
|
|
39
|
+
if (bits >= BASE64_BITS || (0xff & (buffer << (8 - bits))) !== 0) {
|
|
40
|
+
throw new SyntaxError('unexpected end of data');
|
|
41
|
+
}
|
|
42
|
+
return out;
|
|
43
|
+
};
|
|
44
|
+
export const encode = (data) => {
|
|
45
|
+
// const pad = BASE64_CHARSET[BASE64_CHARSET.length - 1] === '=';
|
|
46
|
+
const mask = (1 << BASE64_BITS) - 1;
|
|
47
|
+
let out = '';
|
|
48
|
+
let bits = 0; // Number of bits currently in the buffer
|
|
49
|
+
let buffer = 0; // Bits waiting to be written out, MSB first
|
|
50
|
+
for (let i = 0; i < data.length; ++i) {
|
|
51
|
+
// Slurp data into the buffer:
|
|
52
|
+
buffer = (buffer << 8) | data[i];
|
|
53
|
+
bits += 8;
|
|
54
|
+
// Write out as much as we can:
|
|
55
|
+
while (bits > BASE64_BITS) {
|
|
56
|
+
bits -= BASE64_BITS;
|
|
57
|
+
out += BASE64_CHARSET[mask & (buffer >> bits)];
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Partial character:
|
|
61
|
+
if (bits !== 0) {
|
|
62
|
+
out += BASE64_CHARSET[mask & (buffer << (BASE64_BITS - bits))];
|
|
63
|
+
}
|
|
64
|
+
// Add padding characters until we hit a byte boundary:
|
|
65
|
+
// if (pad) {
|
|
66
|
+
// while (((out.length * BASE64_BITS) & 7) !== 0) {
|
|
67
|
+
// out += '=';
|
|
68
|
+
// }
|
|
69
|
+
// }
|
|
70
|
+
return out;
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=base64.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../lib/base64.ts"],"names":[],"mappings":"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"}
|
package/dist/bytes.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface Bytes {
|
|
2
|
+
$bytes: string;
|
|
3
|
+
}
|
|
4
|
+
export declare class BytesWrapper implements Bytes {
|
|
5
|
+
buf: Uint8Array;
|
|
6
|
+
constructor(buf: Uint8Array);
|
|
7
|
+
get $bytes(): string;
|
|
8
|
+
toJSON(): Bytes;
|
|
9
|
+
}
|
|
10
|
+
export declare const toBytes: (buf: Uint8Array) => Bytes;
|
|
11
|
+
export declare const fromBytes: (bytes: Bytes) => Uint8Array;
|
package/dist/bytes.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { decode, encode } from './base64.js';
|
|
2
|
+
export class BytesWrapper {
|
|
3
|
+
buf;
|
|
4
|
+
constructor(buf) {
|
|
5
|
+
this.buf = buf;
|
|
6
|
+
}
|
|
7
|
+
get $bytes() {
|
|
8
|
+
return encode(this.buf);
|
|
9
|
+
}
|
|
10
|
+
toJSON() {
|
|
11
|
+
return { $bytes: this.$bytes };
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export const toBytes = (buf) => {
|
|
15
|
+
return new BytesWrapper(buf);
|
|
16
|
+
};
|
|
17
|
+
export const fromBytes = (bytes) => {
|
|
18
|
+
if (bytes instanceof BytesWrapper) {
|
|
19
|
+
return bytes.buf;
|
|
20
|
+
}
|
|
21
|
+
return decode(bytes.$bytes);
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=bytes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../lib/bytes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAM7C,MAAM,OAAO,YAAY;IACL;IAAnB,YAAmB,GAAe;QAAf,QAAG,GAAH,GAAG,CAAY;IAAG,CAAC;IAEtC,IAAI,MAAM;QACT,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,MAAM;QACL,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;CACD;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAe,EAAS,EAAE;IACjD,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAY,EAAc,EAAE;IACrD,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type CID } from '@atcute/cid';
|
|
2
|
+
export interface CIDLink {
|
|
3
|
+
$link: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class CIDLinkWrapper implements CIDLink {
|
|
6
|
+
cid: CID;
|
|
7
|
+
constructor(cid: CID);
|
|
8
|
+
get $link(): string;
|
|
9
|
+
toJSON(): CIDLink;
|
|
10
|
+
}
|
|
11
|
+
export declare const toCIDLink: (cid: CID) => CIDLink;
|
|
12
|
+
export declare const fromCIDLink: (link: CIDLink) => CID;
|
package/dist/cid-link.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { format, parse } from '@atcute/cid';
|
|
2
|
+
export class CIDLinkWrapper {
|
|
3
|
+
cid;
|
|
4
|
+
constructor(cid) {
|
|
5
|
+
this.cid = cid;
|
|
6
|
+
}
|
|
7
|
+
get $link() {
|
|
8
|
+
return format(this.cid);
|
|
9
|
+
}
|
|
10
|
+
toJSON() {
|
|
11
|
+
return { $link: this.$link };
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export const toCIDLink = (cid) => {
|
|
15
|
+
return new CIDLinkWrapper(cid);
|
|
16
|
+
};
|
|
17
|
+
export const fromCIDLink = (link) => {
|
|
18
|
+
if (link instanceof CIDLinkWrapper) {
|
|
19
|
+
return link.cid;
|
|
20
|
+
}
|
|
21
|
+
return parse(link.$link);
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=cid-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cid-link.js","sourceRoot":"","sources":["../lib/cid-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAMtD,MAAM,OAAO,cAAc;IACP;IAAnB,YAAmB,GAAQ;QAAR,QAAG,GAAH,GAAG,CAAK;IAAG,CAAC;IAE/B,IAAI,KAAK;QACR,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,MAAM;QACL,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CACD;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAQ,EAAW,EAAE;IAC9C,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAa,EAAO,EAAE;IACjD,IAAI,IAAI,YAAY,cAAc,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC,CAAC"}
|
package/dist/decode.d.ts
ADDED
package/dist/decode.js
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { getFloat16 } from 'fp16';
|
|
2
|
+
import * as CID from '@atcute/cid';
|
|
3
|
+
import { toBytes } from './bytes.js';
|
|
4
|
+
import { toCIDLink } from './cid-link.js';
|
|
5
|
+
const utf8d = new TextDecoder();
|
|
6
|
+
const MAX_SAFE_INTEGER = BigInt(Number.MAX_SAFE_INTEGER);
|
|
7
|
+
const MIN_SAFE_INTEGER = BigInt(Number.MIN_SAFE_INTEGER);
|
|
8
|
+
const readArgument = (state, info) => {
|
|
9
|
+
if (info < 24) {
|
|
10
|
+
return [info, undefined];
|
|
11
|
+
}
|
|
12
|
+
switch (info) {
|
|
13
|
+
case 24: {
|
|
14
|
+
return [readUint8(state), undefined];
|
|
15
|
+
}
|
|
16
|
+
case 25: {
|
|
17
|
+
return [readUint16(state), undefined];
|
|
18
|
+
}
|
|
19
|
+
case 26: {
|
|
20
|
+
return [readUint32(state), undefined];
|
|
21
|
+
}
|
|
22
|
+
case 27: {
|
|
23
|
+
const uint64 = readUint64(state);
|
|
24
|
+
const value = MAX_SAFE_INTEGER < uint64 ? Infinity : Number(uint64);
|
|
25
|
+
return [value, uint64];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
throw new Error(`invalid argument encoding; got ${info}`);
|
|
29
|
+
};
|
|
30
|
+
const readFloat16 = (state) => {
|
|
31
|
+
const value = getFloat16(state.v, state.p);
|
|
32
|
+
state.p += 2;
|
|
33
|
+
return value;
|
|
34
|
+
};
|
|
35
|
+
const readFloat32 = (state) => {
|
|
36
|
+
const value = state.v.getFloat32(state.p);
|
|
37
|
+
state.p += 4;
|
|
38
|
+
return value;
|
|
39
|
+
};
|
|
40
|
+
const readFloat64 = (state) => {
|
|
41
|
+
const value = state.v.getFloat64(state.p);
|
|
42
|
+
state.p += 8;
|
|
43
|
+
return value;
|
|
44
|
+
};
|
|
45
|
+
const readUint8 = (state) => {
|
|
46
|
+
const value = state.v.getUint8(state.p);
|
|
47
|
+
state.p += 1;
|
|
48
|
+
return value;
|
|
49
|
+
};
|
|
50
|
+
const readUint16 = (state) => {
|
|
51
|
+
const value = state.v.getUint16(state.p);
|
|
52
|
+
state.p += 2;
|
|
53
|
+
return value;
|
|
54
|
+
};
|
|
55
|
+
const readUint32 = (state) => {
|
|
56
|
+
const value = state.v.getUint32(state.p);
|
|
57
|
+
state.p += 4;
|
|
58
|
+
return value;
|
|
59
|
+
};
|
|
60
|
+
const readUint64 = (state) => {
|
|
61
|
+
const value = state.v.getBigUint64(state.p);
|
|
62
|
+
state.p += 8;
|
|
63
|
+
return value;
|
|
64
|
+
};
|
|
65
|
+
const readString = (state, length) => {
|
|
66
|
+
const slice = state.b.subarray(state.p, (state.p += length));
|
|
67
|
+
return utf8d.decode(slice);
|
|
68
|
+
};
|
|
69
|
+
const readBytes = (state, length) => {
|
|
70
|
+
const slice = state.b.subarray(state.p, (state.p += length));
|
|
71
|
+
return toBytes(slice);
|
|
72
|
+
};
|
|
73
|
+
const readCid = (state, length) => {
|
|
74
|
+
// CID bytes are prefixed with 0x00 for historical reasons, apparently.
|
|
75
|
+
const slice = state.b.subarray(state.p + 1, (state.p += length));
|
|
76
|
+
const parsed = CID.decode(slice);
|
|
77
|
+
return toCIDLink(parsed);
|
|
78
|
+
};
|
|
79
|
+
const readValue = (state) => {
|
|
80
|
+
const prelude = readUint8(state);
|
|
81
|
+
const type = prelude >> 5;
|
|
82
|
+
const info = prelude & 0x1f;
|
|
83
|
+
if (type === 0) {
|
|
84
|
+
const [val, uint64] = readArgument(state, info);
|
|
85
|
+
if (uint64 !== undefined && MAX_SAFE_INTEGER < uint64) {
|
|
86
|
+
throw new RangeError(`can't decode integers greater than 2^53-1`);
|
|
87
|
+
}
|
|
88
|
+
return val;
|
|
89
|
+
}
|
|
90
|
+
if (type === 1) {
|
|
91
|
+
const [val, uint64] = readArgument(state, info);
|
|
92
|
+
if (uint64 !== undefined && -1n - uint64 < MIN_SAFE_INTEGER) {
|
|
93
|
+
throw new RangeError(`can't decode integers less than -2^53-1`);
|
|
94
|
+
}
|
|
95
|
+
return -1 - val;
|
|
96
|
+
}
|
|
97
|
+
if (type === 2) {
|
|
98
|
+
const [len] = readArgument(state, info);
|
|
99
|
+
return readBytes(state, len);
|
|
100
|
+
}
|
|
101
|
+
if (type === 3) {
|
|
102
|
+
const [len] = readArgument(state, info);
|
|
103
|
+
return readString(state, len);
|
|
104
|
+
}
|
|
105
|
+
if (type === 4) {
|
|
106
|
+
const [len] = readArgument(state, info);
|
|
107
|
+
const array = new Array(len);
|
|
108
|
+
for (let idx = 0; idx < len; idx++) {
|
|
109
|
+
array[idx] = readValue(state);
|
|
110
|
+
}
|
|
111
|
+
return array;
|
|
112
|
+
}
|
|
113
|
+
if (type === 5) {
|
|
114
|
+
const [len] = readArgument(state, info);
|
|
115
|
+
const object = {};
|
|
116
|
+
for (let idx = 0; idx < len; idx++) {
|
|
117
|
+
const key = readValue(state);
|
|
118
|
+
if (typeof key !== 'string') {
|
|
119
|
+
throw new TypeError(`expected map to only have string keys; got ${typeof key}`);
|
|
120
|
+
}
|
|
121
|
+
object[key] = readValue(state);
|
|
122
|
+
}
|
|
123
|
+
return object;
|
|
124
|
+
}
|
|
125
|
+
if (type === 6) {
|
|
126
|
+
const [tag] = readArgument(state, info);
|
|
127
|
+
if (tag === 42) {
|
|
128
|
+
const prelude = readUint8(state);
|
|
129
|
+
const type = prelude >> 5;
|
|
130
|
+
const info = prelude & 0x1f;
|
|
131
|
+
if (type !== 2) {
|
|
132
|
+
throw new TypeError(`expected cid tag to have bytes value; got ${type}`);
|
|
133
|
+
}
|
|
134
|
+
const [len] = readArgument(state, info);
|
|
135
|
+
return readCid(state, len);
|
|
136
|
+
}
|
|
137
|
+
throw new TypeError(`unsupported tag; got ${tag}`);
|
|
138
|
+
}
|
|
139
|
+
if (type === 7) {
|
|
140
|
+
switch (info) {
|
|
141
|
+
case 20:
|
|
142
|
+
return false;
|
|
143
|
+
case 21:
|
|
144
|
+
return true;
|
|
145
|
+
case 22:
|
|
146
|
+
return null;
|
|
147
|
+
case 23:
|
|
148
|
+
return undefined;
|
|
149
|
+
case 25:
|
|
150
|
+
return readFloat16(state);
|
|
151
|
+
case 26:
|
|
152
|
+
return readFloat32(state);
|
|
153
|
+
case 27:
|
|
154
|
+
return readFloat64(state);
|
|
155
|
+
}
|
|
156
|
+
throw new Error(`invalid simple value; got ${info}`);
|
|
157
|
+
}
|
|
158
|
+
throw new TypeError(`invalid type; got ${type}`);
|
|
159
|
+
};
|
|
160
|
+
export const decodeFirst = (buf) => {
|
|
161
|
+
const state = {
|
|
162
|
+
b: buf,
|
|
163
|
+
v: new DataView(buf.buffer, buf.byteOffset, buf.byteLength),
|
|
164
|
+
p: 0,
|
|
165
|
+
};
|
|
166
|
+
const value = readValue(state);
|
|
167
|
+
const remainder = buf.subarray(state.p);
|
|
168
|
+
return [value, remainder];
|
|
169
|
+
};
|
|
170
|
+
export const decode = (buf) => {
|
|
171
|
+
const [value, remainder] = decodeFirst(buf);
|
|
172
|
+
if (remainder.length !== 0) {
|
|
173
|
+
throw new Error(`decoded value contains remainder`);
|
|
174
|
+
}
|
|
175
|
+
return value;
|
|
176
|
+
};
|
|
177
|
+
//# sourceMappingURL=decode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../lib/decode.ts"],"names":[],"mappings":"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"}
|
package/dist/encode.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const encode: (value: any) => Uint8Array;
|
package/dist/encode.js
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { getFloat16Precision, getFloat32Precision, Precision, setFloat16 } from 'fp16';
|
|
2
|
+
import { BytesWrapper, fromBytes } from './bytes.js';
|
|
3
|
+
import { CIDLinkWrapper, fromCIDLink } from './cid-link.js';
|
|
4
|
+
const CHUNK_SIZE = 1024;
|
|
5
|
+
const utf8e = new TextEncoder();
|
|
6
|
+
const resizeIfNeeded = (state, needed) => {
|
|
7
|
+
const buf = state.b;
|
|
8
|
+
const pos = state.p;
|
|
9
|
+
if (buf.byteLength < pos + needed) {
|
|
10
|
+
state.c.push(new Uint8Array(buf, 0, pos));
|
|
11
|
+
state.b = new ArrayBuffer(Math.max(CHUNK_SIZE, needed));
|
|
12
|
+
state.v = new DataView(state.b);
|
|
13
|
+
state.p = 0;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const getInfo = (arg) => {
|
|
17
|
+
if (arg < 24) {
|
|
18
|
+
return arg;
|
|
19
|
+
}
|
|
20
|
+
else if (arg < 0x100) {
|
|
21
|
+
return 24;
|
|
22
|
+
}
|
|
23
|
+
else if (arg < 0x10000) {
|
|
24
|
+
return 25;
|
|
25
|
+
}
|
|
26
|
+
else if (arg < 0x100000000) {
|
|
27
|
+
return 26;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
return 27;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const writeFloat16 = (state, val) => {
|
|
34
|
+
resizeIfNeeded(state, 2);
|
|
35
|
+
setFloat16(state.v, state.p, val);
|
|
36
|
+
state.p += 2;
|
|
37
|
+
};
|
|
38
|
+
const writeFloat32 = (state, val) => {
|
|
39
|
+
resizeIfNeeded(state, 4);
|
|
40
|
+
state.v.setFloat32(state.p, val);
|
|
41
|
+
state.p += 4;
|
|
42
|
+
};
|
|
43
|
+
const writeFloat64 = (state, val) => {
|
|
44
|
+
resizeIfNeeded(state, 8);
|
|
45
|
+
state.v.setFloat64(state.p, val);
|
|
46
|
+
state.p += 8;
|
|
47
|
+
};
|
|
48
|
+
const writeUint8 = (state, val) => {
|
|
49
|
+
resizeIfNeeded(state, 1);
|
|
50
|
+
state.v.setUint8(state.p, val);
|
|
51
|
+
state.p += 1;
|
|
52
|
+
};
|
|
53
|
+
const writeUint16 = (state, val) => {
|
|
54
|
+
resizeIfNeeded(state, 2);
|
|
55
|
+
state.v.setUint16(state.p, val);
|
|
56
|
+
state.p += 2;
|
|
57
|
+
};
|
|
58
|
+
const writeUint32 = (state, val) => {
|
|
59
|
+
resizeIfNeeded(state, 4);
|
|
60
|
+
state.v.setUint32(state.p, val);
|
|
61
|
+
state.p += 4;
|
|
62
|
+
};
|
|
63
|
+
const writeUint64 = (state, val) => {
|
|
64
|
+
resizeIfNeeded(state, 8);
|
|
65
|
+
state.v.setBigUint64(state.p, BigInt(val));
|
|
66
|
+
state.p += 8;
|
|
67
|
+
};
|
|
68
|
+
const writeTypeAndArgument = (state, type, arg) => {
|
|
69
|
+
const info = getInfo(arg);
|
|
70
|
+
writeUint8(state, (type << 5) | info);
|
|
71
|
+
switch (info) {
|
|
72
|
+
case 24:
|
|
73
|
+
return writeUint8(state, arg);
|
|
74
|
+
case 25:
|
|
75
|
+
return writeUint16(state, arg);
|
|
76
|
+
case 26:
|
|
77
|
+
return writeUint32(state, arg);
|
|
78
|
+
case 27:
|
|
79
|
+
return writeUint64(state, arg);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
const writeInteger = (state, val) => {
|
|
83
|
+
if (val < 0) {
|
|
84
|
+
writeTypeAndArgument(state, 1, -val - 1);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
writeTypeAndArgument(state, 0, val);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
const writeFloat = (state, val) => {
|
|
91
|
+
if (getFloat16Precision(val) === Precision.Exact) {
|
|
92
|
+
writeUint8(state, 0xe0 | 25);
|
|
93
|
+
writeFloat16(state, val);
|
|
94
|
+
}
|
|
95
|
+
else if (getFloat32Precision(val) === Precision.Exact) {
|
|
96
|
+
writeUint8(state, 0x0e | 26);
|
|
97
|
+
writeFloat32(state, val);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
writeUint8(state, 0xe0 | 27);
|
|
101
|
+
writeFloat64(state, val);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
const writeNumber = (state, val) => {
|
|
105
|
+
if (Number.isNaN(val)) {
|
|
106
|
+
throw new RangeError(`NaN values not supported`);
|
|
107
|
+
}
|
|
108
|
+
if (val === Infinity || val === -Infinity) {
|
|
109
|
+
throw new RangeError(`Infinity values not supported`);
|
|
110
|
+
}
|
|
111
|
+
if (Object.is(val, 0)) {
|
|
112
|
+
writeInteger(state, val);
|
|
113
|
+
}
|
|
114
|
+
else if (Object.is(val, -0)) {
|
|
115
|
+
writeFloat(state, val);
|
|
116
|
+
}
|
|
117
|
+
else if (Math.floor(val) === val && Number.MIN_SAFE_INTEGER <= val && val <= Number.MAX_SAFE_INTEGER) {
|
|
118
|
+
writeInteger(state, val);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
writeFloat(state, val);
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
const writeString = (state, val) => {
|
|
125
|
+
const buf = utf8e.encode(val);
|
|
126
|
+
const len = buf.byteLength;
|
|
127
|
+
writeTypeAndArgument(state, 3, len);
|
|
128
|
+
resizeIfNeeded(state, len);
|
|
129
|
+
new Uint8Array(state.b, state.p).set(buf);
|
|
130
|
+
state.p += len;
|
|
131
|
+
};
|
|
132
|
+
const writeBytes = (state, val) => {
|
|
133
|
+
const buf = fromBytes(val);
|
|
134
|
+
const len = buf.byteLength;
|
|
135
|
+
writeTypeAndArgument(state, 2, len);
|
|
136
|
+
resizeIfNeeded(state, len);
|
|
137
|
+
new Uint8Array(state.b, state.p, len).set(buf);
|
|
138
|
+
state.p += len;
|
|
139
|
+
};
|
|
140
|
+
const writeCid = (state, val) => {
|
|
141
|
+
// CID bytes are prefixed with 0x00 for historical reasons, apparently.
|
|
142
|
+
const buf = fromCIDLink(val).bytes;
|
|
143
|
+
const len = buf.byteLength + 1;
|
|
144
|
+
writeTypeAndArgument(state, 6, 42);
|
|
145
|
+
writeTypeAndArgument(state, 2, len);
|
|
146
|
+
resizeIfNeeded(state, len);
|
|
147
|
+
new Uint8Array(state.b, state.p + 1, len - 1).set(buf);
|
|
148
|
+
state.p += len;
|
|
149
|
+
};
|
|
150
|
+
const writeValue = (state, val) => {
|
|
151
|
+
if (val === undefined) {
|
|
152
|
+
throw new TypeError(`undefined values not supported`);
|
|
153
|
+
}
|
|
154
|
+
if (val === null) {
|
|
155
|
+
return writeUint8(state, 0xf6);
|
|
156
|
+
}
|
|
157
|
+
if (val === false) {
|
|
158
|
+
return writeUint8(state, 0xf4);
|
|
159
|
+
}
|
|
160
|
+
if (val === true) {
|
|
161
|
+
return writeUint8(state, 0xf5);
|
|
162
|
+
}
|
|
163
|
+
if (typeof val === 'number') {
|
|
164
|
+
return writeNumber(state, val);
|
|
165
|
+
}
|
|
166
|
+
if (typeof val === 'string') {
|
|
167
|
+
return writeString(state, val);
|
|
168
|
+
}
|
|
169
|
+
if (typeof val === 'object') {
|
|
170
|
+
if (isArray(val)) {
|
|
171
|
+
const len = val.length;
|
|
172
|
+
writeTypeAndArgument(state, 4, len);
|
|
173
|
+
for (let idx = 0; idx < len; idx++) {
|
|
174
|
+
const v = val[idx];
|
|
175
|
+
writeValue(state, v);
|
|
176
|
+
}
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
if ('$link' in val) {
|
|
180
|
+
if (val instanceof CIDLinkWrapper || typeof val.$link === 'string') {
|
|
181
|
+
writeCid(state, val);
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if ('$bytes' in val) {
|
|
186
|
+
if (val instanceof BytesWrapper || typeof val.$bytes === 'string') {
|
|
187
|
+
writeBytes(state, val);
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (isPlainObject(val)) {
|
|
192
|
+
const keys = Object.keys(val)
|
|
193
|
+
.filter((key) => typeof key === 'string' && val[key] !== undefined)
|
|
194
|
+
.sort(compareKeys);
|
|
195
|
+
const len = keys.length;
|
|
196
|
+
writeTypeAndArgument(state, 5, len);
|
|
197
|
+
for (let idx = 0; idx < len; idx++) {
|
|
198
|
+
const key = keys[idx];
|
|
199
|
+
writeString(state, key);
|
|
200
|
+
writeValue(state, val[key]);
|
|
201
|
+
}
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
throw new TypeError(`unsupported type: ${val}`);
|
|
206
|
+
};
|
|
207
|
+
const createState = () => {
|
|
208
|
+
const buf = new ArrayBuffer(CHUNK_SIZE);
|
|
209
|
+
return {
|
|
210
|
+
c: [],
|
|
211
|
+
b: buf,
|
|
212
|
+
v: new DataView(buf),
|
|
213
|
+
p: 0,
|
|
214
|
+
};
|
|
215
|
+
};
|
|
216
|
+
export const encode = (value) => {
|
|
217
|
+
const state = createState();
|
|
218
|
+
const chunks = state.c;
|
|
219
|
+
writeValue(state, value);
|
|
220
|
+
chunks.push(new Uint8Array(state.b, 0, state.p));
|
|
221
|
+
let size = 0;
|
|
222
|
+
let written = 0;
|
|
223
|
+
let len = chunks.length;
|
|
224
|
+
let idx;
|
|
225
|
+
for (idx = 0; idx < len; idx++) {
|
|
226
|
+
size += chunks[idx].byteLength;
|
|
227
|
+
}
|
|
228
|
+
const u8 = new Uint8Array(size);
|
|
229
|
+
for (idx = 0; idx < len; idx++) {
|
|
230
|
+
const chunk = chunks[idx];
|
|
231
|
+
u8.set(chunk, written);
|
|
232
|
+
written += chunk.byteLength;
|
|
233
|
+
}
|
|
234
|
+
return u8;
|
|
235
|
+
};
|
|
236
|
+
const isArray = Array.isArray;
|
|
237
|
+
const isPlainObject = (v) => {
|
|
238
|
+
if (typeof v !== 'object' || v === null) {
|
|
239
|
+
return false;
|
|
240
|
+
}
|
|
241
|
+
const proto = Object.getPrototypeOf(v);
|
|
242
|
+
return proto === Object.prototype || proto === null;
|
|
243
|
+
};
|
|
244
|
+
const compareKeys = (a, b) => {
|
|
245
|
+
if (a.length < b.length) {
|
|
246
|
+
return -1;
|
|
247
|
+
}
|
|
248
|
+
else if (b.length < a.length) {
|
|
249
|
+
return 1;
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
return a < b ? -1 : 1;
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
//# sourceMappingURL=encode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encode.js","sourceRoot":"","sources":["../lib/encode.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "module",
|
|
3
|
+
"name": "@atcute/cbor",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"description": "DAG-CBOR codec that deals in AT Protocol's HTTP wire format",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"url": "https://codeberg.org/mary-ext/atcute"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/"
|
|
12
|
+
],
|
|
13
|
+
"exports": {
|
|
14
|
+
".": "./dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"sideEffects": false,
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@ipld/dag-cbor": "^9.2.1",
|
|
19
|
+
"@types/bun": "^1.1.6",
|
|
20
|
+
"mitata": "^0.1.11"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"fp16": "^0.3.0",
|
|
24
|
+
"@atcute/base32": "^1.0.0",
|
|
25
|
+
"@atcute/cid": "^1.0.0"
|
|
26
|
+
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "tsc --project tsconfig.build.json",
|
|
29
|
+
"test": "bun test --coverage",
|
|
30
|
+
"prepublish": "rm -rf dist; pnpm run build"
|
|
31
|
+
}
|
|
32
|
+
}
|