mh-two-thousand-and-two
2024-04-12 7fc6dbf547b8899d949b67cdec36b96a7d1701c7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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');
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);
    }
};