@atcute/cbor 2.1.3 → 2.2.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/dist/decode.js +23 -28
- package/dist/decode.js.map +1 -1
- package/lib/decode.ts +36 -32
- package/package.json +4 -3
package/dist/decode.js
CHANGED
|
@@ -74,11 +74,6 @@ const readCid = (state, length) => {
|
|
|
74
74
|
const slice = state.b.subarray(state.p + 1, (state.p += length));
|
|
75
75
|
return new CidLinkWrapper(slice);
|
|
76
76
|
};
|
|
77
|
-
var ContainerType;
|
|
78
|
-
(function (ContainerType) {
|
|
79
|
-
ContainerType[ContainerType["MAP"] = 0] = "MAP";
|
|
80
|
-
ContainerType[ContainerType["ARRAY"] = 1] = "ARRAY";
|
|
81
|
-
})(ContainerType || (ContainerType = {}));
|
|
82
77
|
export const decodeFirst = (buf) => {
|
|
83
78
|
const len = buf.length;
|
|
84
79
|
const state = {
|
|
@@ -87,13 +82,12 @@ export const decodeFirst = (buf) => {
|
|
|
87
82
|
p: 0,
|
|
88
83
|
};
|
|
89
84
|
let stack = null;
|
|
90
|
-
let
|
|
85
|
+
let value;
|
|
91
86
|
jump: while (state.p < len) {
|
|
92
87
|
const prelude = readUint8(state);
|
|
93
88
|
const type = prelude >> 5;
|
|
94
89
|
const info = prelude & 0x1f;
|
|
95
90
|
const arg = type < 7 ? readArgument(state, info) : 0;
|
|
96
|
-
let value;
|
|
97
91
|
switch (type) {
|
|
98
92
|
case 0: {
|
|
99
93
|
value = arg;
|
|
@@ -115,7 +109,7 @@ export const decodeFirst = (buf) => {
|
|
|
115
109
|
const arr = new Array(arg);
|
|
116
110
|
value = arr;
|
|
117
111
|
if (arg > 0) {
|
|
118
|
-
stack = { t:
|
|
112
|
+
stack = { t: 1, c: arr, k: null, r: arg, n: stack };
|
|
119
113
|
continue jump;
|
|
120
114
|
}
|
|
121
115
|
break;
|
|
@@ -125,7 +119,7 @@ export const decodeFirst = (buf) => {
|
|
|
125
119
|
value = obj;
|
|
126
120
|
if (arg > 0) {
|
|
127
121
|
// `arg * 2` because we're reading both keys and values
|
|
128
|
-
stack = { t:
|
|
122
|
+
stack = { t: 0, c: obj, k: null, r: arg * 2, n: stack };
|
|
129
123
|
continue jump;
|
|
130
124
|
}
|
|
131
125
|
break;
|
|
@@ -173,43 +167,44 @@ export const decodeFirst = (buf) => {
|
|
|
173
167
|
}
|
|
174
168
|
}
|
|
175
169
|
while (stack !== null) {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
const
|
|
180
|
-
|
|
181
|
-
break;
|
|
182
|
-
}
|
|
183
|
-
case ContainerType.MAP: {
|
|
184
|
-
if (node.k === null) {
|
|
170
|
+
switch (stack.t) {
|
|
171
|
+
case 0: {
|
|
172
|
+
const obj = stack.c;
|
|
173
|
+
const key = stack.k;
|
|
174
|
+
if (key === null) {
|
|
185
175
|
if (typeof value !== 'string') {
|
|
186
176
|
throw new TypeError(`expected map to only have string keys; got ${type}`);
|
|
187
177
|
}
|
|
188
|
-
|
|
178
|
+
stack.k = value;
|
|
189
179
|
}
|
|
190
180
|
else {
|
|
191
|
-
if (
|
|
181
|
+
if (key === '__proto__') {
|
|
192
182
|
// Guard against prototype pollution. CWE-1321
|
|
193
|
-
Object.defineProperty(
|
|
183
|
+
Object.defineProperty(obj, key, { enumerable: true, configurable: true, writable: true });
|
|
194
184
|
}
|
|
195
|
-
|
|
196
|
-
|
|
185
|
+
obj[key] = value;
|
|
186
|
+
stack.k = null;
|
|
197
187
|
}
|
|
198
188
|
break;
|
|
199
189
|
}
|
|
190
|
+
case 1: {
|
|
191
|
+
const arr = stack.c;
|
|
192
|
+
const index = arr.length - stack.r;
|
|
193
|
+
arr[index] = value;
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
200
196
|
}
|
|
201
|
-
if (--
|
|
197
|
+
if (--stack.r !== 0) {
|
|
202
198
|
// We still have more values to decode, continue
|
|
203
199
|
continue jump;
|
|
204
200
|
}
|
|
205
201
|
// Unwrap the stack
|
|
206
|
-
value =
|
|
207
|
-
stack =
|
|
202
|
+
value = stack.c;
|
|
203
|
+
stack = stack.n;
|
|
208
204
|
}
|
|
209
|
-
result = value;
|
|
210
205
|
break;
|
|
211
206
|
}
|
|
212
|
-
return [
|
|
207
|
+
return [value, buf.subarray(state.p)];
|
|
213
208
|
};
|
|
214
209
|
export const decode = (buf) => {
|
|
215
210
|
const [value, remainder] = decodeFirst(buf);
|
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/decode.ts
CHANGED
|
@@ -107,24 +107,29 @@ const readCid = (state: State, length: number): CidLink => {
|
|
|
107
107
|
return new CidLinkWrapper(slice);
|
|
108
108
|
};
|
|
109
109
|
|
|
110
|
-
const enum ContainerType {
|
|
111
|
-
MAP,
|
|
112
|
-
ARRAY,
|
|
113
|
-
}
|
|
114
|
-
|
|
115
110
|
type Container =
|
|
116
111
|
| {
|
|
117
|
-
|
|
112
|
+
/** map type */
|
|
113
|
+
t: 0;
|
|
114
|
+
/** container value */
|
|
118
115
|
c: Record<string, unknown>;
|
|
116
|
+
/** held key (as we decode the value) */
|
|
119
117
|
k: string | null;
|
|
118
|
+
/** remaining elements (key + value) */
|
|
120
119
|
r: number;
|
|
120
|
+
/** next container in stack */
|
|
121
121
|
n: Container | null;
|
|
122
122
|
}
|
|
123
123
|
| {
|
|
124
|
-
|
|
124
|
+
/** array type */
|
|
125
|
+
t: 1;
|
|
126
|
+
/** container value */
|
|
125
127
|
c: any[];
|
|
128
|
+
/** held key (not used) */
|
|
126
129
|
k: null;
|
|
130
|
+
/** remaining elements (values) */
|
|
127
131
|
r: number;
|
|
132
|
+
/** next container in stack */
|
|
128
133
|
n: Container | null;
|
|
129
134
|
};
|
|
130
135
|
|
|
@@ -138,7 +143,7 @@ export const decodeFirst = (buf: Uint8Array): [value: any, remainder: Uint8Array
|
|
|
138
143
|
};
|
|
139
144
|
|
|
140
145
|
let stack: Container | null = null;
|
|
141
|
-
let
|
|
146
|
+
let value: any;
|
|
142
147
|
|
|
143
148
|
jump: while (state.p < len) {
|
|
144
149
|
const prelude = readUint8(state);
|
|
@@ -147,8 +152,6 @@ export const decodeFirst = (buf: Uint8Array): [value: any, remainder: Uint8Array
|
|
|
147
152
|
const info = prelude & 0x1f;
|
|
148
153
|
const arg = type < 7 ? readArgument(state, info) : 0;
|
|
149
154
|
|
|
150
|
-
let value: any;
|
|
151
|
-
|
|
152
155
|
switch (type) {
|
|
153
156
|
case 0: {
|
|
154
157
|
value = arg;
|
|
@@ -171,7 +174,7 @@ export const decodeFirst = (buf: Uint8Array): [value: any, remainder: Uint8Array
|
|
|
171
174
|
value = arr;
|
|
172
175
|
|
|
173
176
|
if (arg > 0) {
|
|
174
|
-
stack = { t:
|
|
177
|
+
stack = { t: 1, c: arr, k: null, r: arg, n: stack };
|
|
175
178
|
continue jump;
|
|
176
179
|
}
|
|
177
180
|
|
|
@@ -183,7 +186,7 @@ export const decodeFirst = (buf: Uint8Array): [value: any, remainder: Uint8Array
|
|
|
183
186
|
|
|
184
187
|
if (arg > 0) {
|
|
185
188
|
// `arg * 2` because we're reading both keys and values
|
|
186
|
-
stack = { t:
|
|
189
|
+
stack = { t: 0, c: obj, k: null, r: arg * 2, n: stack };
|
|
187
190
|
continue jump;
|
|
188
191
|
}
|
|
189
192
|
|
|
@@ -237,51 +240,52 @@ export const decodeFirst = (buf: Uint8Array): [value: any, remainder: Uint8Array
|
|
|
237
240
|
}
|
|
238
241
|
|
|
239
242
|
while (stack !== null) {
|
|
240
|
-
|
|
243
|
+
switch (stack.t) {
|
|
244
|
+
case 0: {
|
|
245
|
+
const obj = stack.c;
|
|
246
|
+
const key = stack.k;
|
|
241
247
|
|
|
242
|
-
|
|
243
|
-
case ContainerType.ARRAY: {
|
|
244
|
-
const index = node.c.length - node.r;
|
|
245
|
-
node.c[index] = value;
|
|
246
|
-
|
|
247
|
-
break;
|
|
248
|
-
}
|
|
249
|
-
case ContainerType.MAP: {
|
|
250
|
-
if (node.k === null) {
|
|
248
|
+
if (key === null) {
|
|
251
249
|
if (typeof value !== 'string') {
|
|
252
250
|
throw new TypeError(`expected map to only have string keys; got ${type}`);
|
|
253
251
|
}
|
|
254
252
|
|
|
255
|
-
|
|
253
|
+
stack.k = value;
|
|
256
254
|
} else {
|
|
257
|
-
if (
|
|
255
|
+
if (key === '__proto__') {
|
|
258
256
|
// Guard against prototype pollution. CWE-1321
|
|
259
|
-
Object.defineProperty(
|
|
257
|
+
Object.defineProperty(obj, key, { enumerable: true, configurable: true, writable: true });
|
|
260
258
|
}
|
|
261
259
|
|
|
262
|
-
|
|
263
|
-
|
|
260
|
+
obj[key] = value;
|
|
261
|
+
stack.k = null;
|
|
264
262
|
}
|
|
265
263
|
|
|
266
264
|
break;
|
|
267
265
|
}
|
|
266
|
+
case 1: {
|
|
267
|
+
const arr = stack.c;
|
|
268
|
+
const index = arr.length - stack.r;
|
|
269
|
+
|
|
270
|
+
arr[index] = value;
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
268
273
|
}
|
|
269
274
|
|
|
270
|
-
if (--
|
|
275
|
+
if (--stack.r !== 0) {
|
|
271
276
|
// We still have more values to decode, continue
|
|
272
277
|
continue jump;
|
|
273
278
|
}
|
|
274
279
|
|
|
275
280
|
// Unwrap the stack
|
|
276
|
-
value =
|
|
277
|
-
stack =
|
|
281
|
+
value = stack.c;
|
|
282
|
+
stack = stack.n;
|
|
278
283
|
}
|
|
279
284
|
|
|
280
|
-
result = value;
|
|
281
285
|
break;
|
|
282
286
|
}
|
|
283
287
|
|
|
284
|
-
return [
|
|
288
|
+
return [value, buf.subarray(state.p)];
|
|
285
289
|
};
|
|
286
290
|
|
|
287
291
|
export const decode = (buf: Uint8Array): any => {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@atcute/cbor",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.2.0",
|
|
5
5
|
"description": "lightweight DASL dCBOR42 codec library for AT Protocol",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"atproto",
|
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
"!lib/**/*.test.ts"
|
|
21
21
|
],
|
|
22
22
|
"exports": {
|
|
23
|
-
".": "./dist/index.js"
|
|
23
|
+
".": "./dist/index.js",
|
|
24
|
+
"./bytes": "./dist/bytes.js"
|
|
24
25
|
},
|
|
25
26
|
"sideEffects": false,
|
|
26
27
|
"devDependencies": {
|
|
@@ -29,7 +30,7 @@
|
|
|
29
30
|
"cbor-x": "^1.6.0"
|
|
30
31
|
},
|
|
31
32
|
"dependencies": {
|
|
32
|
-
"@atcute/cid": "^2.
|
|
33
|
+
"@atcute/cid": "^2.2.0",
|
|
33
34
|
"@atcute/multibase": "^1.1.2",
|
|
34
35
|
"@atcute/uint8array": "^1.0.1"
|
|
35
36
|
},
|