// 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" )
} );