{"_id":"mori","_rev":"942713","name":"mori","description":"Persistent Data Structures for JavaScript","dist-tags":{"latest":"0.3.2"},"maintainers":[{"name":"dnolen","email":"david.nolen@gmail.com"}],"time":{"modified":"2021-09-23T02:08:55.000Z","created":"2012-05-11T22:29:53.480Z","0.3.2":"2015-01-16T02:58:41.861Z","0.3.1":"2015-01-16T02:23:26.874Z","0.3.0":"2015-01-16T01:50:57.914Z","0.2.9":"2014-07-16T16:48:50.814Z","0.2.8":"2014-07-11T16:16:57.165Z","0.2.6":"2014-04-04T17:56:17.883Z","0.2.5":"2014-01-29T06:40:04.974Z","0.2.4":"2013-09-28T01:02:32.611Z","0.2.3":"2013-08-22T13:20:27.285Z","0.2.2":"2013-08-21T13:07:05.651Z","0.2.1":"2013-06-27T13:18:04.415Z","0.2.0":"2013-05-18T16:19:34.130Z","0.1.0":"2012-05-11T22:29:53.480Z"},"users":{"garthk":true,"wenbing":true,"deepak_robo":true,"bamboo":true,"rockymadden":true,"dazld":true,"axelav":true,"shanewholloway":true,"smallhelm":true,"sopepos":true,"aliem":true,"scottfreecode":true,"danielbayley":true,"rogeruiz":true,"pixel67":true,"tztz":true},"author":{"name":"David Nolen","url":"https://github.com/swannodette"},"repository":{"type":"git","url":"git://github.com/swannodette/mori.git"},"versions":{"0.3.2":{"name":"mori","version":"0.3.2","description":"Persistent Data Structures for JavaScript","homepage":"https://github.com/swannodette/mori","author":{"name":"David Nolen","url":"https://github.com/swannodette"},"keywords":["data","structure","persistent","clojure","clojurescript","map","filter","reduce"],"contributors":[{"name":"David Nolen","url":"https://github.com/swannodette"}],"bugs":{"url":"https://github.com/swannodette/mori/issues"},"licenses":[{"type":"EPL","url":"https://raw.github.com/swannodette/mori/master/epl-v10.html"}],"main":"./mori.js","repository":{"type":"git","url":"git://github.com/swannodette/mori.git"},"engines":{"node":">=0.8.22"},"dependencies":{},"devDependencies":{"immutable":"3.5.0","jasmine-node":"1.7.0"},"scripts":{"build":"./scripts/build.sh","build-clean":"./scripts/build_clean.sh","clean":"./scripts/clean.sh","prepublish":"npm run-script build-clean","docs":"./scripts/docs.sh","test":"jasmine-node spec"},"directories":{"test":"./spec"},"gitHead":"391df0b7cadf12236c982588d8336b44cefd0fa2","_id":"mori@0.3.2","_shasum":"1a53da165287f3bef0cab62398c4931bece80a3f","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"dnolen","email":"david.nolen@gmail.com"},"maintainers":[{"name":"dnolen","email":"david.nolen@gmail.com"}],"dist":{"shasum":"1a53da165287f3bef0cab62398c4931bece80a3f","size":303504,"noattachment":false,"key":"/mori/-/mori-0.3.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/mori/download/mori-0.3.2.tgz"},"publish_time":1421377121861,"_cnpm_publish_time":1421377121861,"_hasShrinkwrap":false},"0.3.1":{"name":"mori","version":"0.3.1","description":"Persistent Data Structures for JavaScript","homepage":"https://github.com/swannodette/mori","author":{"name":"David Nolen","url":"https://github.com/swannodette"},"keywords":["data","structure","persistent","clojure","clojurescript","map","filter","reduce"],"contributors":[{"name":"David Nolen","url":"https://github.com/swannodette"}],"bugs":{"url":"https://github.com/swannodette/mori/issues"},"licenses":[{"type":"EPL","url":"https://raw.github.com/swannodette/mori/master/epl-v10.html"}],"main":"./mori.js","repository":{"type":"git","url":"git://github.com/swannodette/mori.git"},"engines":{"node":">=0.8.22"},"dependencies":{},"devDependencies":{"immutable":"3.5.0","jasmine-node":"1.7.0"},"scripts":{"build":"./scripts/build.sh","build-clean":"./scripts/build_clean.sh","clean":"./scripts/clean.sh","prepublish":"npm run-script build-clean","docs":"./scripts/docs.sh","test":"jasmine-node spec"},"directories":{"test":"./spec"},"gitHead":"ff39fea99604574a88716800ae87731f47820393","_id":"mori@0.3.1","_shasum":"b4c3c6755b3c5e29dc3b7b65e43d6a824dc78252","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"dnolen","email":"david.nolen@gmail.com"},"maintainers":[{"name":"dnolen","email":"david.nolen@gmail.com"}],"dist":{"shasum":"b4c3c6755b3c5e29dc3b7b65e43d6a824dc78252","size":303459,"noattachment":false,"key":"/mori/-/mori-0.3.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/mori/download/mori-0.3.1.tgz"},"publish_time":1421375006874,"_cnpm_publish_time":1421375006874,"_hasShrinkwrap":false},"0.3.0":{"name":"mori","version":"0.3.0","description":"Persistent Data Structures for JavaScript","homepage":"https://github.com/swannodette/mori","author":{"name":"David Nolen","url":"https://github.com/swannodette"},"keywords":["data","structure","persistent","clojure","clojurescript","map","filter","reduce"],"contributors":[{"name":"David Nolen","url":"https://github.com/swannodette"}],"bugs":{"url":"https://github.com/swannodette/mori/issues"},"licenses":[{"type":"EPL","url":"https://raw.github.com/swannodette/mori/master/epl-v10.html"}],"main":"./mori.js","repository":{"type":"git","url":"git://github.com/swannodette/mori.git"},"engines":{"node":">=0.8.22"},"dependencies":{},"devDependencies":{"immutable":"3.5.0","jasmine-node":"1.7.0"},"scripts":{"build":"./scripts/build.sh","build-clean":"./scripts/build_clean.sh","clean":"./scripts/clean.sh","prepublish":"npm run-script build-clean","docs":"./scripts/docs.sh","test":"jasmine-node spec"},"directories":{"test":"./spec"},"gitHead":"8776b311a4fe674e562cb903c7d0d3d7aa5ddf44","_id":"mori@0.3.0","_shasum":"760d0b6b307d6833092b8e9989bec7e23f25c719","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"dnolen","email":"david.nolen@gmail.com"},"maintainers":[{"name":"dnolen","email":"david.nolen@gmail.com"}],"dist":{"shasum":"760d0b6b307d6833092b8e9989bec7e23f25c719","size":373490,"noattachment":false,"key":"/mori/-/mori-0.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/mori/download/mori-0.3.0.tgz"},"publish_time":1421373057914,"_cnpm_publish_time":1421373057914,"_hasShrinkwrap":false},"0.2.9":{"name":"mori","version":"0.2.9","description":"Persistent Data Structures for JavaScript","homepage":"https://github.com/swannodette/mori","author":{"name":"David Nolen","url":"https://github.com/swannodette"},"keywords":["data","structure","persistent","clojure","clojurescript","map","filter","reduce"],"contributors":[{"name":"David Nolen","url":"https://github.com/swannodette"}],"bugs":{"url":"https://github.com/swannodette/mori/issues"},"licenses":[{"type":"EPL","url":"https://raw.github.com/swannodette/mori/master/epl-v10.html"}],"main":"./mori.js","repository":{"type":"git","url":"git://github.com/swannodette/mori.git"},"engines":{"node":">=0.8.22"},"dependencies":{},"devDependencies":{"jasmine-node":"1.7.0"},"scripts":{"build":"./scripts/build.sh","build-clean":"./scripts/build_clean.sh","clean":"./scripts/clean.sh","prepublish":"npm run-script build-clean","test":"jasmine-node spec"},"directories":{"test":"./spec"},"_id":"mori@0.2.9","_shasum":"ebc154fc3a5ba3a1a0acc9696204ede5b2461cdd","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"dnolen","email":"david.nolen@gmail.com"},"maintainers":[{"name":"dnolen","email":"david.nolen@gmail.com"}],"dist":{"shasum":"ebc154fc3a5ba3a1a0acc9696204ede5b2461cdd","size":46135,"noattachment":false,"key":"/mori/-/mori-0.2.9.tgz","tarball":"http://registry.cnpm.dingdandao.com/mori/download/mori-0.2.9.tgz"},"publish_time":1405529330814,"_cnpm_publish_time":1405529330814,"_hasShrinkwrap":false},"0.2.8":{"name":"mori","version":"0.2.8","description":"Persistent Data Structures for JavaScript","homepage":"https://github.com/swannodette/mori","author":{"name":"David Nolen","url":"https://github.com/swannodette"},"keywords":["data","structure","persistent","clojure","clojurescript","map","filter","reduce"],"contributors":[{"name":"David Nolen","url":"https://github.com/swannodette"}],"bugs":{"url":"https://github.com/swannodette/mori/issues"},"licenses":[{"type":"EPL","url":"https://raw.github.com/swannodette/mori/master/epl-v10.html"}],"main":"./mori.js","repository":{"type":"git","url":"git://github.com/swannodette/mori.git"},"engines":{"node":">=0.8.22"},"dependencies":{},"devDependencies":{"jasmine-node":"1.7.0"},"scripts":{"build":"./scripts/build.sh","build-clean":"./scripts/build_clean.sh","clean":"./scripts/clean.sh","prepublish":"npm run-script build-clean"},"directories":{"test":"./spec"},"_id":"mori@0.2.8","_shasum":"37ec89292322d53d1e4535bbbc527d5ed2366941","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"dnolen","email":"david.nolen@gmail.com"},"maintainers":[{"name":"dnolen","email":"david.nolen@gmail.com"}],"dist":{"shasum":"37ec89292322d53d1e4535bbbc527d5ed2366941","size":40872,"noattachment":false,"key":"/mori/-/mori-0.2.8.tgz","tarball":"http://registry.cnpm.dingdandao.com/mori/download/mori-0.2.8.tgz"},"publish_time":1405095417165,"_cnpm_publish_time":1405095417165,"_hasShrinkwrap":false},"0.2.6":{"name":"mori","version":"0.2.6","description":"Persistent Data Structures for JavaScript","homepage":"https://github.com/swannodette/mori","author":{"name":"David Nolen","url":"https://github.com/swannodette"},"keywords":["data","structure","persistent","clojure","clojurescript","map","filter","reduce"],"contributors":[{"name":"David Nolen","url":"https://github.com/swannodette"}],"bugs":{"url":"https://github.com/swannodette/mori/issues"},"licenses":[{"type":"EPL","url":"https://raw.github.com/swannodette/mori/master/epl-v10.html"}],"main":"./mori.js","repository":{"type":"git","url":"git://github.com/swannodette/mori.git"},"engines":{"node":">=0.8.22"},"dependencies":{},"devDependencies":{"jasmine-node":"1.7.0"},"scripts":{"build":"./scripts/build.sh","build-clean":"./scripts/build_clean.sh","clean":"./scripts/clean.sh","prepublish":"npm run-script build-clean","test":"jasmine-node spec"},"directories":{"test":"./spec"},"_id":"mori@0.2.6","dist":{"shasum":"8cc453f6c1f7a53be42161e2cf3e22917e269d07","size":39685,"noattachment":false,"key":"/mori/-/mori-0.2.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/mori/download/mori-0.2.6.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"dnolen","email":"david.nolen@gmail.com"},"maintainers":[{"name":"dnolen","email":"david.nolen@gmail.com"}],"publish_time":1396634177883,"_hasShrinkwrap":false,"_cnpm_publish_time":1396634177883},"0.2.5":{"name":"mori","version":"0.2.5","description":"Persistent Data Structures for JavaScript","homepage":"https://github.com/swannodette/mori","author":{"name":"David Nolen","url":"https://github.com/swannodette"},"keywords":["data","structure","persistent","clojure","clojurescript","map","filter","reduce"],"contributors":[{"name":"David Nolen","url":"https://github.com/swannodette"}],"bugs":{"url":"https://github.com/swannodette/mori/issues"},"licenses":[{"type":"EPL","url":"https://raw.github.com/swannodette/mori/master/epl-v10.html"}],"main":"./mori.js","repository":{"type":"git","url":"git://github.com/swannodette/mori.git"},"engines":{"node":">=0.8.22"},"dependencies":{},"devDependencies":{"jasmine-node":"1.7.0"},"scripts":{"build":"./scripts/build.sh","build-clean":"./scripts/build_clean.sh","clean":"./scripts/clean.sh","prepublish":"npm run-script build-clean","test":"jasmine-node spec"},"directories":{"test":"./spec"},"_id":"mori@0.2.5","dist":{"shasum":"9df66fb25671af403d74fc9529001c72e5b40979","size":39237,"noattachment":false,"key":"/mori/-/mori-0.2.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/mori/download/mori-0.2.5.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"dnolen","email":"david.nolen@gmail.com"},"maintainers":[{"name":"dnolen","email":"david.nolen@gmail.com"}],"publish_time":1390977604974,"_hasShrinkwrap":false,"_cnpm_publish_time":1390977604974},"0.2.4":{"name":"mori","version":"0.2.4","description":"Persistent Data Structures for JavaScript","homepage":"https://github.com/swannodette/mori","author":{"name":"David Nolen","url":"https://github.com/swannodette"},"keywords":["data","structure","persistent","clojure","clojurescript","map","filter","reduce"],"contributors":[{"name":"David Nolen","url":"https://github.com/swannodette"}],"bugs":{"url":"https://github.com/swannodette/mori/issues"},"licenses":[{"type":"EPL","url":"https://raw.github.com/swannodette/mori/master/epl-v10.html"}],"main":"./mori.js","repository":{"type":"git","url":"git://github.com/swannodette/mori.git"},"engines":{"node":">=0.8.22"},"dependencies":{},"devDependencies":{"jasmine-node":"1.7.0"},"scripts":{"build":"./scripts/build.sh","build-clean":"./scripts/build_clean.sh","clean":"./scripts/clean.sh","prepublish":"npm run-script build-clean","test":"jasmine-node spec"},"directories":{"test":"./spec"},"_id":"mori@0.2.4","dist":{"shasum":"d1aef7054d2e4f9d5c1b34b66d247a4955ab281e","size":37507,"noattachment":false,"key":"/mori/-/mori-0.2.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/mori/download/mori-0.2.4.tgz"},"_from":".","_npmVersion":"1.3.8","_npmUser":{"name":"dnolen","email":"david.nolen@gmail.com"},"maintainers":[{"name":"dnolen","email":"david.nolen@gmail.com"}],"publish_time":1380330152611,"_hasShrinkwrap":false,"_cnpm_publish_time":1380330152611},"0.2.3":{"name":"mori","version":"0.2.3","description":"Persistent Data Structures for JavaScript","homepage":"https://github.com/swannodette/mori","author":{"name":"David Nolen","url":"https://github.com/swannodette"},"keywords":["data","structure","persistent","clojure","clojurescript","map","filter","reduce"],"contributors":[{"name":"David Nolen","url":"https://github.com/swannodette"}],"bugs":{"url":"https://github.com/swannodette/mori/issues"},"licenses":[{"type":"EPL","url":"https://raw.github.com/swannodette/mori/master/epl-v10.html"}],"main":"./mori.js","repository":{"type":"git","url":"git://github.com/swannodette/mori.git"},"engines":{"node":">=0.8.22"},"dependencies":{},"devDependencies":{"jasmine-node":"1.7.0"},"scripts":{"build":"./scripts/build.sh","build-clean":"./scripts/build_clean.sh","clean":"./scripts/clean.sh","prepublish":"npm run-script build-clean","test":"jasmine-node spec"},"directories":{"test":"./spec"},"_id":"mori@0.2.3","dist":{"shasum":"7b693da235554e96ff5ce78a2fa1cc404290a38d","size":71780,"noattachment":false,"key":"/mori/-/mori-0.2.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/mori/download/mori-0.2.3.tgz"},"_from":".","_npmVersion":"1.2.30","_npmUser":{"name":"dnolen","email":"david.nolen@gmail.com"},"maintainers":[{"name":"dnolen","email":"david.nolen@gmail.com"}],"publish_time":1377177627285,"_hasShrinkwrap":false,"_cnpm_publish_time":1377177627285},"0.2.2":{"name":"mori","version":"0.2.2","description":"Persistent Data Structures for JavaScript","homepage":"https://github.com/swannodette/mori","author":{"name":"David Nolen","url":"https://github.com/swannodette"},"keywords":["data","structure","persistent","clojure","clojurescript","map","filter","reduce"],"contributors":[{"name":"David Nolen","url":"https://github.com/swannodette"}],"bugs":{"url":"https://github.com/swannodette/mori/issues"},"licenses":[{"type":"EPL","url":"https://raw.github.com/swannodette/mori/master/epl-v10.html"}],"main":"./mori.js","repository":{"type":"git","url":"git://github.com/swannodette/mori.git"},"engines":{"node":">=0.8.22"},"dependencies":{},"devDependencies":{"jasmine-node":"1.7.0"},"scripts":{"build":"./scripts/build.sh","build-clean":"./scripts/build_clean.sh","clean":"./scripts/clean.sh","prepublish":"npm run-script build-clean","test":"jasmine-node spec"},"directories":{"test":"./spec"},"_id":"mori@0.2.2","dist":{"shasum":"31c312f06881502f0033a8faffcd7ed8ef874df9","size":70611,"noattachment":false,"key":"/mori/-/mori-0.2.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/mori/download/mori-0.2.2.tgz"},"_from":".","_npmVersion":"1.2.30","_npmUser":{"name":"dnolen","email":"david.nolen@gmail.com"},"maintainers":[{"name":"dnolen","email":"david.nolen@gmail.com"}],"publish_time":1377090425651,"_hasShrinkwrap":false,"_cnpm_publish_time":1377090425651},"0.2.1":{"name":"mori","version":"0.2.1","description":"Persistent Data Structures for JavaScript","homepage":"https://github.com/swannodette/mori","author":{"name":"David Nolen","url":"https://github.com/swannodette"},"keywords":["data","structure","persistent","clojure","clojurescript","map","filter","reduce"],"contributors":[{"name":"David Nolen","url":"https://github.com/swannodette"}],"bugs":{"url":"https://github.com/swannodette/mori/issues"},"licenses":[{"type":"EPL","url":"https://raw.github.com/swannodette/mori/master/epl-v10.html"}],"main":"./mori.js","repository":{"type":"git","url":"git://github.com/swannodette/mori.git"},"engines":{"node":">=0.8.22"},"dependencies":{},"devDependencies":{"jasmine-node":"1.7.0"},"scripts":{"build":"./scripts/build.sh","build-clean":"./scripts/build_clean.sh","clean":"./scripts/clean.sh","prepublish":"npm run-script build-clean","test":"jasmine-node spec"},"directories":{"test":"./spec"},"_id":"mori@0.2.1","dist":{"shasum":"aeb9a87b9cbf5569280c7ec6a110da0889b298b1","size":69282,"noattachment":false,"key":"/mori/-/mori-0.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/mori/download/mori-0.2.1.tgz"},"_from":".","_npmVersion":"1.2.30","_npmUser":{"name":"dnolen","email":"david.nolen@gmail.com"},"maintainers":[{"name":"dnolen","email":"david.nolen@gmail.com"}],"publish_time":1372339084415,"_hasShrinkwrap":false,"_cnpm_publish_time":1372339084415},"0.2.0":{"name":"mori","version":"0.2.0","description":"Persistent Data Structures for JavaScript","homepage":"https://github.com/swannodette/mori","author":{"name":"David Nolen","url":"https://github.com/swannodette"},"keywords":["data","structure","persistent","clojure","clojurescript","map","filter","reduce"],"contributors":[{"name":"David Nolen","url":"https://github.com/swannodette"}],"bugs":{"url":"https://github.com/swannodette/mori/issues"},"licenses":[{"type":"EPL","url":"https://raw.github.com/swannodette/mori/master/epl-v10.html"}],"main":"./mori.js","repository":{"type":"git","url":"git://github.com/swannodette/mori.git"},"engines":{"node":">=0.8.22"},"dependencies":{},"devDependencies":{"jasmine-node":"1.7.0"},"scripts":{"build":"./scripts/build.sh","build-clean":"./scripts/build_clean.sh","clean":"./scripts/clean.sh","prepublish":"npm run-script build-clean","test":"jasmine-node spec"},"directories":{"test":"./spec"},"_id":"mori@0.2.0","dist":{"shasum":"b056aaab4c606dbebdbe8a6c154492e3c8d7f2d2","size":36799,"noattachment":false,"key":"/mori/-/mori-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/mori/download/mori-0.2.0.tgz"},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"dnolen","email":"david.nolen@gmail.com"},"maintainers":[{"name":"dnolen","email":"david.nolen@gmail.com"}],"publish_time":1368893974130,"_hasShrinkwrap":false,"_cnpm_publish_time":1368893974130},"0.1.0":{"name":"mori","version":"0.1.0","description":"Persistent Data Structures for JavaScript","keywords":["data","structure","persistent","clojure","map","filter","reduce"],"author":{"name":"David Nolen"},"homepage":"http://github.com/swannodette/mori","repository":{"type":"git","url":"git://github.com/swannodette/mori.git","web":"http://github.com/swannodette/mori"},"bugs":{"url":"http://github.com/swannodette/mori/issues"},"main":"./mori.node.js","scripts":{"build":"lein deps && lein cljsbuild once release && echo ';module.exports = this.mori;\n' | cat mori.js - > mori.node.js"},"licenses":[{"type":"ELP","url":"http://www.eclipse.org/legal/epl-v10.html"}],"_npmUser":{"name":"dnolen","email":"david.nolen@gmail.com"},"_id":"mori@0.1.0","dependencies":{},"devDependencies":{},"optionalDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"529405f3be3f03e6405bdde6f50606b6159c83f6","size":54639,"noattachment":false,"key":"/mori/-/mori-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/mori/download/mori-0.1.0.tgz"},"maintainers":[{"name":"dnolen","email":"david.nolen@gmail.com"}],"directories":{},"publish_time":1336775393480,"_hasShrinkwrap":false,"_cnpm_publish_time":1336775393480}},"readme":"# mori\n\n<img src=\"http://cloud.github.com/downloads/swannodette/mori/mori.png\" alt=\"Mori\" title=\"Mori\"/>\n\nA simple bridge to ClojureScript's persistent data structures and [supporting APIs](http://swannodette.github.io/mori/) for vanilla JavaScript. Pull requests welcome.\n\n## Breaking changes in 0.3.0 \n\nThis release includes several breaking changes:\n\n* More idiomatic JavaScript API naming scheme\n* No EDN reader\n* No zippers\n* No data diffing\n\nThese missing options will likely find their way back into Mori when\nMori builds can leverage Google Closure Modules.\n\n## Getting it\n\nYou can install the latest release via npm:\n\n```shell\nnpm install mori\n```\n\nThe installed package contains a single optimized JavaScript file `mori.js`.\n\nLoad `mori` in your Node.js programs as you would any other module:\n\n```javascript\nvar mori = require(\"mori\");\n```\n\nIn a browser, you can load mori with a script tag, as you would any other JavaScript library:\n\n```html\n<script src=\"mori.js\" type=\"text/javascript\"></script>\n```\n\nYou can also load it as an AMD module, e.g. with [RequireJS](http://requirejs.org/).\n\n## Build\n\n### Prerequisites\n\nYou will first need to install the [Java](http://www.oracle.com/technetwork/java/javase/downloads/index.html) SDK, if it's not already installed on your system.\n\nOn Windows, you will need to manually install [Leiningen](http://github.com/technomancy/leiningen). On UNIX-like systems, Leiningen will be installed within the project automatically if the `lein` executable is not found on your path or if your `lein` version predates `2.0.0`.\n\n### Clone the repo\n\n```shell\ngit clone https://github.com/swannodette/mori.git\ncd mori\n```\n\n### On a UNIX-like system build with\n\n```shell\n./scripts/build.sh\n```\n\n### Alternatively using npm\n\n```shell\nnpm run-script build\n```\n\n### On Windows\n\n```shell\n./scripts/build.ps1\n```\n\nThe build process will generate an optimized JavaScript file `mori.js`, which is suitable for use with Node.js, or in a Web browser or other JavaScript environments. You can also load it as an AMD module.\n\n## Usage\n\nYou can use it from your projects like so:\n\n```javascript\nvar inc = function(n) {\n  return n+1;\n};\n\nmori.intoArray(mori.map(inc, mori.vector(1,2,3,4,5)));\n// => [2,3,4,5,6]\n```\n\nEfficient non-destructive updates!\n\n```javascript\nvar v1 = mori.vector(1,2,3);\nvar v2 = mori.conj(v1, 4);\nv1.toString(); // => '[1 2 3]'\nv2.toString(); // => '[1 2 3 4]'\n```\n\n```javascript\nvar sum = function(a, b) {\n  return a + b;\n};\nmori.reduce(sum, mori.vector(1, 2, 3, 4)); // => 10\n```\n\nLazy sequences!\n\n```javascript\nvar _ = mori;\n_.intoArray(_.interpose(\"foo\", _.vector(1, 2, 3, 4)));\n// => [1, \"foo\", 2, \"foo\", 3, \"foo\", 4]\n```\n\nOr if it's more your speed, use it from CoffeeScript!\n\n```coffeescript\ninc = (x) -> x+1  \nr = mori.map inc, mori.vector(1,2,3,4,5)\nmori.intoArray r\n```\n\n### Documentation\n\nYou can find extensive [documentation and examples](http://swannodette.github.io/mori/) here.\n\n## More Examples\n\n### Efficient Freeze/Thaw\n\nFor vectors and maps we provide an efficient thaw and freeze\noperations:\n\n```javascript\nvar m = mori;\n\n// ~220ms with V8 version 3.29.80 MBP 2.26ghz\nfor(var j = 0; j < 10; j++) {\n  var s = new Date();\n  var arr = [];\n  for(var i = 0; i < 10000000; i++) {\n    arr.push(i);\n  }\n  print(\"Array push \" + arr.length + \" items \" + ((new Date())-s));\n  gc();\n}\n\n// ~70ms\nfor(var j = 0; j < 10; j++) {\n  s = new Date();\n  var mv = m.mutable.thaw(m.vector());\n  for(var i = 0; i < 10000000; i++) {\n    mv = m.mutable.conj.f2(mv, i);\n  }\n  var v = m.mutable.freeze(mv);\n  print(\"Mutable vector conj \" + m.count(v) + \" items \" + ((new Date())-s));\n  gc();\n}\n```\n\n### ES6 Map/Set inspired interfaces\n\nAll Mori maps and sets support all the non-mutating methods of the\nproposed ES6\n[Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)\nand\n[Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set)\ninterfaces. The main difference with the spec is that key lookup is\nbased on value not reference. `keys`, `values`, and `entries` methods\nreturn the proposed mutable iterators:\n\n```javascript\nvar m = mori;\nvar h = m.hashMap(\"foo\", 1, \"bar\", 2);\n\nh.has(\"foo\"); // => true\nh.get(\"foo\"); // => 1\n\nvar iter = h.keys();\niter.next(); // => {done: false, value: \"foo\"}\n```\n\nThis feature is subject to changes in the ES6 proposal.\n\n### Transducers\n\nMori includes Transducers. Zero allocation collection operations FTW:\n\n```javascript\nvar m = mori;\nvar a = [];\n\nfor(var i = 0; i < 1000000; i++) {\n  a.push(i);\n}\n\n// make it immutable\nvar v = m.into(m.vector(), a);\n\nfunction time(f) {\n  var s = new Date();\n  f();\n  console.log(((new Date())-s)+\"ms\");\n}\n\n// ~190ms V8 version 3.29.80 MBP 2.26ghz\ntime(function() {\n  var xf = m.comp(m.map(m.inc), m.map(m.inc), m.map(m.inc));\n  return m.transduce(xf, m.completing(m.sum), 0, v);\n}, 10);\n\n// ~440ms\ntime(function() {\n  return a.map(m.inc).map(m.inc).map(m.inc).reduce(function(a,b){return a+b;}, 0);\n}, 10);\n```\n\nCopyright (C) 2012-2015 David Nolen and contributors\n\nDistributed under the [Eclipse Public License](https://raw.github.com/swannodette/mori/master/epl-v10.html), the same as Clojure.\n","_attachments":{},"homepage":"https://github.com/swannodette/mori","bugs":{"url":"https://github.com/swannodette/mori/issues"}}