traceur-rb 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (410) hide show
  1. checksums.yaml +8 -8
  2. data/README.md +2 -2
  3. data/lib/js/compile.js +7 -15
  4. data/lib/traceur.rb +2 -1
  5. data/lib/traceur/compilation_error.rb +27 -0
  6. data/lib/traceur/compiler.rb +4 -1
  7. data/lib/traceur/configuration.rb +1 -1
  8. data/lib/traceur/node/runner.rb +1 -1
  9. data/lib/traceur/version.rb +1 -1
  10. data/spec/examples/syntax_error.js +3 -0
  11. data/spec/integration/examples_spec.rb +6 -0
  12. data/vendor/node_modules/traceur/LICENSE +202 -0
  13. data/vendor/node_modules/traceur/README.md +5 -5
  14. data/vendor/node_modules/traceur/bin/traceur-runtime.js +1392 -623
  15. data/vendor/node_modules/traceur/bin/traceur.js +24749 -17990
  16. data/vendor/node_modules/traceur/node_modules/.bin/semver +2 -2
  17. data/vendor/node_modules/traceur/node_modules/commander/History.md +222 -0
  18. data/vendor/node_modules/traceur/node_modules/commander/Readme.md +127 -35
  19. data/vendor/node_modules/traceur/node_modules/commander/index.js +261 -93
  20. data/vendor/node_modules/traceur/node_modules/commander/package.json +41 -9
  21. data/vendor/node_modules/traceur/node_modules/glob/LICENSE +15 -0
  22. data/vendor/node_modules/traceur/node_modules/glob/README.md +357 -0
  23. data/vendor/node_modules/traceur/node_modules/glob/common.js +177 -0
  24. data/vendor/node_modules/traceur/node_modules/glob/glob.js +649 -0
  25. data/vendor/node_modules/traceur/node_modules/glob/node_modules/inflight/.eslintrc +17 -0
  26. data/vendor/node_modules/traceur/node_modules/glob/node_modules/inflight/LICENSE +15 -0
  27. data/vendor/node_modules/traceur/node_modules/glob/node_modules/inflight/README.md +37 -0
  28. data/vendor/node_modules/traceur/node_modules/glob/node_modules/inflight/inflight.js +44 -0
  29. data/vendor/node_modules/traceur/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE +15 -0
  30. data/vendor/node_modules/traceur/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md +36 -0
  31. data/vendor/node_modules/traceur/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +34 -0
  32. data/vendor/node_modules/traceur/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +51 -0
  33. data/vendor/node_modules/traceur/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js +33 -0
  34. data/vendor/node_modules/traceur/node_modules/glob/node_modules/inflight/package.json +61 -0
  35. data/vendor/node_modules/traceur/node_modules/glob/node_modules/inflight/test.js +97 -0
  36. data/vendor/node_modules/traceur/node_modules/glob/node_modules/inherits/LICENSE +16 -0
  37. data/vendor/node_modules/traceur/node_modules/glob/node_modules/inherits/README.md +42 -0
  38. data/vendor/node_modules/traceur/node_modules/glob/node_modules/inherits/inherits.js +1 -0
  39. data/vendor/node_modules/traceur/node_modules/glob/node_modules/inherits/inherits_browser.js +23 -0
  40. data/vendor/node_modules/traceur/node_modules/glob/node_modules/inherits/package.json +33 -0
  41. data/vendor/node_modules/traceur/node_modules/glob/node_modules/inherits/test.js +25 -0
  42. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/.npmignore +1 -0
  43. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/.travis.yml +4 -0
  44. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/LICENSE +23 -0
  45. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/README.md +216 -0
  46. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/benchmark.js +15 -0
  47. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/browser.js +1181 -0
  48. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/minimatch.js +845 -0
  49. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +2 -0
  50. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +3 -0
  51. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md +121 -0
  52. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +8 -0
  53. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js +191 -0
  54. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +2 -0
  55. data/vendor/node_modules/traceur/node_modules/{q-io/node_modules/collections → glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/.travis.yml +0 -0
  56. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +6 -0
  57. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md +80 -0
  58. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +5 -0
  59. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +38 -0
  60. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +73 -0
  61. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +56 -0
  62. data/vendor/node_modules/traceur/node_modules/{q-io/node_modules/url2 → glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map}/.travis.yml +1 -1
  63. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE +18 -0
  64. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown +62 -0
  65. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js +6 -0
  66. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js +13 -0
  67. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +83 -0
  68. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js +39 -0
  69. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +75 -0
  70. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +32 -0
  71. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +1075 -0
  72. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +182 -0
  73. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +9 -0
  74. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +10 -0
  75. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +24 -0
  76. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +15 -0
  77. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +16 -0
  78. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js +10 -0
  79. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +13 -0
  80. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +7 -0
  81. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +50 -0
  82. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/package.json +60 -0
  83. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/test/basic.js +399 -0
  84. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/test/brace-expand.js +45 -0
  85. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/test/defaults.js +274 -0
  86. data/vendor/node_modules/traceur/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +8 -0
  87. data/vendor/node_modules/traceur/node_modules/glob/node_modules/once/LICENSE +27 -0
  88. data/vendor/node_modules/traceur/node_modules/glob/node_modules/once/README.md +51 -0
  89. data/vendor/node_modules/traceur/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE +15 -0
  90. data/vendor/node_modules/traceur/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +36 -0
  91. data/vendor/node_modules/traceur/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +34 -0
  92. data/vendor/node_modules/traceur/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +51 -0
  93. data/vendor/node_modules/traceur/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +33 -0
  94. data/vendor/node_modules/traceur/node_modules/glob/node_modules/once/once.js +21 -0
  95. data/vendor/node_modules/traceur/node_modules/glob/node_modules/once/package.json +42 -0
  96. data/vendor/node_modules/traceur/node_modules/glob/node_modules/once/test/once.js +23 -0
  97. data/vendor/node_modules/traceur/node_modules/glob/package.json +72 -0
  98. data/vendor/node_modules/traceur/node_modules/glob/sync.js +409 -0
  99. data/vendor/node_modules/traceur/node_modules/rsvp/.release.json +17 -0
  100. data/vendor/node_modules/traceur/node_modules/rsvp/CHANGELOG.md +165 -0
  101. data/vendor/node_modules/traceur/node_modules/rsvp/LICENSE +19 -0
  102. data/vendor/node_modules/traceur/node_modules/rsvp/README.md +364 -0
  103. data/vendor/node_modules/traceur/node_modules/rsvp/dist/rsvp.js +1671 -0
  104. data/vendor/node_modules/traceur/node_modules/rsvp/dist/rsvp.min.js +9 -0
  105. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp.js +66 -0
  106. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp.umd.js +50 -0
  107. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/-internal.js +265 -0
  108. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/all-settled.js +71 -0
  109. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/all.js +15 -0
  110. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/asap.js +109 -0
  111. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/config.js +28 -0
  112. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/defer.js +45 -0
  113. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/enumerator.js +125 -0
  114. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/events.js +201 -0
  115. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/filter.js +120 -0
  116. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/hash-settled.js +124 -0
  117. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/hash.js +94 -0
  118. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/instrument.js +41 -0
  119. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/map.js +99 -0
  120. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/node.js +281 -0
  121. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/promise-hash.js +51 -0
  122. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/promise.js +496 -0
  123. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/promise/all.js +52 -0
  124. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/promise/race.js +105 -0
  125. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/promise/reject.js +47 -0
  126. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/promise/resolve.js +49 -0
  127. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/race.js +15 -0
  128. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/reject.js +16 -0
  129. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/resolve.js +17 -0
  130. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/rethrow.js +46 -0
  131. data/vendor/node_modules/traceur/node_modules/rsvp/lib/rsvp/utils.js +39 -0
  132. data/vendor/node_modules/traceur/node_modules/rsvp/package.json +100 -0
  133. data/vendor/node_modules/traceur/node_modules/rsvp/rsvp.js/README.md +9 -0
  134. data/vendor/node_modules/traceur/node_modules/rsvp/rsvp.js/bower.json +22 -0
  135. data/vendor/node_modules/traceur/node_modules/rsvp/rsvp.js/composer.json +18 -0
  136. data/vendor/node_modules/traceur/node_modules/rsvp/rsvp.js/package.json +52 -0
  137. data/vendor/node_modules/traceur/node_modules/rsvp/rsvp.js/rsvp.amd.js +1607 -0
  138. data/vendor/node_modules/traceur/node_modules/rsvp/rsvp.js/rsvp.js +1566 -0
  139. data/vendor/node_modules/traceur/node_modules/rsvp/rsvp.js/rsvp.min.js +26 -0
  140. data/vendor/node_modules/traceur/node_modules/rsvp/vertx.js +1 -0
  141. data/vendor/node_modules/traceur/node_modules/semver/bin/semver +2 -2
  142. data/vendor/node_modules/traceur/node_modules/semver/package.json +4 -3
  143. data/vendor/node_modules/traceur/node_modules/semver/semver.browser.js +7 -0
  144. data/vendor/node_modules/traceur/node_modules/semver/semver.browser.js.gz +0 -0
  145. data/vendor/node_modules/traceur/node_modules/semver/semver.js +7 -0
  146. data/vendor/node_modules/traceur/node_modules/semver/semver.min.js +1 -1
  147. data/vendor/node_modules/traceur/node_modules/semver/semver.min.js.gz +0 -0
  148. data/vendor/node_modules/traceur/node_modules/semver/test/index.js +8 -4
  149. data/vendor/node_modules/traceur/node_modules/semver/test/ltr.js +2 -1
  150. data/vendor/node_modules/traceur/node_modules/source-map-support/.npmignore +1 -0
  151. data/vendor/node_modules/traceur/node_modules/{q-io/node_modules/mime/LICENSE → source-map-support/LICENSE.md} +7 -5
  152. data/vendor/node_modules/traceur/node_modules/source-map-support/README.md +165 -0
  153. data/vendor/node_modules/traceur/node_modules/source-map-support/amd-test/browser-source-map-support.js +89 -0
  154. data/vendor/node_modules/traceur/node_modules/source-map-support/amd-test/index.html +6 -0
  155. data/vendor/node_modules/traceur/node_modules/source-map-support/amd-test/require.js +36 -0
  156. data/vendor/node_modules/traceur/node_modules/source-map-support/amd-test/script.coffee +13 -0
  157. data/vendor/node_modules/traceur/node_modules/source-map-support/amd-test/script.js +24 -0
  158. data/vendor/node_modules/traceur/node_modules/source-map-support/amd-test/script.map +10 -0
  159. data/vendor/node_modules/traceur/node_modules/source-map-support/browser-source-map-support.js +89 -0
  160. data/vendor/node_modules/traceur/node_modules/source-map-support/browser-test/index.html +6 -0
  161. data/vendor/node_modules/traceur/node_modules/source-map-support/browser-test/script.coffee +12 -0
  162. data/vendor/node_modules/traceur/node_modules/source-map-support/browser-test/script.js +25 -0
  163. data/vendor/node_modules/traceur/node_modules/source-map-support/browser-test/script.map +10 -0
  164. data/vendor/node_modules/traceur/node_modules/source-map-support/build.js +69 -0
  165. data/vendor/node_modules/traceur/node_modules/source-map-support/header-test/index.html +6 -0
  166. data/vendor/node_modules/traceur/node_modules/source-map-support/header-test/script.coffee +12 -0
  167. data/vendor/node_modules/traceur/node_modules/source-map-support/header-test/script.js +25 -0
  168. data/vendor/node_modules/traceur/node_modules/source-map-support/header-test/script.map +10 -0
  169. data/vendor/node_modules/traceur/node_modules/source-map-support/header-test/server.js +45 -0
  170. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/.npmignore +2 -0
  171. data/vendor/node_modules/traceur/node_modules/{q-io → source-map-support/node_modules/source-map}/.travis.yml +1 -0
  172. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/CHANGELOG.md +121 -0
  173. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/LICENSE +28 -0
  174. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/Makefile.dryice.js +166 -0
  175. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/README.md +434 -0
  176. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/build/assert-shim.js +56 -0
  177. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/build/mini-require.js +152 -0
  178. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/build/prefix-source-map.jsm +20 -0
  179. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/build/prefix-utils.jsm +18 -0
  180. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/build/suffix-browser.js +8 -0
  181. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/build/suffix-source-map.jsm +6 -0
  182. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/build/suffix-utils.jsm +21 -0
  183. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/build/test-prefix.js +8 -0
  184. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/build/test-suffix.js +3 -0
  185. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map.js +8 -0
  186. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map/array-set.js +97 -0
  187. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map/base64-vlq.js +144 -0
  188. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map/base64.js +42 -0
  189. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map/binary-search.js +81 -0
  190. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map/source-map-consumer.js +478 -0
  191. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map/source-map-generator.js +380 -0
  192. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map/source-node.js +371 -0
  193. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/lib/source-map/util.js +205 -0
  194. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/node_modules/amdefine/LICENSE +58 -0
  195. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/node_modules/amdefine/README.md +171 -0
  196. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/node_modules/amdefine/amdefine.js +299 -0
  197. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/node_modules/amdefine/intercept.js +36 -0
  198. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/node_modules/amdefine/package.json +37 -0
  199. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/package.json +142 -0
  200. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/test/run-tests.js +62 -0
  201. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-api.js +26 -0
  202. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-array-set.js +104 -0
  203. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-base64-vlq.js +24 -0
  204. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-base64.js +35 -0
  205. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-binary-search.js +54 -0
  206. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-dog-fooding.js +72 -0
  207. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-source-map-consumer.js +451 -0
  208. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-source-map-generator.js +417 -0
  209. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/test-source-node.js +365 -0
  210. data/vendor/node_modules/traceur/node_modules/source-map-support/node_modules/source-map/test/source-map/util.js +161 -0
  211. data/vendor/node_modules/traceur/node_modules/source-map-support/package.json +52 -0
  212. data/vendor/node_modules/traceur/node_modules/source-map-support/source-map-support.js +381 -0
  213. data/vendor/node_modules/traceur/node_modules/source-map-support/test.js +359 -0
  214. data/vendor/node_modules/traceur/package.json +234 -20
  215. data/vendor/node_modules/traceur/src/node/NodeCompiler.js +78 -0
  216. data/vendor/node_modules/traceur/src/node/System.js +32 -5
  217. data/vendor/node_modules/traceur/src/node/api.js +28 -93
  218. data/vendor/node_modules/traceur/src/node/command.js +84 -19
  219. data/vendor/node_modules/traceur/src/node/compileAllJsFilesInDir.js +40 -0
  220. data/vendor/node_modules/traceur/src/node/interpreter.js +11 -8
  221. data/vendor/node_modules/traceur/src/node/recursiveModuleCompile.js +171 -0
  222. data/vendor/node_modules/traceur/src/node/require.js +7 -21
  223. data/vendor/node_modules/traceur/src/node/to-amd-compiler.js +2 -7
  224. data/vendor/node_modules/traceur/src/node/to-closure-compiler.js +28 -0
  225. data/vendor/node_modules/traceur/src/node/to-commonjs-compiler.js +3 -7
  226. data/vendor/node_modules/traceur/src/node/traceur.js +1 -1
  227. metadata +196 -190
  228. data/vendor/node_modules/traceur/node_modules/q-io/.npmignore +0 -1
  229. data/vendor/node_modules/traceur/node_modules/q-io/CHANGES.md +0 -122
  230. data/vendor/node_modules/traceur/node_modules/q-io/LICENSE +0 -19
  231. data/vendor/node_modules/traceur/node_modules/q-io/README.md +0 -928
  232. data/vendor/node_modules/traceur/node_modules/q-io/buffer-stream.js +0 -59
  233. data/vendor/node_modules/traceur/node_modules/q-io/coverage-report.js +0 -44
  234. data/vendor/node_modules/traceur/node_modules/q-io/deprecate.js +0 -51
  235. data/vendor/node_modules/traceur/node_modules/q-io/fs-boot.js +0 -307
  236. data/vendor/node_modules/traceur/node_modules/q-io/fs-common.js +0 -499
  237. data/vendor/node_modules/traceur/node_modules/q-io/fs-mock.js +0 -547
  238. data/vendor/node_modules/traceur/node_modules/q-io/fs-root.js +0 -105
  239. data/vendor/node_modules/traceur/node_modules/q-io/fs.js +0 -355
  240. data/vendor/node_modules/traceur/node_modules/q-io/fs2http.js +0 -65
  241. data/vendor/node_modules/traceur/node_modules/q-io/http-apps.js +0 -152
  242. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/chain.js +0 -24
  243. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/content.js +0 -93
  244. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/cookie.js +0 -154
  245. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/decorators.js +0 -178
  246. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/fs.js +0 -417
  247. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/html.js +0 -58
  248. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/json.js +0 -78
  249. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/negotiate.js +0 -120
  250. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/proxy.js +0 -27
  251. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/redirect.js +0 -209
  252. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/route.js +0 -125
  253. data/vendor/node_modules/traceur/node_modules/q-io/http-apps/status.js +0 -175
  254. data/vendor/node_modules/traceur/node_modules/q-io/http-cookie.js +0 -75
  255. data/vendor/node_modules/traceur/node_modules/q-io/http.js +0 -378
  256. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/.npmignore +0 -11
  257. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/CHANGES.md +0 -78
  258. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/LICENSE.md +0 -21
  259. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/README.md +0 -1285
  260. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/collections.js +0 -22
  261. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/dict.js +0 -142
  262. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/fast-map.js +0 -57
  263. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/fast-set.js +0 -183
  264. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/generic-collection.js +0 -261
  265. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/generic-map.js +0 -186
  266. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/generic-order.js +0 -55
  267. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/generic-set.js +0 -59
  268. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/heap.js +0 -236
  269. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/iterator.js +0 -371
  270. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/list.js +0 -435
  271. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/listen/array-changes.js +0 -247
  272. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/listen/map-changes.js +0 -147
  273. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/listen/property-changes.js +0 -448
  274. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/listen/range-changes.js +0 -139
  275. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/lru-map.js +0 -79
  276. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/lru-set.js +0 -142
  277. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/map.js +0 -60
  278. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/multi-map.js +0 -41
  279. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/node_modules/weak-map/package.json +0 -12
  280. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/node_modules/weak-map/sync +0 -7
  281. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/node_modules/weak-map/sync.patch +0 -48
  282. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/node_modules/weak-map/weak-map.js +0 -590
  283. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/package.json +0 -49
  284. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/set.js +0 -173
  285. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim-array.js +0 -274
  286. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim-function.js +0 -59
  287. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim-object.js +0 -538
  288. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim-regexp.js +0 -14
  289. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/shim.js +0 -6
  290. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-array-map.js +0 -49
  291. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-array-set.js +0 -51
  292. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-array.js +0 -269
  293. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-map.js +0 -61
  294. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/sorted-set.js +0 -736
  295. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/tree-log.js +0 -40
  296. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/collections/weak-map.js +0 -1
  297. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/README.md +0 -66
  298. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/mime.js +0 -114
  299. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/package.json +0 -35
  300. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/test.js +0 -84
  301. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/types/mime.types +0 -1588
  302. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mime/types/node.types +0 -77
  303. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/CHANGES +0 -15
  304. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/LICENSE +0 -19
  305. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/README +0 -96
  306. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/lib/mimeparse.js +0 -166
  307. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/mimeparse/package.json +0 -43
  308. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/CONTRIBUTING.md +0 -40
  309. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/LICENSE +0 -19
  310. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/README.md +0 -813
  311. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/benchmark/compare-with-callbacks.js +0 -71
  312. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/benchmark/scenarios.js +0 -36
  313. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/package.json +0 -93
  314. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/q.js +0 -1937
  315. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/q/queue.js +0 -35
  316. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/.gitmodules +0 -6
  317. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/History.md +0 -36
  318. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/Makefile +0 -7
  319. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/Readme.md +0 -38
  320. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/benchmark.js +0 -32
  321. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/examples.js +0 -39
  322. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/index.js +0 -2
  323. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/lib/querystring.js +0 -123
  324. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/package.json +0 -19
  325. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/.gitmodules +0 -3
  326. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/.npmignore +0 -3
  327. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/History.md +0 -128
  328. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/Makefile +0 -53
  329. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/Readme.md +0 -61
  330. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/bin/expresso +0 -856
  331. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/api.html +0 -1080
  332. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/index.html +0 -377
  333. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/index.md +0 -290
  334. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/layout/foot.html +0 -3
  335. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/docs/layout/head.html +0 -42
  336. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/lib/bar.js +0 -4
  337. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/lib/foo.js +0 -16
  338. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/package.json +0 -12
  339. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/assert.test.js +0 -91
  340. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/async.test.js +0 -12
  341. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/bar.test.js +0 -13
  342. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/foo.test.js +0 -14
  343. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/http.test.js +0 -146
  344. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/serial/async.test.js +0 -39
  345. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/expresso/test/serial/http.test.js +0 -48
  346. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/.gitmodules +0 -3
  347. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/History.md +0 -22
  348. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/Makefile +0 -6
  349. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/Readme.md +0 -248
  350. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/examples/runner.js +0 -53
  351. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/index.js +0 -2
  352. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/lib/eql.js +0 -91
  353. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/lib/should.js +0 -548
  354. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/package.json +0 -8
  355. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/support/should/test/should.test.js +0 -358
  356. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/qs/test/querystring.test.js +0 -133
  357. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/.npmignore +0 -3
  358. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/LICENSE.md +0 -20
  359. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/README.md +0 -33
  360. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/package.json +0 -37
  361. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/test/url2-spec.js +0 -125
  362. data/vendor/node_modules/traceur/node_modules/q-io/node_modules/url2/url2.js +0 -151
  363. data/vendor/node_modules/traceur/node_modules/q-io/package.json +0 -51
  364. data/vendor/node_modules/traceur/node_modules/q-io/reader.js +0 -133
  365. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/boot-directory-spec.js +0 -47
  366. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/contains-spec.js +0 -11
  367. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/fixtures/hello.txt +0 -1
  368. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/issues/1-spec.js +0 -33
  369. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/make-tree-spec.js +0 -92
  370. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/append-spec.js +0 -41
  371. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/copy-tree-spec.js +0 -57
  372. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/fixture/hello.txt +0 -1
  373. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/link-spec.js +0 -70
  374. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/make-tree-spec.js +0 -109
  375. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/merge-spec.js +0 -67
  376. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/move-spec.js +0 -219
  377. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/object-spec.js +0 -20
  378. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/range-spec.js +0 -26
  379. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/read-spec.js +0 -40
  380. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/remove-directory-spec.js +0 -37
  381. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/remove-tree-spec.js +0 -39
  382. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/root-spec.js +0 -32
  383. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/stat-spec.js +0 -26
  384. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/symbolic-link-spec.js +0 -86
  385. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/working-directory-spec.js +0 -31
  386. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/mock/write-spec.js +0 -73
  387. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/range-spec.js +0 -23
  388. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/range-spec.txt +0 -1
  389. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/read-spec.js +0 -22
  390. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/relative-spec.js +0 -25
  391. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/reroot-spec.js +0 -45
  392. data/vendor/node_modules/traceur/node_modules/q-io/spec/fs/write-spec.js +0 -38
  393. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/cookie-spec.js +0 -52
  394. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/directory-list-spec.js +0 -86
  395. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/fixtures/01234.txt +0 -1
  396. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/fixtures/1234.txt +0 -1
  397. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/fixtures/5678.txt +0 -0
  398. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/fixtures/9012/3456.txt +0 -0
  399. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/hosts-spec.js +0 -49
  400. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/interpret-range-spec.js +0 -47
  401. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/partial-range-spec.js +0 -186
  402. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/proxy-spec.js +0 -82
  403. data/vendor/node_modules/traceur/node_modules/q-io/spec/http-apps/symbolic-link-spec.js +0 -110
  404. data/vendor/node_modules/traceur/node_modules/q-io/spec/http/agent-spec.js +0 -96
  405. data/vendor/node_modules/traceur/node_modules/q-io/spec/http/basic-spec.js +0 -96
  406. data/vendor/node_modules/traceur/node_modules/q-io/spec/lib/jasmine-promise.js +0 -42
  407. data/vendor/node_modules/traceur/node_modules/q-io/writer.js +0 -111
  408. data/vendor/node_modules/traceur/src/node/compile-single-file.js +0 -69
  409. data/vendor/node_modules/traceur/src/node/compiler.js +0 -116
  410. data/vendor/node_modules/traceur/src/node/inline-module.js +0 -149
@@ -1,11 +0,0 @@
1
- .gitignore
2
- .travis.ymp
3
- .tmp
4
- /bench
5
- checklist.csv
6
- collections.cat.js
7
- collections.min.js
8
- /coverage
9
- /demo
10
- /minify
11
- /spec
@@ -1,78 +0,0 @@
1
-
2
- ## v0.2.2
3
-
4
- - `one` now returns a consistent value between changes of a sorted
5
- set.
6
- - All collections can now be required using the MontageJS style, as
7
- well as the Node.js style. I reserve the right to withdraw support
8
- for the current MontageJS style if in a future,
9
- backward-incompatible release of Montage migrated to the Node.js
10
- style.
11
-
12
- ## v0.2.1
13
-
14
- - Identify Maps with `isMap` property instead of `keys`, as ES6
15
- proposes `keys`, `values`, and `entries` methods for arrays.
16
-
17
- ## v0.2.0
18
-
19
- - Fixes the enumerability of dispatchesRangeChanges and
20
- dispatchesMapChanges on observable arrays (and others,
21
- incidentally).
22
- - List and Set now dispatch valid range changes, at the penalty of
23
- making updates linear when they are made observable.
24
- - Adds `join` method to generic collections.
25
- - Fixes a bug in `Object.has(object, value)`, where it would not
26
- delegate polymorphically to `object.has(value)`
27
- - Fixes `Object.addEach(object, undefined)`, such that it tolerates
28
- the case without throwing an error, like `addEach` on other
29
- collections.
30
- - Fixes change dispatch on LruSet (Paul Koppen) such that a single
31
- change event gets dispatched for both augmentation and truncation.
32
- - Fixes change dispatch on Dict, such that the value gets sent on
33
- addition.
34
-
35
- ## v0.1.24
36
-
37
- - Factored out WeakMap into separately maintained package.
38
-
39
- ## v0.1.23
40
-
41
- - Introduces `entries` and deprecates `items` on all map collections.
42
- - Fixes Map clear change dispatch.
43
-
44
- ## v0.1.22
45
-
46
- - Fixes Set clear change dispatch.
47
-
48
- ## v0.1.21
49
-
50
- - Fixes a bug when the `plus` argument of swap is not an array.
51
-
52
- ## v0.1.20
53
-
54
- - Fixes generic map change dispatch on clear.
55
- - Adds map change dispatch to Dict.
56
-
57
- ## v0.1.18, v0.1.19
58
-
59
- - Require total order on SortedSet
60
- - Remove Node v0.6 from supported versions
61
- - Add Node v0.10 to supported versions
62
- - Fixes `hrtime` handling (Alexy Kupershtokh)
63
-
64
- ## v0.1.17
65
-
66
- ...
67
-
68
- ## v0.0.5
69
-
70
- - The `observable-array` and `observable-object` modules have been
71
- moved to the Functional Reactive Bindings (`frb`) package as `array`
72
- and `object`.
73
- - `List`, `Set`, and `SortedSet` now support content change
74
- notifications compatibly with `frb`.
75
- - The `observable` module provides generics methods for observables.
76
- New collections need only call the appropriate dispatch functions if
77
- `isObservable` is true.
78
-
@@ -1,21 +0,0 @@
1
-
2
- Copyright 2012 Kristopher Michael Kowal. All rights reserved.
3
-
4
- Permission is hereby granted, free of charge, to any person obtaining a copy
5
- of this software and associated documentation files (the "Software"), to
6
- deal in the Software without restriction, including without limitation the
7
- rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8
- sell copies of the Software, and to permit persons to whom the Software is
9
- furnished to do so, subject to the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be included in
12
- all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20
- IN THE SOFTWARE.
21
-
@@ -1,1285 +0,0 @@
1
- [![Build Status](https://travis-ci.org/montagejs/collections.png?branch=master)](http://travis-ci.org/montagejs/collections)
2
-
3
- # Collections
4
-
5
- This package contains JavaScript implementations of common data
6
- structures with idiomatic iterfaces, including extensions for Array and
7
- Object.
8
-
9
- You can use these Node Packaged Modules with Node.js, [Browserify][],
10
- [Mr][], or any compatible CommonJS module loader. Using a module loader
11
- or bundler when using Collections in web browsers has the advantage of
12
- only incorporating the modules you need. However, you can just embed
13
- `<script src="collections/collections.min.js">` and *all* of the
14
- collections will be introduced as globals. :warning:
15
- `require("collections")` is not supported.
16
-
17
- ```
18
- npm install collections --save
19
- ```
20
-
21
- [Browserify]: https://github.com/substack/node-browserify
22
- [Mr]: https://github.com/montagejs/mr
23
-
24
-
25
- ## Collections
26
-
27
- ### List(values, equals, getDefault)
28
-
29
- ```javascript
30
- var List = require("collections/list");
31
- ```
32
-
33
- An ordered collection of values with fast insertion and deletion and
34
- forward and backward traversal, backed by a cyclic doubly linked
35
- list with a head node. Lists support most of the Array interface,
36
- except that they use and return nodes instead of integer indicies in
37
- analogous functions.
38
-
39
- Lists have a `head` `Node`. The node type is available as `Node` on
40
- the list prototype and can be overridden by inheritors. Each node
41
- has `prev` and `next` properties.
42
-
43
- ### Set(values, equals, hash, getDefault)
44
-
45
- ```javascript
46
- var Set = require("collections/set");
47
- ```
48
-
49
- A collection of unique values. The set can be iterated in the order
50
- of insertion. With a good hash function for the stored values,
51
- insertion and removal are fast regardless of the size of the
52
- collection. Values may be objects. The `equals` and `hash`
53
- functions can be overridden to provide alternate definitions of
54
- "unique". `Set` is backed by `FastSet` and `List`.
55
-
56
- ### Map(map, equals, hash, getDefault)
57
-
58
- ```javascript
59
- var Map = require("collections/map");
60
- ```
61
-
62
- A collection of key and value entries with unique keys. Keys may be
63
- objects. The collection iterates in the order of insertion. `Map`
64
- is backed by `Set`.
65
-
66
- ### MultiMap(map, getDefault, equals, hash)
67
-
68
- ```javascript
69
- var MultiMap = require("collections/multi-map");
70
- ```
71
-
72
- A collection of keys mapped to collections of values. The default
73
- `getDefault` collection is an `Array`, but it can be a `List` or any
74
- other array-like object. `MultiMap` inherits `Map` but overrides
75
- the `getDefault(key)` provider.
76
-
77
- ### WeakMap()
78
-
79
- ```javascript
80
- var WeakMap = require("collections/weak-map");
81
- ```
82
-
83
- A non-iterable collection of key value pairs. Keys must objects and
84
- do not benefit from `hash` functions. Some engines already
85
- implement `WeakMap`. The non-iterable requirement makes it possible
86
- for weak maps to collect garbage when the key is no longer
87
- available, without betraying when the key is collected. The shimmed
88
- implementation undetectably annotates the given key and thus does
89
- not necessarily leak memory, but cannot collect certain reference
90
- graphs. This WeakMap shim was implemented by Mark Miller of Google.
91
-
92
- ### SortedSet(values, equals, compare, getDefault)
93
-
94
- ```javascript
95
- var SortedSet = require("collections/sorted-set");
96
- ```
97
-
98
- A collection of unique values stored in stored order, backed by a
99
- splay tree. The `equals` and `compare` functions can be overridden
100
- to provide alternate definitions of "unique".
101
-
102
- The `compare` method *must* provide a total order of all unique
103
- values. That is, if `compare(a, b) === 0`, it *must* follow that
104
- `equals(a, b)`.
105
-
106
- ### SortedMap(map, equals, compare, getDefault)
107
-
108
- ```javascript
109
- var SortedMap = require("collections/sorted-map");
110
- ```
111
-
112
- A collection of key value pairs stored in sorted order. `SortedMap`
113
- is backed by `SortedSet` and the `GenericMap` mixin.
114
-
115
- ### LruSet(values, maxLength, equals, hash, getDefault)
116
-
117
- ```javascript
118
- var LruSet = require("collections/lru-set");
119
- ```
120
-
121
- A cache with the Least-Recently-Used strategy for truncating its
122
- content when it’s length exceeds `maxLength`. `LruSet` is backed by
123
- a `Set` and takes advantage of the already tracked insertion order.
124
- Both getting and setting a value constitute usage, but checking
125
- whether the set has a value and iterating values do not.
126
-
127
- ### LruMap(map, maxLength, equals, hash, getDefault)
128
-
129
- ```javascript
130
- var LruMap = require("collections/lru-map");
131
- ```
132
-
133
- A cache of entries backed by an `LruSet`.
134
-
135
- ### SortedArray(values, equals, compare, getDefault)
136
-
137
- ```javascript
138
- var SortedArray = require("collections/sorted-array");
139
- ```
140
-
141
- A collection of values stored in a stable sorted order, backed by an
142
- array.
143
-
144
- ### SortedArraySet(values, equals, compare, getDefault)
145
-
146
- ```javascript
147
- var SortedArraySet = require("collections/sorted-array-set");
148
- ```
149
-
150
- A collection of unique values stored in sorted order, backed by a
151
- plain array. If the given values are an actual array, the sorted
152
- array set takes ownership of that array and retains its content. A
153
- sorted array set performs better than a sorted set when it has
154
- roughly less than 100 values.
155
-
156
- ### SortedArrayMap(values, equals, compare, getDefault)
157
-
158
- ```javascript
159
- var SortedArrayMap = require("collections/sorted-array-map");
160
- ```
161
-
162
- A collection of key value pairs stored in sorted order, backed by a
163
- sorted array set.
164
-
165
- ### FastSet(values, equals, hash, getDefault)
166
-
167
- ```javascript
168
- var FastSet = require("collections/fast-set");
169
- ```
170
-
171
- A collection of unique values stored like a hash table. The
172
- underlying storage is a `Dict` that maps hashes to lists of values
173
- that share the same hash. Values may be objects. The `equals` and
174
- `hash` functions can be overridden to provide alternate definitions
175
- of "unique".
176
-
177
- ### FastMap(map, equals, hash, getDefault)
178
-
179
- ```javascript
180
- var FastMap = require("collections/fast-map");
181
- ```
182
-
183
- A collection of key and value entries with unique keys, backed by a
184
- set. Keys may be objects. `FastMap` is backed by `FastSet` and the
185
- `GenericMap` mixin.
186
-
187
- ### Dict(values, getDefault)
188
-
189
- ```javascript
190
- var Dict = require("collections/dict");
191
- ```
192
-
193
- A collection of string to value mappings backed by a plain
194
- JavaScript object. The keys are mangled to prevent collisions with
195
- JavaScript properties.
196
-
197
- ### Heap(values, equals, compare)
198
-
199
- ```javascript
200
- var Heap = require("collections/heap");
201
- ```
202
-
203
- A collection that can always quickly (constant time) report its
204
- largest value, with reasonable performance for incremental changes
205
- (logarithmic), using a contiguous array as its backing storage.
206
- However, it does not track the sorted order of its elements.
207
-
208
- ### Iterator(iterable)
209
-
210
- ```javascript
211
- var Iterator = require("collections/iterator");
212
- ```
213
-
214
- A wrapper for any iterable that implements `iterate` or iterator the
215
- implements `next`, providing a rich lazy traversal interface.
216
-
217
- ### Array
218
-
219
- ```javascript
220
- require("collections/shim-array");
221
- ```
222
-
223
- An ordered collection of values with fast random access, push, and
224
- pop, but slow splice. The `array` module provides extensions so it
225
- hosts all the expressiveness of other collections. The `shim-array`
226
- module shims EcmaScript 5 methods onto the array prototype if they
227
- are not natively implemented.
228
-
229
- ### Object
230
-
231
- ```javascript
232
- require("collections/shim-object");
233
- ```
234
-
235
- Can be used as a mapping of owned string keys to arbitrary values.
236
- The `object` module provides extensions for the `Object` constructor
237
- that support the map collection interface and can delegate to
238
- methods of collections, allowing them to gracefully handle both
239
- object literals and collections.
240
-
241
- ## Constructor Arguments
242
-
243
- For all of these constructors, the argument `values` is an optional
244
- collection of initial values, and may be an array. If the `values` are
245
- in a map collection, the the values are taken, but the keys are ignored.
246
-
247
- ### map
248
-
249
- The `map` argument is an optional collection to copy shallowly into
250
- the new mapping. The `map` may be an object literal. If `map`
251
- implements `keys`, it is treated as a mapping itself and copied.
252
- Otherwise, if `map` implements `forEach`, it may be any collection
253
- of `[key, value]` pairs.
254
-
255
- `equals(x, y)`, `compare(x, y)`, and `hash(value)` are all optional
256
- arguments overriding the meaning of equality, comparability, and
257
- consistent hashing for the purposes of the collection. `equals` must
258
- return a boolean. `compare` must return an integer with the same
259
- relationship to zero as x to y. `hash` should consistently return the
260
- same string for any given object.
261
-
262
- ### equals(x, y)
263
-
264
- The default `equals` operator is implemented in terms of `===`, but
265
- treats `NaN` as equal to itself and `-0` as distinct from `+0`. It
266
- also delegates to an `equals` method of either the left or right
267
- argument if one exists. The default equality operator is shimmed as
268
- `Object.equals`.
269
-
270
- ### compare(x, y)
271
-
272
- The default `compare` operator is implemented in terms of `<` and
273
- `>`. It delegates to the `compare` method of either the left or
274
- right argument if one exists. It inverts the result if it uses the
275
- falls to the right argument. The default comparator is shimmed as
276
- `Object.compare`.
277
-
278
- ### hash(value)
279
-
280
- The default `hash` operator uses `toString` for values and provides
281
- a [Unique Label][] for arbitrary objects. The default hash is
282
- shimmed as `Object.hash`.
283
-
284
- [Unique Label]: (http://wiki.ecmascript.org/doku.php?id=harmony:weak_maps#unique_labeler)
285
-
286
- ### getDefault(key or value)
287
-
288
- The default `getDefault` function is `Function.noop`, which returns
289
- `undefined`. The fallback function is used when you `get` a
290
- nonexistant value from any collection. The `getDefault` function
291
- becomes a member of the collection object, so `getDefault` is called
292
- with the collection as `this`, so you can also use it to guarantee
293
- that default values in a collection are retained, as in `MultiMap`.
294
-
295
-
296
- ## Collection Methods
297
-
298
- Where these methods coincide with the specification of an existing
299
- method of Array, Array is noted as an implementation. `Array+` refers
300
- to shimmed arrays, as installed with the `array` module. `Object`
301
- refers to methods implemented on the `Object` constructor function, as
302
- opposed to the `Object.prototype`. `Object+` in turn refers to methods
303
- shimmed on the object constructor by the `object` module. These
304
- functions accept the object as the first argument instead of the `this`
305
- implied argument. ~~Strikethrough~~ indicates an implementation that
306
- should exist but has not yet been made (Send a pull request!).
307
-
308
- These are all of the collections:
309
-
310
- (Array, Array+, Object+, Iterator, List, Set, Map, MultiMap, WeakMap,
311
- SortedSet, SortedMap, LruSet, LruMap, SortedArray, SortedArraySet,
312
- SortedArrayMap, FastSet, FastMap, Dict)
313
-
314
- ### has
315
-
316
- #### has(key)
317
-
318
- Whether a value for the given key exists.
319
-
320
- (Object+, Map, MultiMap, SortedMap, LruMap, SortedArrayMap, FastMap,
321
- Dict)
322
-
323
- #### has(value, opt_equals)
324
-
325
- Whether a value exists in this collection. This is slow for list
326
- (linear), but fast (logarithmic) for SortedSet and SortedArraySet,
327
- and very fast (constant) for Set.
328
-
329
- (Array+, List, Set, SortedSet, LruSet, SortedArray, SortedArraySet,
330
- FastSet)
331
-
332
- ### get
333
-
334
- #### get(key or index)
335
-
336
- The value for a key. If a Map or SortedMap lacks a key, returns
337
- `getDefault(key)`.
338
-
339
- (Array+, Map, SortedMap, SortedArrayMap, WeakMap, Object+)
340
-
341
- #### get(value)
342
-
343
- Gets the equivalent value, or falls back to `getDefault(value)`.
344
-
345
- (List, Set, SortedSet, LruSet, SortedArray, SortedArraySet, FastSet)
346
-
347
- ### set(key or index, value)
348
-
349
- Sets the value for a key.
350
-
351
- (Map, MultiMap, WeakMap, SortedMap, LruMap, SortedArrayMap, FastMap,
352
- Dict)
353
-
354
- ### add
355
-
356
- #### add(value)
357
-
358
- Adds a value. Ignores the operation and returns false if an
359
- equivalent value already exists.
360
-
361
- (Array+, List, Set, SortedSet, LruSet, SortedArray, SortedArraySet,
362
- FastSet, Heap)
363
-
364
- #### add(value, key)
365
-
366
- Aliases `set(key, value)`, to assist generic methods used for maps,
367
- sets, and other collections.
368
-
369
- ### addEach
370
-
371
- #### addEach(values)
372
-
373
- Copies values from another collection to this one.
374
-
375
- (Array+, List, Set, SortedSet, LruSet, SortedArray, SortedArraySet,
376
- FastSet, Heap)
377
-
378
- #### addEach(mapping)
379
-
380
- Copies entries from another collection to this map. If the mapping
381
- implements `keys` (indicating that it is a mapping) and `forEach`,
382
- all of the key value pairs are copied. If the mapping only
383
- implements `forEach`, it is assumed to contain `[key, value]` arrays
384
- which are copied instead.
385
-
386
- (Object+, Map, MultiMap, SortedMap, LruMap, SortedArrayMap, FastMap,
387
- Dict)
388
-
389
- ### delete
390
-
391
- #### delete(key)
392
-
393
- Deletes the value for a given key. Returns whether the key was
394
- found.
395
-
396
- (Map, MultiMap, WeakMap, SortedMap, LruMap, SortedArrayMap, FastMap,
397
- Dict)
398
-
399
- #### delete(value)
400
-
401
- Deletes a value. Returns whether the value was found.
402
-
403
- (Set, SortedSet, LruSet, SortedArray, SortedArraySet, FastSet, Heap)
404
-
405
- #### delete(value, equals)
406
-
407
- Deletes the equivalent value. Returns whether the value was found.
408
-
409
- (Array+, List)
410
-
411
- ### deleteEach(values or keys)
412
-
413
- Deletes every value or every value for each key.
414
-
415
- (Array+, List, Set, Map, MultiMap, SortedSet, SortedMap,
416
- LruSet, LruMap, SortedArray, SortedArraySet, SortedArrayMap,
417
- FastSet, FastMap, Dict, Heap)
418
-
419
- ### indexOf(value)
420
-
421
- Returns the position in the collection of a value, or `-1` if it is
422
- not found. Returns the position of the first of equivalent values.
423
- For an Array this takes linear time. For a SortedArray and
424
- SortedArraySet, it takes logarithmic time to perform a binary
425
- search. For a SortedSet, this takes ammortized logarithmic time
426
- since it incrementally updates the number of nodes under each
427
- subtree as it rotates.
428
-
429
- (Array, ~~List~~, SortedSet, SortedArray, SortedArraySet)
430
-
431
- ### lastIndexOf(value)
432
-
433
- Returns the position in the collection of a value, or `-1` if it is
434
- not found. Returns the position of the last of equivalent values.
435
-
436
- (Array, ~~List~~, SortedArray, SortedArraySet)
437
-
438
- ### find(value, opt_equals)
439
-
440
- Finds a value. For List and SortedSet, returns the node at which
441
- the value was found. For SortedSet, the optional `equals` argument
442
- is ignored.
443
-
444
- (Array+, List, SortedSet)
445
-
446
- ### findLast(value, opt_equals)
447
-
448
- Finds the last equivalent value, returning the node at which the
449
- value was found.
450
-
451
- (Array+, List, SortedArray, SortedArraySet)
452
-
453
- ### findLeast()
454
-
455
- Finds the smallest value, returning the node at which it was found,
456
- or undefined. This is fast (logarithmic) and performs no rotations.
457
-
458
- (SortedSet)
459
-
460
- ### findLeastGreaterThan(value)
461
-
462
- Finds the smallest value greater than the given value. This is fast
463
- (logarithic) but does cause rotations.
464
-
465
- (SortedSet)
466
-
467
- ### findLeastGreaterThanOrEqual(value)
468
-
469
- Finds the smallest value greater than or equal to the given value.
470
- This is fast (logarithmic) but does cause rotations.
471
-
472
- (SortedSet)
473
-
474
- ### findGreatest()
475
-
476
- (SortedSet)
477
-
478
- ### findGreatestLessThan(value)
479
-
480
- (SortedSet)
481
-
482
- ### findGreatestLessThanOrEqual(value)
483
-
484
- (SortedSet)
485
-
486
- ### push
487
-
488
- #### push(...values)
489
-
490
- Adds values to the end of a collection.
491
-
492
- (Array, List)
493
-
494
- #### push(...values) for non-dequeues
495
-
496
- Adds values to their proper places in a collection.
497
- This method exists only to have the same interface as other
498
- collections.
499
-
500
- (Set, SortedSet, LruSet, SortedArray, SortedArraySet, FastSet, Heap)
501
-
502
- ### unshift
503
-
504
- #### unshift(...values)
505
-
506
- Adds values to the beginning of a collection.
507
-
508
- (Array, List)
509
-
510
- #### unshift(...values) for non-dequeues
511
-
512
- Adds values to their proper places in a collection.
513
- This method exists only to have the same interface as other
514
- collections.
515
-
516
- (Set, SortedSet, LruSet, SortedArray, SortedArraySet, FastSet)
517
-
518
- ### pop()
519
-
520
- Removes and returns the value at the end of a collection. For a
521
- Heap, this means the greatest contained value, as defined by the
522
- comparator.
523
-
524
- (Array, List, Set, SortedSet, LruSet, SortedArray, SortedArraySet,
525
- Heap)
526
-
527
- ### shift()
528
-
529
- Removes and returns the value at the beginning of a collection.
530
-
531
- (Array, List, Set, SortedSet, LruSet, SortedArray, SortedArraySet)
532
-
533
- ### peek()
534
-
535
- Returns the last value in an ordered collection.
536
-
537
- (List)
538
-
539
- ### poke(value)
540
-
541
- Replaces the last value in an ordered collection.
542
-
543
- (List)
544
-
545
- ### slice(start, end)
546
-
547
- Returns an array of the values contained in the
548
- half-open interval [start, end), that is, including the start and
549
- excluding the end. For lists and arrays, both terms may be numeric
550
- positive or negative indicies. For a list, either term may be a
551
- node.
552
-
553
- (Array, List, SortedSet, SortedArray, SortedArraySet)
554
-
555
- ### splice(start, length, ...values)
556
-
557
- Works as with an array, but for a list, the start may be an index or
558
- a node.
559
-
560
- (Array, List, SortedArray, SortedSet, SortedArraySet)
561
-
562
- ### swap(start, length, values)
563
-
564
- Performs a splice without variadic arguments.
565
-
566
- (Array+, List, SortedArray, SortedSet, SortedArraySet)
567
-
568
- ### clear()
569
-
570
- Deletes the all values.
571
-
572
- (Array+, Object+, List, Set, Map, MultiMap, SortedSet,
573
- SortedMap, LruSet, LruMap, SortedArray, SortedArraySet,
574
- SortedArrayMap, FastSet, FastMap, Dict, Heap)
575
-
576
- ### sort(compare)
577
-
578
- Sorts a collection in place. The comparator by only be a function.
579
- The default comparator coerces unlike types rather than fail to
580
- compare.
581
-
582
- (Array)
583
-
584
- ### sorted(compare, by, order)
585
-
586
- Returns a collection as an array in sorted order. Accepts an
587
- optional `compare(x, y)` function, `by(property(x))` function, and
588
- `order` indicator, `-1` for descending, `1` for ascending, `0` for
589
- stable.
590
-
591
- Instead of a `compare` function, the comparator can be an object
592
- with `compare` and `by` functions. The default `compare` value is
593
- `Object.compare`.
594
-
595
- The `by` function must be a function that accepts a value from the
596
- collection and returns a representative value on which to sort.
597
-
598
- (Array+, List, Set, Map, SortedSet, LruSet, SortedArray,
599
- SortedArraySet, FastSet, Heap)
600
-
601
- ### group(callback, thisp, equals)
602
-
603
- Returns an array of [key, equivalence class] pairs where every
604
- element from the collection is placed into an equivalence class
605
- if they have the same corresponding return value from the given
606
- callback.
607
-
608
- (Array+, Object+, List, Set, Map, MultiMap, SortedSet,
609
- SortedMap, LruSet, LruMap, SortedArray, SortedArraySet,
610
- SortedArrayMap, FastSet, FastMap, Dict, Heap, Iterator)
611
-
612
- ### reverse()
613
-
614
- Reverses a collection in place.
615
-
616
- (Array, List)
617
-
618
- ### reversed()
619
-
620
- Returns a collection of the same type with this collection's
621
- contents in reverse order.
622
-
623
- (Array, List)
624
-
625
- ### enumerate(start=0)
626
-
627
- Returns an array of [index, value] pairs from the source collection,
628
- starting with the given index.
629
-
630
- ### join(delimiter="")
631
-
632
- Returns a string of all the values in the collection joined.
633
-
634
- (Array, List, Set, SortedSet, LruSet, SortedArray, SortedArraySet,
635
- FastSet, Heap, Iterator)
636
-
637
- ### concat(...iterables)
638
-
639
- Produces a new collection of the same type containing all the values
640
- of itself and the values of any number of other collections. Favors
641
- the last of duplicate values. For map-like objects, the given
642
- iterables are treated as map-like objects and each successively
643
- updates the result. Array is like a map from index to value. List,
644
- Set, and SortedSet are like maps from nodes to values.
645
-
646
- (Array, ~~Object+~~, Iterator, List, Set, Map, MultiMap,
647
- SortedSet, SortedMap, LruSet, LruMap, SortedArray, SortedArraySet,
648
- SortedArrayMap, FastSet, FastMap, Dict, Heap)
649
-
650
- ### keys()
651
-
652
- Returns an array of the keys.
653
-
654
- (Object, Map, MultiMap, SortedMap, LruMap, SortedArrayMap, FastMap,
655
- Dict)
656
-
657
- ### values()
658
-
659
- Returns an array of the values
660
-
661
- (Object+, Map, MultiMap, SortedMap, LruMap, SortedArrayMap, FastMap,
662
- Dict)
663
-
664
- ### entries()
665
-
666
- Returns an array of `[key, value]` pairs for each entry.
667
-
668
- (Object+, Map, MultiMap, SortedMap, LruMap, SortedArrayMap, FastMap,
669
- Dict)
670
-
671
- ### reduce(callback(result, value, key, object, depth), basis, thisp)
672
-
673
- (Array, Iterator, List, Set, Map, MultiMap, SortedSet, SortedMap,
674
- LruSet, LruMap, SortedArray, SortedArraySet, SortedArrayMap,
675
- FastSet, FastMap, Dict, Heap)
676
-
677
- ### reduceRight(callback(result, value, key, object, depth), basis, thisp)
678
-
679
- (Array, List, SortedSet, ~~SortedMap~~, SortedArray, SortedArraySet,
680
- ~~SortedArrayMap~~, Heap)
681
-
682
- ### forEach(callback(value, key, object, depth), thisp)
683
-
684
- Calls the callback for each value in the collection. The iteration
685
- of lists is resilient to changes to the list. Particularly, nodes
686
- added after the current node will be visited and nodes added before
687
- the current node will be ignored, and no node will be visited twice.
688
-
689
- (Array, Object+, Iterator, List, Set, Map, MultiMap, WeakMap,
690
- SortedSet, SortedMap, LruSet, LruMap, SortedArray, SortedArraySet,
691
- SortedArrayMap, FastSet, FastMap, Dict, Heap)
692
-
693
- ### map(callback(value, key, object, depth), thisp)
694
-
695
- (Array, Object+, Iterator, List, Set, Map, MultiMap, WeakMap,
696
- SortedSet, SortedMap, LruSet, LruMap, SortedArray, SortedArraySet,
697
- SortedArrayMap, FastSet, FastMap, Dict, Heap)
698
-
699
- ### toArray()
700
-
701
- (Array+, Iterator, List, Set, Map, MultiMap, SortedSet, SortedMap,
702
- LruSet, LruMap, SortedArray, SortedArraySet, SortedArrayMap,
703
- FastSet, FastMap, Dict, Heap)
704
-
705
- ### toObject()
706
-
707
- Converts any collection to an object, treating this collection as a
708
- map-like object. Array is like a map from index to value.
709
-
710
- (Array+ Iterator, List, Map, MultiMap, SortedMap, LruMap,
711
- SortedArrayMap, FastMap, Dict, Heap)
712
-
713
- ### filter(callback(value, key, object, depth), thisp)
714
-
715
- (Array, Iterator, List, Set, Map, MultiMap, SortedSet, SortedMap,
716
- LruSet, LruMap, SortedArray, SortedArraySet, SortedArrayMap,
717
- FastSet, FastMap, Dict, Heap)
718
-
719
- ### every(callback(value, key, object, depth), thisp)
720
-
721
- Whether every value passes a given guard. Stops evaluating the
722
- guard after the first failure. Iterators stop consuming after the
723
- the first failure.
724
-
725
- (Array, Iterator, List, Set, Map, MultiMap, SortedSet, SortedMap,
726
- LruSet, LruMap, SortedArray, SortedArraySet, SortedArrayMap,
727
- FastSet, FastMap, Dict, Heap)
728
-
729
- ### some(callback(value, key, object, depth), thisp)
730
-
731
- Whether there is a value that passes a given guard. Stops
732
- evaluating the guard after the first success. Iterators stop
733
- consuming after the first success.
734
-
735
- (Array, Iterator, List, Set, Map, MultiMap, SortedSet, SortedMap,
736
- LruSet, LruMap, SortedArray, SortedArraySet, SortedArrayMap,
737
- FastSet, FastMap, Dict, Heap)
738
-
739
- ### any()
740
-
741
- Whether any value is truthy.
742
-
743
- (Array+, Iterator, List, Set, Map, MultiMap, SortedSet, SortedMap,
744
- LruSet, LruMap, SortedArray, SortedArraySet, SortedArrayMap,
745
- FastSet, FastMap, Dict, Heap)
746
-
747
- ### all()
748
-
749
- Whether all values are truthy.
750
-
751
- (Array+, Iterator, List, Set, Map, MultiMap, SortedSet, SortedMap,
752
- LruSet, LruMap, SortedArray, SortedArraySet, SortedArrayMap,
753
- FastSet, FastMap, Dict, Heap)
754
-
755
- ### min()
756
-
757
- The smallest value. This is fast for sorted collections (logarithic
758
- for SortedSet, constant for SortedArray, SortedArraySet, and
759
- SortedArrayMap), but slow for everything else (linear).
760
-
761
- (Array+, Iterator, List, Set, Map, MultiMap, SortedSet, SortedMap,
762
- LruSet, LruMap, SortedArray, SortedArraySet, SortedArrayMap,
763
- FastSet, FastMap, Dict)
764
-
765
- ### max()
766
-
767
- The largest value. This is fast for sorted collections (logarithic
768
- for SortedSet, constant for SortedArray, SortedArraySet, and
769
- SortedArrayMap), but slow for everything else (linear).
770
-
771
- (Array+, Iterator, List, Set, Map, MultiMap, SortedSet, SortedMap,
772
- LruSet, LruMap, SortedArray, SortedArraySet, SortedArrayMap,
773
- FastSet, FastMap, Dict, Heap)
774
-
775
- ### one()
776
-
777
- Any single value, or throws an exception if there are no values. This
778
- is very fast (constant time) for most collections. For a sorted set,
779
- `set.root.value` is always very fast to access, but changes whenever you
780
- *access* a value, including using `has` or `find`. In the interest of
781
- being consistent across accesses, and only changing in response to
782
- mutation, `one` returns the `min` of the set in logarithmic time.
783
-
784
- (Array+, List, Set, Map, MultiMap, SortedSet, SortedMap, LruSet,
785
- LruMap, SortedArray, SortedArray, SortedArraySet, SortedArrayMap,
786
- FastSet, FastMap, Dict, Heap)
787
-
788
- ### only()
789
-
790
- The one and only value, or throws an exception if there are no
791
- values or more than one value.
792
-
793
- (Array+, List, Set, Map, MultiMap, SortedSet, SortedMap, LruSet,
794
- LruMap, SortedArray, SortedArray, SortedArraySet, SortedArrayMap,
795
- FastSet, FastMap, Dict, Heap)
796
-
797
- ### sum()
798
-
799
- (Array+, Iterator, List, Set, Map, MultiMap, SortedSet,
800
- SortedMap, LruSet, LruMap, SortedArray, SortedArraySet,
801
- SortedArrayMap, FastSet, FastMap, Dict)
802
-
803
- ### average()
804
-
805
- (Array+, Iterator, List, Set, Map, MultiMap, SortedSet,
806
- SortedMap, LruSet, LruMap, SortedArray, SortedArraySet,
807
- SortedArrayMap, FastSet, FastMap, Dict)
808
-
809
- ### flatten()
810
-
811
- (Array+, Iterator, List, Set, Map, MultiMap, SortedSet,
812
- SortedMap, LruSet, LruMap, SortedArray, SortedArraySet,
813
- SortedArrayMap, FastSet, FastMap, Dict, Heap)
814
-
815
- ### zip(...collections)
816
-
817
- (Array+, Iterator, List, Set, Map, MultiMap, SortedSet,
818
- SortedMap, LruSet, LruMap, SortedArray, SortedArraySet,
819
- SortedArrayMap, FastSet, FastMap, Dict, Heap)
820
-
821
- ### enumrate(zero)
822
-
823
- (Array+, Iterator, List, Set, Map, MultiMap, SortedSet, SortedMap,
824
- LruSet, LruMap, SortedArray, SortedArraySet, SortedArrayMap,
825
- FastSet, FastMap, Dict, Heap)
826
-
827
- ### clone(depth, memo)
828
-
829
- Replicates the collection. Clones the values deeply, to the
830
- specified depth, using the memo to resolve reference cycles. (which
831
- must the `has` and `set` parts of the Map interface, allowing
832
- objects for keys) The default depth is infinite and the default
833
- memo is a WeakMap.
834
-
835
- `Object.clone` can replicate object literals inheriting directly
836
- from `Object.prototype` or `null`, or any object that implements
837
- `clone` on its prototype. Any other object causes `clone` to throw
838
- an exception.
839
-
840
- The `clone` method on any other objects is not intended to be used
841
- directly since they do not necessarily supply a default depth and
842
- memo.
843
-
844
- (Array+, Object+, List, Set, Map, MultiMap, SortedSet,
845
- SortedMap, LruSet, LruMap, SortedArray, SortedArraySet,
846
- SortedArrayMap, FastSet, FastMap, Dict, Heap)
847
-
848
- ### constructClone(values)
849
-
850
- Replicates a collection shallowly. This is used by each `clone`
851
- implementation to create a new collection of the same type, with the
852
- same options (`equals`, `compare`, `hash` options), but it leaves
853
- the job of deeply cloning the values to the more general `clone`
854
- method.
855
-
856
- (Array+, Object+, List, Set, Map, MultiMap, SortedSet,
857
- SortedMap, LruSet, LruMap, SortedArray, SortedArraySet,
858
- SortedArrayMap, FastSet, FastMap, Dict, Heap)
859
-
860
- ### equals(that, equals)
861
-
862
- (Array+, Object+, List, Set, Map, MultiMap, SortedSet, SortedMap,
863
- LruSet, LruMap, ~~SortedArray~~, SortedArraySet, SortedArrayMap,
864
- FastSet, FastMap, Dict)
865
-
866
- ### compare(that)
867
-
868
- (Array+, Object+, List, ~~SortedArray~~, ~~SortedArraySet~~)
869
-
870
- ### iterate
871
-
872
- #### iterate()
873
-
874
- Produces an iterator with a `next` method. You may elect to get
875
- richer iterators by wrapping this iterator with an `Iterator` from
876
- the `iterator` module. Iteration order of lists is resilient to
877
- changes to the list.
878
-
879
- (Array+, Iterator, List, Set, SortedSet, LruSet, SortedArray,
880
- SortedArraySet, FastSet)
881
-
882
- #### iterate(start, end)
883
-
884
- Returns an iterator for all values at indicies in the half-open
885
- interval [start, end), that is, greater than start, and less than
886
- end.
887
-
888
- (Array+)
889
-
890
- #### iterate(start, end)
891
-
892
- Returns an iterator for all values in the half-open interval [start,
893
- end), that is, greater than start, and less than end. The iterator
894
- is resilient against changes to the data.
895
-
896
- (SortedSet)
897
-
898
- ### log(charmap, callback(node, write, writeAbove), log, logger)
899
-
900
- Writes a tree describing the internal state of the data structure to
901
- the console.
902
-
903
- `charmap` is an object that notes which characters to use to draw
904
- lines. By default, this is the `TreeLog.unicodeRound` property from the
905
- `tree-log` module. `TreeLog.unicodeSharp` and `TreeLog.ascii` are
906
- alternatives. The properties are:
907
-
908
- - intersection: ╋
909
- - through: ━
910
- - branchUp: ┻
911
- - branchDown: ┳
912
- - fromBelow: ╭
913
- - fromAbove: ╰
914
- - fromBoth: ┣
915
- - strafe: ┃
916
-
917
- `callback` is a customizable function for rendering each node of the tree.
918
- By default, it just writes the value of the node. It accepts the node and
919
- a writer functions. The `write` function produces the line on which the
920
- node joins the tree, and each subsequent line. The `writeAbove` function
921
- can write lines before the branch.
922
-
923
- `log` and `logger` default to `console.log` and `console`. To write
924
- the representation to an array instead, they can be `array.push` and
925
- `array`.
926
-
927
- (SortedSet)
928
-
929
-
930
- ### Iterator
931
-
932
- #### dropWhile(callback(value, index, iterator), thisp)
933
-
934
- #### takeWhile(callback(value, index, iterator), thisp)
935
-
936
- #### mapIterator(callback(value, index, iterator))
937
-
938
- Returns an iterator for a mapping on the source values. Values are
939
- consumed on demand.
940
-
941
- #### filterIterator(callback(value, index, iterator))
942
-
943
- Returns an iterator for those values from the source that pass the
944
- given guard. Values are consumed on demand.
945
-
946
- #### zipIterator(...iterables)
947
-
948
- Returns an iterator that incrementally combines the respective
949
- values of the given iterations.
950
-
951
- #### enumerateIterator(start = 0)
952
-
953
- Returns an iterator that provides [index, value] pairs from the
954
- source iteration.
955
-
956
-
957
- ### Iterator utilities
958
-
959
- #### cycle(iterable, times)
960
-
961
- #### concat(iterables)
962
-
963
- #### transpose(iterables)
964
-
965
- #### zip(...iterables)
966
-
967
- Variadic transpose.
968
-
969
- #### chain(...iterables)
970
-
971
- Variadic concat.
972
-
973
- #### range(start, stop, step)
974
-
975
- Iterates from start to stop by step.
976
-
977
- #### count(start, step)
978
-
979
- Iterates from start by step, indefinitely.
980
-
981
- #### repeat(value, times)
982
-
983
- Repeats the given value either finite times or indefinitely.
984
-
985
-
986
- ## Change Listeners
987
-
988
- All collections support change listeners. There are three types of
989
- changes. Property changes, map changes, and range changes.
990
-
991
- ### Property Changes
992
-
993
- `PropertyChanges` from the `listen/property-changes` module can
994
- configure listeners for property changes to specific keys of any object.
995
-
996
- With the `listen/array-changes` module required, `PropertyChanges` can
997
- also listen to changes to the length and indexed properties of an array.
998
- The only caveat is that watched arrays can only modify their contents
999
- with method calls like `array.push`. All methods of a watched array
1000
- support change dispatch. In addition, arrays have a `set` method to
1001
- make setting the value at a particular index observable.
1002
-
1003
- - PropertyChanges.addOwnPropertyChangeListener(object, key, listener, before)
1004
- - PropertyChanges.removeOwnPropertyChangeListener(object, key, listener, before)
1005
- - PropertyChanges.dispatchOwnPropertyChange(object, key, value, before)
1006
- - PropertyChanges.addBeforeOwnPropertyChangeListener(object, key, listener)
1007
- - PropertyChanges.removeBeforeOwnPropertyChangeListener(object, key, listener)
1008
- - PropertyChanges.dispatchBeforeOwnPropertyChange(object, key, value)
1009
- - PropertyChanges.getOwnPropertyChangeDescriptor(object, key)
1010
-
1011
- All of these functions delegate to methods of the same name if one
1012
- exists on the object.
1013
-
1014
- - object.addOwnPropertyChangeListener(key, listener, before)
1015
- - object.removeOwnPropertyChangeListener(key, listener, before)
1016
- - object.dispatchOwnPropertyChange(key, value, before)
1017
- - object.addBeforeOwnPropertyChangeListener(key, listener)
1018
- - object.removeBeforeOwnPropertyChangeListener(key, listener)
1019
- - object.dispatchBeforeOwnPropertyChange(key, value)
1020
- - object.getOwnPropertyChangeDescriptor(key)
1021
-
1022
- Additionally, `PropertyChanges.prototype` can be **mixed into** other
1023
- types of objects to support the property change dispatch interface. All
1024
- collections support this interface.
1025
-
1026
- The **listener** for a property change receives the arguments `value`,
1027
- `key`, and `object`, just as a `forEach` or `map` callback. The
1028
- listener may alternately be a delegate object that implements one of
1029
- these methods:
1030
-
1031
- - listener.handle + **key** + Change **or** WillChange
1032
- - listener.handleProperty + Change **or** WillChange
1033
- - listener.call
1034
-
1035
- ### Map Changes
1036
-
1037
- A map change listener receives notifications for the creation, removal,
1038
- or updates for any entry in a map data structure.
1039
-
1040
- With the `listen/array-changes` module required, `Array` can also
1041
- dispatch map changes for the values at each index.
1042
-
1043
- - collection.addMapChangeListener(listener, token, before)
1044
- - collection.removeMapChangeListener(listener, token, before)
1045
- - collection.dispatchMapChange(key, value, before)
1046
- - collection.addBeforeMapChangeListener(listener)
1047
- - collection.removeBeforeMapChangeListener(listener)
1048
- - collection.dispatchBeforeMapChange(key, value)
1049
- - collection.getMapChangeDescriptor()
1050
-
1051
- The **listener** for a map change receives the `value`, `key`, and
1052
- collection `object` as arguments, the same pattern as a `forEach` or
1053
- `map` callback. In the after change phase, a value of `undefined` may
1054
- indicate that the value was deleted or set to `undefined`. In the
1055
- before change phase, a value of `undefined` may indicate the the value
1056
- was added or was previously `undefined`.
1057
-
1058
- The listener may be a delegate object with one of the following methods,
1059
- in order of precedence:
1060
-
1061
- - listener.handleMap + Change **or** WillChange
1062
- - listener.handle + **token** + Map + Change **or** WillChange
1063
- - listener.call
1064
-
1065
- The `listen/map-changes` module exports a map changes **mixin**. The
1066
- methods of `MaxChanges.prototype` can be copied to any collection that
1067
- needs this interface. Its mutation methods will then need to dispatch
1068
- map changes.
1069
-
1070
- ### Range Changes
1071
-
1072
- A range change listener receives notifications when a range of values at
1073
- a particular position is added, removed, or replaced within an ordered
1074
- collection.
1075
-
1076
- - collection.**add**RangeChange**Listener**(listener, token, before)
1077
- - collection.**remove**RangeChange**Listener**(listener, token, before)
1078
- - collection.**dispatch**RangeChange(plus, minus, index, before)
1079
- - collection.add**Before**RangeChange**Listener**(listener)
1080
- - collection.remove**Before**RangeChange**Listener**(listener)
1081
- - collection.dispatch**Before**RangeChange(plus, minus, index)
1082
- - collection.**get**RangeChange**Descriptor**()
1083
-
1084
- The **listener** for a range change is a function that accepts `plus`,
1085
- `minus`, and `index` arguments. `plus` and `minus` are the values that
1086
- were added or removed at the `index`. Whatever operation caused these
1087
- changes is equivalent to:
1088
-
1089
- ```javascript
1090
- var minus = collection.splice(index, minus.length, ...plus)
1091
- ```
1092
-
1093
- The listener can alternately be a delegate object with one of the
1094
- following methods in order of precedence:
1095
-
1096
- - handle + **token** + Range + Change **or** WillChange
1097
- - handleRange + Change **or** WillChange
1098
- - call
1099
-
1100
- The following support range change dispatch:
1101
-
1102
- - `Array` with `require("collections/listen/array-changes")`
1103
- - `SortedSet`
1104
- - `SortedArray`
1105
- - `SortedArraySet`
1106
-
1107
- The `listen/range-changes` module exports a range changes **mixin**.
1108
- The methods of `RangeChanges.prototype` can be copied to any collection
1109
- that needs this interface. Its mutation methods will need to dispatch
1110
- the range changes.
1111
-
1112
- All **descriptors** are objects with the properties `changeListeners`
1113
- and `willChangeListeners`. Both are arrays of listener functions or
1114
- objects, in the order in which they were added.
1115
-
1116
-
1117
- ## Miscellanea
1118
-
1119
- ### Set and Map
1120
-
1121
- Set and map are like hash tables, but not implemented with a block of
1122
- memory as they would be in a lower-level language. Most of the work of
1123
- providing fast insertion and lookup based on a hash is performed by the
1124
- underlying plain JavaScript object. Each key of the object is a hash
1125
- string and each value is a List of values with that hash. The inner
1126
- list resolves collisions. With a good `hash` method, the use of the
1127
- list can be avoided.
1128
-
1129
- Sets and maps both have a `log` function that displays the internal
1130
- structure of the bucket list in an NPM-style.
1131
-
1132
- ```
1133
- ┣━┳ 1
1134
- ┃ ┗━━ {"key":1,"value":"a"}
1135
- ┣━┳ 2
1136
- ┃ ┣━━ {"key":2,"value":"c"}
1137
- ┃ ┗━━ {"key":2,"value":"d"}
1138
- ┗━┳ 3
1139
- ┗━━ {"key":3,"value":"b"}
1140
- ```
1141
-
1142
-
1143
- ### Sorted Set and Sorted Map
1144
-
1145
- A binary splay tree is a balanced binary tree that rotates the most
1146
- frequently used entries toward the root such that they can be accessed the
1147
- most quickly. `sorted-set` and `sorted-map` are backed by a splay tree.
1148
-
1149
- All map implementations use an underlying set implementation. Any map
1150
- can be implemented trivially atop a set by wrapping `compare`, `equals`,
1151
- or `hash` to operate on the key of an entry.
1152
-
1153
- The sorted set has a `root` node. Each node has a `left` and `right`
1154
- property, which may be null. Nodes are returned by all of the "find"
1155
- functions, and provided as the `key` argument to callbacks.
1156
-
1157
- Both `sorted-set` and `sorted-map` implement a `log` function which can
1158
- produce NPM-style visualizations of the internal state of the sorted
1159
- tree.
1160
-
1161
- ```
1162
- > set.log(SortedSet.ascii)
1163
- .-+ -3
1164
- | '-- -2
1165
- .-+ -1
1166
- + 0
1167
- | .-- 1
1168
- '-+ 2
1169
- '-- 3
1170
- ```
1171
-
1172
- ```
1173
- > set.log(SortedSet.unicodeRound)
1174
- ╭━┳ -3
1175
- ┃ ╰━━ -2
1176
- ╭━┻ -1
1177
- ╋ 0
1178
- ┃ ╭━┳ 1
1179
- ┃ ┃ ╰━━ 2
1180
- ╰━┻ 3
1181
- ```
1182
-
1183
-
1184
- ### Object and Function Shims
1185
-
1186
- The collection methods on the `Object` constructor all polymorphically
1187
- delegate to the corresponding method of any object that implements the
1188
- method of the same name. So, `Object.has` can be used to check whether
1189
- a key exists on an object, or in any collection that implements `has`.
1190
- This permits the `Object` interface to be agnostic of the input type.
1191
-
1192
- `Array.from` creates an array from any iterable.
1193
-
1194
- `Array.unzip` transposes a collection of arrays, so rows become columns.
1195
-
1196
- `Array.empty` is an empty array, frozen if possible. Do not modify it.
1197
-
1198
- `Object.from` creates an object from any map or collection. For arrays
1199
- and array-like collections, uses the index for the key.
1200
-
1201
- `Object.empty` is an empty object literal.
1202
-
1203
- `Object.isObject(value)` tests whether it is safe to attempt to access
1204
- properties of a given value.
1205
-
1206
- `Object.is(x, y)` compares objects for exact identity and is a good
1207
- alternative to `Object.equals` in many collections.
1208
-
1209
- `Object.getValueOf(value)` safely and idempotently returns the value of
1210
- an object or value by only calling the `valueOf()` if the value
1211
- implements that method.
1212
-
1213
- `Object.owns` is a shorthand for `Object.prototype.hasOwnProperty.call`.
1214
-
1215
- `Object.can(value, name)` checks whether an object implements a method
1216
- on its prototype chain. An owned function property does not qualify as
1217
- a method, to aid in distinguishing "static" functions.
1218
-
1219
- `Object.concat(...maps)` and `Object.from(entries)` construct an object
1220
- by adding the entries of other objects in order. The maps can be other
1221
- objects, arrays of entries, or map alike collections.
1222
-
1223
- `Function.noop` is returns undefined.
1224
-
1225
- `Function.identity` returns its first argument.
1226
-
1227
- `Function.by(relation)` creates a comparator from a relation function.
1228
-
1229
- `Function.get(key)` creates a relation that returns the value for the
1230
- property of a given object.
1231
-
1232
-
1233
- ### References
1234
-
1235
- - a SplayTree impementation buried in Fedor Indutny’s super-secret
1236
- [Callgrind](https://github.com/indutny/callgrind.js). This
1237
- implementation uses parent references.
1238
- - a SplayTree implementation adapted by [Paolo
1239
- Fragomeni](https://github.com/hij1nx/forest) from the V8 project and
1240
- based on the top-down splaying algorithm from "Self-adjusting Binary
1241
- Search Trees" by Sleator and Tarjan. This does not use or require
1242
- parent references, so I favored it over Fedor Indutny’s style.
1243
- - the interface of ECMAScript harmony [simple maps and
1244
- sets](http://wiki.ecmascript.org/doku.php?id=harmony:simple_maps_and_sets)
1245
- - a SplayTree implementation from [JavaScript data
1246
- structures](derrickburns/Javascript-Data-Structures) mainted by
1247
- Derrick Burns that supports change-resilient iterators and a
1248
- comprehensive set of introspection functions.
1249
-
1250
- ### Future work
1251
-
1252
- Goals
1253
-
1254
- - make array dispatch length property changes between range changes to
1255
- be consistent with List.
1256
- - automate the generation of the method support tables in readme and
1257
- normalize declaration order
1258
- - comprehensive specs and spec coverage tests
1259
- - array set (a set, for fast lookup, backed by an array for meaningful
1260
- range changes)
1261
- - fast list splicing
1262
- - dict map changes
1263
- - revise map changes to use separate handlers for add/delete
1264
- - revise tokens for range and map changes to specify complete alternate
1265
- delegate methods, particularly for forwarding directly to dispatch
1266
- - implement on/once/off listeners
1267
- - Make it easier to created a SortedSet with a criterion like
1268
- Function.by(Function.get('name'))
1269
- - evaluate exposing observeProperty, observeRangeChange, and observeMapChange
1270
- instead of the aEL/rEL inspired API FRB exposes today, to minimize
1271
- book-keeping and garbage collection
1272
-
1273
- More possible collections
1274
-
1275
- - sorted-list (sorted, can contain duplicates, perhaps backed by splay
1276
- tree with relaxation on the uniqueness invariant)
1277
- - sorted-multi-map (sorted, can contain duplicate entries)
1278
- - buffer (backed by a circular array, emits cull events)
1279
- - emit cull events in LRU cache set and map
1280
- - trie-set
1281
- - trie-map
1282
- - immutable-* (mutation functions return new objects that largely share
1283
- the previous version's internal state, some perhaps backed by a hash
1284
- trie)
1285
-