├── .eslintignore ├── test ├── node │ ├── .gitkeep │ └── Performance.js ├── browser │ └── .gitkeep └── both │ ├── debounce.test.js │ ├── Base64.test.js │ ├── Random.test.js │ ├── PromiseQueue.test.js │ ├── StorageManager.test.js │ ├── DocumentProjector.test.js │ ├── DocumentRetriver.test.js │ └── EJSON.test.js ├── babelhook.js ├── .istanbul.yml ├── .babelrc ├── gulp ├── tasks │ ├── default.js │ ├── clean.js │ ├── dev.js │ ├── release.js │ ├── lint.js │ └── build.js └── config.js ├── gulpfile.js ├── browser_tests.js ├── .editorconfig ├── .travis.yml ├── .gitignore ├── .tern-project ├── browser_tests.html ├── lib ├── cursor-processors │ ├── aggregate.js │ ├── sortFunc.js │ ├── map.js │ ├── filter.js │ ├── ifNotEmpty.js │ ├── reduce.js │ ├── joinEach.js │ ├── join.js │ ├── joinAll.js │ └── joinObj.js ├── ShortIdGenerator.js ├── CollectionIndex.js ├── debounce.js ├── StorageManager.js ├── CollectionDelegate.js ├── AsyncEventEmitter.js ├── PromiseQueue.js ├── Base64.js ├── DocumentRetriver.js ├── IndexManager.js ├── Cursor.js ├── Random.js ├── Document.js └── CursorObservable.js ├── polyfills.js ├── .eslintrc ├── dist ├── ShortIdGenerator.js ├── cursor-processors │ ├── sortFunc.js │ ├── aggregate.js │ ├── map.js │ ├── ifNotEmpty.js │ ├── filter.js │ ├── reduce.js │ ├── join.js │ ├── joinEach.js │ ├── joinAll.js │ └── joinObj.js ├── debounce.js ├── CollectionIndex.js ├── StorageManager.js ├── PromiseQueue.js ├── Base64.js ├── AsyncEventEmitter.js ├── CollectionDelegate.js ├── DocumentRetriver.js ├── Document.js ├── IndexManager.js └── Random.js ├── bower.json ├── index.js ├── LICENSE ├── package.json └── README.md /.eslintignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/node/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/browser/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/node/Performance.js: -------------------------------------------------------------------------------- 1 | // TODO 2 | -------------------------------------------------------------------------------- /babelhook.js: -------------------------------------------------------------------------------- 1 | require("babel-register")(); -------------------------------------------------------------------------------- /.istanbul.yml: -------------------------------------------------------------------------------- 1 | instrumentation: 2 | root: ./lib -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-0"] 3 | } -------------------------------------------------------------------------------- /gulp/tasks/default.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var gulp = require('gulp'); 4 | gulp.task('default', ['dev']); -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var requireDir = require('require-dir'); 4 | requireDir('./gulp/tasks', { recurse: true }); -------------------------------------------------------------------------------- /browser_tests.js: -------------------------------------------------------------------------------- 1 | require('./polyfills'); 2 | var bulk = require('bulk-require'); 3 | 4 | 5 | mocha.ui('bdd'); 6 | mocha.reporter('html'); 7 | var tests = bulk(__dirname, ['./test/both/*.test.js', './test/browser/*.test.js']); 8 | mocha.run(); 9 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /gulp/tasks/clean.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var config = require('../config'); 4 | var gulp = require('gulp'); 5 | var del = require('del'); 6 | 7 | gulp.task('clean', function(cb) { 8 | del([config.dist, config.build]).then(function (paths) { 9 | cb(); 10 | }); 11 | }); -------------------------------------------------------------------------------- /gulp/tasks/dev.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var gulp = require('gulp'); 4 | var runSequence = require('run-sequence'); 5 | 6 | gulp.task('dev', ['clean'], function(cb) { 7 | cb = cb || function() {}; 8 | global.isProd = true; 9 | process.env.NODE_ENV = 'production'; 10 | runSequence('build', 'lint', 'watch', cb); 11 | }); -------------------------------------------------------------------------------- /gulp/tasks/release.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var gulp = require('gulp'); 4 | var runSequence = require('run-sequence'); 5 | 6 | gulp.task('release', ['clean'], function(cb) { 7 | cb = cb || function() {}; 8 | global.isProd = true; 9 | process.env.NODE_ENV = 'production'; 10 | runSequence('build', 'lint', cb); 11 | }); -------------------------------------------------------------------------------- /gulp/tasks/lint.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var config = require('../config'); 4 | var gulp = require('gulp'); 5 | var eslint = require('gulp-eslint'); 6 | 7 | gulp.task('lint', function() { 8 | return gulp.src([config.src]) 9 | .pipe(eslint()) 10 | .pipe(eslint.format()) 11 | //.pipe(eslint.failOnError()); 12 | }); -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | 3 | sudo: false 4 | 5 | install: 6 | - npm install -g babel-cli 7 | - npm install 8 | 9 | node_js: 10 | - "5.3" 11 | - "4.2" 12 | - "0.12" 13 | 14 | cache: 15 | directories: 16 | - node_modules 17 | 18 | script: npm test && npm run test_browser 19 | 20 | after_script: npm run coveralls 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | lib-cov 4 | *.seed 5 | *.log 6 | *.csv 7 | *.dat 8 | *.out 9 | *.pid 10 | *.gz 11 | 12 | pids 13 | logs 14 | results 15 | 16 | npm-debug.log 17 | workspace 18 | node_modules 19 | coverage 20 | 21 | browser-version/src 22 | browser-version/node_modules 23 | build/browser_tests.js 24 | 25 | *.sublime-workspace 26 | *.swp 27 | *~ 28 | -------------------------------------------------------------------------------- /.tern-project: -------------------------------------------------------------------------------- 1 | { 2 | "ecmaVersion": 6, 3 | "libs": [ 4 | "browser", 5 | "chai" 6 | ], 7 | "loadEagerly": [ 8 | "lib/**/*.js", 9 | "test/**/*.js" 10 | ], 11 | "plugins": { 12 | "complete_strings": {}, 13 | "node": {}, 14 | "modules": {}, 15 | "es_modules": {}, 16 | "doc_comment": { 17 | "fullDocs": true 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /gulp/config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | src: 'lib/**/*', 5 | dist: 'dist', 6 | build: 'build', 7 | 8 | browser: { 9 | bundleName: 'marsdb.js', 10 | bundleMinName: 'marsdb.min.js', 11 | bundlePolyfillsName: 'marsdb.polyfills.js', 12 | entry: 'index.js', 13 | entryTests: 'browser_tests.js', 14 | entryPolyfills: 'polyfills.js', 15 | } 16 | }; 17 | -------------------------------------------------------------------------------- /browser_tests.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 5 |