This commit is contained in:
ahaas25
2025-02-23 23:35:15 -05:00
commit 5b64ef9207
1796 changed files with 186622 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
'use strict';
// TODO, semver-major: delete this
var $TypeError = require('es-errors/type');
var $SyntaxError = require('es-errors/syntax');
var isMatchRecord = require('./records/match-record');
var isPropertyDescriptor = require('./records/property-descriptor');
var isIteratorRecord = require('./records/iterator-record-2023');
var isPromiseCapabilityRecord = require('./records/promise-capability-record');
var isAsyncGeneratorRequestRecord = require('./records/async-generator-request-record');
var isRegExpRecord = require('./records/regexp-record');
var predicates = {
'Property Descriptor': isPropertyDescriptor,
'Match Record': isMatchRecord,
'Iterator Record': isIteratorRecord,
'PromiseCapability Record': isPromiseCapabilityRecord,
'AsyncGeneratorRequest Record': isAsyncGeneratorRequestRecord,
'RegExp Record': isRegExpRecord
};
module.exports = function assertRecord(Type, recordType, argumentName, value) {
var predicate = predicates[recordType];
if (typeof predicate !== 'function') {
throw new $SyntaxError('unknown record type: ' + recordType);
}
if (!predicate(value)) {
throw new $TypeError(argumentName + ' must be a ' + recordType);
}
};
+7
View File
@@ -0,0 +1,7 @@
'use strict';
var isIteratorRecordNew = require('./iterator-record');
module.exports = function isIteratorRecord(value) {
return isIteratorRecordNew(value) && typeof value['[[NextMethod]]'] === 'function';
};
+12
View File
@@ -0,0 +1,12 @@
'use strict';
var hasOwn = require('hasown');
module.exports = function isIteratorRecord(value) {
return !!value
&& typeof value === 'object'
&& hasOwn(value, '[[Iterator]]')
&& hasOwn(value, '[[NextMethod]]')
&& hasOwn(value, '[[Done]]')
&& typeof value['[[Done]]'] === 'boolean';
};