mirror of https://github.com/webpack/webpack.git
49 lines
840 B
JavaScript
49 lines
840 B
JavaScript
/*
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
class PlainObjectSerializer {
|
|
serialize(obj, { write }) {
|
|
if (Array.isArray(obj)) {
|
|
write(obj.length);
|
|
for (const item of obj) {
|
|
write(item);
|
|
}
|
|
} else {
|
|
const keys = Object.keys(obj);
|
|
for (const key of keys) {
|
|
write(key);
|
|
}
|
|
write(null);
|
|
for (const key of keys) {
|
|
write(obj[key]);
|
|
}
|
|
}
|
|
}
|
|
deserialize({ read }) {
|
|
let key = read();
|
|
if (typeof key === "number") {
|
|
const array = [];
|
|
for (let i = 0; i < key; i++) {
|
|
array.push(read());
|
|
}
|
|
return array;
|
|
} else {
|
|
const obj = {};
|
|
const keys = [];
|
|
while (key !== null) {
|
|
keys.push(key);
|
|
key = read();
|
|
}
|
|
for (const key of keys) {
|
|
obj[key] = read();
|
|
}
|
|
return obj;
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = PlainObjectSerializer;
|