core-js 1.2.3 → 1.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/CHANGELOG.md +408 -386
  2. package/bower.json +1 -1
  3. package/build/Gruntfile.ls +0 -5
  4. package/build/build.ls +24 -22
  5. package/build/index.js +2 -2
  6. package/client/core.js +1412 -1272
  7. package/client/core.min.js +4 -4
  8. package/client/core.min.js.map +1 -1
  9. package/client/library.js +1220 -1122
  10. package/client/library.min.js +4 -4
  11. package/client/library.min.js.map +1 -1
  12. package/client/shim.js +1304 -1164
  13. package/client/shim.min.js +4 -4
  14. package/client/shim.min.js.map +1 -1
  15. package/es6/symbol.js +1 -0
  16. package/fn/symbol/index.js +1 -0
  17. package/library/es6/symbol.js +1 -0
  18. package/library/fn/symbol/index.js +1 -0
  19. package/library/modules/{$.unscope.js → $.add-to-unscopables.js} +0 -0
  20. package/library/modules/$.array-fill.js +1 -1
  21. package/library/modules/$.array-methods.js +2 -12
  22. package/library/modules/$.array-species-create.js +16 -0
  23. package/library/modules/$.buffer.js +278 -285
  24. package/library/modules/$.collection-strong.js +9 -8
  25. package/library/modules/$.collection-weak.js +16 -15
  26. package/library/modules/$.collection.js +21 -14
  27. package/library/modules/$.core.js +1 -1
  28. package/library/modules/{$.support-desc.js → $.descriptors.js} +0 -0
  29. package/library/modules/$.export.js +46 -0
  30. package/library/modules/$.fails-is-regexp.js +2 -1
  31. package/library/modules/$.fix-re-wks.js +10 -5
  32. package/library/modules/$.flags.js +5 -5
  33. package/library/modules/$.get-names.js +3 -3
  34. package/library/modules/$.hide.js +1 -1
  35. package/library/modules/$.is-array-iter.js +5 -3
  36. package/library/modules/$.iter-create.js +5 -3
  37. package/library/modules/$.iter-define.js +46 -30
  38. package/library/modules/$.iter-detect.js +8 -6
  39. package/library/modules/{$.expm1.js → $.math-expm1.js} +0 -0
  40. package/library/modules/{$.log1p.js → $.math-log1p.js} +0 -0
  41. package/library/modules/{$.sign.js → $.math-sign.js} +0 -0
  42. package/library/modules/$.microtask.js +9 -2
  43. package/library/modules/{$.assign.js → $.object-assign.js} +0 -0
  44. package/library/modules/$.object-sap.js +6 -4
  45. package/library/modules/$.redefine-all.js +5 -0
  46. package/library/modules/{$.redef.js → $.redefine.js} +0 -0
  47. package/library/modules/{$.same.js → $.same-value.js} +1 -0
  48. package/library/modules/$.set-species.js +13 -0
  49. package/library/modules/{$.tag.js → $.set-to-string-tag.js} +0 -0
  50. package/library/modules/$.species-constructor.js +7 -7
  51. package/library/modules/$.string-at.js +5 -6
  52. package/library/modules/$.string-trim.js +17 -14
  53. package/library/modules/$.task.js +0 -1
  54. package/library/modules/$.to-primitive.js +12 -0
  55. package/library/modules/$.typed-array.js +345 -294
  56. package/library/modules/$.typed.js +36 -0
  57. package/library/modules/$.wks.js +2 -1
  58. package/library/modules/core.delay.js +2 -2
  59. package/library/modules/core.dict.js +20 -19
  60. package/library/modules/core.function.part.js +3 -4
  61. package/library/modules/core.is-iterable.js +1 -1
  62. package/library/modules/core.log.js +2 -2
  63. package/library/modules/core.object.classof.js +2 -2
  64. package/library/modules/core.object.define.js +3 -3
  65. package/library/modules/core.object.is-object.js +2 -2
  66. package/library/modules/core.object.make.js +4 -4
  67. package/library/modules/core.string.escape-html.js +9 -9
  68. package/library/modules/core.string.unescape-html.js +9 -9
  69. package/library/modules/es5.js +61 -60
  70. package/library/modules/es6.array.copy-within.js +3 -4
  71. package/library/modules/es6.array.fill.js +3 -3
  72. package/library/modules/es6.array.find-index.js +6 -6
  73. package/library/modules/es6.array.find.js +6 -6
  74. package/library/modules/es6.array.from.js +2 -2
  75. package/library/modules/es6.array.iterator.js +8 -8
  76. package/library/modules/es6.array.of.js +2 -2
  77. package/library/modules/es6.array.species.js +1 -1
  78. package/library/modules/es6.date.to-string.js +0 -0
  79. package/library/modules/es6.math.acosh.js +5 -5
  80. package/library/modules/es6.math.asinh.js +2 -2
  81. package/library/modules/es6.math.atanh.js +2 -2
  82. package/library/modules/es6.math.cbrt.js +3 -3
  83. package/library/modules/es6.math.clz32.js +2 -2
  84. package/library/modules/es6.math.cosh.js +3 -3
  85. package/library/modules/es6.math.expm1.js +2 -2
  86. package/library/modules/es6.math.fround.js +4 -4
  87. package/library/modules/es6.math.hypot.js +3 -3
  88. package/library/modules/es6.math.imul.js +3 -3
  89. package/library/modules/es6.math.log10.js +2 -2
  90. package/library/modules/es6.math.log1p.js +2 -2
  91. package/library/modules/es6.math.log2.js +2 -2
  92. package/library/modules/es6.math.sign.js +2 -2
  93. package/library/modules/es6.math.sinh.js +4 -4
  94. package/library/modules/es6.math.tanh.js +4 -4
  95. package/library/modules/es6.math.trunc.js +2 -2
  96. package/library/modules/es6.number.epsilon.js +2 -2
  97. package/library/modules/es6.number.is-finite.js +2 -2
  98. package/library/modules/es6.number.is-integer.js +2 -2
  99. package/library/modules/es6.number.is-nan.js +2 -2
  100. package/library/modules/es6.number.is-safe-integer.js +2 -2
  101. package/library/modules/es6.number.max-safe-integer.js +2 -2
  102. package/library/modules/es6.number.min-safe-integer.js +2 -2
  103. package/library/modules/es6.number.parse-float.js +2 -2
  104. package/library/modules/es6.number.parse-int.js +2 -2
  105. package/library/modules/es6.object.assign.js +2 -2
  106. package/library/modules/es6.object.is.js +2 -4
  107. package/library/modules/es6.object.set-prototype-of.js +2 -2
  108. package/library/modules/es6.promise.js +96 -66
  109. package/library/modules/es6.reflect.apply.js +5 -4
  110. package/library/modules/es6.reflect.construct.js +4 -3
  111. package/library/modules/es6.reflect.define-property.js +2 -2
  112. package/library/modules/es6.reflect.delete-property.js +2 -2
  113. package/library/modules/es6.reflect.enumerate.js +2 -2
  114. package/library/modules/es6.reflect.get-own-property-descriptor.js +2 -2
  115. package/library/modules/es6.reflect.get-prototype-of.js +2 -2
  116. package/library/modules/es6.reflect.get.js +2 -2
  117. package/library/modules/es6.reflect.has.js +2 -2
  118. package/library/modules/es6.reflect.is-extensible.js +2 -2
  119. package/library/modules/es6.reflect.own-keys.js +2 -2
  120. package/library/modules/es6.reflect.prevent-extensions.js +2 -2
  121. package/library/modules/es6.reflect.set-prototype-of.js +2 -2
  122. package/library/modules/es6.reflect.set.js +2 -2
  123. package/library/modules/es6.regexp.constructor.js +1 -1
  124. package/library/modules/es6.string.code-point-at.js +3 -3
  125. package/library/modules/es6.string.ends-with.js +2 -2
  126. package/library/modules/es6.string.from-code-point.js +4 -4
  127. package/library/modules/es6.string.includes.js +4 -3
  128. package/library/modules/es6.string.raw.js +2 -2
  129. package/library/modules/es6.string.repeat.js +2 -2
  130. package/library/modules/es6.string.starts-with.js +2 -2
  131. package/library/modules/es6.symbol.js +17 -16
  132. package/library/modules/es6.typed.array-buffer.js +43 -0
  133. package/library/modules/es6.typed.data-view.js +4 -0
  134. package/library/modules/{es6.typed-arrays.float32-array.js → es6.typed.float32-array.js} +0 -0
  135. package/library/modules/{es6.typed-arrays.float64-array.js → es6.typed.float64-array.js} +0 -0
  136. package/library/modules/{es6.typed-arrays.int16-array.js → es6.typed.int16-array.js} +0 -0
  137. package/library/modules/{es6.typed-arrays.int32-array.js → es6.typed.int32-array.js} +0 -0
  138. package/library/modules/{es6.typed-arrays.int8-array.js → es6.typed.int8-array.js} +0 -0
  139. package/library/modules/{es6.typed-arrays.uint16-array.js → es6.typed.uint16-array.js} +0 -0
  140. package/library/modules/{es6.typed-arrays.uint32-array.js → es6.typed.uint32-array.js} +0 -0
  141. package/library/modules/{es6.typed-arrays.uint8-array.js → es6.typed.uint8-array.js} +0 -0
  142. package/library/modules/{es6.typed-arrays.uint8-clamped-array.js → es6.typed.uint8-clamped-array.js} +0 -0
  143. package/library/modules/es6.weak-map.js +2 -1
  144. package/library/modules/es7.array.includes.js +5 -3
  145. package/library/modules/es7.map.to-json.js +2 -2
  146. package/library/modules/es7.object.entries.js +2 -2
  147. package/library/modules/es7.object.get-own-property-descriptors.js +2 -2
  148. package/library/modules/es7.object.values.js +2 -2
  149. package/library/modules/es7.regexp.escape.js +4 -3
  150. package/library/modules/es7.set.to-json.js +2 -2
  151. package/library/modules/es7.string.at.js +5 -4
  152. package/library/modules/es7.string.pad-left.js +4 -3
  153. package/library/modules/es7.string.pad-right.js +4 -3
  154. package/library/modules/js.array.statics.js +4 -3
  155. package/library/modules/web.immediate.js +3 -3
  156. package/library/modules/web.timers.js +2 -2
  157. package/modules/$.add-to-unscopables.js +7 -0
  158. package/modules/$.array-fill.js +1 -1
  159. package/modules/$.array-methods.js +2 -12
  160. package/modules/$.array-species-create.js +16 -0
  161. package/modules/$.buffer.js +278 -285
  162. package/modules/$.collection-strong.js +9 -8
  163. package/modules/$.collection-weak.js +16 -15
  164. package/modules/$.collection.js +37 -25
  165. package/modules/$.core.js +1 -1
  166. package/modules/{$.support-desc.js → $.descriptors.js} +0 -0
  167. package/modules/$.export.js +41 -0
  168. package/modules/$.fails-is-regexp.js +2 -1
  169. package/modules/$.fix-re-wks.js +10 -5
  170. package/modules/$.flags.js +5 -5
  171. package/modules/$.get-names.js +3 -3
  172. package/modules/$.hide.js +1 -1
  173. package/modules/$.is-array-iter.js +5 -3
  174. package/modules/$.iter-create.js +5 -3
  175. package/modules/$.iter-define.js +46 -30
  176. package/modules/$.iter-detect.js +8 -6
  177. package/modules/{$.expm1.js → $.math-expm1.js} +0 -0
  178. package/modules/{$.log1p.js → $.math-log1p.js} +0 -0
  179. package/modules/{$.sign.js → $.math-sign.js} +0 -0
  180. package/modules/$.microtask.js +9 -2
  181. package/modules/{$.assign.js → $.object-assign.js} +0 -0
  182. package/modules/$.object-sap.js +6 -4
  183. package/modules/$.redefine-all.js +5 -0
  184. package/modules/{$.redef.js → $.redefine.js} +0 -0
  185. package/modules/{$.same.js → $.same-value.js} +1 -0
  186. package/modules/$.set-species.js +13 -0
  187. package/modules/{$.tag.js → $.set-to-string-tag.js} +0 -0
  188. package/modules/$.species-constructor.js +7 -7
  189. package/modules/$.string-at.js +5 -6
  190. package/modules/$.string-trim.js +17 -14
  191. package/modules/$.task.js +0 -1
  192. package/modules/$.to-primitive.js +12 -0
  193. package/modules/$.typed-array.js +345 -294
  194. package/modules/$.typed.js +36 -0
  195. package/modules/$.wks.js +2 -1
  196. package/modules/core.delay.js +2 -2
  197. package/modules/core.dict.js +20 -19
  198. package/modules/core.function.part.js +3 -4
  199. package/modules/core.is-iterable.js +1 -1
  200. package/modules/core.log.js +2 -2
  201. package/modules/core.object.classof.js +2 -2
  202. package/modules/core.object.define.js +3 -3
  203. package/modules/core.object.is-object.js +2 -2
  204. package/modules/core.object.make.js +4 -4
  205. package/modules/core.string.escape-html.js +9 -9
  206. package/modules/core.string.unescape-html.js +9 -9
  207. package/modules/es5.js +61 -60
  208. package/modules/es6.array.copy-within.js +3 -4
  209. package/modules/es6.array.fill.js +3 -3
  210. package/modules/es6.array.find-index.js +6 -6
  211. package/modules/es6.array.find.js +6 -6
  212. package/modules/es6.array.from.js +2 -2
  213. package/modules/es6.array.iterator.js +8 -8
  214. package/modules/es6.array.of.js +2 -2
  215. package/modules/es6.array.species.js +1 -1
  216. package/modules/es6.date.to-string.js +10 -0
  217. package/modules/es6.function.name.js +1 -1
  218. package/modules/es6.math.acosh.js +5 -5
  219. package/modules/es6.math.asinh.js +2 -2
  220. package/modules/es6.math.atanh.js +2 -2
  221. package/modules/es6.math.cbrt.js +3 -3
  222. package/modules/es6.math.clz32.js +2 -2
  223. package/modules/es6.math.cosh.js +3 -3
  224. package/modules/es6.math.expm1.js +2 -2
  225. package/modules/es6.math.fround.js +4 -4
  226. package/modules/es6.math.hypot.js +3 -3
  227. package/modules/es6.math.imul.js +3 -3
  228. package/modules/es6.math.log10.js +2 -2
  229. package/modules/es6.math.log1p.js +2 -2
  230. package/modules/es6.math.log2.js +2 -2
  231. package/modules/es6.math.sign.js +2 -2
  232. package/modules/es6.math.sinh.js +4 -4
  233. package/modules/es6.math.tanh.js +4 -4
  234. package/modules/es6.math.trunc.js +2 -2
  235. package/modules/es6.number.constructor.js +43 -29
  236. package/modules/es6.number.epsilon.js +2 -2
  237. package/modules/es6.number.is-finite.js +2 -2
  238. package/modules/es6.number.is-integer.js +2 -2
  239. package/modules/es6.number.is-nan.js +2 -2
  240. package/modules/es6.number.is-safe-integer.js +2 -2
  241. package/modules/es6.number.max-safe-integer.js +2 -2
  242. package/modules/es6.number.min-safe-integer.js +2 -2
  243. package/modules/es6.number.parse-float.js +2 -2
  244. package/modules/es6.number.parse-int.js +2 -2
  245. package/modules/es6.object.assign.js +2 -2
  246. package/modules/es6.object.is.js +2 -4
  247. package/modules/es6.object.set-prototype-of.js +2 -2
  248. package/modules/es6.object.to-string.js +1 -1
  249. package/modules/es6.promise.js +96 -66
  250. package/modules/es6.reflect.apply.js +5 -4
  251. package/modules/es6.reflect.construct.js +4 -3
  252. package/modules/es6.reflect.define-property.js +2 -2
  253. package/modules/es6.reflect.delete-property.js +2 -2
  254. package/modules/es6.reflect.enumerate.js +2 -2
  255. package/modules/es6.reflect.get-own-property-descriptor.js +2 -2
  256. package/modules/es6.reflect.get-prototype-of.js +2 -2
  257. package/modules/es6.reflect.get.js +2 -2
  258. package/modules/es6.reflect.has.js +2 -2
  259. package/modules/es6.reflect.is-extensible.js +2 -2
  260. package/modules/es6.reflect.own-keys.js +2 -2
  261. package/modules/es6.reflect.prevent-extensions.js +2 -2
  262. package/modules/es6.reflect.set-prototype-of.js +2 -2
  263. package/modules/es6.reflect.set.js +2 -2
  264. package/modules/es6.regexp.constructor.js +3 -3
  265. package/modules/es6.regexp.flags.js +1 -1
  266. package/modules/es6.string.code-point-at.js +3 -3
  267. package/modules/es6.string.ends-with.js +2 -2
  268. package/modules/es6.string.from-code-point.js +4 -4
  269. package/modules/es6.string.includes.js +4 -3
  270. package/modules/es6.string.raw.js +2 -2
  271. package/modules/es6.string.repeat.js +2 -2
  272. package/modules/es6.string.starts-with.js +2 -2
  273. package/modules/es6.symbol.js +17 -16
  274. package/modules/es6.typed.array-buffer.js +43 -0
  275. package/modules/es6.typed.data-view.js +4 -0
  276. package/modules/{es6.typed-arrays.float32-array.js → es6.typed.float32-array.js} +0 -0
  277. package/modules/{es6.typed-arrays.float64-array.js → es6.typed.float64-array.js} +0 -0
  278. package/modules/{es6.typed-arrays.int16-array.js → es6.typed.int16-array.js} +0 -0
  279. package/modules/{es6.typed-arrays.int32-array.js → es6.typed.int32-array.js} +0 -0
  280. package/modules/{es6.typed-arrays.int8-array.js → es6.typed.int8-array.js} +0 -0
  281. package/modules/{es6.typed-arrays.uint16-array.js → es6.typed.uint16-array.js} +0 -0
  282. package/modules/{es6.typed-arrays.uint32-array.js → es6.typed.uint32-array.js} +0 -0
  283. package/modules/{es6.typed-arrays.uint8-array.js → es6.typed.uint8-array.js} +0 -0
  284. package/modules/{es6.typed-arrays.uint8-clamped-array.js → es6.typed.uint8-clamped-array.js} +0 -0
  285. package/modules/es6.weak-map.js +2 -1
  286. package/modules/es7.array.includes.js +5 -3
  287. package/modules/es7.map.to-json.js +2 -2
  288. package/modules/es7.object.entries.js +2 -2
  289. package/modules/es7.object.get-own-property-descriptors.js +2 -2
  290. package/modules/es7.object.values.js +2 -2
  291. package/modules/es7.regexp.escape.js +4 -3
  292. package/modules/es7.set.to-json.js +2 -2
  293. package/modules/es7.string.at.js +5 -4
  294. package/modules/es7.string.pad-left.js +4 -3
  295. package/modules/es7.string.pad-right.js +4 -3
  296. package/modules/js.array.statics.js +4 -3
  297. package/modules/library/{$.unscope.js → $.add-to-unscopables.js} +0 -0
  298. package/modules/library/$.collection.js +21 -14
  299. package/modules/library/$.export.js +46 -0
  300. package/modules/library/{$.redef.js → $.redefine.js} +0 -0
  301. package/modules/library/$.set-species.js +13 -0
  302. package/modules/library/es6.date.to-string.js +0 -0
  303. package/modules/library/es6.regexp.constructor.js +1 -1
  304. package/modules/web.dom.iterable.js +2 -2
  305. package/modules/web.immediate.js +3 -3
  306. package/modules/web.timers.js +2 -2
  307. package/package.json +6 -6
  308. package/README.md +0 -1289
  309. package/library/modules/$.def.js +0 -47
  310. package/library/modules/$.mix.js +0 -5
  311. package/library/modules/$.species.js +0 -9
  312. package/library/modules/es6.typed-arrays.array-buffer.js +0 -33
  313. package/library/modules/es6.typed-arrays.data-view.js +0 -4
  314. package/modules/$.def.js +0 -42
  315. package/modules/$.mix.js +0 -5
  316. package/modules/$.species.js +0 -9
  317. package/modules/$.unscope.js +0 -6
  318. package/modules/es6.typed-arrays.array-buffer.js +0 -33
  319. package/modules/es6.typed-arrays.data-view.js +0 -4
  320. package/modules/library/$.def.js +0 -47
