Source: polyfill.js

// Licensed Materials - Property of IBM
//
// IBM Watson Analytics
//
// (C) Copyright IBM Corp. 2016
//
// US Government Users Restricted Rights - Use, duplication or
// disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

// Native objects available since the beginning; may contain polyfills for multiple levels of ES compliance.
// No need to expose these on "polyfill" since they are always available
require( "./polyfill/Array" );
require( "./polyfill/Date" );
require( "./polyfill/Function" );
require( "./polyfill/Math" );
require( "./polyfill/Number" );
require( "./polyfill/Object" );
require( "./polyfill/String" );

/**
 * The polyfill module contains polyfills for objects in the ECMAScript specification.
 * @module barejs/polyfill
 */
Object.assign( exports,
// Note: although we define this module to be barejs/polyfill, its properties are actually added to barejs, so tell jsdoc about that.
/** @lends module:barejs */
{
    /**
     * NMap - Version of Map that prefers the native implementation over the polyfill, even if it doesn't have
     * iterator support (like in Internet Explorer 11). If Iterator support is required, use
     * {@link module:barejs.Map Map} instead.
     * @member {function}
     */
    NMap: require( "./NMap" ),

    /**
     * NSet - Version of Set that prefers the native implementation over the polyfill, even if it doesn't have
     * iterator support (like in Internet Explorer 11). If Iterator support is required, use
     * {@link module:barejs.Set Set} instead.
     * @member {function}
     */
    NSet: require( "./NSet" ),

    // New built-in objects that will be polyfilled (but not globally)

    /**
     * This is either the native {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl Intl}
     * or the {@link module:barejs/polyfill.Intl fallback} provided by BareJS. Note that BareJS's fallback just provides a similar API,
     * it has not actual localization features. It's main purpose is to gracefully fallback to very limited formatting on
     * environments that don't support Intl. For proper support, load a full Intl polyfill.
     * @member {function}
     */
    Intl: require( "./Intl" ),

    /**
     * This is either the native {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map Map}
     * or the {@link module:barejs/polyfill.Map polyfill} provided by BareJS. This implementation is ensured to have iterator support (using the polyfill), if no
     * iterator support is required it is better to use {@link module:barejs.NMap NMap} instead.
     * @member {function}
     */
    Map: require( "./Map" ),

    /**
     * This is either the native {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap WeakMap}
     * or the {@link module:barejs/polyfill.WeakMap polyfill} provided by BareJS.
     * @member {function}
     */
    WeakMap: require( "./WeakMap" ),

    /**
     * This is either the native {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set Set}
     * or the {@link module:barejs/polyfill.Set polyfill} provided by BareJS. This implementation is ensured to have iterator support (using the polyfill), if no
     * iterator support is required it is better to use {@link module:barejs.NSet NSet} instead.
     * @member {function}
     */
    Set: require( "./Set" ),
    /**
     * This is either the native {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet WeakSet}
     * or the {@link module:barejs/polyfill.WeakSet polyfill} provided by BareJS.
     * @member {function}
     */
    WeakSet: require( "./WeakSet" ),

    /**
     * This is either the native {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol Symbol}
     * or the {@link module:barejs/polyfill.Symbol polyfill} provided by BareJS.
     * @member {function}
     */
    Symbol: require( "./Symbol" ),

    /**
     * This is either the native {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise Promise}
     * or the {@link module:barejs/polyfill.Promise polyfill} provided by BareJS.
     * @member {function}
     */
    Promise: require( "./Promise" )
} );