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
@@ -6,20 +6,10 @@
6
6
  // 5 -> Array#find
7
7
  // 6 -> Array#findIndex
8
8
  var ctx = require('./$.ctx')
9
- , isObject = require('./$.is-object')
10
9
  , IObject = require('./$.iobject')
11
10
  , toObject = require('./$.to-object')
12
11
  , toLength = require('./$.to-length')
13
- , isArray = require('./$.is-array')
14
- , SPECIES = require('./$.wks')('species');
15
- // 9.4.2.3 ArraySpeciesCreate(originalArray, length)
16
- var ASC = function(original, length){
17
- var C;
18
- if(isArray(original) && isObject(C = original.constructor)){
19
- C = C[SPECIES];
20
- if(C === null)C = undefined;
21
- } return new (C === undefined ? Array : C)(length);
22
- };
12
+ , asc = require('./$.array-species-create');
23
13
  module.exports = function(TYPE){
24
14
  var IS_MAP = TYPE == 1
25
15
  , IS_FILTER = TYPE == 2
@@ -33,7 +23,7 @@ module.exports = function(TYPE){
33
23
  , f = ctx(callbackfn, that, 3)
34
24
  , length = toLength(self.length)
35
25
  , index = 0
36
- , result = IS_MAP ? ASC($this, length) : IS_FILTER ? ASC($this, 0) : undefined
26
+ , result = IS_MAP ? asc($this, length) : IS_FILTER ? asc($this, 0) : undefined
37
27
  , val, res;
38
28
  for(;length > index; index++)if(NO_HOLES || index in self){
39
29
  val = self[index];
@@ -0,0 +1,16 @@
1
+ // 9.4.2.3 ArraySpeciesCreate(originalArray, length)
2
+ var isObject = require('./$.is-object')
3
+ , isArray = require('./$.is-array')
4
+ , SPECIES = require('./$.wks')('species');
5
+ module.exports = function(original, length){
6
+ var C;
7
+ if(isArray(original)){
8
+ C = original.constructor;
9
+ // cross-realm fallback
10
+ if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined;
11
+ if(isObject(C)){
12
+ C = C[SPECIES];
13
+ if(C === null)C = undefined;
14
+ }
15
+ } return new (C === undefined ? Array : C)(length);
16
+ };
@@ -1,295 +1,288 @@
1
1
  'use strict';
2
- var DEBUG = true;
2
+ var $ = require('./$')
3
+ , global = require('./$.global')
4
+ , $typed = require('./$.typed')
5
+ , redefineAll = require('./$.redefine-all')
6
+ , strictNew = require('./$.strict-new')
7
+ , toInteger = require('./$.to-integer')
8
+ , toLength = require('./$.to-length')
9
+ , arrayFill = require('./$.array-fill')
10
+ , $ArrayBuffer = global.ArrayBuffer
11
+ , $DataView = global.DataView
12
+ , Math = global.Math
13
+ , parseInt = global.parseInt
14
+ , abs = Math.abs
15
+ , pow = Math.pow
16
+ , min = Math.min
17
+ , floor = Math.floor
18
+ , log = Math.log
19
+ , LN2 = Math.LN2
20
+ , BYTE_LENGTH = 'byteLength';
3
21
 
4
- if(require('./$.support-desc')){
5
- var global = require('./$.global')
6
- , $ = require('./$')
7
- , $mix = require('./$.mix')
8
- , $fill = require('./$.array-fill')
9
- , strictNew = require('./$.strict-new')
10
- , toInteger = require('./$.to-integer')
11
- , toLength = require('./$.to-length')
12
- , $ArrayBuffer = global.ArrayBuffer
13
- , $DataView = global.DataView
14
- , Math = global.Math
15
- , parseInt = global.parseInt
16
- , BYTE_LENGTH = 'byteLength'
17
- , useNativeBuffer = !!($ArrayBuffer && $DataView);
18
-
19
- if(DEBUG)useNativeBuffer = false;
20
-
21
- var abs = Math.abs
22
- , pow = Math.pow
23
- , min = Math.min
24
- , floor = Math.floor
25
- , log = Math.log
26
- , LN2 = Math.LN2;
27
-
28
- // pack / unpack based on
29
- // https://github.com/inexorabletash/polyfill/blob/v0.1.11/typedarray.js#L123-L264
30
- // TODO: simplify
31
- var signed = function(value, bits){
32
- var s = 32 - bits;
33
- return value << s >> s;
34
- };
35
- var unsigned = function(value, bits){
36
- var s = 32 - bits;
37
- return value << s >>> s;
38
- };
39
- var roundToEven = function(n){
40
- var w = floor(n)
41
- , f = n - w;
42
- return f < .5 ? w : f > .5 ? w + 1 : w % 2 ? w + 1 : w;
43
- };
44
- var packI8 = function(n){
45
- return [n & 0xff];
46
- };
47
- var unpackI8 = function(bytes){
48
- return signed(bytes[0], 8);
49
- };
50
- var packU8 = function(n){
51
- return [n & 0xff];
52
- };
53
- var unpackU8 = function(bytes){
54
- return unsigned(bytes[0], 8);
55
- };
56
- var packI16 = function(n){
57
- return [n & 0xff, n >> 8 & 0xff];
58
- };
59
- var unpackI16 = function(bytes){
60
- return signed(bytes[1] << 8 | bytes[0], 16);
61
- };
62
- var packU16 = function(n){
63
- return [n & 0xff, n >> 8 & 0xff];
64
- };
65
- var unpackU16 = function(bytes){
66
- return unsigned(bytes[1] << 8 | bytes[0], 16);
67
- };
68
- var packI32 = function(n){
69
- return [n & 0xff, n >> 8 & 0xff, n >> 16 & 0xff, n >> 24 & 0xff];
70
- };
71
- var unpackI32 = function(bytes){
72
- return signed(bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0], 32);
73
- };
74
- var packU32 = function(n){
75
- return [n & 0xff, n >> 8 & 0xff, n >> 16 & 0xff, n >> 24 & 0xff];
76
- };
77
- var unpackU32 = function(bytes){
78
- return unsigned(bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0], 32);
79
- };
80
- var packIEEE754 = function(v, ebits, fbits) {
81
- var bias = (1 << ebits - 1) - 1
82
- , s, e, f, i, bits, str, bytes;
83
- // Compute sign, exponent, fraction
84
- if (v !== v) {
85
- // NaN
86
- // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping
87
- e = (1 << ebits) - 1;
88
- f = pow(2, fbits - 1);
89
- s = 0;
90
- } else if(v === Infinity || v === -Infinity){
91
- e = (1 << ebits) - 1;
92
- f = 0;
93
- s = v < 0 ? 1 : 0;
94
- } else if(v === 0){
95
- e = 0;
96
- f = 0;
97
- s = 1 / v === -Infinity ? 1 : 0;
98
- } else {
99
- s = v < 0;
100
- v = abs(v);
101
- if(v >= pow(2, 1 - bias)){
102
- e = min(floor(log(v) / LN2), 1023);
103
- var significand = v / pow(2, e);
104
- if(significand < 1){
105
- e -= 1;
106
- significand *= 2;
107
- }
108
- if(significand >= 2){
109
- e += 1;
110
- significand /= 2;
111
- }
112
- f = roundToEven(significand * pow(2, fbits));
113
- if(f / pow(2, fbits) >= 2){
114
- e = e + 1;
115
- f = 1;
116
- }
117
- if(e > bias){
118
- // Overflow
119
- e = (1 << ebits) - 1;
120
- f = 0;
121
- } else {
122
- // Normalized
123
- e = e + bias;
124
- f = f - pow(2, fbits);
125
- }
22
+ // pack / unpack based on
23
+ // https://github.com/inexorabletash/polyfill/blob/v0.1.11/typedarray.js#L123-L264
24
+ // TODO: simplify
25
+ var signed = function(value, bits){
26
+ var s = 32 - bits;
27
+ return value << s >> s;
28
+ };
29
+ var unsigned = function(value, bits){
30
+ var s = 32 - bits;
31
+ return value << s >>> s;
32
+ };
33
+ var roundToEven = function(n){
34
+ var w = floor(n)
35
+ , f = n - w;
36
+ return f < .5 ? w : f > .5 ? w + 1 : w % 2 ? w + 1 : w;
37
+ };
38
+ var packI8 = function(n){
39
+ return [n & 0xff];
40
+ };
41
+ var unpackI8 = function(bytes){
42
+ return signed(bytes[0], 8);
43
+ };
44
+ var packU8 = function(n){
45
+ return [n & 0xff];
46
+ };
47
+ var unpackU8 = function(bytes){
48
+ return unsigned(bytes[0], 8);
49
+ };
50
+ var packI16 = function(n){
51
+ return [n & 0xff, n >> 8 & 0xff];
52
+ };
53
+ var unpackI16 = function(bytes){
54
+ return signed(bytes[1] << 8 | bytes[0], 16);
55
+ };
56
+ var packU16 = function(n){
57
+ return [n & 0xff, n >> 8 & 0xff];
58
+ };
59
+ var unpackU16 = function(bytes){
60
+ return unsigned(bytes[1] << 8 | bytes[0], 16);
61
+ };
62
+ var packI32 = function(n){
63
+ return [n & 0xff, n >> 8 & 0xff, n >> 16 & 0xff, n >> 24 & 0xff];
64
+ };
65
+ var unpackI32 = function(bytes){
66
+ return signed(bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0], 32);
67
+ };
68
+ var packU32 = function(n){
69
+ return [n & 0xff, n >> 8 & 0xff, n >> 16 & 0xff, n >> 24 & 0xff];
70
+ };
71
+ var unpackU32 = function(bytes){
72
+ return unsigned(bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0], 32);
73
+ };
74
+ var packIEEE754 = function(v, ebits, fbits) {
75
+ var bias = (1 << ebits - 1) - 1
76
+ , s, e, f, i, bits, str, bytes;
77
+ // Compute sign, exponent, fraction
78
+ if (v !== v) {
79
+ // NaN
80
+ // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping
81
+ e = (1 << ebits) - 1;
82
+ f = pow(2, fbits - 1);
83
+ s = 0;
84
+ } else if(v === Infinity || v === -Infinity){
85
+ e = (1 << ebits) - 1;
86
+ f = 0;
87
+ s = v < 0 ? 1 : 0;
88
+ } else if(v === 0){
89
+ e = 0;
90
+ f = 0;
91
+ s = 1 / v === -Infinity ? 1 : 0;
92
+ } else {
93
+ s = v < 0;
94
+ v = abs(v);
95
+ if(v >= pow(2, 1 - bias)){
96
+ e = min(floor(log(v) / LN2), 1023);
97
+ var significand = v / pow(2, e);
98
+ if(significand < 1){
99
+ e -= 1;
100
+ significand *= 2;
101
+ }
102
+ if(significand >= 2){
103
+ e += 1;
104
+ significand /= 2;
105
+ }
106
+ f = roundToEven(significand * pow(2, fbits));
107
+ if(f / pow(2, fbits) >= 2){
108
+ e = e + 1;
109
+ f = 1;
110
+ }
111
+ if(e > bias){
112
+ // Overflow
113
+ e = (1 << ebits) - 1;
114
+ f = 0;
126
115
  } else {
127
- // Denormalized
128
- e = 0;
129
- f = roundToEven(v / pow(2, 1 - bias - fbits));
116
+ // Normalized
117
+ e = e + bias;
118
+ f = f - pow(2, fbits);
130
119
  }
120
+ } else {
121
+ // Denormalized
122
+ e = 0;
123
+ f = roundToEven(v / pow(2, 1 - bias - fbits));
131
124
  }
132
- // Pack sign, exponent, fraction
133
- bits = [];
134
- for(i = fbits; i; i -= 1){
135
- bits.push(f % 2 ? 1 : 0);
136
- f = floor(f / 2);
137
- }
138
- for(i = ebits; i; i -= 1){
139
- bits.push(e % 2 ? 1 : 0);
140
- e = floor(e / 2);
141
- }
142
- bits.push(s ? 1 : 0);
143
- bits.reverse();
144
- str = bits.join('');
145
- // Bits to bytes
146
- bytes = [];
147
- while(str.length){
148
- bytes.unshift(parseInt(str.slice(0, 8), 2));
149
- str = str.slice(8);
150
- }
151
- return bytes;
152
- };
153
- var unpackIEEE754 = function(bytes, ebits, fbits){
154
- var bits = []
155
- , i, j, b, str, bias, s, e, f;
156
- for(i = 0; i < bytes.length; ++i)for(b = bytes[i], j = 8; j; --j){
157
- bits.push(b % 2 ? 1 : 0);
158
- b = b >> 1;
159
- }
160
- bits.reverse();
161
- str = bits.join('');
162
- // Unpack sign, exponent, fraction
163
- bias = (1 << ebits - 1) - 1;
164
- s = parseInt(str.slice(0, 1), 2) ? -1 : 1;
165
- e = parseInt(str.slice(1, 1 + ebits), 2);
166
- f = parseInt(str.slice(1 + ebits), 2);
167
- // Produce number
168
- if(e === (1 << ebits) - 1)return f !== 0 ? NaN : s * Infinity;
169
- // Normalized
170
- else if(e > 0)return s * pow(2, e - bias) * (1 + f / pow(2, fbits));
171
- // Denormalized
172
- else if(f !== 0)return s * pow(2, -(bias - 1)) * (f / pow(2, fbits));
173
- return s < 0 ? -0 : 0;
174
- };
175
- var unpackF64 = function(b){
176
- return unpackIEEE754(b, 11, 52);
177
- };
178
- var packF64 = function(v){
179
- return packIEEE754(v, 11, 52);
180
- };
181
- var unpackF32 = function(b){
182
- return unpackIEEE754(b, 8, 23);
183
- };
184
- var packF32 = function(v){
185
- return packIEEE754(v, 8, 23);
186
- };
125
+ }
126
+ // Pack sign, exponent, fraction
127
+ bits = [];
128
+ for(i = fbits; i; i -= 1){
129
+ bits.push(f % 2 ? 1 : 0);
130
+ f = floor(f / 2);
131
+ }
132
+ for(i = ebits; i; i -= 1){
133
+ bits.push(e % 2 ? 1 : 0);
134
+ e = floor(e / 2);
135
+ }
136
+ bits.push(s ? 1 : 0);
137
+ bits.reverse();
138
+ str = bits.join('');
139
+ // Bits to bytes
140
+ bytes = [];
141
+ while(str.length){
142
+ bytes.unshift(parseInt(str.slice(0, 8), 2));
143
+ str = str.slice(8);
144
+ }
145
+ return bytes;
146
+ };
147
+ var unpackIEEE754 = function(bytes, ebits, fbits){
148
+ var bits = []
149
+ , i, j, b, str, bias, s, e, f;
150
+ for(i = 0; i < bytes.length; ++i)for(b = bytes[i], j = 8; j; --j){
151
+ bits.push(b % 2 ? 1 : 0);
152
+ b = b >> 1;
153
+ }
154
+ bits.reverse();
155
+ str = bits.join('');
156
+ // Unpack sign, exponent, fraction
157
+ bias = (1 << ebits - 1) - 1;
158
+ s = parseInt(str.slice(0, 1), 2) ? -1 : 1;
159
+ e = parseInt(str.slice(1, 1 + ebits), 2);
160
+ f = parseInt(str.slice(1 + ebits), 2);
161
+ // Produce number
162
+ if(e === (1 << ebits) - 1)return f !== 0 ? NaN : s * Infinity;
163
+ // Normalized
164
+ else if(e > 0)return s * pow(2, e - bias) * (1 + f / pow(2, fbits));
165
+ // Denormalized
166
+ else if(f !== 0)return s * pow(2, -(bias - 1)) * (f / pow(2, fbits));
167
+ return s < 0 ? -0 : 0;
168
+ };
169
+ var unpackF64 = function(b){
170
+ return unpackIEEE754(b, 11, 52);
171
+ };
172
+ var packF64 = function(v){
173
+ return packIEEE754(v, 11, 52);
174
+ };
175
+ var unpackF32 = function(b){
176
+ return unpackIEEE754(b, 8, 23);
177
+ };
178
+ var packF32 = function(v){
179
+ return packIEEE754(v, 8, 23);
180
+ };
187
181
 
188
- var addGetter = function(C, key, internal){
189
- $.setDesc(C.prototype, key, {get: function(){ return this[internal]; }});
190
- };
182
+ var addGetter = function(C, key, internal){
183
+ $.setDesc(C.prototype, key, {get: function(){ return this[internal]; }});
184
+ };
191
185
 
192
- var get = function(view, bytes, index, conversion, isLittleEndian){
193
- var numIndex = +index
194
- , intIndex = toInteger(numIndex);
195
- if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view._l)throw RangeError();
196
- var store = view._b._b
197
- , start = intIndex + view._o
198
- , pack = store.slice(start, start + bytes);
199
- isLittleEndian || pack.reverse();
200
- return conversion(pack);
201
- };
202
- var set = function(view, bytes, index, conversion, value, isLittleEndian){
203
- var numIndex = +index
204
- , intIndex = toInteger(numIndex);
205
- if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view._l)throw RangeError();
206
- var store = view._b._b
207
- , start = intIndex + view._o
208
- , pack = conversion(+value);
209
- isLittleEndian || pack.reverse();
210
- for(var i = 0; i < bytes; i++)store[start + i] = pack[i];
211
- };
186
+ var get = function(view, bytes, index, conversion, isLittleEndian){
187
+ var numIndex = +index
188
+ , intIndex = toInteger(numIndex);
189
+ if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view._l)throw RangeError();
190
+ var store = view._b._b
191
+ , start = intIndex + view._o
192
+ , pack = store.slice(start, start + bytes);
193
+ isLittleEndian || pack.reverse();
194
+ return conversion(pack);
195
+ };
196
+ var set = function(view, bytes, index, conversion, value, isLittleEndian){
197
+ var numIndex = +index
198
+ , intIndex = toInteger(numIndex);
199
+ if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view._l)throw RangeError();
200
+ var store = view._b._b
201
+ , start = intIndex + view._o
202
+ , pack = conversion(+value);
203
+ isLittleEndian || pack.reverse();
204
+ for(var i = 0; i < bytes; i++)store[start + i] = pack[i];
205
+ };
212
206
 
