12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 'use strict';
- const internals = {};
- exports = module.exports = {
- array: Array.prototype,
- buffer: Buffer && Buffer.prototype, // $lab:coverage:ignore$
- date: Date.prototype,
- error: Error.prototype,
- generic: Object.prototype,
- map: Map.prototype,
- promise: Promise.prototype,
- regex: RegExp.prototype,
- set: Set.prototype,
- weakMap: WeakMap.prototype,
- weakSet: WeakSet.prototype
- };
- internals.typeMap = new Map([
- ['[object Error]', exports.error],
- ['[object Map]', exports.map],
- ['[object Promise]', exports.promise],
- ['[object Set]', exports.set],
- ['[object WeakMap]', exports.weakMap],
- ['[object WeakSet]', exports.weakSet]
- ]);
- exports.getInternalProto = function (obj) {
- if (Array.isArray(obj)) {
- return exports.array;
- }
- if (Buffer && obj instanceof Buffer) { // $lab:coverage:ignore$
- return exports.buffer;
- }
- if (obj instanceof Date) {
- return exports.date;
- }
- if (obj instanceof RegExp) {
- return exports.regex;
- }
- if (obj instanceof Error) {
- return exports.error;
- }
- const objName = Object.prototype.toString.call(obj);
- return internals.typeMap.get(objName) || exports.generic;
- };
|