@@ -1,314 +1,365 @@
1
1
  'use strict';
2
- var DEBUG = true;
2
+ if(require('./$.descriptors')){
3
+ var LIBRARY = require('./$.library')
4
+ , global = require('./$.global')
5
+ , $ = require('./$')
6
+ , fails = require('./$.fails')
7
+ , $export = require('./$.export')
8
+ , $typed = require('./$.typed')
9
+ , $buffer = require('./$.buffer')
10
+ , ctx = require('./$.ctx')
11
+ , strictNew = require('./$.strict-new')
12
+ , propertyDesc = require('./$.property-desc')
13
+ , hide = require('./$.hide')
14
+ , redefineAll = require('./$.redefine-all')
15
+ , isInteger = require('./$.is-integer')
16
+ , toInteger = require('./$.to-integer')
17
+ , toLength = require('./$.to-length')
18
+ , toIndex = require('./$.to-index')
19
+ , toPrimitive = require('./$.to-primitive')
20
+ , isObject = require('./$.is-object')
21
+ , toObject = require('./$.to-object')
22
+ , isArrayIter = require('./$.is-array-iter')
23
+ , isIterable = require('./core.is-iterable')
24
+ , getIterFn = require('./core.get-iterator-method')
25
+ , wks = require('./$.wks')
26
+ , createArrayMethod = require('./$.array-methods')
27
+ , createArrayIncludes = require('./$.array-includes')
28
+ , speciesConstructor = require('./$.species-constructor')
29
+ , ArrayIterators = require('./es6.array.iterator')
30
+ , Iterators = require('./$.iterators')
31
+ , $iterDetect = require('./$.iter-detect')
32
+ , setSpecies = require('./$.set-species')
33
+ , arrayFill = require('./$.array-fill')
34
+ , arrayCopyWithin = require('./$.array-copy-within')
35
+ , ArrayProto = Array.prototype
36
+ , $ArrayBuffer = $buffer.ArrayBuffer
37
+ , $DataView = $buffer.DataView
38
+ , setDesc = $.setDesc
39
+ , getDesc = $.getDesc
40
+ , arrayForEach = createArrayMethod(0)
41
+ , arrayMap = createArrayMethod(1)
42
+ , arrayFilter = createArrayMethod(2)
43
+ , arraySome = createArrayMethod(3)
44
+ , arrayEvery = createArrayMethod(4)
45
+ , arrayFind = createArrayMethod(5)
46
+ , arrayFindIndex = createArrayMethod(6)
47
+ , arrayIncludes = createArrayIncludes(true)
48
+ , arrayIndexOf = createArrayIncludes(false)
49
+ , arrayValues = ArrayIterators.values
50
+ , arrayKeys = ArrayIterators.keys
51
+ , arrayEntries = ArrayIterators.entries
52
+ , arrayLastIndexOf = ArrayProto.lastIndexOf
53
+ , arrayReduce = ArrayProto.reduce
54
+ , arrayReduceRight = ArrayProto.reduceRight
55
+ , arrayJoin = ArrayProto.join
56
+ , arrayReverse = ArrayProto.reverse
57
+ , arraySort = ArrayProto.sort
58
+ , arraySlice = ArrayProto.slice
59
+ , arrayToString = ArrayProto.toString
60
+ , arrayToLocaleString = ArrayProto.toLocaleString
61
+ , ITERATOR = wks('iterator')
62
+ , TAG = wks('toStringTag')
63
+ , TYPED_CONSTRUCTOR = wks('typed_constructor')
64
+ , DEF_CONSTRUCTOR = wks('def_constructor')
65
+ , ALL_ARRAYS = $typed.ARRAYS
66
+ , TYPED_ARRAY = $typed.TYPED
67
+ , VIEW = $typed.VIEW
68
+ , BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';
3
69
 
4
- var global = require('./$.global')
5
- , $def = require('./$.def')
6
- , $buffer = require('./$.buffer')
7
- , $ArrayBuffer = $buffer.ArrayBuffer
8
- , $DataView = $buffer.DataView
9
- , $ = require('./$')
10
- , setDesc = $.setDesc
11
- , getDesc = $.getDesc
12
- , ctx = require('./$.ctx')
13
- , strictNew = require('./$.strict-new')
14
- , propertyDesc = require('./$.property-desc')
15
- , $hide = require('./$.hide')
16
- , isInteger = require('./$.is-integer')
17
- , toInteger = require('./$.to-integer')
18
- , toLength = require('./$.to-length')
19
- , toIndex = require('./$.to-index')
20
- , isObject = require('./$.is-object')
21
- , toObject = require('./$.to-object')
22
- , isArrayIter = require('./$.is-array-iter')
23
- , isIterable = require('./core.is-iterable')
24
- , getIterFn = require('./core.get-iterator-method')
25
- , wks = require('./$.wks')
26
- , arrayMethods = require('./$.array-methods')
27
- , arrayIncludes = require('./$.array-includes')
28
- , $fill = require('./$.array-fill')
29
- , $copyWithin = require('./$.array-copy-within')
30
- , speciesConstructor = require('./$.species-constructor')
31
- , $forEach = arrayMethods(0)
32
- , $map = arrayMethods(1)
33
- , $filter = arrayMethods(2)
34
- , $some = arrayMethods(3)
35
- , $every = arrayMethods(4)
36
- , $find = arrayMethods(5)
37
- , $findIndex = arrayMethods(6)
38
- , $indexOf = arrayIncludes(false)
39
- , $includes = arrayIncludes(true)
40
- , $lastIndexOf = [].lastIndexOf
41
- , $reduce = [].reduce
42
- , $reduceRight = [].reduceRight
43
- , $join = [].join
44
- , $reverse = [].reverse
45
- , $sort = [].sort
46
- , $slice = [].slice
47
- , $toString = [].toString
48
- , $toLocaleString = [].toLocaleString
49
- , TAG = wks('toStringTag')
50
- , TYPED_ARRAY = wks('typed_array')
51
- , TYPED_CONSTRUCTOR = wks('typed_constructor')
52
- , DEF_CONSTRUCTOR = wks('def_constructor')
53
- , BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';
70
+ var LITTLE_ENDIAN = fails(function(){
71
+ return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
72
+ });
54
73
 
55
- var validate = function(it){
56
- if(isObject(it) && TYPED_ARRAY in it)return it;
57
- throw TypeError(it + ' is not a typed array!');
58
- };
74
+ var validate = function(it){
75
+ if(isObject(it) && TYPED_ARRAY in it)return it;
76
+ throw TypeError(it + ' is not a typed array!');
77
+ };
59
78
 
60
- var fromList = function(O, list){
61
- var index = 0
62
- , length = list.length
63
- , result = allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);
64
- while(length > index)result[index] = list[index++];
65
- return result;
66
- };
79
+ var fromList = function(O, list){
80
+ var index = 0
81
+ , length = list.length
82
+ , result = allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);
83
+ while(length > index)result[index] = list[index++];
84
+ return result;
85
+ };
67
86
 