213
- if(!useNativeBuffer){
214
- $ArrayBuffer = function ArrayBuffer(length){
215
- strictNew(this, $ArrayBuffer, 'ArrayBuffer');
216
- var numberLength = +length
217
- , byteLength = toLength(numberLength);
218
- if(numberLength != byteLength)throw RangeError();
219
- this._b = $fill.call(Array(byteLength), 0);
220
- this._l = byteLength;
221
- };
222
- addGetter($ArrayBuffer, BYTE_LENGTH, '_l');
207
+ if(!$typed.ABV){
208
+ $ArrayBuffer = function ArrayBuffer(length){
209
+ strictNew(this, $ArrayBuffer, 'ArrayBuffer');
210
+ var numberLength = +length
211
+ , byteLength = toLength(numberLength);
212
+ if(numberLength != byteLength)throw RangeError();
213
+ this._b = arrayFill.call(Array(byteLength), 0);
214
+ this._l = byteLength;
215
+ };
216
+ addGetter($ArrayBuffer, BYTE_LENGTH, '_l');
223
217
 
224
- $DataView = function DataView(buffer, byteOffset, byteLength){
225
- strictNew(this, $DataView, 'DataView');
226
- if(!(buffer instanceof $ArrayBuffer))throw TypeError();
227
- var bufferLength = buffer._l
228
- , offset = toInteger(byteOffset);
229
- if(offset < 0 || offset > bufferLength)throw RangeError();
230
- byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
231
- if(offset + byteLength > bufferLength)throw RangeError();
232
- this._b = buffer;
233
- this._o = offset;
234
- this._l = byteLength;
235
- };
236
- addGetter($DataView, 'buffer', '_b');
237
- addGetter($DataView, BYTE_LENGTH, '_l');
238
- addGetter($DataView, 'byteOffset', '_o');
239
- $mix($DataView.prototype, {
240
- getInt8: function getInt8(byteOffset){
241
- return get(this, 1, byteOffset, unpackI8);
242
- },
243
- getUint8: function getUint8(byteOffset){
244
- return get(this, 1, byteOffset, unpackU8);
245
- },
246
- getInt16: function getInt16(byteOffset /*, littleEndian */){
247
- return get(this, 2, byteOffset, unpackI16, arguments.length > 1 ? arguments[1] : undefined);
248
- },
249
- getUint16: function getUint16(byteOffset /*, littleEndian */){
250
- return get(this, 2, byteOffset, unpackU16, arguments.length > 1 ? arguments[1] : undefined);
251
- },
252
- getInt32: function getInt32(byteOffset /*, littleEndian */){
253
- return get(this, 4, byteOffset, unpackI32, arguments.length > 1 ? arguments[1] : undefined);
254
- },
255
- getUint32: function getUint32(byteOffset /*, littleEndian */){
256
- return get(this, 4, byteOffset, unpackU32, arguments.length > 1 ? arguments[1] : undefined);
257
- },
258
- getFloat32: function getFloat32(byteOffset /*, littleEndian */){
259
- return get(this, 4, byteOffset, unpackF32, arguments.length > 1 ? arguments[1] : undefined);
260
- },
261
- getFloat64: function getFloat64(byteOffset /*, littleEndian */){
262
- return get(this, 8, byteOffset, unpackF64, arguments.length > 1 ? arguments[1] : undefined);
263
- },
264
- setInt8: function setInt8(byteOffset, value){
265
- return set(this, 1, byteOffset, packI8, value);
266
- },
267
- setUint8: function setUint8(byteOffset, value){
268
- return set(this, 1, byteOffset, packU8, value);
269
- },
270
- setInt16: function setInt16(byteOffset, value /*, littleEndian */){
271
- return set(this, 2, byteOffset, packI16, value, arguments.length > 2 ? arguments[2] : undefined);
272
- },
273
- setUint16: function setUint16(byteOffset, value /*, littleEndian */){
274
- return set(this, 2, byteOffset, packU16, value, arguments.length > 2 ? arguments[2] : undefined);
275
- },
276
- setInt32: function setInt32(byteOffset, value /*, littleEndian */){
277
- return set(this, 4, byteOffset, packI32, value, arguments.length > 2 ? arguments[2] : undefined);
278
- },
279
- setUint32: function setUint32(byteOffset, value /*, littleEndian */){
280
- return set(this, 4, byteOffset, packU32, value, arguments.length > 2 ? arguments[2] : undefined);
281
- },
282
- setFloat32: function setFloat32(byteOffset, value /*, littleEndian */){
283
- return set(this, 4, byteOffset, packF32, value, arguments.length > 2 ? arguments[2] : undefined);
284
- },
285
- setFloat64: function setFloat64(byteOffset, value /*, littleEndian */){
286
- return set(this, 8, byteOffset, packF64, value, arguments.length > 2 ? arguments[2] : undefined);
287
- }
288
- });
289
- }
290
- module.exports = {
291
- useNative: useNativeBuffer,
292
- ArrayBuffer: $ArrayBuffer,
293
- DataView: $DataView
218
+ $DataView = function DataView(buffer, byteOffset, byteLength){
219
+ strictNew(this, $DataView, 'DataView');
220
+ if(!(buffer instanceof $ArrayBuffer))throw TypeError();
221
+ var bufferLength = buffer._l
222
+ , offset = toInteger(byteOffset);
223
+ if(offset < 0 || offset > bufferLength)throw RangeError();
224
+ byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
225
+ if(offset + byteLength > bufferLength)throw RangeError();
226
+ this._b = buffer;
227
+ this._o = offset;
228
+ this._l = byteLength;
294
229
  };
295
- }
230
+ addGetter($DataView, 'buffer', '_b');
231
+ addGetter($DataView, BYTE_LENGTH, '_l');
232
+ addGetter($DataView, 'byteOffset', '_o');
233
+ redefineAll($DataView.prototype, {
234
+ getInt8: function getInt8(byteOffset){
235
+ return get(this, 1, byteOffset, unpackI8);
236
+ },
237
+ getUint8: function getUint8(byteOffset){
238
+ return get(this, 1, byteOffset, unpackU8);
239
+ },
240
+ getInt16: function getInt16(byteOffset /*, littleEndian */){
241
+ return get(this, 2, byteOffset, unpackI16, arguments.length > 1 ? arguments[1] : undefined);
242
+ },
243
+ getUint16: function getUint16(byteOffset /*, littleEndian */){
244
+ return get(this, 2, byteOffset, unpackU16, arguments.length > 1 ? arguments[1] : undefined);
245
+ },
246
+ getInt32: function getInt32(byteOffset /*, littleEndian */){
247
+ return get(this, 4, byteOffset, unpackI32, arguments.length > 1 ? arguments[1] : undefined);
248
+ },
249
+ getUint32: function getUint32(byteOffset /*, littleEndian */){
250
+ return get(this, 4, byteOffset, unpackU32, arguments.length > 1 ? arguments[1] : undefined);
251
+ },
252
+ getFloat32: function getFloat32(byteOffset /*, littleEndian */){
253
+ return get(this, 4, byteOffset, unpackF32, arguments.length > 1 ? arguments[1] : undefined);
254
+ },
255
+ getFloat64: function getFloat64(byteOffset /*, littleEndian */){
256
+ return get(this, 8, byteOffset, unpackF64, arguments.length > 1 ? arguments[1] : undefined);
257
+ },
258
+ setInt8: function setInt8(byteOffset, value){
259
+ return set(this, 1, byteOffset, packI8, value);
260
+ },
261
+ setUint8: function setUint8(byteOffset, value){
262
+ return set(this, 1, byteOffset, packU8, value);
263
+ },
264
+ setInt16: function setInt16(byteOffset, value /*, littleEndian */){
265
+ return set(this, 2, byteOffset, packI16, value, arguments.length > 2 ? arguments[2] : undefined);
266
+ },
267
+ setUint16: function setUint16(byteOffset, value /*, littleEndian */){
268
+ return set(this, 2, byteOffset, packU16, value, arguments.length > 2 ? arguments[2] : undefined);
269
+ },
270
+ setInt32: function setInt32(byteOffset, value /*, littleEndian */){
271
+ return set(this, 4, byteOffset, packI32, value, arguments.length > 2 ? arguments[2] : undefined);
272
+ },
273
+ setUint32: function setUint32(byteOffset, value /*, littleEndian */){
274
+ return set(this, 4, byteOffset, packU32, value, arguments.length > 2 ? arguments[2] : undefined);
275
+ },
276
+ setFloat32: function setFloat32(byteOffset, value /*, littleEndian */){
277
+ return set(this, 4, byteOffset, packF32, value, arguments.length > 2 ? arguments[2] : undefined);
278
+ },
279
+ setFloat64: function setFloat64(byteOffset, value /*, littleEndian */){
280
+ return set(this, 8, byteOffset, packF64, value, arguments.length > 2 ? arguments[2] : undefined);
281
+ }
282
+ });
283
+ }
284
+ require('./$.hide')($DataView.prototype, $typed.VIEW, true);
285
+ module.exports = {
286
+ ArrayBuffer: $ArrayBuffer,
287
+ DataView: $DataView
288
+ };