Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

skava / exotic   js

Repository URL to install this package:

Version: 2.0.8 

/ src / types / NATIVE / CONSTANTS / HiddenRealmMocks.ts

import toArguments from '../../NATIVE/builtin/toArguments'
import fromKeyValueToIterator from '../../iterator/cast/fromKeyValueToIterator'

/**
 * @TODO @FIXME @HACK @POLYFILL #js - strip on prod
 * @see is/arguments
 * @see cast/argumentsToArray
 * @see cast/toArguments
 *
 * @since 5.0.0-beta.9
 * @name makeMockArguments
 *
 * @param {*} x anything to mock
 * @return {Arguments} mock
 * @example makeMockArguments() //=> Iterator
 */
const MockArguments = toArguments('Arguments')

/**
 * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols
 * @return {Iterator} mock
 * @example makeMockIterator() //=> Iterator
 */
const MockIterator = fromKeyValueToIterator(['Iterator', 'Iterator', 1])
MockIterator[Symbol.toStringTag] = 'Iterator'

export { MockArguments, MockIterator }

// @NOTE commented out because toArguments
//       is shorter and more accurate but this gives some insight
//       maybe someone wants to make a `Type` out of it
//
// const arrayToIterator = require('chaintools/deps/cast/arrayToIterator')
// const toKey = require('chaintools/deps/cast/toKey')
// const values = require('chaintools/deps/util/values')
// const keys = require('chaintools/deps/util/keys')
// const isObj = require('chaintools/deps/is/obj')
//
// const makeMockArguments = x => {
//   const MockArguments = {
//     __proto__: arguments,
//     [Symbol.toStringTag]: 'Arguments',
//     toString() {
//       return '[Object Arguments]'
//     },
//   }
//   MockArguments[Symbol.iterator] = function() {
//     return arrayToIterator(values(MockArguments))
//   }
//
//   if (isObj(x)) {
//     const objKeys = keys(x)
//     MockArguments.length = objKeys(x).length
//
//     let index = 0
//     objKeys.forEach(key => (MockArguments[toKey(index++)] = x[key]))
//   }
//   MockArguments.prototype = MockArguments
//   return MockArguments
// }
// const makeMockIterator = () => {
//   const GenericIterator = {
//     value: undefined,
//     first: true,
//     done: false,
//     next() {},
//     toString() {
//       return '[Object Iterator]'
//     },
//     [Symbol.toStringTag]: 'Iterator',
//     [Symbol.iterator](eh) {
//       return arrayToIterator(values(this))
//     },
//   }
//   GenericIterator.prototype = GenericIterator
//   return GenericIterator
// }
//
// module.exports = {makeMockIterator, makeMockArguments}