68
- var allocate = function(C, length){
69
- if(!(isObject(C) && TYPED_CONSTRUCTOR in C)){
70
- throw TypeError('It is not a typed array constructor!');
71
- } return new C(length);
72
- };
87
+ var allocate = function(C, length){
88
+ if(!(isObject(C) && TYPED_CONSTRUCTOR in C)){
89
+ throw TypeError('It is not a typed array constructor!');
90
+ } return new C(length);
91
+ };
73
92
 
74
- var $from = function from(source /*, mapfn, thisArg */){
75
- var O = toObject(source)
76
- , $$ = arguments
77
- , $$len = $$.length
78
- , mapfn = $$len > 1 ? $$[1] : undefined
79
- , mapping = mapfn !== undefined
80
- , iterFn = getIterFn(O)
81
- , i, length, values, result, step, iterator;
82
- if(iterFn != undefined && !isArrayIter(iterFn)){
83
- for(iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++){
84
- values.push(step.value);
85
- } O = values;
86
- }
87
- if(mapping && $$len > 2)mapfn = ctx(mapfn, $$[2], 2);
88
- for(i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++){
89
- result[i] = mapping ? mapfn(O[i], i) : O[i];
90
- }
91
- return result;
92
- };
93
+ var $from = function from(source /*, mapfn, thisArg */){
94
+ var O = toObject(source)
95
+ , $$ = arguments
96
+ , $$len = $$.length
97
+ , mapfn = $$len > 1 ? $$[1] : undefined
98
+ , mapping = mapfn !== undefined
99
+ , iterFn = getIterFn(O)
100
+ , i, length, values, result, step, iterator;
101
+ if(iterFn != undefined && !isArrayIter(iterFn)){
102
+ for(iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++){
103
+ values.push(step.value);
104
+ } O = values;
105
+ }
106
+ if(mapping && $$len > 2)mapfn = ctx(mapfn, $$[2], 2);
107
+ for(i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++){
108
+ result[i] = mapping ? mapfn(O[i], i) : O[i];
109
+ }
110
+ return result;
111
+ };
93
112
 
