set-record.js 588 B

123456789101112131415161718192021
  1. 'use strict';
  2. var hasOwn = require('hasown');
  3. var isInteger = require('../isInteger');
  4. module.exports = function isSetRecord(value) {
  5. return !!value
  6. && typeof value === 'object'
  7. && hasOwn(value, '[[SetObject]]')
  8. && value['[[SetObject]]']
  9. && typeof value['[[SetObject]]'] === 'object'
  10. && hasOwn(value, '[[Size]]')
  11. && (
  12. value['[[Size]]'] === Infinity
  13. || (isInteger(value['[[Size]]']) && value['[[Size]]'] >= 0)
  14. )
  15. && hasOwn(value, '[[Has]]')
  16. && typeof value['[[Has]]'] === 'function'
  17. && hasOwn(value, '[[Keys]]')
  18. && typeof value['[[Keys]]'] === 'function';
  19. };