first commit

This commit is contained in:
s.golasch
2023-08-01 13:49:46 +02:00
commit 1fc239fd54
20238 changed files with 3112246 additions and 0 deletions

231
build/node_modules/prepack/lib/methods/construct.js generated vendored Normal file
View File

@@ -0,0 +1,231 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.MakeConstructor = MakeConstructor;
exports.Construct = Construct;
exports.SpeciesConstructor = SpeciesConstructor;
exports.MakeClassConstructor = MakeClassConstructor;
exports.ConstructorMethod = ConstructorMethod;
exports.NonConstructorMethodDefinitions = NonConstructorMethodDefinitions;
var _index = require("../values/index.js");
var _is = require("./is.js");
var _get = require("./get.js");
var _has = require("./has.js");
var _singletons = require("../singletons.js");
var _invariant = require("../invariant.js");
var _invariant2 = _interopRequireDefault(_invariant);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// ECMA262 9.2.8
function MakeConstructor(realm, F, writablePrototype, prototype) {
// 1. Assert: F is an ECMAScript function object.
(0, _invariant2.default)(F instanceof _index.ECMAScriptSourceFunctionValue, "expected function value");
// 2. Assert: F has a [[Construct]] internal method.
(0, _invariant2.default)(F.$Construct !== undefined, "expected construct internal method");
// 3. Assert: F is an extensible object that does not have a prototype own property.
(0, _invariant2.default)(F.getExtensible(), "expected extensible object that doesn't have prototype own property");
// 4. If the writablePrototype argument was not provided, let writablePrototype be true.
if (writablePrototype === null || writablePrototype === undefined) {
writablePrototype = true;
}
// 5. If the prototype argument was not provided, then
if (!prototype) {
// a. Let prototype be ObjectCreate(%ObjectPrototype%).
prototype = _singletons.Create.ObjectCreate(realm, realm.intrinsics.ObjectPrototype);
prototype.originalConstructor = F;
// b. Perform ! DefinePropertyOrThrow(prototype, "constructor", PropertyDescriptor{[[Value]]: F, [[Writable]]: writablePrototype, [[Enumerable]]: false, [[Configurable]]: true }).
_singletons.Properties.DefinePropertyOrThrow(realm, prototype, "constructor", {
value: F,
writable: writablePrototype,
enumerable: false,
configurable: true
});
}
// 6. Perform ! DefinePropertyOrThrow(F, "prototype", PropertyDescriptor{[[Value]]: prototype, [[Writable]]: writablePrototype, [[Enumerable]]: false, [[Configurable]]: false}).
_singletons.Properties.DefinePropertyOrThrow(realm, F, "prototype", {
value: prototype,
writable: writablePrototype,
enumerable: false,
configurable: false
});
// 7. Return NormalCompletion(undefined).
return realm.intrinsics.undefined;
}
// ECMA262 7.3.13
/**
* Copyright (c) 2017-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
function Construct(realm, F, argumentsList, newTarget) {
// If newTarget was not passed, let newTarget be F.
if (!newTarget) newTarget = F;
// If argumentsList was not passed, let argumentsList be a new empty List.
if (!argumentsList) argumentsList = [];
// Assert: IsConstructor(F) is true.
(0, _invariant2.default)((0, _is.IsConstructor)(realm, F), "expected constructor");
// Assert: IsConstructor(newTarget) is true.
(0, _invariant2.default)((0, _is.IsConstructor)(realm, newTarget), "expected constructor");
// Return ? F.[[Construct]](argumentsList, newTarget).
(0, _invariant2.default)(F.$Construct !== undefined, "no construct method on realm value");
return F.$Construct(argumentsList, newTarget);
}
// ECMA262 7.3.20
function SpeciesConstructor(realm, O, defaultConstructor) {
// 1. Assert: Type(O) is Object.
(0, _invariant2.default)(O instanceof _index.ObjectValue, "Type(O) is Object");
// 2. Let C be ? Get(O, "constructor").
var C = (0, _get.Get)(realm, O, "constructor");
// 3. If C is undefined, return defaultConstructor.
if (C instanceof _index.UndefinedValue) return defaultConstructor;
// 4. If Type(C) is not Object, throw a TypeError exception.
if (C.mightNotBeObject()) {
if (C.mightBeObject()) C.throwIfNotConcrete();
throw realm.createErrorThrowCompletion(realm.intrinsics.TypeError, "Type(C) is not an object");
}
(0, _invariant2.default)(C instanceof _index.ObjectValue || C instanceof _index.AbstractObjectValue);
// 5. Let S be ? Get(C, @@species).
var S = (0, _get.Get)(realm, C, realm.intrinsics.SymbolSpecies);
// 6. If S is either undefined or null, return defaultConstructor.
if ((0, _has.HasSomeCompatibleType)(S, _index.UndefinedValue, _index.NullValue)) return defaultConstructor;
// 7. If IsConstructor(S) is true, return S.
if ((0, _is.IsConstructor)(realm, S)) {
(0, _invariant2.default)(S instanceof _index.ObjectValue);
return S;
}
// 8. Throw a TypeError exception.
throw realm.createErrorThrowCompletion(realm.intrinsics.TypeError, "Throw a TypeError exception");
}
// ECMA 9.2.9
function MakeClassConstructor(realm, F) {
// 1. Assert: F is an ECMAScript function object.
(0, _invariant2.default)(F instanceof _index.ECMAScriptSourceFunctionValue, "expected function value");
// 2. Assert: Fs [[FunctionKind]] internal slot is "normal".
(0, _invariant2.default)(F.$FunctionKind === "normal");
// 3. Set Fs [[FunctionKind]] internal slot to "classConstructor".
F.$FunctionKind = "classConstructor";
// 4. Return NormalCompletion(undefined).
return realm.intrinsics.undefined;
}
// ECMA 14.5.3
function ConstructorMethod(realm, ClassElementList) {
var ClassElement = void 0;
// ClassElementList : ClassElement
if (ClassElementList.length === 1) {
ClassElement = ClassElementList[0];
// 1. If ClassElement is the production ClassElement : ; , return empty.
// It looks like Babel parses out ClassElements that are only ;
// 2. If IsStatic of ClassElement is true, return empty.
if ((0, _is.IsStatic)(ClassElement)) {
return realm.intrinsics.empty;
}
// 3. If PropName of ClassElement is not "constructor", return empty.
if (ClassElement.key.name !== "constructor") {
return realm.intrinsics.empty;
}
// 4. Return ClassElement.
return ClassElement;
} else {
// ClassElementList : ClassElementList ClassElement
// 1. Let head be ConstructorMethod of ClassElementList.
var head = ConstructorMethod(realm, ClassElementList.slice(0, -1));
// 2. If head is not empty, return head.
if (!(head instanceof _index.EmptyValue)) {
return head;
}
ClassElement = ClassElementList[ClassElementList.length - 1];
// 3. If ClassElement is the production ClassElement : ; , return empty.
// It looks like Babel parses out ClassElements that are only ;
// 4. If IsStatic of ClassElement is true, return empty.
if ((0, _is.IsStatic)(ClassElement)) {
return realm.intrinsics.empty;
}
// If PropName of ClassElement is not "constructor", return empty.
if (ClassElement.key.name !== "constructor") {
return realm.intrinsics.empty;
}
// Return ClassElement.
return ClassElement;
}
}
// ECMA 14.5.10
function NonConstructorMethodDefinitions(realm, ClassElementList) {
var ClassElement = void 0;
// ClassElementList : ClassElement
if (ClassElementList.length === 1) {
ClassElement = ClassElementList[0];
// If ClassElement is the production ClassElement : ; , return a new empty List.
// If IsStatic of ClassElement is false and PropName of ClassElement is "constructor", return a new empty List.
if (!(0, _is.IsStatic)(ClassElement) && ClassElement.key.name === "constructor") {
return [];
}
// Return a List containing ClassElement.
return [ClassElement];
} else {
// ClassElementList : ClassElementList ClassElement
ClassElement = ClassElementList[ClassElementList.length - 1];
// Let list be NonConstructorMethodDefinitions of ClassElementList.
var list = NonConstructorMethodDefinitions(realm, ClassElementList.slice(0, -1));
// If ClassElement is the production ClassElement : ; , return list.
// If IsStatic of ClassElement is false and PropName of ClassElement is "constructor", return list.
if (!(0, _is.IsStatic)(ClassElement) && ClassElement.key.name === "constructor") {
return list;
}
// Append ClassElement to the end of list.
list.push(ClassElement);
// Return list.
return list;
}
}
//# sourceMappingURL=construct.js.map