MCPcopy
hub / github.com/webpack/webpack / serialize

Method serialize

lib/serialization/ObjectMiddleware.js:379–732  ·  lib/serialization/ObjectMiddleware.js::ObjectMiddleware.serialize

* Serializes this instance into the provided serializer context. * @param {DeserializedType} data data * @param {Context} context context object * @returns {SerializedType | Promise<SerializedType> | null} serialized data

(data, context)

Source from the content-addressed store, hash-verified

377 * @returns {SerializedType | Promise<SerializedType> | null} serialized data
378 */
379 serialize(data, context) {
380 /** @type {PrimitiveSerializableType[]} */
381 let result = [CURRENT_VERSION];
382 let currentPos = 0;
383 /** @type {Map<ReferenceableItem, number>} */
384 let referenceable = new Map();
385 /**
386 * Adds referenceable.
387 * @param {ReferenceableItem} item referenceable item
388 */
389 const addReferenceable = (item) => {
390 referenceable.set(item, currentPos++);
391 };
392 /** @type {Map<number, Buffer | [Buffer, Buffer] | Map<string, Buffer>>} */
393 let bufferDedupeMap = new Map();
394 /**
395 * Returns deduped buffer.
396 * @param {Buffer} buf buffer
397 * @returns {Buffer} deduped buffer
398 */
399 const dedupeBuffer = (buf) => {
400 const len = buf.length;
401 const entry = bufferDedupeMap.get(len);
402 if (entry === undefined) {
403 bufferDedupeMap.set(len, buf);
404 return buf;
405 }
406 if (Buffer.isBuffer(entry)) {
407 if (len < 32) {
408 if (buf.equals(entry)) {
409 return entry;
410 }
411 bufferDedupeMap.set(len, [entry, buf]);
412 return buf;
413 }
414 const hash = toHash(entry, this._hashFunction);
415 /** @type {Map<string, Buffer>} */
416 const newMap = new Map();
417 newMap.set(hash, entry);
418 bufferDedupeMap.set(len, newMap);
419 const hashBuf = toHash(buf, this._hashFunction);
420 if (hash === hashBuf) {
421 return entry;
422 }
423 return buf;
424 } else if (Array.isArray(entry)) {
425 if (entry.length < 16) {
426 for (const item of entry) {
427 if (buf.equals(item)) {
428 return item;
429 }
430 }
431 entry.push(buf);
432 return buf;
433 }
434 /** @type {Map<string, Buffer>} */
435 const newMap = new Map();
436 const hash = toHash(buf, this._hashFunction);

Callers 1

processMethod · 0.95

Calls 1

processFunction · 0.50

Tested by

no test coverage detected