@atcute/cbor 2.2.1 → 2.2.3
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/dist/bytes.js +3 -0
- package/dist/bytes.js.map +1 -1
- package/dist/decode.js +35 -29
- package/dist/decode.js.map +1 -1
- package/lib/bytes.ts +5 -0
- package/lib/decode.ts +45 -32
- package/package.json +4 -4
package/dist/bytes.js
CHANGED
package/dist/bytes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../lib/bytes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAMzD,MAAM,OAAO,YAAY;
|
|
1
|
+
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../lib/bytes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAMzD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAEzD,MAAM,OAAO,YAAY;IAIL;IAHnB,gBAAgB;IACP,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;IAE/B,YAAmB,GAAe;QAAf,QAAG,GAAH,GAAG,CAAY;IAAG,CAAC;IAEtC,IAAI,MAAM;QACT,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,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,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC,CAAC"}
|
package/dist/decode.js
CHANGED
|
@@ -65,15 +65,21 @@ const readBytes = (state, length) => {
|
|
|
65
65
|
const slice = state.b.subarray(state.p, (state.p += length));
|
|
66
66
|
return toBytes(slice);
|
|
67
67
|
};
|
|
68
|
-
const readTypeInfo = (state) => {
|
|
69
|
-
const prelude = readUint8(state);
|
|
70
|
-
return [prelude >> 5, prelude & 0x1f];
|
|
71
|
-
};
|
|
72
68
|
const readCid = (state, length) => {
|
|
73
69
|
// CID bytes are prefixed with 0x00 for historical reasons, apparently.
|
|
74
70
|
const slice = state.b.subarray(state.p + 1, (state.p += length));
|
|
75
71
|
return new CidLinkWrapper(slice);
|
|
76
72
|
};
|
|
73
|
+
const decodeStringKey = (state) => {
|
|
74
|
+
const prelude = readUint8(state);
|
|
75
|
+
const type = prelude >> 5;
|
|
76
|
+
if (type !== 3) {
|
|
77
|
+
throw new TypeError(`expected map to only have string keys; got type ${type}`);
|
|
78
|
+
}
|
|
79
|
+
const info = prelude & 0x1f;
|
|
80
|
+
const length = readArgument(state, info);
|
|
81
|
+
return readString(state, length);
|
|
82
|
+
};
|
|
77
83
|
export const decodeFirst = (buf) => {
|
|
78
84
|
const len = buf.length;
|
|
79
85
|
const state = {
|
|
@@ -87,47 +93,52 @@ export const decodeFirst = (buf) => {
|
|
|
87
93
|
const prelude = readUint8(state);
|
|
88
94
|
const type = prelude >> 5;
|
|
89
95
|
const info = prelude & 0x1f;
|
|
90
|
-
const arg = type < 7 ? readArgument(state, info) : 0;
|
|
91
96
|
switch (type) {
|
|
92
97
|
case 0: {
|
|
93
|
-
value =
|
|
98
|
+
value = readArgument(state, info);
|
|
94
99
|
break;
|
|
95
100
|
}
|
|
96
101
|
case 1: {
|
|
97
|
-
value = -1 -
|
|
102
|
+
value = -1 - readArgument(state, info);
|
|
98
103
|
break;
|
|
99
104
|
}
|
|
100
105
|
case 2: {
|
|
101
|
-
value = readBytes(state,
|
|
106
|
+
value = readBytes(state, readArgument(state, info));
|
|
102
107
|
break;
|
|
103
108
|
}
|
|
104
109
|
case 3: {
|
|
105
|
-
value = readString(state,
|
|
110
|
+
value = readString(state, readArgument(state, info));
|
|
106
111
|
break;
|
|
107
112
|
}
|
|
108
113
|
case 4: {
|
|
109
|
-
const
|
|
114
|
+
const len = readArgument(state, info);
|
|
115
|
+
const arr = new Array(len);
|
|
110
116
|
value = arr;
|
|
111
|
-
if (
|
|
112
|
-
stack = { t: 1, c: arr, k: null, r:
|
|
117
|
+
if (len > 0) {
|
|
118
|
+
stack = { t: 1, c: arr, k: null, r: len, n: stack };
|
|
113
119
|
continue jump;
|
|
114
120
|
}
|
|
115
121
|
break;
|
|
116
122
|
}
|
|
117
123
|
case 5: {
|
|
124
|
+
const len = readArgument(state, info);
|
|
118
125
|
const obj = {};
|
|
119
126
|
value = obj;
|
|
120
|
-
if (
|
|
121
|
-
//
|
|
122
|
-
|
|
127
|
+
if (len > 0) {
|
|
128
|
+
// We'll read the key of the first item here.
|
|
129
|
+
const first = decodeStringKey(state);
|
|
130
|
+
stack = { t: 0, c: obj, k: first, r: len, n: stack };
|
|
123
131
|
continue jump;
|
|
124
132
|
}
|
|
125
133
|
break;
|
|
126
134
|
}
|
|
127
135
|
case 6: {
|
|
136
|
+
const arg = readArgument(state, info);
|
|
128
137
|
switch (arg) {
|
|
129
138
|
case 42: {
|
|
130
|
-
const
|
|
139
|
+
const prelude = readUint8(state);
|
|
140
|
+
const type = prelude >> 5;
|
|
141
|
+
const info = prelude & 0x1f;
|
|
131
142
|
if (type !== 2) {
|
|
132
143
|
throw new TypeError(`expected cid-link to be type 2 (bytes); got type ${type}`);
|
|
133
144
|
}
|
|
@@ -171,20 +182,11 @@ export const decodeFirst = (buf) => {
|
|
|
171
182
|
case 0: {
|
|
172
183
|
const obj = stack.c;
|
|
173
184
|
const key = stack.k;
|
|
174
|
-
if (key ===
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}
|
|
178
|
-
stack.k = value;
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
if (key === '__proto__') {
|
|
182
|
-
// Guard against prototype pollution. CWE-1321
|
|
183
|
-
Object.defineProperty(obj, key, { enumerable: true, configurable: true, writable: true });
|
|
184
|
-
}
|
|
185
|
-
obj[key] = value;
|
|
186
|
-
stack.k = null;
|
|
185
|
+
if (key === '__proto__') {
|
|
186
|
+
// Guard against prototype pollution. CWE-1321
|
|
187
|
+
Object.defineProperty(obj, key, { enumerable: true, configurable: true, writable: true });
|
|
187
188
|
}
|
|
189
|
+
obj[key] = value;
|
|
188
190
|
break;
|
|
189
191
|
}
|
|
190
192
|
case 1: {
|
|
@@ -196,6 +198,10 @@ export const decodeFirst = (buf) => {
|
|
|
196
198
|
}
|
|
197
199
|
if (--stack.r !== 0) {
|
|
198
200
|
// We still have more values to decode, continue
|
|
201
|
+
if (stack.t === 0) {
|
|
202
|
+
// Read the key of the next map item
|
|
203
|
+
stack.k = decodeStringKey(state);
|
|
204
|
+
}
|
|
199
205
|
continue jump;
|
|
200
206
|
}
|
|
201
207
|
// Unwrap the stack
|
package/dist/decode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../lib/decode.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../lib/decode.ts"],"names":[],"mappings":"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"}
|
package/lib/bytes.ts
CHANGED
|
@@ -4,7 +4,12 @@ export interface Bytes {
|
|
|
4
4
|
$bytes: string;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
const BYTES_SYMBOL = Symbol.for('@atcute/bytes-wrapper');
|
|
8
|
+
|
|
7
9
|
export class BytesWrapper implements Bytes {
|
|
10
|
+
/** @internal */
|
|
11
|
+
readonly [BYTES_SYMBOL] = true;
|
|
12
|
+
|
|
8
13
|
constructor(public buf: Uint8Array) {}
|
|
9
14
|
|
|
10
15
|
get $bytes(): string {
|
package/lib/decode.ts
CHANGED
|
@@ -95,11 +95,6 @@ const readBytes = (state: State, length: number): Bytes => {
|
|
|
95
95
|
return toBytes(slice);
|
|
96
96
|
};
|
|
97
97
|
|
|
98
|
-
const readTypeInfo = (state: State): [number, number] => {
|
|
99
|
-
const prelude = readUint8(state);
|
|
100
|
-
return [prelude >> 5, prelude & 0x1f];
|
|
101
|
-
};
|
|
102
|
-
|
|
103
98
|
const readCid = (state: State, length: number): CidLink => {
|
|
104
99
|
// CID bytes are prefixed with 0x00 for historical reasons, apparently.
|
|
105
100
|
const slice = state.b.subarray(state.p + 1, (state.p += length));
|
|
@@ -107,6 +102,19 @@ const readCid = (state: State, length: number): CidLink => {
|
|
|
107
102
|
return new CidLinkWrapper(slice);
|
|
108
103
|
};
|
|
109
104
|
|
|
105
|
+
const decodeStringKey = (state: State): string => {
|
|
106
|
+
const prelude = readUint8(state);
|
|
107
|
+
|
|
108
|
+
const type = prelude >> 5;
|
|
109
|
+
if (type !== 3) {
|
|
110
|
+
throw new TypeError(`expected map to only have string keys; got type ${type}`);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const info = prelude & 0x1f;
|
|
114
|
+
const length = readArgument(state, info);
|
|
115
|
+
return readString(state, length);
|
|
116
|
+
};
|
|
117
|
+
|
|
110
118
|
type Container =
|
|
111
119
|
| {
|
|
112
120
|
/** map type */
|
|
@@ -114,7 +122,7 @@ type Container =
|
|
|
114
122
|
/** container value */
|
|
115
123
|
c: Record<string, unknown>;
|
|
116
124
|
/** held key (as we decode the value) */
|
|
117
|
-
k: string
|
|
125
|
+
k: string;
|
|
118
126
|
/** remaining elements (key + value) */
|
|
119
127
|
r: number;
|
|
120
128
|
/** next container in stack */
|
|
@@ -150,52 +158,60 @@ export const decodeFirst = (buf: Uint8Array): [value: any, remainder: Uint8Array
|
|
|
150
158
|
|
|
151
159
|
const type = prelude >> 5;
|
|
152
160
|
const info = prelude & 0x1f;
|
|
153
|
-
const arg = type < 7 ? readArgument(state, info) : 0;
|
|
154
161
|
|
|
155
162
|
switch (type) {
|
|
156
163
|
case 0: {
|
|
157
|
-
value =
|
|
164
|
+
value = readArgument(state, info);
|
|
158
165
|
break;
|
|
159
166
|
}
|
|
160
167
|
case 1: {
|
|
161
|
-
value = -1 -
|
|
168
|
+
value = -1 - readArgument(state, info);
|
|
162
169
|
break;
|
|
163
170
|
}
|
|
164
171
|
case 2: {
|
|
165
|
-
value = readBytes(state,
|
|
172
|
+
value = readBytes(state, readArgument(state, info));
|
|
166
173
|
break;
|
|
167
174
|
}
|
|
168
175
|
case 3: {
|
|
169
|
-
value = readString(state,
|
|
176
|
+
value = readString(state, readArgument(state, info));
|
|
170
177
|
break;
|
|
171
178
|
}
|
|
172
179
|
case 4: {
|
|
173
|
-
const
|
|
180
|
+
const len = readArgument(state, info);
|
|
181
|
+
const arr = new Array(len);
|
|
174
182
|
value = arr;
|
|
175
183
|
|
|
176
|
-
if (
|
|
177
|
-
stack = { t: 1, c: arr, k: null, r:
|
|
184
|
+
if (len > 0) {
|
|
185
|
+
stack = { t: 1, c: arr, k: null, r: len, n: stack };
|
|
178
186
|
continue jump;
|
|
179
187
|
}
|
|
180
188
|
|
|
181
189
|
break;
|
|
182
190
|
}
|
|
183
191
|
case 5: {
|
|
192
|
+
const len = readArgument(state, info);
|
|
184
193
|
const obj: Record<string, unknown> = {};
|
|
185
194
|
value = obj;
|
|
186
195
|
|
|
187
|
-
if (
|
|
188
|
-
//
|
|
189
|
-
|
|
196
|
+
if (len > 0) {
|
|
197
|
+
// We'll read the key of the first item here.
|
|
198
|
+
const first = decodeStringKey(state);
|
|
199
|
+
|
|
200
|
+
stack = { t: 0, c: obj, k: first, r: len, n: stack };
|
|
190
201
|
continue jump;
|
|
191
202
|
}
|
|
192
203
|
|
|
193
204
|
break;
|
|
194
205
|
}
|
|
195
206
|
case 6: {
|
|
207
|
+
const arg = readArgument(state, info);
|
|
208
|
+
|
|
196
209
|
switch (arg) {
|
|
197
210
|
case 42: {
|
|
198
|
-
const
|
|
211
|
+
const prelude = readUint8(state);
|
|
212
|
+
|
|
213
|
+
const type = prelude >> 5;
|
|
214
|
+
const info = prelude & 0x1f;
|
|
199
215
|
if (type !== 2) {
|
|
200
216
|
throw new TypeError(`expected cid-link to be type 2 (bytes); got type ${type}`);
|
|
201
217
|
}
|
|
@@ -245,22 +261,13 @@ export const decodeFirst = (buf: Uint8Array): [value: any, remainder: Uint8Array
|
|
|
245
261
|
const obj = stack.c;
|
|
246
262
|
const key = stack.k;
|
|
247
263
|
|
|
248
|
-
if (key ===
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
stack.k = value;
|
|
254
|
-
} else {
|
|
255
|
-
if (key === '__proto__') {
|
|
256
|
-
// Guard against prototype pollution. CWE-1321
|
|
257
|
-
Object.defineProperty(obj, key, { enumerable: true, configurable: true, writable: true });
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
obj[key] = value;
|
|
261
|
-
stack.k = null;
|
|
264
|
+
if (key === '__proto__') {
|
|
265
|
+
// Guard against prototype pollution. CWE-1321
|
|
266
|
+
Object.defineProperty(obj, key, { enumerable: true, configurable: true, writable: true });
|
|
262
267
|
}
|
|
263
268
|
|
|
269
|
+
obj[key] = value;
|
|
270
|
+
|
|
264
271
|
break;
|
|
265
272
|
}
|
|
266
273
|
case 1: {
|
|
@@ -274,6 +281,12 @@ export const decodeFirst = (buf: Uint8Array): [value: any, remainder: Uint8Array
|
|
|
274
281
|
|
|
275
282
|
if (--stack.r !== 0) {
|
|
276
283
|
// We still have more values to decode, continue
|
|
284
|
+
|
|
285
|
+
if (stack.t === 0) {
|
|
286
|
+
// Read the key of the next map item
|
|
287
|
+
stack.k = decodeStringKey(state);
|
|
288
|
+
}
|
|
289
|
+
|
|
277
290
|
continue jump;
|
|
278
291
|
}
|
|
279
292
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@atcute/cbor",
|
|
4
|
-
"version": "2.2.
|
|
4
|
+
"version": "2.2.3",
|
|
5
5
|
"description": "lightweight DASL dCBOR42 codec library for AT Protocol",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"atproto",
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
"cbor-x": "^1.6.0"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@atcute/cid": "^2.2.
|
|
34
|
-
"@atcute/
|
|
35
|
-
"@atcute/
|
|
33
|
+
"@atcute/cid": "^2.2.2",
|
|
34
|
+
"@atcute/uint8array": "^1.0.1",
|
|
35
|
+
"@atcute/multibase": "^1.1.3"
|
|
36
36
|
},
|
|
37
37
|
"scripts": {
|
|
38
38
|
"build": "rm -rf dist; tsc --project tsconfig.build.json",
|