msgpackr 1.4.6 → 1.4.7
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/index.js +2 -2
- package/dist/index.min.js +1 -1
- package/dist/node.cjs +2 -2
- package/dist/test.js +7 -0
- package/pack.js +2 -2
- package/package.json +1 -1
- package/tests/test.js +7 -0
package/dist/index.js
CHANGED
|
@@ -1101,9 +1101,9 @@
|
|
|
1101
1101
|
// first we estimate the header size, so we can write to the correct location
|
|
1102
1102
|
if (strLength < 0x20) {
|
|
1103
1103
|
headerSize = 1;
|
|
1104
|
-
} else if (strLength <
|
|
1104
|
+
} else if (strLength < 0x100) {
|
|
1105
1105
|
headerSize = 2;
|
|
1106
|
-
} else if (strLength <
|
|
1106
|
+
} else if (strLength < 0x10000) {
|
|
1107
1107
|
headerSize = 3;
|
|
1108
1108
|
} else {
|
|
1109
1109
|
headerSize = 5;
|
package/dist/index.min.js
CHANGED
|
@@ -49,7 +49,7 @@ let n=32<l||64<m+l,o=l+64,p=l+m+64;if(8256<p)throw new Error("Maximum maxSharedS
|
|
|
49
49
|
throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+c.sharedLength);if(!c.transitions){c.transitions=Object.create(null);for(let b,d=0;d<a;d++){if(b=c[d],!b)continue;let a,e=c.transitions;for(let c,d=0,f=b.length;d<f;d++)c=b[d],a=e[c],a||(a=e[c]=Object.create(null)),e=a;e[sa]=d+64}g=a}j||(c.nextId=a+64)}d&&(d=!1),e=c||[];try{// update the offset so next serialization doesn't write over our buffer, but can continue writing to same buffer sequentially
|
|
50
50
|
if(t(a),i.offset=ra,f&&f.idsToInsert){ra+=6*f.idsToInsert.length,ra>qa&&x(ra),i.offset=ra;let a=v(oa.subarray(b,ra),f.idsToInsert);return f=null,a}return h===Ba?(oa.start=b,oa.end=ra,oa):oa.subarray(b,ra);// position can change if we call pack again in saveStructures, so we get the buffer now
|
|
51
51
|
}finally{if(c){if(10>s&&s++,1e4<r)c.transitions=null,s=0,r=0,0<q.length&&(q=[]);else if(0<q.length&&!j){for(let a=0,b=q.length;a<b;a++)q[a][sa]=0;q=[]}if(d&&i.saveStructures){let d=c.sharedLength||l;c.length>d&&(c=c.slice(0,d));// we can't rely on start/end with REUSE_BUFFER_MODE since they will (probably) change when we save
|
|
52
|
-
let e=oa.subarray(b,ra);return!1===i.saveStructures(c,g)?(i._mergeStructures(i.getStructures()),i.pack(a)):(g=d,e)}}}};const t=a=>{ra>qa&&(oa=x(ra));var c,d=typeof a;if("string"==d){let b,d=a.length;b=32>d?1:
|
|
52
|
+
let e=oa.subarray(b,ra);return!1===i.saveStructures(c,g)?(i._mergeStructures(i.getStructures()),i.pack(a)):(g=d,e)}}}};const t=a=>{ra>qa&&(oa=x(ra));var c,d=typeof a;if("string"==d){let b,d=a.length;b=32>d?1:256>d?2:65536>d?3:5;let e=3*d;if(ra+e>qa&&(oa=x(ra+e)),64>d||!h){let e,f,g,h=ra+b;for(e=0;e<d;e++)f=a.charCodeAt(e),128>f?oa[h++]=f:2048>f?(oa[h++]=192|f>>6,oa[h++]=128|63&f):55296==(64512&f)&&56320==(64512&(g=a.charCodeAt(e+1)))?(f=65536+((1023&f)<<10)+(1023&g),e++,oa[h++]=240|f>>18,oa[h++]=128|63&f>>12,oa[h++]=128|63&f>>6,oa[h++]=128|63&f):(oa[h++]=224|f>>12,oa[h++]=128|63&f>>6,oa[h++]=128|63&f);c=h-ra-b}else c=h(a,ra+b,e);32>c?oa[ra++]=160|c:256>c?(2>b&&oa.copyWithin(ra+2,ra+1,ra+1+c),oa[ra++]=217,oa[ra++]=c):65536>c?(3>b&&oa.copyWithin(ra+3,ra+2,ra+2+c),oa[ra++]=218,oa[ra++]=c>>8,oa[ra++]=255&c):(5>b&&oa.copyWithin(ra+5,ra+3,ra+3+c),oa[ra++]=219,pa.setUint32(ra,c),ra+=4),ra+=c}else if("number"===d){if(a>>>0===a)64>a?oa[ra++]=a:256>a?(oa[ra++]=204,oa[ra++]=a):65536>a?(oa[ra++]=205,oa[ra++]=a>>8,oa[ra++]=255&a):(oa[ra++]=206,pa.setUint32(ra,a),ra+=4);else if(a>>0===a)-32<=a?oa[ra++]=256+a:-128<=a?(oa[ra++]=208,oa[ra++]=a+256):-32768<=a?(oa[ra++]=209,pa.setInt16(ra,a),ra+=2):(oa[ra++]=210,pa.setInt32(ra,a),ra+=4);else{let b;if(0<(b=this.useFloat32)&&4294967296>a&&-2147483648<=a){oa[ra++]=202,pa.setFloat32(ra,a);let c;if(4>b||// this checks for rounding of numbers that were encoded in 32-bit float to nearest significant decimal digit that could be preserved
|
|
53
53
|
(c=a*_[(127&oa[ra])<<1|oa[ra+1]>>7])>>0===c)return void(ra+=4);// move back into position for writing a double
|
|
54
54
|
ra--}oa[ra++]=203,pa.setFloat64(ra,a),ra+=8}}else if("object"===d){if(!a)oa[ra++]=192;else{if(f){let c=f.get(a);if(c){if(!c.id){let a=f.idsToInsert||(f.idsToInsert=[]);c.id=a.push(c)}return oa[ra++]=214,oa[ra++]=112,pa.setUint32(ra,c.id),void(ra+=4)}f.set(a,{offset:ra-b})}let d=a.constructor;if(d===Object)w(a,!0);else if(d===Array){c=a.length,16>c?oa[ra++]=144|c:65536>c?(oa[ra++]=220,oa[ra++]=c>>8,oa[ra++]=255&c):(oa[ra++]=221,pa.setUint32(ra,c),ra+=4);for(let b=0;b<c;b++)t(a[b])}else if(d===Map){c=a.size,16>c?oa[ra++]=128|c:65536>c?(oa[ra++]=222,oa[ra++]=c>>8,oa[ra++]=255&c):(oa[ra++]=223,pa.setUint32(ra,c),ra+=4);for(let[b,c]of a)t(b),t(c)}else{for(let b,c=0,d=ia.length;c<d;c++)if(b=ja[c],a instanceof b){let b=ia[c];if(b.write)return b.type&&(oa[ra++]=212,oa[ra++]=b.type,oa[ra++]=0),void t(b.write.call(this,a));let d=oa,e=pa,f=ra;oa=null;let g;try{g=b.pack.call(this,a,a=>(oa=d,d=null,ra+=a,ra>qa&&x(ra),{target:oa,targetView:pa,position:ra-a}),t)}finally{d&&(oa=d,pa=e,ra=f,qa=oa.length-10)}return void(g&&(g.length+ra>qa&&x(g.length+ra),ra=u(g,oa,ra,b.type)))}// no extension found, write as object
|
|
55
55
|
w(a,!a.hasOwnProperty)}}}else if("boolean"===d)oa[ra++]=a?195:194;else if("bigint"===d){if(a<BigInt(1)<<BigInt(63)&&a>=-(BigInt(1)<<BigInt(63)))oa[ra++]=211,pa.setBigInt64(ra,a);else if(a<BigInt(1)<<BigInt(64)&&0<a)oa[ra++]=207,pa.setBigUint64(ra,a);else// overflow
|
package/dist/node.cjs
CHANGED
|
@@ -1147,9 +1147,9 @@ class Packr extends Unpackr {
|
|
|
1147
1147
|
// first we estimate the header size, so we can write to the correct location
|
|
1148
1148
|
if (strLength < 0x20) {
|
|
1149
1149
|
headerSize = 1;
|
|
1150
|
-
} else if (strLength <
|
|
1150
|
+
} else if (strLength < 0x100) {
|
|
1151
1151
|
headerSize = 2;
|
|
1152
|
-
} else if (strLength <
|
|
1152
|
+
} else if (strLength < 0x10000) {
|
|
1153
1153
|
headerSize = 3;
|
|
1154
1154
|
} else {
|
|
1155
1155
|
headerSize = 5;
|
package/dist/test.js
CHANGED
|
@@ -660,6 +660,13 @@
|
|
|
660
660
|
assert.deepEqual(deserialized, data);
|
|
661
661
|
});
|
|
662
662
|
|
|
663
|
+
test('255 chars', function() {
|
|
664
|
+
const data = 'RRZG9A6I7xupPeOZhxcOcioFsuhszGOdyDUcbRf4Zef2kdPIfC9RaLO4jTM5JhuZvTsF09fbRHMGtqk7YAgu3vespeTe9l61ziZ6VrMnYu2CamK96wCkmz0VUXyqaiUoTPgzk414LS9yYrd5uh7w18ksJF5SlC2e91rukWvNqAZJjYN3jpkqHNOFchCwFrhbxq2Lrv1kSJPYCx9blRg2hGmYqTbElLTZHv20iNqwZeQbRMgSBPT6vnbCBPnOh1W';
|
|
665
|
+
var serialized = pack(data);
|
|
666
|
+
var deserialized = unpack(serialized);
|
|
667
|
+
assert.equal(deserialized, data);
|
|
668
|
+
});
|
|
669
|
+
|
|
663
670
|
test('pack/unpack sample data', function(){
|
|
664
671
|
var data = sampleData;
|
|
665
672
|
var serialized = pack(data);
|
package/pack.js
CHANGED
|
@@ -176,9 +176,9 @@ export class Packr extends Unpackr {
|
|
|
176
176
|
// first we estimate the header size, so we can write to the correct location
|
|
177
177
|
if (strLength < 0x20) {
|
|
178
178
|
headerSize = 1
|
|
179
|
-
} else if (strLength <
|
|
179
|
+
} else if (strLength < 0x100) {
|
|
180
180
|
headerSize = 2
|
|
181
|
-
} else if (strLength <
|
|
181
|
+
} else if (strLength < 0x10000) {
|
|
182
182
|
headerSize = 3
|
|
183
183
|
} else {
|
|
184
184
|
headerSize = 5
|
package/package.json
CHANGED
package/tests/test.js
CHANGED
|
@@ -84,6 +84,13 @@ suite('msgpackr basic tests', function(){
|
|
|
84
84
|
assert.deepEqual(deserialized, data)
|
|
85
85
|
})
|
|
86
86
|
|
|
87
|
+
test('255 chars', function() {
|
|
88
|
+
const data = 'RRZG9A6I7xupPeOZhxcOcioFsuhszGOdyDUcbRf4Zef2kdPIfC9RaLO4jTM5JhuZvTsF09fbRHMGtqk7YAgu3vespeTe9l61ziZ6VrMnYu2CamK96wCkmz0VUXyqaiUoTPgzk414LS9yYrd5uh7w18ksJF5SlC2e91rukWvNqAZJjYN3jpkqHNOFchCwFrhbxq2Lrv1kSJPYCx9blRg2hGmYqTbElLTZHv20iNqwZeQbRMgSBPT6vnbCBPnOh1W'
|
|
89
|
+
var serialized = pack(data)
|
|
90
|
+
var deserialized = unpack(serialized)
|
|
91
|
+
assert.equal(deserialized, data)
|
|
92
|
+
})
|
|
93
|
+
|
|
87
94
|
test('pack/unpack sample data', function(){
|
|
88
95
|
var data = sampleData
|
|
89
96
|
let structures = []
|