94
- var addGetter = function(C, key, internal){
95
- setDesc(C.prototype, key, {get: function(){ return this._d[internal]; }});
96
- };
113
+ var addGetter = function(C, key, internal){
114
+ setDesc(C.prototype, key, {get: function(){ return this._d[internal]; }});
115
+ };
97
116
 
98
- var statics = {
99
- // @@species -> this
100
- from: $from,
101
- of: function of(/*...items*/){
117
+ var $of = function of(/*...items*/){
102
118
  var index = 0
103
119
  , length = arguments.length
104
- , result = new this(length);
120
+ , result = allocate(this, length);
105
121
  while(length > index)result[index] = arguments[index++];
106
122
  return result;
107
- }
108
- };
123
+ };
124
+ var $toLocaleString = function toLocaleString(){
125
+ return arrayToLocaleString.apply(validate(this), arguments);
126
+ };
109
127
 
110
- var proto = {
111
- copyWithin: function copyWithin(target, start /*, end */){
112
- return $copyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
113
- },
114
- every: function every(callbackfn /*, thisArg */){
115
- return $every(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
116
- },
117
- fill: function fill(value /*, start, end */){ // eslint-disable-line no-unused-vars
118
- return $fill.apply(validate(this), arguments);
119
- },
120
- filter: function filter(callbackfn /*, thisArg */){
121
- return fromList(this, $filter(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined)); // TODO
122
- },
123
- find: function find(predicate /*, thisArg */){
124
- return $find(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
125
- },
126
- findIndex: function findIndex(predicate /*, thisArg */){
127
- return $findIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
128
- },
129
- forEach: function forEach(callbackfn /*, thisArg */){
130
- $forEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
131
- },
132
- indexOf: function indexOf(searchElement /*, fromIndex */){
133
- return $indexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
134
- },
135
- includes: function includes(searchElement /*, fromIndex */){
136
- return $includes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
137
- },
138
- join: function join(separator){ // eslint-disable-line no-unused-vars
139
- return $join.apply(validate(this), arguments);
140
- },
141
- lastIndexOf: function lastIndexOf(searchElement /*, fromIndex */){ // eslint-disable-line no-unused-vars
142
- return $lastIndexOf.apply(validate(this), arguments);
143
- },
144
- map: function map(mapfn /*, thisArg */){
145
- return fromList(this, $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined)); // TODO
146
- },
147
- reduce: function reduce(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars
148
- return $reduce.apply(validate(this), arguments);
149
- },
150
- reduceRight: function reduceRight(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars
151
- return $reduceRight.apply(validate(this), arguments);
152
- },
153
- reverse: function reverse(){
154
- return $reverse.call(validate(this));
155
- },
156
- set: function set(arrayLike /*, offset */){
157
- validate(this);
158
- var offset = toInteger(arguments.length > 1 ? arguments[1] : undefined);
159
- if(offset < 0)throw RangeError();
160
- var length = this.length;
161
- var src = toObject(arrayLike);
162
- var index = 0;
163
- var len = toLength(src.length);
164
- if(len + offset > length)throw RangeError();
165
- while(index < len)this[offset + index] = src[index++];
166
- },
167
- slice: function slice(start, end){
168
- return fromList(this, $slice.call(validate(this), start, end)); // TODO
169
- },
170
- some: function some(callbackfn /*, thisArg */){
171
- return $some(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
172
- },
173
- sort: function sort(comparefn){
174
- return $sort.call(validate(this), comparefn);
175
- },
176
- subarray: function subarray(/* begin, end */){
177
- var O = validate(this)
178
- , length = O.length
179
- , $$ = arguments
180
- , $$len = $$.length
181
- , begin = toIndex($$len > 0 ? $$[0] : undefined, length)
182
- , end = $$len > 1 ? $$[1] : undefined;
183
- return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(
184
- O.buffer,
185
- O.byteOffset + begin * O.BYTES_PER_ELEMENT,
186
- toLength((end === undefined ? length : toIndex(end, length)) - begin)
187
- );
188
- },
189
- toLocaleString: function toLocaleString(){
190
- return $toLocaleString.apply(validate(this), arguments);
191
- },
192
- toString: function toString(){
193
- return $toString.call(this);
194
- },
195
- entries: function entries(){
196
- // looks like Array equal + ValidateTypedArray
197
- },
198
- keys: function keys(){
199
- // looks like Array equal + ValidateTypedArray
200
- },
201
- values: function values(){
202
- // looks like Array equal + ValidateTypedArray
203
- }
204
- // @@iterator
205
- };
128
+ var proto = {
129
+ copyWithin: function copyWithin(target, start /*, end */){
130
+ return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
131
+ },
132
+ every: function every(callbackfn /*, thisArg */){
133
+ return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
134
+ },
135
+ fill: function fill(value /*, start, end */){ // eslint-disable-line no-unused-vars
136
+ return arrayFill.apply(validate(this), arguments);
137
+ },
138
+ filter: function filter(callbackfn /*, thisArg */){
139
+ return fromList(this, arrayFilter(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined));
140
+ },
141
+ find: function find(predicate /*, thisArg */){
142
+ return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
143
+ },
144
+ findIndex: function findIndex(predicate /*, thisArg */){
145
+ return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
146
+ },
147
+ forEach: function forEach(callbackfn /*, thisArg */){
148
+ arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
149
+ },
150
+ indexOf: function indexOf(searchElement /*, fromIndex */){
151
+ return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
152
+ },
153
+ includes: function includes(searchElement /*, fromIndex */){
154
+ return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
155
+ },
156
+ join: function join(separator){ // eslint-disable-line no-unused-vars
157
+ return arrayJoin.apply(validate(this), arguments);
158
+ },
159
+ lastIndexOf: function lastIndexOf(searchElement /*, fromIndex */){ // eslint-disable-line no-unused-vars
160
+ return arrayLastIndexOf.apply(validate(this), arguments);
161
+ },
162
+ map: function map(mapfn /*, thisArg */){
163
+ return fromList(this, arrayMap(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined)); // TODO
164
+ },
165
+ reduce: function reduce(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars
166
+ return arrayReduce.apply(validate(this), arguments);
167
+ },
168
+ reduceRight: function reduceRight(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars
169
+ return arrayReduceRight.apply(validate(this), arguments);
170
+ },
171
+ reverse: function reverse(){
172
+ return arrayReverse.call(validate(this));
173
+ },
174
+ set: function set(arrayLike /*, offset */){
175
+ validate(this);
176
+ var offset = toInteger(arguments.length > 1 ? arguments[1] : undefined);
177
+ if(offset < 0)throw RangeError();
178
+ var length = this.length;
179
+ var src = toObject(arrayLike);
180
+ var index = 0;
181
+ var len = toLength(src.length);
182
+ if(len + offset > length)throw RangeError();
183
+ while(index < len)this[offset + index] = src[index++];
184
+ },
185
+ slice: function slice(start, end){
186
+ return fromList(this, arraySlice.call(validate(this), start, end)); // TODO
187
+ },
188
+ some: function some(callbackfn /*, thisArg */){
189
+ return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
190
+ },
191
+ sort: function sort(comparefn){
192
+ return arraySort.call(validate(this), comparefn);
193
+ },
194
+ subarray: function subarray(begin, end){
195
+ var O = validate(this)
196
+ , length = O.length
197
+ , $begin = toIndex(begin, length);
198
+ return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(
199
+ O.buffer,
200
+ O.byteOffset + $begin * O.BYTES_PER_ELEMENT,
201
+ toLength((end === undefined ? length : toIndex(end, length)) - $begin)
202
+ );
203
+ },
204
+ entries: function entries(){
205
+ return arrayEntries.call(validate(this));
206
+ },
207
+ keys: function keys(){
208
+ return arrayKeys.call(validate(this));
209
+ },
210
+ values: function values(){
211
+ return arrayValues.call(validate(this));
212
+ }
213
+ };
206
214
 
207
- var isTADesc = function(target, key){
208
- return isObject(target) && TYPED_ARRAY in target
209
- && (typeof key == 'string' || typeof key == 'number') && isInteger(+key); // <- use toPrimitive
210
- };
211
- var $getDesc = $.getDesc = function getOwnPropertyDescriptor(target, key){
212
- return isTADesc(target, key) ? propertyDesc(2, target[key]) : getDesc(target, key);
213
- };
214
- var $setDesc = $.setDesc = function defineProperty(target, key, desc){
215
- if(isTADesc(target, key) && isObject(desc)){
216
- if('value' in desc)target[key] = desc.value;
217
- return target;
218
- } else return setDesc(target, key, desc);
219
- };
215
+ var isTAIndex = function(target, key){
216
+ return isObject(target)
217
+ && TYPED_ARRAY in target
218
+ && typeof key != 'symbol'
219
+ && key in target
220
+ && String(+key) == String(key);
221
+ };
222
+ var $getDesc = function getOwnPropertyDescriptor(target, key){
223
+ return isTAIndex(target, key = toPrimitive(key, true))
224
+ ? propertyDesc(2, target[key])
225
+ : getDesc(target, key);
226
+ };
227
+ var $setDesc = function defineProperty(target, key, desc){
228
+ if(isTAIndex(target, key = toPrimitive(key, true)) && isObject(desc)){
229
+ if('value' in desc)target[key] = desc.value;
230
+ return target;
231
+ } else return setDesc(target, key, desc);
232
+ };
220
233
 
221
- DEBUG && $def($def.S + $def.F * DEBUG, 'Object', {
222
- getOwnPropertyDescriptor: $getDesc,
223
- defineProperty: $setDesc
224
- });
234
+ if(!ALL_ARRAYS){
235
+ $.getDesc = $getDesc;
236
+ $.setDesc = $setDesc;
237
+ }
225
238
 
226
- DEBUG && ('Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,' +
227
- 'Uint32Array,Float32Array,Float64Array').split(',').forEach(function(it){
228
- delete global[it];
229
- });
239
+ $export($export.S + $export.F * !ALL_ARRAYS, 'Object', {
240
+ getOwnPropertyDescriptor: $getDesc,
241
+ defineProperty: $setDesc
242
+ });
230
243
 
231
- module.exports = function(KEY, BYTES, wrapper, CLAMPED){
232
- CLAMPED = !!CLAMPED;
233
- var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array'
234
- , GETTER = 'get' + KEY
235
- , SETTER = 'set' + KEY
236
- , $TypedArray = global[NAME]
237
- , Base = $TypedArray
238
- , O = {};
239
- var addElement = function(that, index){
240
- setDesc(that, index, {
241
- get: function(){
242
- var data = this._d;
243
- return data.v[GETTER](index * BYTES + data.o);
244
- },
245
- set: function(it){
246
- var data = this._d;
247
- if(CLAMPED)it = (it = Math.round(it)) < 0 ? 0 : it > 0xff ? 0xff : it & 0xff;
248
- data.v[SETTER](index * BYTES + data.o, it);
249
- },
250
- enumerable: true
251
- });
252
- };
253
- if(!$ArrayBuffer)return;
254
- if(!$TypedArray || !$buffer.useNative){
255
- $TypedArray = wrapper(function(that, data, $offset, $length){
256
- strictNew(that, $TypedArray, NAME);
257
- var index = 0
258
- , offset = 0
259
- , buffer, byteLength, length;
260
- if(!isObject(data)){
261
- byteLength = toInteger(data) * BYTES;
262
- buffer = new $ArrayBuffer(byteLength);
263
- // TODO TA case
264
- } else if(data instanceof $ArrayBuffer){
265
- buffer = data;
266
- offset = toInteger($offset);
267
- if(offset < 0 || offset % BYTES)throw RangeError();
268
- var $len = data.byteLength;
269
- if($length === undefined){
270
- if($len % BYTES)throw RangeError();
271
- byteLength = $len - offset;
272
- if(byteLength < 0)throw RangeError();
273
- } else {
274
- byteLength = toLength($length) * BYTES;
275
- if(byteLength + offset > $len)throw RangeError();
276
- }
277
- } else return $from.call($TypedArray, data);
278
- length = byteLength / BYTES;
279
- $hide(that, '_d', {
280
- b: buffer,
281
- o: offset,
282
- l: byteLength,
283
- e: length,
284
- v: new $DataView(buffer)
244
+ var $TypedArrayPrototype$ = redefineAll({}, proto);
245
+ redefineAll($TypedArrayPrototype$, {
246
+ constructor: function(){ /* noop */ },
247
+ toString: arrayToString,
248
+ toLocaleString: $toLocaleString
249
+ });
250
+ $.setDesc($TypedArrayPrototype$, TAG, {
251
+ get: function(){ return this[TYPED_ARRAY]; }
252
+ });
253
+
254
+ module.exports = function(KEY, BYTES, wrapper, CLAMPED){
255
+ CLAMPED = !!CLAMPED;
256
+ var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array'
257
+ , GETTER = 'get' + KEY
258
+ , SETTER = 'set' + KEY
259
+ , TypedArray = global[NAME]
260
+ , Base = TypedArray || {}
261
+ , FORCED = !TypedArray || !$typed.ABV
262
+ , $iterator = proto.values
263
+ , O = {};
264
+ var addElement = function(that, index){
265
+ setDesc(that, index, {
266
+ get: function(){
267
+ var data = this._d;
268
+ return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);
269
+ },
270
+ set: function(it){
271
+ var data = this._d;
272
+ if(CLAMPED)it = (it = Math.round(it)) < 0 ? 0 : it > 0xff ? 0xff : it & 0xff;
273
+ data.v[SETTER](index * BYTES + data.o, it, LITTLE_ENDIAN);
274
+ },
275
+ enumerable: true
276
+ });
277
+ };
278
+ if(!$ArrayBuffer)return;
279
+ if(FORCED){
280
+ TypedArray = wrapper(function(that, data, $offset, $length){
281
+ strictNew(that, TypedArray, NAME);
282
+ var index = 0
283
+ , offset = 0
284
+ , buffer, byteLength, length;
285
+ if(!isObject(data)){
286
+ byteLength = toInteger(data) * BYTES;
287
+ buffer = new $ArrayBuffer(byteLength);
288
+ // TODO TA case
289
+ } else if(data instanceof $ArrayBuffer){
290
+ buffer = data;
291
+ offset = toInteger($offset);
292
+ if(offset < 0 || offset % BYTES)throw RangeError();
293
+ var $len = data.byteLength;
294
+ if($length === undefined){
295
+ if($len % BYTES)throw RangeError();
296
+ byteLength = $len - offset;
297
+ if(byteLength < 0)throw RangeError();
298
+ } else {
299
+ byteLength = toLength($length) * BYTES;
300
+ if(byteLength + offset > $len)throw RangeError();
301
+ }
302
+ } else return $from.call(TypedArray, data);
303
+ length = byteLength / BYTES;
304
+ hide(that, '_d', {
305
+ b: buffer,
306
+ o: offset,
307
+ l: byteLength,
308
+ e: length,
309
+ v: new $DataView(buffer)
310
+ });
311
+ while(index < length)addElement(that, index++);
312
+ });
313
+ TypedArray.prototype = $.create($TypedArrayPrototype$);
314
+ addGetter(TypedArray, 'buffer', 'b');
315
+ addGetter(TypedArray, 'byteOffset', 'o');
316
+ addGetter(TypedArray, 'byteLength', 'l');
317
+ addGetter(TypedArray, 'length', 'e');
318
+ hide(TypedArray, BYTES_PER_ELEMENT, BYTES);
319
+ hide(TypedArray.prototype, BYTES_PER_ELEMENT, BYTES);
320
+ hide(TypedArray.prototype, 'constructor', TypedArray);
321
+ } else if(!$iterDetect(function(iter){
322
+ new TypedArray(iter); // eslint-disable-line no-new
323
+ }, true)){
324
+ TypedArray = wrapper(function(that, data, $offset, $length){
325
+ strictNew(that, TypedArray, NAME);
326
+ if(isObject(data) && isIterable(data))return $from.call(TypedArray, data);
327
+ return $length === undefined ? new Base(data, $offset) : new Base(data, $offset, $length);
285
328
  });
286
- while(index < length)addElement(that, index++);
329
+ TypedArray.prototype = Base.prototype;
330
+ if(!LIBRARY)TypedArray.prototype.constructor = TypedArray;
331
+ }
332
+ var TypedArrayPrototype = TypedArray.prototype;
333
+ var $nativeIterator = TypedArrayPrototype[ITERATOR];
334
+ hide(TypedArray, TYPED_CONSTRUCTOR, true);
335
+ hide(TypedArrayPrototype, TYPED_ARRAY, NAME);
336
+ hide(TypedArrayPrototype, VIEW, true);
337
+ hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);
338
+ TAG in TypedArrayPrototype || $.setDesc(TypedArrayPrototype, TAG, {
339
+ get: function(){ return NAME; }
287
340
  });
288
- addGetter($TypedArray, 'buffer', 'b');
289
- addGetter($TypedArray, 'byteOffset', 'o');
290
- addGetter($TypedArray, 'byteLength', 'l');
291
- addGetter($TypedArray, 'length', 'e');
292
- $hide($TypedArray, BYTES_PER_ELEMENT, BYTES);
293
- $hide($TypedArray.prototype, BYTES_PER_ELEMENT, BYTES);
294
- } else if(!require('./$.iter-detect')(function(iter){
295
- new $TypedArray(iter); // eslint-disable-line no-new
296
- }, true)){
297
- $TypedArray = wrapper(function(that, data, $offset, $length){
298
- strictNew(that, $TypedArray, NAME);
299
- if(isObject(data) && isIterable(data))return $from.call($TypedArray, data);
300
- return new $TypedArray(data, $offset, $length);
341
+
342
+ O[NAME] = TypedArray;
343
+
344
+ $export($export.G + $export.W + $export.F * (TypedArray != Base), O);
345
+
346
+ $export($export.S + $export.F * (TypedArray != Base), NAME, {
347
+ BYTES_PER_ELEMENT: BYTES,
348
+ from: Base.from || $from,
349
+ of: Base.of || $of
301
350
  });
302
- $TypedArray.prototype = Base.prototype;
303
- }
304
- $hide($TypedArray, TYPED_CONSTRUCTOR, true);
305
- $hide($TypedArray.prototype, TYPED_ARRAY, NAME);
306
- $hide($TypedArray.prototype, DEF_CONSTRUCTOR, $TypedArray);
307
- TAG in $TypedArray.prototype || $.setDesc($TypedArray.prototype, TAG, {
308
- get: function(){ return NAME; }
309
- });
310
- DEBUG && require('./$.mix')($TypedArray.prototype, proto);
311
- DEBUG && require('./$.mix')($TypedArray, statics);
312
- O[NAME] = $TypedArray;
313
- $def($def.G + $def.F * ($TypedArray != Base), O);
314
- };
351
+
352
+ $export($export.P + $export.F * FORCED, NAME, proto);
353
+
354
+ $export($export.P + $export.F * (TypedArrayPrototype.toString != arrayToString), NAME, {toString: arrayToString});
355
+
356
+ $export($export.P + $export.F * fails(function(){
357
+ return [1, 2].toLocaleString() != new Typed([1, 2]).toLocaleString()
358
+ }), NAME, {toLocaleString: $toLocaleString});
359
+
360
+ Iterators[NAME] = $nativeIterator || $iterator;
361
+ LIBRARY || $nativeIterator || hide(TypedArrayPrototype, ITERATOR, $iterator);
362
+
363
+ setSpecies(NAME);
364
+ };
365
+ } else module.exports = function(){ /* empty */};