ende 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (314) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-gemset +1 -0
  3. data/.ruby-version +1 -0
  4. data/build/build.css +112 -0
  5. data/build/build.js +36465 -0
  6. data/component.json +11 -15
  7. data/components/chaijs/assertion-error/1.0.0/component.json +18 -0
  8. data/components/chaijs/chai/1.9.1/.gitignore +22 -0
  9. data/components/chaijs/chai/1.9.1/.mailmap +1 -0
  10. data/components/chaijs/chai/1.9.1/.npmignore +14 -0
  11. data/components/chaijs/chai/1.9.1/.travis.yml +14 -0
  12. data/components/chaijs/chai/1.9.1/CONTRIBUTING.md +173 -0
  13. data/components/chaijs/chai/1.9.1/History.md +895 -0
  14. data/components/chaijs/chai/1.9.1/Makefile +93 -0
  15. data/components/chaijs/chai/1.9.1/README.md +99 -0
  16. data/components/chaijs/chai/1.9.1/ReleaseNotes.md +482 -0
  17. data/components/chaijs/chai/1.9.1/bower.json +27 -0
  18. data/components/chaijs/chai/1.9.1/chai.js +4782 -0
  19. data/components/chaijs/chai/1.9.1/component.json +50 -0
  20. data/components/chaijs/chai/1.9.1/karma.conf.js +28 -0
  21. data/components/chaijs/chai/1.9.1/karma.sauce.js +41 -0
  22. data/components/chaijs/chai/1.9.1/lib/chai/assertion.js +130 -0
  23. data/components/chaijs/chai/1.9.1/lib/chai/config.js +50 -0
  24. data/components/chaijs/chai/1.9.1/lib/chai/core/assertions.js +1314 -0
  25. data/components/chaijs/chai/1.9.1/lib/chai/interface/assert.js +1056 -0
  26. data/components/chaijs/chai/1.9.1/lib/chai/interface/expect.js +12 -0
  27. data/components/chaijs/chai/1.9.1/lib/chai/interface/should.js +78 -0
  28. data/components/chaijs/chai/1.9.1/lib/chai/utils/addChainableMethod.js +111 -0
  29. data/components/chaijs/chai/1.9.1/lib/chai/utils/addMethod.js +43 -0
  30. data/components/chaijs/chai/1.9.1/lib/chai/utils/addProperty.js +40 -0
  31. data/components/chaijs/chai/1.9.1/lib/chai/utils/flag.js +32 -0
  32. data/components/chaijs/chai/1.9.1/lib/chai/utils/getActual.js +18 -0
  33. data/components/chaijs/chai/1.9.1/lib/chai/utils/getEnumerableProperties.js +25 -0
  34. data/components/chaijs/chai/1.9.1/lib/chai/utils/getMessage.js +49 -0
  35. data/components/chaijs/chai/1.9.1/lib/chai/utils/getName.js +20 -0
  36. data/components/chaijs/chai/1.9.1/lib/chai/utils/getPathValue.js +102 -0
  37. data/components/chaijs/chai/1.9.1/lib/chai/utils/getProperties.js +35 -0
  38. data/components/chaijs/chai/1.9.1/lib/chai/utils/index.js +114 -0
  39. data/components/chaijs/chai/1.9.1/lib/chai/utils/objDisplay.js +49 -0
  40. data/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteChainableMethod.js +53 -0
  41. data/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteMethod.js +51 -0
  42. data/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteProperty.js +54 -0
  43. data/components/chaijs/chai/1.9.1/lib/chai/utils/test.js +26 -0
  44. data/components/chaijs/chai/1.9.1/lib/chai/utils/transferFlags.js +44 -0
  45. data/components/chaijs/chai/1.9.1/lib/chai/utils/type.js +45 -0
  46. data/components/chaijs/chai/1.9.1/lib/chai.js +87 -0
  47. data/components/chaijs/chai/1.9.1/package.json +42 -0
  48. data/components/chaijs/chai/1.9.1/sauce.browsers.js +128 -0
  49. data/components/chaijs/chai/1.9.1/support/sauce/sauce_connect_block.sh +7 -0
  50. data/components/chaijs/chai/1.9.1/support/sauce/sauce_connect_setup.sh +53 -0
  51. data/components/chaijs/chai/1.9.1/test/assert.js +638 -0
  52. data/components/chaijs/chai/1.9.1/test/bootstrap/index.js +22 -0
  53. data/components/chaijs/chai/1.9.1/test/bootstrap/karma.js +22 -0
  54. data/components/chaijs/chai/1.9.1/test/configuration.js +133 -0
  55. data/components/chaijs/chai/1.9.1/test/display/errors.js +14 -0
  56. data/components/chaijs/chai/1.9.1/test/display/message.js +47 -0
  57. data/components/chaijs/chai/1.9.1/test/expect.js +814 -0
  58. data/components/chaijs/chai/1.9.1/test/globalShould.js +15 -0
  59. data/components/chaijs/chai/1.9.1/test/plugins.js +24 -0
  60. data/components/chaijs/chai/1.9.1/test/should.js +744 -0
  61. data/components/chaijs/chai/1.9.1/test/utilities.js +309 -0
  62. data/components/chaijs/deep-eql/0.1.3/component.json +20 -0
  63. data/components/chaijs/deep-eql/0.1.3/lib/eql.js +257 -0
  64. data/components/chaijs/type-detect/0.1.1/component.json +18 -0
  65. data/components/chaijs/type-detect/0.1.1/lib/type.js +142 -0
  66. data/{vendor/components/indefinido-indemma/components/component-bind → components/component/bind/0.0.1}/component.json +1 -1
  67. data/{vendor/components/component-classes → components/component/classes/1.1.2}/component.json +1 -1
  68. data/components/component/classes/1.2.1/component.json +19 -0
  69. data/components/component/classes/1.2.1/index.js +184 -0
  70. data/{vendor/components/component-css → components/component/css/0.0.2}/component.json +2 -2
  71. data/{vendor/components/component-delegate → components/component/delegate/0.1.0}/component.json +2 -2
  72. data/components/component/dialog/0.2.0/component.json +35 -0
  73. data/{vendor/components/component-dialog → components/component/dialog/0.2.0}/index.js +74 -40
  74. data/components/component/dialog/0.2.0/template.html +9 -0
  75. data/{vendor/components/component-dom → components/component/dom/0.7.1}/component.json +6 -4
  76. data/{vendor/components/component-domify → components/component/domify/1.0.0}/component.json +6 -4
  77. data/components/component/domify/1.2.2/component.json +22 -0
  78. data/components/component/domify/1.2.2/index.js +87 -0
  79. data/{vendor/components/component-emitter → components/component/emitter/1.0.0}/component.json +1 -1
  80. data/{vendor/components/component-event → components/component/event/0.1.0}/component.json +3 -3
  81. data/components/component/event/0.1.0/index.js +40 -0
  82. data/components/component/event/0.1.3/component.json +13 -0
  83. data/{vendor/components/component-event → components/component/event/0.1.3}/index.js +3 -5
  84. data/{vendor/components/component-indexof → components/component/indexof/0.0.1}/component.json +1 -1
  85. data/{vendor/components/indefinido-indemma/components/component-jquery → components/component/jquery/1.9.1}/component.json +1 -1
  86. data/{vendor/components/component-matches-selector → components/component/matches-selector/0.1.2}/component.json +6 -4
  87. data/{vendor/components/component-overlay → components/component/overlay/0.1.1}/component.json +1 -1
  88. data/{vendor/components/component-query → components/component/query/0.0.1}/component.json +6 -4
  89. data/components/component/query/0.0.3/component.json +23 -0
  90. data/components/component/query/0.0.3/index.js +21 -0
  91. data/{vendor/components/component-querystring → components/component/querystring/1.3.0}/component.json +4 -3
  92. data/{vendor/components/component-querystring → components/component/querystring/1.3.0}/index.js +26 -2
  93. data/{vendor/components/component-sort → components/component/sort/0.0.3}/component.json +2 -2
  94. data/{vendor/components/component-trim → components/component/trim/0.0.1}/component.json +1 -1
  95. data/{vendor/components/indefinido-indemma/components/component-type → components/component/type/1.0.0}/component.json +4 -2
  96. data/{vendor/components/component-value → components/component/value/1.1.0}/component.json +6 -4
  97. data/{vendor/components/components-modernizr → components/components/modernizr/2.6.2}/component.json +2 -3
  98. data/{vendor/components/indefinido-indemma/components/indefinido-advisable → components/indefinido/advisable/master}/component.json +2 -2
  99. data/components/indefinido/indemma/master/History.md +0 -0
  100. data/components/indefinido/indemma/master/build/build.js +26288 -0
  101. data/components/indefinido/indemma/master/build/development.js +22200 -0
  102. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/build/release.js +264 -273
  103. data/components/indefinido/indemma/master/build/test.js +22200 -0
  104. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/component.json +6 -6
  105. data/components/indefinido/indemma/master/components/chaijs-assertion-error/index.js +110 -0
  106. data/components/indefinido/indemma/master/components/chaijs-chai/index.js +1 -0
  107. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/inspect.js +320 -0
  108. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/associable.js +2 -14
  109. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/rest.js +2 -7
  110. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/restfulable.js +9 -33
  111. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/scopable.js +45 -16
  112. data/components/indefinido/indemma/master/lib/record/validatable.js +1100 -0
  113. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/associable_spec.js +2 -3
  114. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/scopable_spec.js +53 -83
  115. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/validations/cpf_spec.js +6 -5
  116. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/associable.coffee +0 -6
  117. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/persistable.coffee +0 -2
  118. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/queryable.coffee +2 -1
  119. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/resource.coffee +2 -3
  120. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/rest.coffee +1 -7
  121. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/restfulable.coffee +8 -34
  122. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/scopable.coffee +31 -32
  123. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/validatable.coffee +1 -12
  124. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/associable_spec.coffee +2 -3
  125. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/scopable_spec.coffee +43 -76
  126. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/validations/cpf_spec.coffee +4 -3
  127. data/{vendor/components/mikeric-rivets → components/mikeric/rivets/v0.5.12}/component.json +2 -2
  128. data/{vendor/components/paulmillr-es6-shim → components/paulmillr/es6-shim/0.10.1}/component.json +11 -4
  129. data/components/paulmillr/es6-shim/0.10.1/es6-shim.js +1833 -0
  130. data/{vendor/components/pluma-assimilate → components/pluma/assimilate/0.3.0}/component.json +3 -3
  131. data/{vendor/components/segmentio-extend → components/segmentio/extend/1.0.0}/component.json +3 -3
  132. data/lib/assets/javascripts/aura/extensions/models.js.coffee.erb +14 -14
  133. data/lib/assets/javascripts/aura/extensions/rivets/accounting.js.coffee +1 -1
  134. data/lib/assets/javascripts/aura/extensions/rivets.js.coffee +3 -3
  135. data/lib/assets/javascripts/aura/extensions/stamps/stampit.js +568 -242
  136. data/lib/assets/javascripts/aura/extensions/widget/#composable.js.coffee# +135 -0
  137. data/lib/assets/javascripts/aura/extensions/widget/composable.js.coffee +2 -2
  138. data/lib/assets/javascripts/config/load_components.js.coffee +10 -10
  139. data/lib/assets/javascripts/ende.js.coffee +21 -18
  140. data/lib/assets/javascripts/widgets/support/adapters/olark.js +1 -4
  141. data/lib/assets/javascripts/widgets/viewer/main.js.coffee +8 -4
  142. data/lib/assets/javascripts/widgets/viewer/plugins/scopable.js.coffee +6 -7
  143. data/lib/ende/version.rb +1 -1
  144. data/vendor/assets/components/build.css +4 -3
  145. data/vendor/assets/components/ende_build.js +29772 -21943
  146. metadata +284 -217
  147. data/vendor/components/KapIT-observe-utils/component.json +0 -16
  148. data/vendor/components/KapIT-observe-utils/lib/observe-utils.js +0 -780
  149. data/vendor/components/component-dialog/component.json +0 -23
  150. data/vendor/components/component-dialog/template.js +0 -1
  151. data/vendor/components/indefinido-indemma/build/development.js +0 -343
  152. data/vendor/components/indefinido-indemma/build/test.js +0 -343
  153. data/vendor/components/indefinido-indemma/lib/record/validatable.js +0 -224
  154. data/vendor/components/indefinido-observable/component.json +0 -24
  155. data/vendor/components/indefinido-observable/index.js +0 -1
  156. data/vendor/components/indefinido-observable/lib/adapters/rivets.js +0 -28
  157. data/vendor/components/indefinido-observable/lib/observable.js +0 -390
  158. data/vendor/components/indefinido-observable/vendor/shims/accessors-legacy.js +0 -92
  159. data/vendor/components/indefinido-observable/vendor/shims/accessors.js +0 -248
  160. data/vendor/components/indefinido-observable/vendor/shims/array.indexOf.js +0 -8
  161. data/vendor/components/indefinido-observable/vendor/shims/object.create.js +0 -77
  162. data/vendor/components/paulmillr-es6-shim/es6-shim.js +0 -996
  163. /data/{vendor/components/indefinido-indemma/components/chaijs-assertion-error → components/chaijs/assertion-error/1.0.0}/index.js +0 -0
  164. /data/{vendor/components/indefinido-indemma/components/chaijs-chai → components/chaijs/chai/1.9.1}/index.js +0 -0
  165. /data/{vendor/components/indefinido-indemma/components/chaijs-chai → components/chaijs/chai/1.9.1}/lib/chai/utils/inspect.js +0 -0
  166. /data/{vendor/components/indefinido-indemma/History.md → components/chaijs/chai/1.9.1/test/auth/.gitkeep} +0 -0
  167. /data/{vendor/components/component-bind → components/component/bind/0.0.1}/index.js +0 -0
  168. /data/{vendor/components/component-classes → components/component/classes/1.1.2}/index.js +0 -0
  169. /data/{vendor/components/component-css → components/component/css/0.0.2}/index.js +0 -0
  170. /data/{vendor/components/component-delegate → components/component/delegate/0.1.0}/index.js +0 -0
  171. /data/{vendor/components/component-dialog → components/component/dialog/0.2.0}/dialog.css +0 -0
  172. /data/{vendor/components/component-dom → components/component/dom/0.7.1}/index.js +0 -0
  173. /data/{vendor/components/component-domify → components/component/domify/1.0.0}/index.js +0 -0
  174. /data/{vendor/components/component-emitter → components/component/emitter/1.0.0}/index.js +0 -0
  175. /data/{vendor/components/component-indexof → components/component/indexof/0.0.1}/index.js +0 -0
  176. /data/{vendor/components/component-jquery → components/component/jquery/1.9.1}/index.js +0 -0
  177. /data/{vendor/components/component-matches-selector → components/component/matches-selector/0.1.2}/index.js +0 -0
  178. /data/{vendor/components/component-overlay → components/component/overlay/0.1.1}/index.js +0 -0
  179. /data/{vendor/components/component-overlay → components/component/overlay/0.1.1}/overlay.css +0 -0
  180. /data/{vendor/components/component-overlay → components/component/overlay/0.1.1}/template.js +0 -0
  181. /data/{vendor/components/component-query → components/component/query/0.0.1}/index.js +0 -0
  182. /data/{vendor/components/component-sort → components/component/sort/0.0.3}/index.js +0 -0
  183. /data/{vendor/components/component-trim → components/component/trim/0.0.1}/index.js +0 -0
  184. /data/{vendor/components/component-type → components/component/type/1.0.0}/index.js +0 -0
  185. /data/{vendor/components/component-value → components/component/value/1.1.0}/index.js +0 -0
  186. /data/{vendor/components/components-modernizr → components/components/modernizr/2.6.2}/modernizr.js +0 -0
  187. /data/{vendor/components/indefinido-advisable → components/indefinido/advisable/master}/index.js +0 -0
  188. /data/{vendor/components/indefinido-advisable → components/indefinido/advisable/master}/lib/advisable.js +0 -0
  189. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/.gitignore +0 -0
  190. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/.ruby-gemset +0 -0
  191. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/.ruby-version +0 -0
  192. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/Gemfile +0 -0
  193. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/Guardfile +0 -0
  194. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/Readme.md +0 -0
  195. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-assertion-error/component.json +0 -0
  196. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/component.json +0 -0
  197. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/assertion.js +0 -0
  198. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/core/assertions.js +0 -0
  199. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/interface/assert.js +0 -0
  200. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/interface/expect.js +0 -0
  201. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/interface/should.js +0 -0
  202. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/addChainableMethod.js +0 -0
  203. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/addMethod.js +0 -0
  204. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/addProperty.js +0 -0
  205. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/eql.js +0 -0
  206. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/flag.js +0 -0
  207. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/getActual.js +0 -0
  208. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/getEnumerableProperties.js +0 -0
  209. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/getMessage.js +0 -0
  210. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/getName.js +0 -0
  211. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/getPathValue.js +0 -0
  212. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/getProperties.js +0 -0
  213. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/index.js +0 -0
  214. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/objDisplay.js +0 -0
  215. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/overwriteMethod.js +0 -0
  216. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/overwriteProperty.js +0 -0
  217. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/test.js +0 -0
  218. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/transferFlags.js +0 -0
  219. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/type.js +0 -0
  220. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai.js +0 -0
  221. /data/{vendor → components/indefinido/indemma/master}/components/component-bind/component.json +0 -0
  222. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/component-bind/index.js +0 -0
  223. /data/{vendor → components/indefinido/indemma/master}/components/component-jquery/component.json +0 -0
  224. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/component-jquery/index.js +0 -0
  225. /data/{vendor → components/indefinido/indemma/master}/components/component-type/component.json +0 -0
  226. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/component-type/index.js +0 -0
  227. /data/{vendor → components/indefinido/indemma/master}/components/indefinido-advisable/component.json +0 -0
  228. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-advisable/index.js +0 -0
  229. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-advisable/lib/advisable.js +0 -0
  230. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/component.json +0 -0
  231. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/components/cjohansen-sinon/sinon.js +0 -0
  232. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/index.js +0 -0
  233. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/lib/adapters/rivets.js +0 -0
  234. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/lib/observable.js +0 -0
  235. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/vendor/shims/accessors-legacy.js +0 -0
  236. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/vendor/shims/accessors.js +0 -0
  237. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/vendor/shims/array.indexOf.js +0 -0
  238. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/vendor/shims/object.create.js +0 -0
  239. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/kapit-observe-utils/component.json +0 -0
  240. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/paulmillr-es6-shim/component.json +0 -0
  241. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/paulmillr-es6-shim/es6-shim.js +0 -0
  242. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/pluma-assimilate/component.json +0 -0
  243. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/pluma-assimilate/dist/assimilate.js +0 -0
  244. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/index.js +0 -0
  245. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/karma.conf.js +0 -0
  246. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/extensions/rivets.js +0 -0
  247. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/errors.js +0 -0
  248. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/maid.js +0 -0
  249. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/persistable.js +0 -0
  250. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/queryable.js +0 -0
  251. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/resource.js +0 -0
  252. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/storable.js +0 -0
  253. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/translationable.js +0 -0
  254. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/validations/associated.js +0 -0
  255. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/validations/confirmation.js +0 -0
  256. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/validations/cpf.js +0 -0
  257. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/validations/presence.js +0 -0
  258. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/validations/remote.js +0 -0
  259. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/validations/type.js +0 -0
  260. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/validations/validatorable.js +0 -0
  261. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record.js +0 -0
  262. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/package.json +0 -0
  263. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/persistable_spec.js +0 -0
  264. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/queryable_spec.js +0 -0
  265. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/resource_spec.js +0 -0
  266. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/rest_spec.js +0 -0
  267. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/restfulable_spec.js +0 -0
  268. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/storable_spec.js +0 -0
  269. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/translationable.js +0 -0
  270. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/validatable_spec.js +0 -0
  271. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/validations/associated_spec.js +0 -0
  272. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/validations/confirmation_spec.js +0 -0
  273. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/validations/presence_spec.js +0 -0
  274. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/validations/remote_spec.js +0 -0
  275. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/validations/type_spec.js +0 -0
  276. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record_spec.js +0 -0
  277. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/spec_helper.js +0 -0
  278. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/support/value_objects/phone.js +0 -0
  279. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/extensions/rivets.coffee +0 -0
  280. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/errors.coffee +0 -0
  281. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/maid.coffee +0 -0
  282. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/storable.coffee +0 -0
  283. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/translationable.coffee +0 -0
  284. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/validations/associated.coffee +0 -0
  285. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/validations/confirmation.coffee +0 -0
  286. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/validations/cpf.coffee +0 -0
  287. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/validations/presence.coffee +0 -0
  288. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/validations/remote.coffee +0 -0
  289. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/validations/type.coffee +0 -0
  290. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/validations/validatorable.coffee +0 -0
  291. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record.coffee +0 -0
  292. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/persistable_spec.coffee +0 -0
  293. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/queryable_spec.coffee +0 -0
  294. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/resource_spec.coffee +0 -0
  295. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/rest_spec.coffee +0 -0
  296. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/restfulable_spec.coffee +0 -0
  297. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/storable_spec.coffee +0 -0
  298. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/translationable.coffee +0 -0
  299. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/validatable_spec.coffee +0 -0
  300. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/validations/associated_spec.coffee +0 -0
  301. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/validations/confirmation_spec.coffee +0 -0
  302. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/validations/presence_spec.coffee +0 -0
  303. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/validations/remote_spec.coffee +0 -0
  304. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/validations/type_spec.coffee +0 -0
  305. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record_spec.coffee +0 -0
  306. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/spec_helper.coffee +0 -0
  307. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/support/value_objects/phone.coffee +0 -0
  308. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/vendor/object/mixin.js +0 -0
  309. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/vendor/owl/pluralize.js +0 -0
  310. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/vendor/sinon.js +0 -0
  311. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/vendor/stampit.js +0 -0
  312. /data/{vendor/components/mikeric-rivets → components/mikeric/rivets/v0.5.12}/dist/rivets.js +0 -0
  313. /data/{vendor/components/pluma-assimilate → components/pluma/assimilate/0.3.0}/dist/assimilate.js +0 -0
  314. /data/{vendor/components/segmentio-extend → components/segmentio/extend/1.0.0}/index.js +0 -0
