bbaa0b74d0fcde3399ff16cb4c7c81e3fefbd08b5c20cf0018807f0047196aede9635a2e5bd8eb535db24daa7f91ecccf2405eb0c546c9714e53267fdf98c0-exec 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. 'use strict';
  2. const internals = {};
  3. exports = module.exports = {
  4. array: Array.prototype,
  5. buffer: Buffer && Buffer.prototype, // $lab:coverage:ignore$
  6. date: Date.prototype,
  7. error: Error.prototype,
  8. generic: Object.prototype,
  9. map: Map.prototype,
  10. promise: Promise.prototype,
  11. regex: RegExp.prototype,
  12. set: Set.prototype,
  13. weakMap: WeakMap.prototype,
  14. weakSet: WeakSet.prototype
  15. };
  16. internals.typeMap = new Map([
  17. ['[object Error]', exports.error],
  18. ['[object Map]', exports.map],
  19. ['[object Promise]', exports.promise],
  20. ['[object Set]', exports.set],
  21. ['[object WeakMap]', exports.weakMap],
  22. ['[object WeakSet]', exports.weakSet]
  23. ]);
  24. exports.getInternalProto = function (obj) {
  25. if (Array.isArray(obj)) {
  26. return exports.array;
  27. }
  28. if (Buffer && obj instanceof Buffer) { // $lab:coverage:ignore$
  29. return exports.buffer;
  30. }
  31. if (obj instanceof Date) {
  32. return exports.date;
  33. }
  34. if (obj instanceof RegExp) {
  35. return exports.regex;
  36. }
  37. if (obj instanceof Error) {
  38. return exports.error;
  39. }
  40. const objName = Object.prototype.toString.call(obj);
  41. return internals.typeMap.get(objName) || exports.generic;
  42. };