| 123456789101112131415161718192021222324252627282930313233 | 
							- 'use strict';
 
- var GetIntrinsic = require('get-intrinsic');
 
- var $Function = GetIntrinsic('%Function%');
 
- var $TypeError = require('es-errors/type');
 
- var $SyntaxError = require('es-errors/syntax');
 
- var Get = require('./Get');
 
- var IsConstructor = require('./IsConstructor');
 
- var isObject = require('../helpers/isObject');
 
- // https://262.ecma-international.org/6.0/#sec-getprototypefromconstructor
 
- module.exports = function GetPrototypeFromConstructor(constructor, intrinsicDefaultProto) {
 
- 	var intrinsic = GetIntrinsic(intrinsicDefaultProto); // throws if not a valid intrinsic
 
- 	if (!isObject(intrinsic)) {
 
- 		throw new $TypeError('intrinsicDefaultProto must be an object');
 
- 	}
 
- 	if (!IsConstructor(constructor)) {
 
- 		throw new $TypeError('Assertion failed: `constructor` must be a constructor');
 
- 	}
 
- 	var proto = Get(constructor, 'prototype');
 
- 	if (!isObject(proto)) {
 
- 		if (!(constructor instanceof $Function)) {
 
- 			// ignore other realms, for now
 
- 			throw new $SyntaxError('cross-realm constructors not currently supported');
 
- 		}
 
- 		proto = intrinsic;
 
- 	}
 
- 	return proto;
 
- };
 
 
  |