@@ -0,0 +1,1833 @@
1
+ // ES6-shim 0.10.1 (c) 2013-2014 Paul Miller (http://paulmillr.com)
2
+ // ES6-shim may be freely distributed under the MIT license.
3
+ // For more details and documentation:
4
+ // https://github.com/paulmillr/es6-shim/
5
+
6
+ (function(undefined) {
7
+ 'use strict';
8
+
9
+ var isCallableWithoutNew = function(func) {
10
+ try { func(); }
11
+ catch (e) { return false; }
12
+ return true;
13
+ };
14
+
15
+ var supportsSubclassing = function(C, f) {
16
+ /* jshint proto:true */
17
+ try {
18
+ var Sub = function() { C.apply(this, arguments); };
19
+ if (!Sub.__proto__) { return false; /* skip test on IE < 11 */ }
20
+ Object.setPrototypeOf(Sub, C);
21
+ Sub.prototype = Object.create(C.prototype, {
22
+ constructor: { value: C }
23
+ });
24
+ return f(Sub);
25
+ } catch (e) {
26
+ return false;
27
+ }
28
+ };
29
+
30
+ var arePropertyDescriptorsSupported = function() {
31
+ try {
32
+ Object.defineProperty({}, 'x', {});
33
+ return true;
34
+ } catch (e) { /* this is IE 8. */
35
+ return false;
36
+ }
37
+ };
38
+
39
+ var startsWithRejectsRegex = function() {
40
+ var rejectsRegex = false;
41
+ if (String.prototype.startsWith) {
42
+ try {
43
+ '/a/'.startsWith(/a/);
44
+ } catch (e) { /* this is spec compliant */
45
+ rejectsRegex = true;
46
+ }
47
+ }
48
+ return rejectsRegex;
49
+ };
50
+
51
+ var main = function() {
52
+ var globals = (typeof global === 'undefined') ? window : global;
53
+ var global_isFinite = globals.isFinite;
54
+ var supportsDescriptors = !!Object.defineProperty && arePropertyDescriptorsSupported();
55
+ var startsWithIsCompliant = startsWithRejectsRegex();
56
+ var _slice = Array.prototype.slice;
57
+ var _indexOf = String.prototype.indexOf;
58
+ var _toString = Object.prototype.toString;
59
+ var _hasOwnProperty = Object.prototype.hasOwnProperty;
60
+
61
+ // Define configurable, writable and non-enumerable props
62
+ // if they don’t exist.
63
+ var defineProperties = function(object, map) {
64
+ Object.keys(map).forEach(function(name) {
65
+ var method = map[name];
66
+ if (name in object) return;
67
+ if (supportsDescriptors) {
68
+ Object.defineProperty(object, name, {
69
+ configurable: true,
70
+ enumerable: false,
71
+ writable: true,
72
+ value: method
73
+ });
74
+ } else {
75
+ object[name] = method;
76
+ }
77
+ });
78
+ };
79
+
80
+ // This is a private name in the es6 spec, equal to '[Symbol.iterator]'
81
+ // we're going to use an arbitrary _-prefixed name to make our shims
82
+ // work properly with each other, even though we don't have full Iterator
83
+ // support. That is, `Array.from(map.keys())` will work, but we don't
84
+ // pretend to export a "real" Iterator interface.
85
+ var $iterator$ = (typeof Symbol === 'object' && Symbol.iterator) ||
86
+ '_es6shim_iterator_';
87
+ // Firefox ships a partial implementation using the name @@iterator.
88
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=907077#c14
89
+ // So use that name if we detect it.
90
+ if (globals.Set && typeof new globals.Set()['@@iterator'] === 'function') {
91
+ $iterator$ = '@@iterator';
92
+ }
93
+ var addIterator = function(prototype, impl) {
94
+ if (!impl) { impl = function iterator() { return this; }; }
95
+ var o = {};
96
+ o[$iterator$] = impl;
97
+ defineProperties(prototype, o);
98
+ };
99
+
100
+ // taken directly from https://github.com/ljharb/is-arguments/blob/master/index.js
101
+ // can be replaced with require('is-arguments') if we ever use a build process instead
102
+ var isArguments = function isArguments(value) {
103
+ var str = _toString.call(value);
104
+ var result = str === '[object Arguments]';
105
+ if (!result) {
106
+ result = str !== '[object Array]' &&
107
+ value !== null &&
108
+ typeof value === 'object' &&
109
+ typeof value.length === 'number' &&
110
+ value.length >= 0 &&
111
+ _toString.call(value.callee) === '[object Function]';
112
+ }
113
+ return result;
114
+ };
115
+
116
+ var emulateES6construct = function(o) {
117
+ if (!ES.TypeIsObject(o)) throw new TypeError('bad object');
118
+ // es5 approximation to es6 subclass semantics: in es6, 'new Foo'
119
+ // would invoke Foo.@@create to allocation/initialize the new object.
120
+ // In es5 we just get the plain object. So if we detect an
121
+ // uninitialized object, invoke o.constructor.@@create
122
+ if (!o._es6construct) {
123
+ if (o.constructor && ES.IsCallable(o.constructor['@@create'])) {
124
+ o = o.constructor['@@create'](o);
125
+ }
126
+ defineProperties(o, { _es6construct: true });
127
+ }
128
+ return o;
129
+ };
130
+
131
+ var ES = {
132
+ CheckObjectCoercible: function(x, optMessage) {
133
+ /* jshint eqnull:true */
134
+ if (x == null)
135
+ throw new TypeError(optMessage || ('Cannot call method on ' + x));
136
+ return x;
137
+ },
138
+
139
+ TypeIsObject: function(x) {
140
+ /* jshint eqnull:true */
141
+ // this is expensive when it returns false; use this function
142
+ // when you expect it to return true in the common case.
143
+ return x != null && Object(x) === x;
144
+ },
145
+
146
+ ToObject: function(o, optMessage) {
147
+ return Object(ES.CheckObjectCoercible(o, optMessage));
148
+ },
149
+
150
+ IsCallable: function(x) {
151
+ return typeof x === 'function' &&
152
+ // some versions of IE say that typeof /abc/ === 'function'
153
+ _toString.call(x) === '[object Function]';
154
+ },
155
+
156
+ ToInt32: function(x) {
157
+ return x >> 0;
158
+ },
159
+
160
+ ToUint32: function(x) {
161
+ return x >>> 0;
162
+ },
163
+
164
+ ToInteger: function(value) {
165
+ var number = +value;
166
+ if (Number.isNaN(number)) return 0;
167
+ if (number === 0 || !Number.isFinite(number)) return number;
168
+ return Math.sign(number) * Math.floor(Math.abs(number));
169
+ },
170
+
171
+ ToLength: function(value) {
172
+ var len = ES.ToInteger(value);
173
+ if (len <= 0) return 0; // includes converting -0 to +0
174
+ if (len > Number.MAX_SAFE_INTEGER) return Number.MAX_SAFE_INTEGER;
175
+ return len;
176
+ },
177
+
178
+ SameValue: function(a, b) {
179
+ if (a === b) {
180
+ // 0 === -0, but they are not identical.
181
+ if (a === 0) return 1 / a === 1 / b;
182
+ return true;
183
+ }
184
+ return Number.isNaN(a) && Number.isNaN(b);
185
+ },
186
+
187
+ SameValueZero: function(a, b) {
188
+ // same as SameValue except for SameValueZero(+0, -0) == true
189
+ return (a === b) || (Number.isNaN(a) && Number.isNaN(b));
190
+ },
191
+
192
+ IsIterable: function(o) {
193
+ return ES.TypeIsObject(o) &&
194
+ (o[$iterator$] !== undefined || isArguments(o));
195
+ },
196
+
197
+ GetIterator: function(o) {
198
+ if (isArguments(o)) {
199
+ // special case support for `arguments`
200
+ return new ArrayIterator(o, "value");
201
+ }
202
+ var it = o[$iterator$]();
203
+ if (!ES.TypeIsObject(it)) {
204
+ throw new TypeError('bad iterator');
205
+ }
206
+ return it;
207
+ },
208
+
209
+ IteratorNext: function(it) {
210
+ var result = (arguments.length > 1) ? it.next(arguments[1]) : it.next();
211
+ if (!ES.TypeIsObject(result)) {
212
+ throw new TypeError('bad iterator');
213
+ }
214
+ return result;
215
+ },
216
+
217
+ Construct: function(C, args) {
218
+ // CreateFromConstructor
219
+ var obj;
220
+ if (ES.IsCallable(C['@@create'])) {
221
+ obj = C['@@create']();
222
+ } else {
223
+ // OrdinaryCreateFromConstructor
224
+ obj = Object.create(C.prototype || null);
225
+ }
226
+ // Mark that we've used the es6 construct path
227
+ // (see emulateES6construct)
228
+ defineProperties(obj, { _es6construct: true });
229
+ // Call the constructor.
230
+ var result = C.apply(obj, args);
231
+ return ES.TypeIsObject(result) ? result : obj;
232
+ }
233
+ };
234
+
235
+ var numberConversion = (function () {
236
+ // from https://github.com/inexorabletash/polyfill/blob/master/typedarray.js#L176-L266
237
+ // with permission and license, per https://twitter.com/inexorabletash/status/372206509540659200
238
+
239
+ function roundToEven(n) {
240
+ var w = Math.floor(n), f = n - w;
241
+ if (f < 0.5) {
242
+ return w;
243
+ }
244
+ if (f > 0.5) {
245
+ return w + 1;
246
+ }
247
+ return w % 2 ? w + 1 : w;
248
+ }
249
+
250
+ function packIEEE754(v, ebits, fbits) {
251
+ var bias = (1 << (ebits - 1)) - 1,
252
+ s, e, f, ln,
253
+ i, bits, str, bytes;
254
+
255
+ // Compute sign, exponent, fraction
256
+ if (v !== v) {
257
+ // NaN
258
+ // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping
259
+ e = (1 << ebits) - 1;
260
+ f = Math.pow(2, fbits - 1);
261
+ s = 0;
262
+ } else if (v === Infinity || v === -Infinity) {
263
+ e = (1 << ebits) - 1;
264
+ f = 0;
265
+ s = (v < 0) ? 1 : 0;
266
+ } else if (v === 0) {
267
+ e = 0;
268
+ f = 0;
269
+ s = (1 / v === -Infinity) ? 1 : 0;
270
+ } else {
271
+ s = v < 0;
272
+ v = Math.abs(v);
273
+
274
+ if (v >= Math.pow(2, 1 - bias)) {
275
+ e = Math.min(Math.floor(Math.log(v) / Math.LN2), 1023);
276
+ f = roundToEven(v / Math.pow(2, e) * Math.pow(2, fbits));
277
+ if (f / Math.pow(2, fbits) >= 2) {
278
+ e = e + 1;
279
+ f = 1;
280
+ }
281
+ if (e > bias) {
282
+ // Overflow
283
+ e = (1 << ebits) - 1;
284
+ f = 0;
285
+ } else {
286
+ // Normal
287
+ e = e + bias;
288
+ f = f - Math.pow(2, fbits);
289
+ }
290
+ } else {
291
+ // Subnormal
292
+ e = 0;
293
+ f = roundToEven(v / Math.pow(2, 1 - bias - fbits));
294
+ }
295
+ }
296
+
297
+ // Pack sign, exponent, fraction
298
+ bits = [];
299
+ for (i = fbits; i; i -= 1) {
300
+ bits.push(f % 2 ? 1 : 0);
301
+ f = Math.floor(f / 2);
302
+ }
303
+ for (i = ebits; i; i -= 1) {
304
+ bits.push(e % 2 ? 1 : 0);
305
+ e = Math.floor(e / 2);
306
+ }
307
+ bits.push(s ? 1 : 0);
308
+ bits.reverse();
309
+ str = bits.join('');
310
+
311
+ // Bits to bytes
312
+ bytes = [];
313
+ while (str.length) {
314
+ bytes.push(parseInt(str.substring(0, 8), 2));
315
+ str = str.substring(8);
316
+ }
317
+ return bytes;
318
+ }
319
+
320
+ function unpackIEEE754(bytes, ebits, fbits) {
321
+ // Bytes to bits
322
+ var bits = [], i, j, b, str,
323
+ bias, s, e, f;
324
+
325
+ for (i = bytes.length; i; i -= 1) {
326
+ b = bytes[i - 1];
327
+ for (j = 8; j; j -= 1) {
328
+ bits.push(b % 2 ? 1 : 0);
329
+ b = b >> 1;
330
+ }
331
+ }
332
+ bits.reverse();
333
+ str = bits.join('');
334
+
335
+ // Unpack sign, exponent, fraction
336
+ bias = (1 << (ebits - 1)) - 1;
337
+ s = parseInt(str.substring(0, 1), 2) ? -1 : 1;
338
+ e = parseInt(str.substring(1, 1 + ebits), 2);
339
+ f = parseInt(str.substring(1 + ebits), 2);
340
+
341
+ // Produce number
342
+ if (e === (1 << ebits) - 1) {
343
+ return f !== 0 ? NaN : s * Infinity;
344
+ } else if (e > 0) {
345
+ // Normalized
346
+ return s * Math.pow(2, e - bias) * (1 + f / Math.pow(2, fbits));
347
+ } else if (f !== 0) {
348
+ // Denormalized
349
+ return s * Math.pow(2, -(bias - 1)) * (f / Math.pow(2, fbits));
350
+ } else {
351
+ return s < 0 ? -0 : 0;
352
+ }
353
+ }
354
+
355
+ function unpackFloat64(b) { return unpackIEEE754(b, 11, 52); }
356
+ function packFloat64(v) { return packIEEE754(v, 11, 52); }
357
+ function unpackFloat32(b) { return unpackIEEE754(b, 8, 23); }
358
+ function packFloat32(v) { return packIEEE754(v, 8, 23); }
359
+
360
+ var conversions = {
361
+ toFloat32: function (num) { return unpackFloat32(packFloat32(num)); }
362
+ };
363
+ if (typeof Float32Array !== 'undefined') {
364
+ var float32array = new Float32Array(1);
365
+ conversions.toFloat32 = function (num) {
366
+ float32array[0] = num;
367
+ return float32array[0];
368
+ };
369
+ }
370
+ return conversions;
371
+ }());
372
+
373
+ defineProperties(String, {
374
+ fromCodePoint: function() {
375
+ var points = _slice.call(arguments, 0, arguments.length);
376
+ var result = [];
377
+ var next;
378
+ for (var i = 0, length = points.length; i < length; i++) {
379
+ next = Number(points[i]);
380
+ if (!ES.SameValue(next, ES.ToInteger(next)) ||
381
+ next < 0 || next > 0x10FFFF) {
382
+ throw new RangeError('Invalid code point ' + next);
383
+ }
384
+
385
+ if (next < 0x10000) {
386
+ result.push(String.fromCharCode(next));
387
+ } else {
388
+ next -= 0x10000;
389
+ result.push(String.fromCharCode((next >> 10) + 0xD800));
390
+ result.push(String.fromCharCode((next % 0x400) + 0xDC00));
391
+ }
392
+ }
393
+ return result.join('');
394
+ },
395
+
396
+ raw: function(callSite) { // raw.length===1
397
+ var substitutions = _slice.call(arguments, 1, arguments.length);
398
+ var cooked = ES.ToObject(callSite, 'bad callSite');
399
+ var rawValue = cooked.raw;
400
+ var raw = ES.ToObject(rawValue, 'bad raw value');
401
+ var len = Object.keys(raw).length;
402
+ var literalsegments = ES.ToLength(len);
403
+ if (literalsegments === 0) {
404
+ return '';
405
+ }
406
+
407
+ var stringElements = [];
408
+ var nextIndex = 0;
409
+ var nextKey, next, nextSeg, nextSub;
410
+ while (nextIndex < literalsegments) {
411
+ nextKey = String(nextIndex);
412
+ next = raw[nextKey];
413
+ nextSeg = String(next);
414
+ stringElements.push(nextSeg);
415
+ if (nextIndex + 1 >= literalsegments) {
416
+ break;
417
+ }
418
+ next = substitutions[nextKey];
419
+ if (next === undefined) {
420
+ break;
421
+ }
422
+ nextSub = String(next);
423
+ stringElements.push(nextSub);
424
+ nextIndex++;
425
+ }
426
+ return stringElements.join('');
427
+ }
428
+ });
429
+
430
+ var StringShims = {
431
+ // Fast repeat, uses the `Exponentiation by squaring` algorithm.
432
+ // Perf: http://jsperf.com/string-repeat2/2
433
+ repeat: (function() {
434
+ var repeat = function(s, times) {
435
+ if (times < 1) return '';
436
+ if (times % 2) return repeat(s, times - 1) + s;
437
+ var half = repeat(s, times / 2);
438
+ return half + half;
439
+ };
440
+
441
+ return function(times) {
442
+ var thisStr = String(ES.CheckObjectCoercible(this));
443
+ times = ES.ToInteger(times);
444
+ if (times < 0 || times === Infinity) {
445
+ throw new RangeError('Invalid String#repeat value');
446
+ }
447
+ return repeat(thisStr, times);
448
+ };
449
+ })(),
450
+
451
+ startsWith: function(searchStr) {
452
+ var thisStr = String(ES.CheckObjectCoercible(this));
453
+ if (_toString.call(searchStr) === '[object RegExp]') throw new TypeError('Cannot call method "startsWith" with a regex');
454
+ searchStr = String(searchStr);
455
+ var startArg = arguments.length > 1 ? arguments[1] : undefined;
456
+ var start = Math.max(ES.ToInteger(startArg), 0);
457
+ return thisStr.slice(start, start + searchStr.length) === searchStr;
458
+ },
459
+
460
+ endsWith: function(searchStr) {
461
+ var thisStr = String(ES.CheckObjectCoercible(this));
462
+ if (_toString.call(searchStr) === '[object RegExp]') throw new TypeError('Cannot call method "endsWith" with a regex');
463
+ searchStr = String(searchStr);
464
+ var thisLen = thisStr.length;
465
+ var posArg = arguments.length > 1 ? arguments[1] : undefined;
466
+ var pos = posArg === undefined ? thisLen : ES.ToInteger(posArg);
467
+ var end = Math.min(Math.max(pos, 0), thisLen);
468
+ return thisStr.slice(end - searchStr.length, end) === searchStr;
469
+ },
470
+
471
+ contains: function(searchString) {
472
+ var position = arguments.length > 1 ? arguments[1] : undefined;
473
+ // Somehow this trick makes method 100% compat with the spec.
474
+ return _indexOf.call(this, searchString, position) !== -1;
475
+ },
476
+
477
+ codePointAt: function(pos) {
478
+ var thisStr = String(ES.CheckObjectCoercible(this));
479
+ var position = ES.ToInteger(pos);
480
+ var length = thisStr.length;
481
+ if (position < 0 || position >= length) return undefined;
482
+ var first = thisStr.charCodeAt(position);
483
+ var isEnd = (position + 1 === length);
484
+ if (first < 0xD800 || first > 0xDBFF || isEnd) return first;
485
+ var second = thisStr.charCodeAt(position + 1);
486
+ if (second < 0xDC00 || second > 0xDFFF) return first;
487
+ return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;
488
+ }
489
+ };
490
+ defineProperties(String.prototype, StringShims);
491
+
492
+ // see https://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype-@@iterator
493
+ var StringIterator = function(s) {
494
+ this._s = String(ES.CheckObjectCoercible(s));
495
+ this._i = 0;
496
+ };
497
+ StringIterator.prototype.next = function() {
498
+ var s = this._s, i = this._i;
499
+ if (s===undefined || i >= s.length) {
500
+ this._s = undefined;
501
+ return { value: undefined, done: true };
502
+ }
503
+ var first = s.charCodeAt(i), second, len;
504
+ if (first < 0xD800 || first > 0xDBFF || (i+1) == s.length) {
505
+ len = 1;
506
+ } else {
507
+ second = s.charCodeAt(i+1);
508
+ len = (second < 0xDC00 || second > 0xDFFF) ? 1 : 2;
509
+ }
510
+ this._i = i + len;
511
+ return { value: s.substr(i, len), done: false };
512
+ };
513
+ addIterator(StringIterator.prototype);
514
+ addIterator(String.prototype, function() {
515
+ return new StringIterator(this);
516
+ });
517
+
518
+ if (!startsWithIsCompliant) {
519
+ // Firefox has a noncompliant startsWith implementation
520
+ String.prototype.startsWith = StringShims.startsWith;
521
+ String.prototype.endsWith = StringShims.endsWith;
522
+ }
523
+
524
+ defineProperties(Array, {
525
+ from: function(iterable) {
526
+ var mapFn = arguments.length > 1 ? arguments[1] : undefined;
527
+ var thisArg = arguments.length > 2 ? arguments[2] : undefined;
528
+
529
+ var list = ES.ToObject(iterable, 'bad iterable');
530
+ if (mapFn !== undefined && !ES.IsCallable(mapFn)) {
531
+ throw new TypeError('Array.from: when provided, the second argument must be a function');
532
+ }
533
+
534
+ var usingIterator = ES.IsIterable(list);
535
+ // does the spec really mean that Arrays should use ArrayIterator?
536
+ // https://bugs.ecmascript.org/show_bug.cgi?id=2416
537
+ //if (Array.isArray(list)) { usingIterator=false; }
538
+ var length = usingIterator ? 0 : ES.ToLength(list.length);
539
+ var result = ES.IsCallable(this) ? Object(usingIterator ? new this() : new this(length)) : new Array(length);
540
+ var it = usingIterator ? ES.GetIterator(list) : null;
541
+ var value;
542
+
543
+ for (var i = 0; usingIterator || (i < length); i++) {
544
+ if (usingIterator) {
545
+ value = ES.IteratorNext(it);
546
+ if (value.done) {
547
+ length = i;
548
+ break;
549
+ }
550
+ value = value.value;
551
+ } else {
552
+ value = list[i];
553
+ }
554
+ if (mapFn !== undefined) {
555
+ result[i] = thisArg ? mapFn.call(thisArg, value) : mapFn(value);
556
+ } else {
557
+ result[i] = value;
558
+ }
559
+ }
560
+
561
+ result.length = length;
562
+ return result;
563
+ },
564
+
565
+ of: function() {
566
+ return Array.from(arguments);
567
+ }
568
+ });
569
+
570
+ defineProperties(globals, {
571
+ ArrayIterator: function(array, kind) {
572
+ this.i = 0;
573
+ this.array = array;
574
+ this.kind = kind;
575
+ }
576
+ });
577
+
578
+ defineProperties(ArrayIterator.prototype, {
579
+ next: function() {
580
+ var i = this.i, array = this.array;
581
+ if (i===undefined || this.kind===undefined) {
582
+ throw new TypeError('Not an ArrayIterator');
583
+ }
584
+ if (array!==undefined) {
585
+ var len = ES.ToLength(array.length);
586
+ for (; i < len; i++) {
587
+ var kind = this.kind;
588
+ var retval;
589
+ if (kind === "key") {
590
+ retval = i;
591
+ }
592
+ if (kind === "value") {
593
+ retval = array[i];
594
+ }
595
+ if (kind === "entry") {
596
+ retval = [i, array[i]];
597
+ }
598
+ this.i = i + 1;
599
+ return { value: retval, done: false };
600
+ }
601
+ }
602
+ this.array = undefined;
603
+ return { value: undefined, done: true };
604
+ }
605
+ });
606
+ addIterator(ArrayIterator.prototype);
607
+
608
+ defineProperties(Array.prototype, {
609
+ copyWithin: function(target, start) {
610
+ var end = arguments[2]; // copyWithin.length must be 2
611
+ var o = ES.ToObject(this);
612
+ var len = ES.ToLength(o.length);
613
+ target = ES.ToInteger(target);
614
+ start = ES.ToInteger(start);
615
+ var to = target < 0 ? Math.max(len + target, 0) : Math.min(target, len);
616
+ var from = start < 0 ? Math.max(len + start, 0) : Math.min(start, len);
617
+ end = (end===undefined) ? len : ES.ToInteger(end);
618
+ var fin = end < 0 ? Math.max(len + end, 0) : Math.min(end, len);
619
+ var count = Math.min(fin - from, len - to);
620
+ var direction = 1;
621
+ if (from < to && to < (from + count)) {
622
+ direction = -1;
623
+ from += count - 1;
624
+ to += count - 1;
625
+ }
626
+ while (count > 0) {
627
+ if (_hasOwnProperty.call(o, from)) {
628
+ o[to] = o[from];
629
+ } else {
630
+ delete o[from];
631
+ }
632
+ from += direction;
633
+ to += direction;
634
+ count -= 1;
635
+ }
636
+ return o;
637
+ },
638
+ fill: function(value) {
639
+ var start = arguments[1], end = arguments[2]; // fill.length===1
640
+ var O = ES.ToObject(this);
641
+ var len = ES.ToLength(O.length);
642
+ start = ES.ToInteger(start===undefined ? 0 : start);
643
+ end = ES.ToInteger(end===undefined ? len : end);
644
+
645
+ var relativeStart = start < 0 ? Math.max(len + start, 0) : Math.min(start, len);
646
+
647
+ for (var i = relativeStart; i < len && i < end; ++i) {
648
+ O[i] = value;
649
+ }
650
+ return O;
651
+ },
652
+
653
+ find: function(predicate) {
654
+ var list = ES.ToObject(this);
655
+ var length = ES.ToLength(list.length);
656
+ if (!ES.IsCallable(predicate)) {
657
+ throw new TypeError('Array#find: predicate must be a function');
658
+ }
659
+ var thisArg = arguments[1];
660
+ for (var i = 0, value; i < length; i++) {
661
+ if (i in list) {
662
+ value = list[i];
663
+ if (predicate.call(thisArg, value, i, list)) return value;
664
+ }
665
+ }
666
+ return undefined;
667
+ },
668
+
669
+ findIndex: function(predicate) {
670
+ var list = ES.ToObject(this);
671
+ var length = ES.ToLength(list.length);
672
+ if (!ES.IsCallable(predicate)) {
673
+ throw new TypeError('Array#findIndex: predicate must be a function');
674
+ }
675
+ var thisArg = arguments[1];
676
+ for (var i = 0; i < length; i++) {
677
+ if (i in list) {
678
+ if (predicate.call(thisArg, list[i], i, list)) return i;
679
+ }
680
+ }
681
+ return -1;
682
+ },
683
+
684
+ keys: function() {
685
+ return new ArrayIterator(this, "key");
686
+ },
687
+
688
+ values: function() {
689
+ return new ArrayIterator(this, "value");
690
+ },
691
+
692
+ entries: function() {
693
+ return new ArrayIterator(this, "entry");
694
+ }
695
+ });
696
+ addIterator(Array.prototype, function() { return this.values(); });
697
+ // Chrome defines keys/values/entries on Array, but doesn't give us
698
+ // any way to identify its iterator. So add our own shimmed field.
699
+ addIterator(Object.getPrototypeOf([].values()));
700
+
701
+ var maxSafeInteger = Math.pow(2, 53) - 1;
702
+ defineProperties(Number, {
703
+ MAX_SAFE_INTEGER: maxSafeInteger,
704
+ MIN_SAFE_INTEGER: -maxSafeInteger,
705
+ EPSILON: 2.220446049250313e-16,
706
+
707
+ parseInt: globals.parseInt,
708
+ parseFloat: globals.parseFloat,
709
+
710
+ isFinite: function(value) {
711
+ return typeof value === 'number' && global_isFinite(value);
712
+ },
713
+
714
+ isInteger: function(value) {
715
+ return typeof value === 'number' &&
716
+ !Number.isNaN(value) &&
717
+ Number.isFinite(value) &&
718
+ ES.ToInteger(value) === value;
719
+ },
720
+
721
+ isSafeInteger: function(value) {
722
+ return Number.isInteger(value) &&
723
+ Math.abs(value) <= Number.MAX_SAFE_INTEGER;
724
+ },
725
+
726
+ isNaN: function(value) {
727
+ // NaN !== NaN, but they are identical.
728
+ // NaNs are the only non-reflexive value, i.e., if x !== x,
729
+ // then x is NaN.
730
+ // isNaN is broken: it converts its argument to number, so
731
+ // isNaN('foo') => true
732
+ return value !== value;
733
+ }
734
+
735
+ });
736
+
737
+ defineProperties(Number.prototype, {
738
+ });
739
+
740
+ if (supportsDescriptors) {
741
+ defineProperties(Object, {
742
+ getOwnPropertyDescriptors: function(subject) {
743
+ var descs = {};
744
+ Object.getOwnPropertyNames(subject).forEach(function(propName) {
745
+ descs[propName] = Object.getOwnPropertyDescriptor(subject, propName);
746
+ });
747
+ return descs;
748
+ },
749
+
750
+ getPropertyDescriptor: function(subject, name) {
751
+ var pd = Object.getOwnPropertyDescriptor(subject, name);
752
+ var proto = Object.getPrototypeOf(subject);
753
+ while (pd === undefined && proto !== null) {
754
+ pd = Object.getOwnPropertyDescriptor(proto, name);
755
+ proto = Object.getPrototypeOf(proto);
756
+ }
757
+ return pd;
758
+ },
759
+
760
+ getPropertyNames: function(subject) {
761
+ var result = Object.getOwnPropertyNames(subject);
762
+ var proto = Object.getPrototypeOf(subject);
763
+
764
+ var addProperty = function(property) {
765
+ if (result.indexOf(property) === -1) {
766
+ result.push(property);
767
+ }
768
+ };
769
+
770
+ while (proto !== null) {
771
+ Object.getOwnPropertyNames(proto).forEach(addProperty);
772
+ proto = Object.getPrototypeOf(proto);
773
+ }
774
+ return result;
775
+ },
776
+
777
+ // 19.1.3.1
778
+ assign: function(target, source) {
779
+ return Object.keys(source).reduce(function(target, key) {
780
+ target[key] = source[key];
781
+ return target;
782
+ }, target);
783
+ }
784
+ });
785
+
786
+ // 19.1.3.9
787
+ // shim from https://gist.github.com/WebReflection/5593554
788
+ defineProperties(Object, {
789
+ setPrototypeOf: (function(Object, magic) {
790
+ var set;
791
+
792
+ var checkArgs = function(O, proto) {
793
+ if (!ES.TypeIsObject(O)) {
794
+ throw new TypeError('cannot set prototype on a non-object');
795
+ }
796
+ if (!(proto===null || ES.TypeIsObject(proto))) {
797
+ throw new TypeError('can only set prototype to an object or null'+proto);
798
+ }
799
+ };
800
+
801
+ var setPrototypeOf = function(O, proto) {
802
+ checkArgs(O, proto);
803
+ set.call(O, proto);
804
+ return O;
805
+ };
806
+
807
+ try {
808
+ // this works already in Firefox and Safari
809
+ set = Object.getOwnPropertyDescriptor(Object.prototype, magic).set;
810
+ set.call({}, null);
811
+ } catch (e) {
812
+ if (Object.prototype !== {}[magic]) {
813
+ // IE < 11 cannot be shimmed
814
+ return;
815
+ }
816
+ // probably Chrome or some old Mobile stock browser
817
+ set = function(proto) {
818
+ this[magic] = proto;
819
+ };
820
+ // please note that this will **not** work
821
+ // in those browsers that do not inherit
822
+ // __proto__ by mistake from Object.prototype
823
+ // in these cases we should probably throw an error
824
+ // or at least be informed about the issue
825
+ setPrototypeOf.polyfill = setPrototypeOf(
826
+ setPrototypeOf({}, null),
827
+ Object.prototype
828
+ ) instanceof Object;
829
+ // setPrototypeOf.polyfill === true means it works as meant
830
+ // setPrototypeOf.polyfill === false means it's not 100% reliable
831
+ // setPrototypeOf.polyfill === undefined
832
+ // or
833
+ // setPrototypeOf.polyfill == null means it's not a polyfill
834
+ // which means it works as expected
835
+ // we can even delete Object.prototype.__proto__;
836
+ }
837
+ return setPrototypeOf;
838
+ })(Object, '__proto__')
839
+ });
840
+ }
841
+
842
+ // Workaround bug in Opera 12 where setPrototypeOf(x, null) doesn't work,
843
+ // but Object.create(null) does.
844
+ if (Object.setPrototypeOf && Object.getPrototypeOf &&
845
+ Object.getPrototypeOf(Object.setPrototypeOf({}, null)) !== null &&
846
+ Object.getPrototypeOf(Object.create(null)) === null) {
847
+ (function() {
848
+ var FAKENULL = Object.create(null);
849
+ var gpo = Object.getPrototypeOf, spo = Object.setPrototypeOf;
850
+ Object.getPrototypeOf = function(o) {
851
+ var result = gpo(o);
852
+ return result === FAKENULL ? null : result;
853
+ };
854
+ Object.setPrototypeOf = function(o, p) {
855
+ if (p === null) { p = FAKENULL; }
856
+ return spo(o, p);
857
+ };
858
+ Object.setPrototypeOf.polyfill = false;
859
+ })();
860
+ }
861
+
862
+ defineProperties(Object, {
863
+ getOwnPropertyKeys: function(subject) {
864
+ return Object.keys(subject);
865
+ },
866
+
867
+ is: function(a, b) {
868
+ return ES.SameValue(a, b);
869
+ }
870
+ });
871
+
872
+ try {
873
+ Object.keys('foo');
874
+ } catch (e) {
875
+ var originalObjectKeys = Object.keys;
876
+ Object.keys = function (obj) {
877
+ return originalObjectKeys(ES.ToObject(obj));
878
+ };
879
+ }
880
+
881
+ var MathShims = {
882
+ acosh: function(value) {
883
+ value = Number(value);
884
+ if (Number.isNaN(value) || value < 1) return NaN;
885
+ if (value === 1) return 0;
886
+ if (value === Infinity) return value;
887
+ return Math.log(value + Math.sqrt(value * value - 1));
888
+ },
889
+
890
+ asinh: function(value) {
891
+ value = Number(value);
892
+ if (value === 0 || !global_isFinite(value)) {
893
+ return value;
894
+ }
895
+ return value < 0 ? -Math.asinh(-value) : Math.log(value + Math.sqrt(value * value + 1));
896
+ },
897
+
898
+ atanh: function(value) {
899
+ value = Number(value);
900
+ if (Number.isNaN(value) || value < -1 || value > 1) {
901
+ return NaN;
902
+ }
903
+ if (value === -1) return -Infinity;
904
+ if (value === 1) return Infinity;
905
+ if (value === 0) return value;
906
+ return 0.5 * Math.log((1 + value) / (1 - value));
907
+ },
908
+
909
+ cbrt: function(value) {
910
+ value = Number(value);
911
+ if (value === 0) return value;
912
+ var negate = value < 0, result;
913
+ if (negate) value = -value;
914
+ result = Math.pow(value, 1/3);
915
+ return negate ? -result : result;
916
+ },
917
+
918
+ clz32: function(value) {
919
+ // See https://bugs.ecmascript.org/show_bug.cgi?id=2465
920
+ value = Number(value);
921
+ if (Number.isNaN(value)) return NaN;
922
+ var number = ES.ToUint32(value);
923
+ if (number === 0) {
924
+ return 32;
925
+ }
926
+ return 32 - (number).toString(2).length;
927
+ },
928
+
929
+ cosh: function(value) {
930
+ value = Number(value);
931
+ if (value === 0) return 1; // +0 or -0
932
+ if (Number.isNaN(value)) return NaN;
933
+ if (!global_isFinite(value)) return Infinity;
934
+ if (value < 0) value = -value;
935
+ if (value > 21) return Math.exp(value) / 2;
936
+ return (Math.exp(value) + Math.exp(-value)) / 2;
937
+ },
938
+
939
+ expm1: function(value) {
940
+ value = Number(value);
941
+ if (value === -Infinity) return -1;
942
+ if (!global_isFinite(value) || value === 0) return value;
943
+ var result = 0;
944
+ var n = 50;
945
+ for (var i = 1; i < n; i++) {
946
+ for (var j = 2, factorial = 1; j <= i; j++) {
947
+ factorial *= j;
948
+ }
949
+ result += Math.pow(value, i) / factorial;
950
+ }
951
+ return result;
952
+ },
953
+
954
+ hypot: function(x, y) {
955
+ var anyNaN = false;
956
+ var allZero = true;
957
+ var anyInfinity = false;
958
+ var numbers = [];
959
+ Array.prototype.every.call(arguments, function(arg) {
960
+ var num = Number(arg);
961
+ if (Number.isNaN(num)) anyNaN = true;
962
+ else if (num === Infinity || num === -Infinity) anyInfinity = true;
963
+ else if (num !== 0) allZero = false;
964
+ if (anyInfinity) {
965
+ return false;
966
+ } else if (!anyNaN) {
967
+ numbers.push(Math.abs(num));
968
+ }
969
+ return true;
970
+ });
971
+ if (anyInfinity) return Infinity;
972
+ if (anyNaN) return NaN;
973
+ if (allZero) return 0;
974
+
975
+ numbers.sort(function (a, b) { return b - a; });
976
+ var largest = numbers[0];
977
+ var divided = numbers.map(function (number) { return number / largest; });
978
+ var sum = divided.reduce(function (sum, number) { return sum += number * number; }, 0);
979
+ return largest * Math.sqrt(sum);
980
+ },
981
+
982
+ log2: function(value) {
983
+ return Math.log(value) * Math.LOG2E;
984
+ },
985
+
986
+ log10: function(value) {
987
+ return Math.log(value) * Math.LOG10E;
988
+ },
989
+
990
+ log1p: function(value) {
991
+ value = Number(value);
992
+ if (value < -1 || Number.isNaN(value)) return NaN;
993
+ if (value === 0 || value === Infinity) return value;
994
+ if (value === -1) return -Infinity;
995
+ var result = 0;
996
+ var n = 50;
997
+
998
+ if (value < 0 || value > 1) return Math.log(1 + value);
999
+ for (var i = 1; i < n; i++) {
1000
+ if ((i % 2) === 0) {
1001
+ result -= Math.pow(value, i) / i;
1002
+ } else {
1003
+ result += Math.pow(value, i) / i;
1004
+ }
1005
+ }
1006
+
1007
+ return result;
1008
+ },
1009
+
1010
+ sign: function(value) {
1011
+ var number = +value;
1012
+ if (number === 0) return number;
1013
+ if (Number.isNaN(number)) return number;
1014
+ return number < 0 ? -1 : 1;
1015
+ },
1016
+
1017
+ sinh: function(value) {
1018
+ value = Number(value);
1019
+ if (!global_isFinite(value) || value === 0) return value;
1020
+ return (Math.exp(value) - Math.exp(-value)) / 2;
1021
+ },
1022
+
1023
+ tanh: function(value) {
1024
+ value = Number(value);
1025
+ if (Number.isNaN(value) || value === 0) return value;
1026
+ if (value === Infinity) return 1;
1027
+ if (value === -Infinity) return -1;
1028
+ return (Math.exp(value) - Math.exp(-value)) / (Math.exp(value) + Math.exp(-value));
1029
+ },
1030
+
1031
+ trunc: function(value) {
1032
+ var number = Number(value);
1033
+ return number < 0 ? -Math.floor(-number) : Math.floor(number);
1034
+ },
1035
+
1036
+ imul: function(x, y) {
1037
+ // taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul
1038
+ var ah = (x >>> 16) & 0xffff;
1039
+ var al = x & 0xffff;
1040
+ var bh = (y >>> 16) & 0xffff;
1041
+ var bl = y & 0xffff;
1042
+ // the shift by 0 fixes the sign on the high part
1043
+ // the final |0 converts the unsigned value into a signed value
1044
+ return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
1045
+ },
1046
+
1047
+ fround: function(x) {
1048
+ if (x === 0 || x === Infinity || x === -Infinity || Number.isNaN(x)) {
1049
+ return x;
1050
+ }
1051
+ var num = Number(x);
1052
+ return numberConversion.toFloat32(num);
1053
+ }
1054
+ };
1055
+ defineProperties(Math, MathShims);
1056
+
1057
+ if (Math.imul(0xffffffff, 5) !== -5) {
1058
+ // Safari 6.1, at least, reports "0" for this value
1059
+ Math.imul = MathShims.imul;
1060
+ }
1061
+
1062
+ // Promises
1063
+ // Simplest possible implementation; use a 3rd-party library if you
1064
+ // want the best possible speed and/or long stack traces.
1065
+ var PromiseShim = (function() {
1066
+
1067
+ var Promise, Promise$prototype;
1068
+
1069
+ ES.IsPromise = function(promise) {
1070
+ if (!ES.TypeIsObject(promise)) {
1071
+ return false;
1072
+ }
1073
+ if (!promise._promiseConstructor) {
1074
+ // _promiseConstructor is a bit more unique than _status, so we'll
1075
+ // check that instead of the [[PromiseStatus]] internal field.
1076
+ return false;
1077
+ }
1078
+ if (promise._status === undefined) {
1079
+ return false; // uninitialized
1080
+ }
1081
+ return true;
1082
+ };
1083
+
1084
+ // "PromiseCapability" in the spec is what most promise implementations
1085
+ // call a "deferred".
1086
+ var PromiseCapability = function(C) {
1087
+ if (!ES.IsCallable(C)) {
1088
+ throw new TypeError('bad promise constructor');
1089
+ }
1090
+ var capability = this;
1091
+ var resolver = function(resolve, reject) {
1092
+ capability.resolve = resolve;
1093
+ capability.reject = reject;
1094
+ };
1095
+ capability.promise = ES.Construct(C, [resolver]);
1096
+ // see https://bugs.ecmascript.org/show_bug.cgi?id=2478
1097
+ if (!capability.promise._es6construct) {
1098
+ throw new TypeError('bad promise constructor');
1099
+ }
1100
+ if (!(ES.IsCallable(capability.resolve) &&
1101
+ ES.IsCallable(capability.reject))) {
1102
+ throw new TypeError('bad promise constructor');
1103
+ }
1104
+ };
1105
+
1106
+ // find an appropriate setImmediate-alike
1107
+ var setTimeout = globals.setTimeout;
1108
+ var makeZeroTimeout = function() {
1109
+ // from http://dbaron.org/log/20100309-faster-timeouts
1110
+ var timeouts = [];
1111
+ var messageName = "zero-timeout-message";
1112
+ var setZeroTimeout = function(fn) {
1113
+ timeouts.push(fn);
1114
+ window.postMessage(messageName, "*");
1115
+ };
1116
+ var handleMessage = function(event) {
1117
+ if (event.source == window && event.data == messageName) {
1118
+ event.stopPropagation();
1119
+ if (timeouts.length === 0) { return; }
1120
+ var fn = timeouts.shift();
1121
+ fn();
1122
+ }
1123
+ };
1124
+ window.addEventListener("message", handleMessage, true);
1125
+ return setZeroTimeout;
1126
+ };
1127
+ var enqueue = ES.IsCallable(globals.setImmediate) ?
1128
+ globals.setImmediate.bind(globals) :
1129
+ typeof process === 'object' && process.nextTick ? process.nextTick :
1130
+ ES.IsCallable(window.postMessage) ? makeZeroTimeout() :
1131
+ function(task) { setTimeout(task, 0); }; // fallback
1132
+
1133
+ var triggerPromiseReactions = function(reactions, x) {
1134
+ reactions.forEach(function(reaction) {
1135
+ enqueue(function() {
1136
+ // PromiseReactionTask
1137
+ var handler = reaction.handler;
1138
+ var capability = reaction.capability;
1139
+ var resolve = capability.resolve;
1140
+ var reject = capability.reject;
1141
+ try {
1142
+ var result = handler(x);
1143
+ if (result === capability.promise) {
1144
+ throw new TypeError('self resolution');
1145
+ }
1146
+ var updateResult =
1147
+ updatePromiseFromPotentialThenable(result, capability);
1148
+ if (!updateResult) {
1149
+ resolve(result);
1150
+ }
1151
+ } catch (e) {
1152
+ reject(e);
1153
+ }
1154
+ });
1155
+ });
1156
+ };
1157
+
1158
+ var updatePromiseFromPotentialThenable = function(x, capability) {
1159
+ if (!ES.TypeIsObject(x)) {
1160
+ return false;
1161
+ }
1162
+ var resolve = capability.resolve;
1163
+ var reject = capability.reject;
1164
+ try {
1165
+ var then = x.then; // only one invocation of accessor
1166
+ if (!ES.IsCallable(then)) { return false; }
1167
+ then.call(x, resolve, reject);
1168
+ } catch(e) {
1169
+ reject(e);
1170
+ }
1171
+ return true;
1172
+ };
1173
+
1174
+ var promiseResolutionHandler = function(promise, onFulfilled, onRejected){
1175
+ return function(x) {
1176
+ if (x === promise) {
1177
+ return onRejected(new TypeError('self resolution'));
1178
+ }
1179
+ var C = promise._promiseConstructor;
1180
+ var capability = new PromiseCapability(C);
1181
+ var updateResult = updatePromiseFromPotentialThenable(x, capability);
1182
+ if (updateResult) {
1183
+ return capability.promise.then(onFulfilled, onRejected);
1184
+ } else {
1185
+ return onFulfilled(x);
1186
+ }
1187
+ };
1188
+ };
1189
+
1190
+ Promise = function(resolver) {
1191
+ var promise = this;
1192
+ promise = emulateES6construct(promise);
1193
+ if (!promise._promiseConstructor) {
1194
+ // we use _promiseConstructor as a stand-in for the internal
1195
+ // [[PromiseStatus]] field; it's a little more unique.
1196
+ throw new TypeError('bad promise');
1197
+ }
1198
+ if (promise._status !== undefined) {
1199
+ throw new TypeError('promise already initialized');
1200
+ }
1201
+ // see https://bugs.ecmascript.org/show_bug.cgi?id=2482
1202
+ if (!ES.IsCallable(resolver)) {
1203
+ throw new TypeError('not a valid resolver');
1204
+ }
1205
+ promise._status = 'unresolved';
1206
+ promise._resolveReactions = [];
1207
+ promise._rejectReactions = [];
1208
+
1209
+ var resolve = function(resolution) {
1210
+ if (promise._status !== 'unresolved') { return; }
1211
+ var reactions = promise._resolveReactions;
1212
+ promise._result = resolution;
1213
+ promise._resolveReactions = undefined;
1214
+ promise._rejectReactions = undefined;
1215
+ promise._status = 'has-resolution';
1216
+ triggerPromiseReactions(reactions, resolution);
1217
+ };
1218
+ var reject = function(reason) {
1219
+ if (promise._status !== 'unresolved') { return; }
1220
+ var reactions = promise._rejectReactions;
1221
+ promise._result = reason;
1222
+ promise._resolveReactions = undefined;
1223
+ promise._rejectReactions = undefined;
1224
+ promise._status = 'has-rejection';
1225
+ triggerPromiseReactions(reactions, reason);
1226
+ };
1227
+ try {
1228
+ resolver(resolve, reject);
1229
+ } catch (e) {
1230
+ reject(e);
1231
+ }
1232
+ return promise;
1233
+ };
1234
+ Promise$prototype = Promise.prototype;
1235
+ defineProperties(Promise, {
1236
+ '@@create': function(obj) {
1237
+ var constructor = this;
1238
+ // AllocatePromise
1239
+ // The `obj` parameter is a hack we use for es5
1240
+ // compatibility.
1241
+ var prototype = constructor.prototype || Promise$prototype;
1242
+ obj = obj || Object.create(prototype);
1243
+ defineProperties(obj, {
1244
+ _status: undefined,
1245
+ _result: undefined,
1246
+ _resolveReactions: undefined,
1247
+ _rejectReactions: undefined,
1248
+ _promiseConstructor: undefined
1249
+ });
1250
+ obj._promiseConstructor = constructor;
1251
+ return obj;
1252
+ }
1253
+ });
1254
+
1255
+ var _promiseAllResolver = function(index, values, capability, remaining) {
1256
+ var done = false;
1257
+ return function(x) {
1258
+ if (done) { return; } // protect against being called multiple times
1259
+ done = true;
1260
+ values[index] = x;
1261
+ if ((--remaining.count) === 0) {
1262
+ var resolve = capability.resolve;
1263
+ resolve(values); // call w/ this===undefined
1264
+ }
1265
+ };
1266
+ };
1267
+
1268
+ Promise.all = function(iterable) {
1269
+ var C = this;
1270
+ var capability = new PromiseCapability(C);
1271
+ var resolve = capability.resolve;
1272
+ var reject = capability.reject;
1273
+ try {
1274
+ if (!ES.IsIterable(iterable)) {
1275
+ throw new TypeError('bad iterable');
1276
+ }
1277
+ var it = ES.GetIterator(iterable);
1278
+ var values = [], remaining = { count: 1 };
1279
+ for (var index = 0; ; index++) {
1280
+ var next = ES.IteratorNext(it);
1281
+ if (next.done) {
1282
+ break;
1283
+ }
1284
+ var nextPromise = C.resolve(next.value);
1285
+ var resolveElement = _promiseAllResolver(
1286
+ index, values, capability, remaining
1287
+ );
1288
+ remaining.count++;
1289
+ nextPromise.then(resolveElement, capability.reject);
1290
+ }
1291
+ if ((--remaining.count) === 0) {
1292
+ resolve(values); // call w/ this===undefined
1293
+ }
1294
+ } catch (e) {
1295
+ reject(e);
1296
+ }
1297
+ return capability.promise;
1298
+ };
1299
+
1300
+ Promise.race = function(iterable) {
1301
+ var C = this;
1302
+ var capability = new PromiseCapability(C);
1303
+ var resolve = capability.resolve;
1304
+ var reject = capability.reject;
1305
+ try {
1306
+ if (!ES.IsIterable(iterable)) {
1307
+ throw new TypeError('bad iterable');
1308
+ }
1309
+ var it = ES.GetIterator(iterable);
1310
+ while (true) {
1311
+ var next = ES.IteratorNext(it);
1312
+ if (next.done) {
1313
+ // If iterable has no items, resulting promise will never
1314
+ // resolve; see:
1315
+ // https://github.com/domenic/promises-unwrapping/issues/75
1316
+ // https://bugs.ecmascript.org/show_bug.cgi?id=2515
1317
+ break;
1318
+ }
1319
+ var nextPromise = C.resolve(next.value);
1320
+ nextPromise.then(resolve, reject);
1321
+ }
1322
+ } catch (e) {
1323
+ reject(e);
1324
+ }
1325
+ return capability.promise;
1326
+ };
1327
+
1328
+ Promise.reject = function(reason) {
1329
+ var C = this;
1330
+ var capability = new PromiseCapability(C);
1331
+ var reject = capability.reject;
1332
+ reject(reason); // call with this===undefined
1333
+ return capability.promise;
1334
+ };
1335
+
1336
+ Promise.resolve = function(v) {
1337
+ var C = this;
1338
+ if (ES.IsPromise(v)) {
1339
+ var constructor = v._promiseConstructor;
1340
+ if (constructor === C) { return v; }
1341
+ }
1342
+ var capability = new PromiseCapability(C);
1343
+ var resolve = capability.resolve;
1344
+ resolve(v); // call with this===undefined
1345
+ return capability.promise;
1346
+ };
1347
+
1348
+ Promise.prototype['catch'] = function( onRejected ) {
1349
+ return this.then(undefined, onRejected);
1350
+ };
1351
+
1352
+ Promise.prototype.then = function( onFulfilled, onRejected ) {
1353
+ var promise = this;
1354
+ if (!ES.IsPromise(promise)) { throw new TypeError('not a promise'); }
1355
+ // this.constructor not this._promiseConstructor; see
1356
+ // https://bugs.ecmascript.org/show_bug.cgi?id=2513
1357
+ var C = this.constructor;
1358
+ var capability = new PromiseCapability(C);
1359
+ if (!ES.IsCallable(onRejected)) {
1360
+ onRejected = function(e) { throw e; };
1361
+ }
1362
+ if (!ES.IsCallable(onFulfilled)) {
1363
+ onFulfilled = function(x) { return x; };
1364
+ }
1365
+ var resolutionHandler =
1366
+ promiseResolutionHandler(promise, onFulfilled, onRejected);
1367
+ var resolveReaction =
1368
+ { capability: capability, handler: resolutionHandler };
1369
+ var rejectReaction =
1370
+ { capability: capability, handler: onRejected };
1371
+ switch (promise._status) {
1372
+ case 'unresolved':
1373
+ promise._resolveReactions.push(resolveReaction);
1374
+ promise._rejectReactions.push(rejectReaction);
1375
+ break;
1376
+ case 'has-resolution':
1377
+ triggerPromiseReactions([resolveReaction], promise._result);
1378
+ break;
1379
+ case 'has-rejection':
1380
+ triggerPromiseReactions([rejectReaction], promise._result);
1381
+ break;
1382
+ default:
1383
+ throw new TypeError('unexpected');
1384
+ }
1385
+ return capability.promise;
1386
+ };
1387
+
1388
+ return Promise;
1389
+ })();
1390
+ // export the Promise constructor.
1391
+ defineProperties(globals, { Promise: PromiseShim });
1392
+ // In Chrome 33 (and thereabouts) Promise is defined, but the
1393
+ // implementation is buggy in a number of ways. Let's check subclassing
1394
+ // support to see if we have a buggy implementation.
1395
+ if (!supportsSubclassing(globals.Promise, function(S) {
1396
+ return S.resolve(42) instanceof S;
1397
+ })) {
1398
+ globals.Promise = PromiseShim;
1399
+ }
1400
+
1401
+ // Map and Set require a true ES5 environment
1402
+ if (supportsDescriptors) {
1403
+
1404
+ var fastkey = function fastkey(key) {
1405
+ var type = typeof key;
1406
+ if (type === 'string') {
1407
+ return '$' + key;
1408
+ } else if (type === 'number') {
1409
+ // note that -0 will get coerced to "0" when used as a property key
1410
+ return key;
1411
+ }
1412
+ return null;
1413
+ };
1414
+
1415
+ var emptyObject = function emptyObject() {
1416
+ // accomodate some older not-quite-ES5 browsers
1417
+ return Object.create ? Object.create(null) : {};
1418
+ };
1419
+
1420
+ var collectionShims = {
1421
+ Map: (function() {
1422
+
1423
+ var empty = {};
1424
+
1425
+ function MapEntry(key, value) {
1426
+ this.key = key;
1427
+ this.value = value;
1428
+ this.next = null;
1429
+ this.prev = null;
1430
+ }
1431
+
1432
+ MapEntry.prototype.isRemoved = function() {
1433
+ return this.key === empty;
1434
+ };
1435
+
1436
+ function MapIterator(map, kind) {
1437
+ this.head = map._head;
1438
+ this.i = this.head;
1439
+ this.kind = kind;
1440
+ }
1441
+
1442
+ MapIterator.prototype = {
1443
+ next: function() {
1444
+ var i = this.i, kind = this.kind, head = this.head, result;
1445
+ if (this.i === undefined) {
1446
+ return { value: undefined, done: true };
1447
+ }
1448
+ while (i.isRemoved() && i !== head) {
1449
+ // back up off of removed entries
1450
+ i = i.prev;
1451
+ }
1452
+ // advance to next unreturned element.
1453
+ while (i.next !== head) {
1454
+ i = i.next;
1455
+ if (!i.isRemoved()) {
1456
+ if (kind === "key") {
1457
+ result = i.key;
1458
+ } else if (kind === "value") {
1459
+ result = i.value;
1460
+ } else {
1461
+ result = [i.key, i.value];
1462
+ }
1463
+ this.i = i;
1464
+ return { value: result, done: false };
1465
+ }
1466
+ }
1467
+ // once the iterator is done, it is done forever.
1468
+ this.i = undefined;
1469
+ return { value: undefined, done: true };
1470
+ }
1471
+ };
1472
+ addIterator(MapIterator.prototype);
1473
+
1474
+ function Map() {
1475
+ var map = this;
1476
+ map = emulateES6construct(map);
1477
+ if (!map._es6map) {
1478
+ throw new TypeError('bad map');
1479
+ }
1480
+
1481
+ var head = new MapEntry(null, null);
1482
+ // circular doubly-linked list.
1483
+ head.next = head.prev = head;
1484
+
1485
+ defineProperties(map, {
1486
+ '_head': head,
1487
+ '_storage': emptyObject(),
1488
+ '_size': 0
1489
+ });
1490
+
1491
+ // Optionally initialize map from iterable
1492
+ var iterable = arguments[0];
1493
+ if (iterable !== undefined && iterable !== null) {
1494
+ var it = ES.GetIterator(iterable);
1495
+ var adder = map.set;
1496
+ if (!ES.IsCallable(adder)) { throw new TypeError('bad map'); }
1497
+ while (true) {
1498
+ var next = ES.IteratorNext(it);
1499
+ if (next.done) { break; }
1500
+ var nextItem = next.value;
1501
+ if (!ES.TypeIsObject(nextItem)) {
1502
+ throw new TypeError('expected iterable of pairs');
1503
+ }
1504
+ adder.call(map, nextItem[0], nextItem[1]);
1505
+ }
1506
+ }
1507
+ return map;
1508
+ }
1509
+ var Map$prototype = Map.prototype;
1510
+ defineProperties(Map, {
1511
+ '@@create': function(obj) {
1512
+ var constructor = this;
1513
+ var prototype = constructor.prototype || Map$prototype;
1514
+ obj = obj || Object.create(prototype);
1515
+ defineProperties(obj, { _es6map: true });
1516
+ return obj;
1517
+ }
1518
+ });
1519
+
1520
+ Object.defineProperty(Map.prototype, 'size', {
1521
+ configurable: true,
1522
+ enumerable: false,
1523
+ get: function() {
1524
+ if (typeof this._size === 'undefined') {
1525
+ throw new TypeError('size method called on incompatible Map');
1526
+ }
1527
+ return this._size;
1528
+ }
1529
+ });
1530
+
1531
+ defineProperties(Map.prototype, {
1532
+ get: function(key) {
1533
+ var fkey = fastkey(key);
1534
+ if (fkey !== null) {
1535
+ // fast O(1) path
1536
+ var entry = this._storage[fkey];
1537
+ return entry ? entry.value : undefined;
1538
+ }
1539
+ var head = this._head, i = head;
1540
+ while ((i = i.next) !== head) {
1541
+ if (ES.SameValueZero(i.key, key)) {
1542
+ return i.value;
1543
+ }
1544
+ }
1545
+ return undefined;
1546
+ },
1547
+
1548
+ has: function(key) {
1549
+ var fkey = fastkey(key);
1550
+ if (fkey !== null) {
1551
+ // fast O(1) path
1552
+ return typeof this._storage[fkey] !== 'undefined';
1553
+ }
1554
+ var head = this._head, i = head;
1555
+ while ((i = i.next) !== head) {
1556
+ if (ES.SameValueZero(i.key, key)) {
1557
+ return true;
1558
+ }
1559
+ }
1560
+ return false;
1561
+ },
1562
+
1563
+ set: function(key, value) {
1564
+ var head = this._head, i = head, entry;
1565
+ var fkey = fastkey(key);
1566
+ if (fkey !== null) {
1567
+ // fast O(1) path
1568
+ if (typeof this._storage[fkey] !== 'undefined') {
1569
+ this._storage[fkey].value = value;
1570
+ return;
1571
+ } else {
1572
+ entry = this._storage[fkey] = new MapEntry(key, value);
1573
+ i = head.prev;
1574
+ // fall through
1575
+ }
1576
+ }
1577
+ while ((i = i.next) !== head) {
1578
+ if (ES.SameValueZero(i.key, key)) {
1579
+ i.value = value;
1580
+ return;
1581
+ }
1582
+ }
1583
+ entry = entry || new MapEntry(key, value);
1584
+ if (ES.SameValue(-0, key)) {
1585
+ entry.key = +0; // coerce -0 to +0 in entry
1586
+ }
1587
+ entry.next = this._head;
1588
+ entry.prev = this._head.prev;
1589
+ entry.prev.next = entry;
1590
+ entry.next.prev = entry;
1591
+ this._size += 1;
1592
+ },
1593
+
1594
+ 'delete': function(key) {
1595
+ var head = this._head, i = head;
1596
+ var fkey = fastkey(key);
1597
+ if (fkey !== null) {
1598
+ // fast O(1) path
1599
+ if (typeof this._storage[fkey] === 'undefined') {
1600
+ return false;
1601
+ }
1602
+ i = this._storage[fkey].prev;
1603
+ delete this._storage[fkey];
1604
+ // fall through
1605
+ }
1606
+ while ((i = i.next) !== head) {
1607
+ if (ES.SameValueZero(i.key, key)) {
1608
+ i.key = i.value = empty;
1609
+ i.prev.next = i.next;
1610
+ i.next.prev = i.prev;
1611
+ this._size -= 1;
1612
+ return true;
1613
+ }
1614
+ }
1615
+ return false;
1616
+ },
1617
+
1618
+ clear: function() {
1619
+ this._size = 0;
1620
+ this._storage = emptyObject();
1621
+ var head = this._head, i = head, p = i.next;
1622
+ while ((i = p) !== head) {
1623
+ i.key = i.value = empty;
1624
+ p = i.next;
1625
+ i.next = i.prev = head;
1626
+ }
1627
+ head.next = head.prev = head;
1628
+ },
1629
+
1630
+ keys: function() {
1631
+ return new MapIterator(this, "key");
1632
+ },
1633
+
1634
+ values: function() {
1635
+ return new MapIterator(this, "value");
1636
+ },
1637
+
1638
+ entries: function() {
1639
+ return new MapIterator(this, "key+value");
1640
+ },
1641
+
1642
+ forEach: function(callback) {
1643
+ var context = arguments.length > 1 ? arguments[1] : null;
1644
+ var it = this.entries();
1645
+ for (var entry = it.next(); !entry.done; entry = it.next()) {
1646
+ callback.call(context, entry.value[1], entry.value[0], this);
1647
+ }
1648
+ }
1649
+ });
1650
+ addIterator(Map.prototype, function() { return this.entries(); });
1651
+
1652
+ return Map;
1653
+ })(),
1654
+
1655
+ Set: (function() {
1656
+ // Creating a Map is expensive. To speed up the common case of
1657
+ // Sets containing only string or numeric keys, we use an object
1658
+ // as backing storage and lazily create a full Map only when
1659
+ // required.
1660
+ var SetShim = function Set() {
1661
+ var set = this;
1662
+ set = emulateES6construct(set);
1663
+ if (!set._es6set) {
1664
+ throw new TypeError('bad set');
1665
+ }
1666
+
1667
+ defineProperties(set, {
1668
+ '[[SetData]]': null,
1669
+ '_storage': emptyObject()
1670
+ });
1671
+
1672
+ // Optionally initialize map from iterable
1673
+ var iterable = arguments[0];
1674
+ if (iterable !== undefined && iterable !== null) {
1675
+ var it = ES.GetIterator(iterable);
1676
+ var adder = set.add;
1677
+ if (!ES.IsCallable(adder)) { throw new TypeError('bad set'); }
1678
+ while (true) {
1679
+ var next = ES.IteratorNext(it);
1680
+ if (next.done) { break; }
1681
+ var nextItem = next.value;
1682
+ adder.call(set, nextItem);
1683
+ }
1684
+ }
1685
+ return set;
1686
+ };
1687
+ var Set$prototype = SetShim.prototype;
1688
+ defineProperties(SetShim, {
1689
+ '@@create': function(obj) {
1690
+ var constructor = this;
1691
+ var prototype = constructor.prototype || Set$prototype;
1692
+ obj = obj || Object.create(prototype);
1693
+ defineProperties(obj, { _es6set: true });
1694
+ return obj;
1695
+ }
1696
+ });
1697
+
1698
+ // Switch from the object backing storage to a full Map.
1699
+ var ensureMap = function ensureMap(set) {
1700
+ if (!set['[[SetData]]']) {
1701
+ var m = set['[[SetData]]'] = new collectionShims.Map();
1702
+ Object.keys(set._storage).forEach(function(k) {
1703
+ // fast check for leading '$'
1704
+ if (k.charCodeAt(0) === 36) {
1705
+ k = k.substring(1);
1706
+ } else {
1707
+ k = +k;
1708
+ }
1709
+ m.set(k, k);
1710
+ });
1711
+ set._storage = null; // free old backing storage
1712
+ }
1713
+ };
1714
+
1715
+ Object.defineProperty(SetShim.prototype, 'size', {
1716
+ configurable: true,
1717
+ enumerable: false,
1718
+ get: function() {
1719
+ if (typeof this._storage === 'undefined') {
1720
+ // https://github.com/paulmillr/es6-shim/issues/176
1721
+ throw new TypeError('size method called on incompatible Set');
1722
+ }
1723
+ ensureMap(this);
1724
+ return this['[[SetData]]'].size;
1725
+ }
1726
+ });
1727
+
1728
+ defineProperties(SetShim.prototype, {
1729
+ has: function(key) {
1730
+ var fkey;
1731
+ if (this._storage && (fkey = fastkey(key)) !== null) {
1732
+ return !!this._storage[fkey];
1733
+ }
1734
+ ensureMap(this);
1735
+ return this['[[SetData]]'].has(key);
1736
+ },
1737
+
1738
+ add: function(key) {
1739
+ var fkey;
1740
+ if (this._storage && (fkey = fastkey(key)) !== null) {
1741
+ this._storage[fkey]=true;
1742
+ return;
1743
+ }
1744
+ ensureMap(this);
1745
+ return this['[[SetData]]'].set(key, key);
1746
+ },
1747
+
1748
+ 'delete': function(key) {
1749
+ var fkey;
1750
+ if (this._storage && (fkey = fastkey(key)) !== null) {
1751
+ delete this._storage[fkey];
1752
+ return;
1753
+ }
1754
+ ensureMap(this);
1755
+ return this['[[SetData]]']['delete'](key);
1756
+ },
1757
+
1758
+ clear: function() {
1759
+ if (this._storage) {
1760
+ this._storage = emptyObject();
1761
+ return;
1762
+ }
1763
+ return this['[[SetData]]'].clear();
1764
+ },
1765
+
1766
+ keys: function() {
1767
+ ensureMap(this);
1768
+ return this['[[SetData]]'].keys();
1769
+ },
1770
+
1771
+ values: function() {
1772
+ ensureMap(this);
1773
+ return this['[[SetData]]'].values();
1774
+ },
1775
+
1776
+ entries: function() {
1777
+ ensureMap(this);
1778
+ return this['[[SetData]]'].entries();
1779
+ },
1780
+
1781
+ forEach: function(callback) {
1782
+ var context = arguments.length > 1 ? arguments[1] : null;
1783
+ var entireSet = this;
1784
+ ensureMap(this);
1785
+ this['[[SetData]]'].forEach(function(value, key) {
1786
+ callback.call(context, key, key, entireSet);
1787
+ });
1788
+ }
1789
+ });
1790
+ addIterator(SetShim.prototype, function() { return this.values(); });
1791
+
1792
+ return SetShim;
1793
+ })()
1794
+ };
1795
+ defineProperties(globals, collectionShims);
1796
+
1797
+ if (globals.Map || globals.Set) {
1798
+ /*
1799
+ - In Firefox < 23, Map#size is a function.
1800
+ - In all current Firefox, Set#entries/keys/values & Map#clear do not exist
1801
+ - https://bugzilla.mozilla.org/show_bug.cgi?id=869996
1802
+ - In Firefox 24, Map and Set do not implement forEach
1803
+ - In Firefox 25 at least, Map and Set are callable without "new"
1804
+ */
1805
+ if (
1806
+ typeof globals.Map.prototype.clear !== 'function' ||
1807
+ new globals.Set().size !== 0 ||
1808
+ new globals.Map().size !== 0 ||
1809
+ typeof globals.Set.prototype.keys !== 'function' ||
1810
+ typeof globals.Map.prototype.forEach !== 'function' ||
1811
+ typeof globals.Set.prototype.forEach !== 'function' ||
1812
+ isCallableWithoutNew(globals.Map) ||
1813
+ isCallableWithoutNew(globals.Set) ||
1814
+ !supportsSubclassing(globals.Map, function(M) {
1815
+ return (new M([])) instanceof M;
1816
+ })
1817
+ ) {
1818
+ globals.Map = collectionShims.Map;
1819
+ globals.Set = collectionShims.Set;
1820
+ }
1821
+ }
1822
+ // Shim incomplete iterator implementations.
1823
+ addIterator(Object.getPrototypeOf((new globals.Map()).keys()));
1824
+ addIterator(Object.getPrototypeOf((new globals.Set()).keys()));
1825
+ }
1826
+ };
1827
+
1828
+ if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {
1829
+ define(main); // RequireJS
1830
+ } else {
1831
+ main(); // CommonJS and <script>
1832
+ }
1833
+ })();