viewdb 0.11.0 → 0.13.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/cursor.d.ts +23 -0
  2. package/dist/cursor.d.ts.map +1 -0
  3. package/dist/cursor.js +81 -0
  4. package/dist/cursor.js.map +1 -0
  5. package/dist/index.d.ts +13 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +13 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/inmemory/collection.d.ts +20 -0
  10. package/dist/inmemory/collection.d.ts.map +1 -0
  11. package/dist/inmemory/collection.js +111 -0
  12. package/dist/inmemory/collection.js.map +1 -0
  13. package/dist/inmemory/store.d.ts +8 -0
  14. package/dist/inmemory/store.d.ts.map +1 -0
  15. package/dist/inmemory/store.js +21 -0
  16. package/dist/inmemory/store.js.map +1 -0
  17. package/dist/merger.d.ts +4 -0
  18. package/dist/merger.d.ts.map +1 -0
  19. package/dist/merger.js +139 -0
  20. package/dist/merger.js.map +1 -0
  21. package/dist/observe.d.ts +18 -0
  22. package/dist/observe.d.ts.map +1 -0
  23. package/dist/observe.js +93 -0
  24. package/dist/observe.js.map +1 -0
  25. package/dist/plugins/index.d.ts +4 -0
  26. package/dist/plugins/index.d.ts.map +1 -0
  27. package/dist/plugins/index.js +8 -0
  28. package/dist/plugins/index.js.map +1 -0
  29. package/dist/plugins/viewdb_timestamp_plugin.d.ts +3 -0
  30. package/dist/plugins/viewdb_timestamp_plugin.d.ts.map +1 -0
  31. package/dist/plugins/viewdb_timestamp_plugin.js +92 -0
  32. package/dist/plugins/viewdb_timestamp_plugin.js.map +1 -0
  33. package/dist/plugins/viewdb_versioning_plugin.d.ts +3 -0
  34. package/dist/plugins/viewdb_versioning_plugin.d.ts.map +1 -0
  35. package/dist/plugins/viewdb_versioning_plugin.js +83 -0
  36. package/dist/plugins/viewdb_versioning_plugin.js.map +1 -0
  37. package/dist/types.d.ts +76 -0
  38. package/dist/types.d.ts.map +1 -0
  39. package/dist/types.js +3 -0
  40. package/dist/types.js.map +1 -0
  41. package/dist/viewdb.d.ts +13 -0
  42. package/dist/viewdb.d.ts.map +1 -0
  43. package/dist/viewdb.js +24 -0
  44. package/dist/viewdb.js.map +1 -0
  45. package/package.json +19 -12
  46. package/.prettierrc +0 -1
  47. package/index.js +0 -1
  48. package/jest.config.js +0 -11
  49. package/lib/cursor.js +0 -84
  50. package/lib/index.js +0 -6
  51. package/lib/inmemory/collection.js +0 -112
  52. package/lib/inmemory/store.js +0 -19
  53. package/lib/merger.js +0 -62
  54. package/lib/observe.js +0 -53
  55. package/lib/plugins/index.js +0 -2
  56. package/lib/plugins/viewdb_timestamp_plugin.js +0 -106
  57. package/lib/plugins/viewdb_versioning_plugin.js +0 -93
  58. package/lib/viewdb.js +0 -21
  59. package/test/cursor.js +0 -101
  60. package/test/merger.js +0 -196
  61. package/test/observe.js +0 -165
  62. package/test/plugins/viewdb_timestamp_plugin.js +0 -159
  63. package/test/plugins/viewdb_versioning_plugin.js +0 -112
  64. package/test/viewdb.js +0 -210
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewdb_timestamp_plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/viewdb_timestamp_plugin.ts"],"names":[],"mappings":"AAEA,iBAAS,qBAAqB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAkGhD;AAED,SAAS,qBAAqB,CAAC"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var _ = require("lodash");
3
+ function ViewDBTimestampPlugin(viewDb) {
4
+ var oldCollection = viewDb.collection;
5
+ viewDb.collection = function () {
6
+ var coll = oldCollection.apply(this, arguments);
7
+ if (!coll.__plugins_timestamp) {
8
+ coll.__plugins_timestamp = true;
9
+ var oldSave_1 = coll.save;
10
+ coll.save = function (docs, options) {
11
+ var newdocs = docs;
12
+ if (!(options && options.skipTimestamp)) {
13
+ var timestamp = new Date().valueOf();
14
+ if (!_.isArray(docs)) {
15
+ newdocs = [docs];
16
+ }
17
+ for (var i = 0; i < newdocs.length; i++) {
18
+ var doc = newdocs[i];
19
+ if (!doc.createDateTime) {
20
+ doc.createDateTime = timestamp;
21
+ }
22
+ doc.changeDateTime = timestamp;
23
+ }
24
+ }
25
+ return oldSave_1.apply(this, arguments);
26
+ };
27
+ var oldInsert_1 = coll.insert;
28
+ coll.insert = function (docs, options) {
29
+ if (!(options && options.skipTimestamp)) {
30
+ if (!_.isArray(docs)) {
31
+ docs = [docs];
32
+ }
33
+ var timestamp = new Date().valueOf();
34
+ for (var i = 0; i < docs.length; i++) {
35
+ var doc = docs[i];
36
+ doc.createDateTime = timestamp;
37
+ doc.changeDateTime = timestamp;
38
+ }
39
+ }
40
+ return oldInsert_1.apply(this, arguments);
41
+ };
42
+ var oldFindAndModify_1 = coll.findAndModify;
43
+ coll.findAndModify = function (query, sort, update, options, cb) {
44
+ var timestamp = new Date().valueOf();
45
+ var clonedUpdate = _.clone(update);
46
+ var setOnInsert = clonedUpdate.$setOnInsert || {};
47
+ setOnInsert.createDateTime = timestamp;
48
+ clonedUpdate.$setOnInsert = setOnInsert;
49
+ var set = clonedUpdate.$set || {};
50
+ set.changeDateTime = timestamp;
51
+ if (set.createDateTime) {
52
+ delete set.createDateTime;
53
+ }
54
+ clonedUpdate.$set = set;
55
+ return oldFindAndModify_1.apply(this, [query, sort, clonedUpdate, options, cb]);
56
+ };
57
+ var oldUpdateMany_1 = coll.updateMany;
58
+ coll.updateMany = function (query, update, options, cb) {
59
+ var timestamp = new Date().valueOf();
60
+ var clonedUpdate = _.clone(update);
61
+ var setOnInsert = clonedUpdate.$setOnInsert || {};
62
+ setOnInsert.createDateTime = timestamp;
63
+ clonedUpdate.$setOnInsert = setOnInsert;
64
+ var set = clonedUpdate.$set || {};
65
+ set.changeDateTime = timestamp;
66
+ if (set.createDateTime) {
67
+ delete set.createDateTime;
68
+ }
69
+ clonedUpdate.$set = set;
70
+ return oldUpdateMany_1.apply(this, [query, clonedUpdate, options, cb]);
71
+ };
72
+ var oldUpdateOne_1 = coll.updateOne;
73
+ coll.updateOne = function (query, update, options, cb) {
74
+ var timestamp = new Date().valueOf();
75
+ var clonedUpdate = _.clone(update);
76
+ var setOnInsert = clonedUpdate.$setOnInsert || {};
77
+ setOnInsert.createDateTime = timestamp;
78
+ clonedUpdate.$setOnInsert = setOnInsert;
79
+ var set = clonedUpdate.$set || {};
80
+ set.changeDateTime = timestamp;
81
+ if (set.createDateTime) {
82
+ delete set.createDateTime;
83
+ }
84
+ clonedUpdate.$set = set;
85
+ return oldUpdateOne_1.apply(this, [query, clonedUpdate, options, cb]);
86
+ };
87
+ }
88
+ return coll;
89
+ };
90
+ }
91
+ module.exports = ViewDBTimestampPlugin;
92
+ //# sourceMappingURL=viewdb_timestamp_plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewdb_timestamp_plugin.js","sourceRoot":"","sources":["../../src/plugins/viewdb_timestamp_plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare function ViewDBVersioningPlugin(viewDb: any): void;
2
+ export = ViewDBVersioningPlugin;
3
+ //# sourceMappingURL=viewdb_versioning_plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewdb_versioning_plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/viewdb_versioning_plugin.ts"],"names":[],"mappings":"AASA,iBAAS,sBAAsB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CA6EjD;AAED,SAAS,sBAAsB,CAAC"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var _ = require("lodash");
3
+ function _getVersion(version) {
4
+ if (_.isUndefined(version)) {
5
+ return 0;
6
+ }
7
+ return version + 1;
8
+ }
9
+ function ViewDBVersioningPlugin(viewDb) {
10
+ var oldCollection = viewDb.collection;
11
+ viewDb.collection = function () {
12
+ var coll = oldCollection.apply(this, arguments);
13
+ if (!coll.__plugins_versioning) {
14
+ coll.__plugins_versioning = true;
15
+ var oldSave_1 = coll.save;
16
+ coll.save = function (docs, options) {
17
+ var newdocs = docs;
18
+ if (!(options && options.skipVersioning)) {
19
+ if (!_.isArray(docs)) {
20
+ newdocs = [docs];
21
+ }
22
+ for (var i = 0; i < newdocs.length; i++) {
23
+ var doc = newdocs[i];
24
+ doc.version = _getVersion(doc.version);
25
+ }
26
+ }
27
+ return oldSave_1.apply(this, arguments);
28
+ };
29
+ var oldInsert_1 = coll.insert;
30
+ coll.insert = function (docs, options) {
31
+ if (!(options && options.skipVersioning)) {
32
+ if (!_.isArray(docs)) {
33
+ docs = [docs];
34
+ }
35
+ for (var i = 0; i < docs.length; i++) {
36
+ var doc = docs[i];
37
+ doc.version = _getVersion(doc.version);
38
+ }
39
+ }
40
+ return oldInsert_1.apply(this, arguments);
41
+ };
42
+ var oldFindAndModify_1 = coll.findAndModify;
43
+ coll.findAndModify = function (query, sort, update, options, cb) {
44
+ if (!(options && options.skipVersioning)) {
45
+ var inc = update.$inc || {};
46
+ inc.version = 1;
47
+ update.$inc = inc;
48
+ if (update.$set && update.$set.version >= 0) {
49
+ delete update.$set.version;
50
+ }
51
+ }
52
+ return oldFindAndModify_1.apply(this, arguments);
53
+ };
54
+ var oldUpdateMany_1 = coll.updateMany;
55
+ coll.updateMany = function (query, update, options, cb) {
56
+ if (!(options && options.skipVersioning)) {
57
+ var inc = update.$inc || {};
58
+ inc.version = 1;
59
+ update.$inc = inc;
60
+ if (update.$set && update.$set.version >= 0) {
61
+ delete update.$set.version;
62
+ }
63
+ }
64
+ return oldUpdateMany_1.apply(this, arguments);
65
+ };
66
+ var oldUpdateOne_1 = coll.updateOne;
67
+ coll.updateOne = function (query, update, options, cb) {
68
+ if (!(options && options.skipVersioning)) {
69
+ var inc = update.$inc || {};
70
+ inc.version = 1;
71
+ update.$inc = inc;
72
+ if (update.$set && update.$set.version >= 0) {
73
+ delete update.$set.version;
74
+ }
75
+ }
76
+ return oldUpdateOne_1.apply(this, arguments);
77
+ };
78
+ }
79
+ return coll;
80
+ };
81
+ }
82
+ module.exports = ViewDBVersioningPlugin;
83
+ //# sourceMappingURL=viewdb_versioning_plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewdb_versioning_plugin.js","sourceRoot":"","sources":["../../src/plugins/viewdb_versioning_plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /** A generic document stored in viewdb */
2
+ export type VDocument = Record<string, any> & {
3
+ _id?: string;
4
+ };
5
+ /** Query object passed to find/observe/getDocuments */
6
+ export interface QueryObject {
7
+ query?: Record<string, any>;
8
+ skip?: number;
9
+ limit?: number;
10
+ sort?: Record<string, 1 | -1>;
11
+ project?: Record<string, 0 | 1>;
12
+ }
13
+ /** Sort specification */
14
+ export type SortSpec = Record<string, 1 | -1>;
15
+ /** Projection specification */
16
+ export type ProjectionSpec = Record<string, 0 | 1>;
17
+ /** Standard Node-style callback */
18
+ export type Callback<T = void> = (err: Error | null, result?: T) => void;
19
+ /** Options for the merge function */
20
+ export interface MergeOptions<T = any> {
21
+ comparator?: (a: T, b: T) => boolean;
22
+ comparatorId?: (a: T, b: T) => boolean;
23
+ keyFn?: (element: T) => string;
24
+ added?: (element: T, index: number) => void;
25
+ removed?: (element: T, index: number) => void;
26
+ changed?: (oldElement: T, newElement: T, index: number) => void;
27
+ moved?: (element: T, fromIndex: number, toIndex: number) => void;
28
+ }
29
+ /** Options passed to cursor.observe() */
30
+ export interface ObserveOptions<T = VDocument> {
31
+ init?: (elements: T[]) => void;
32
+ added?: (element: T, index: number) => void;
33
+ removed?: (element: T, index: number) => void;
34
+ changed?: (asis: T, tobe: T, index: number) => void;
35
+ moved?: (element: T, fromIndex: number, toIndex: number) => void;
36
+ enableBatching?: boolean;
37
+ }
38
+ /** Handle returned by observe() */
39
+ export interface ObserveHandle {
40
+ stop: () => void | Promise<void>;
41
+ dispose?: () => void | Promise<void>;
42
+ }
43
+ /**
44
+ * Callback signature for _getDocuments implementations.
45
+ * Used by Collection implementations across all stores.
46
+ */
47
+ export type GetDocumentsFn = (queryObject: QueryObject, callback: Callback<VDocument[]>) => void;
48
+ /**
49
+ * Core collection contract that all persistence store collections should satisfy.
50
+ *
51
+ * Required members are used by Cursor and Observer.
52
+ * Optional members represent common store capabilities.
53
+ */
54
+ export interface CollectionLike {
55
+ /** Create a cursor for the given query */
56
+ find(query: Record<string, any>, options?: Record<string, any>): any;
57
+ /** Internal: retrieve documents matching the query object */
58
+ _getDocuments: GetDocumentsFn;
59
+ /** EventEmitter: emit events (primarily 'change') */
60
+ emit(event: string, ...args: any[]): void;
61
+ /** EventEmitter: listen for events */
62
+ on(event: string, listener: (...args: any[]) => void): any;
63
+ /** EventEmitter: remove listener */
64
+ removeListener(event: string, listener: (...args: any[]) => void): any;
65
+ /** Insert documents into the collection */
66
+ insert?(documents: any, options?: any, callback?: Callback<any>): void;
67
+ /** Save (upsert) documents */
68
+ save?(documents: any, options?: any, callback?: Callback<any>): void;
69
+ /** Remove documents matching the query */
70
+ remove?(query: any, options?: any, callback?: Callback): void;
71
+ /** Count documents */
72
+ count?(callback: Callback<number>): void;
73
+ /** Drop all documents */
74
+ drop?(callback?: Callback): void;
75
+ }
76
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { Callback, CollectionLike } from './types';
2
+ interface ViewDBStore {
3
+ open?(callback?: Callback<any>): Promise<any>;
4
+ collection(name: string, callback?: (coll: CollectionLike) => void): CollectionLike;
5
+ }
6
+ declare class ViewDB {
7
+ _store: ViewDBStore;
8
+ constructor(store?: ViewDBStore);
9
+ open(): Promise<ViewDB>;
10
+ collection(collectionName: string, callback?: (collection: CollectionLike) => void): CollectionLike;
11
+ }
12
+ export = ViewDB;
13
+ //# sourceMappingURL=viewdb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewdb.d.ts","sourceRoot":"","sources":["../src/viewdb.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEnD,UAAU,WAAW;IACnB,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,GAAG,cAAc,CAAC;CACrF;AAED,cAAM,MAAM;IACV,MAAM,EAAE,WAAW,CAAC;gBAER,KAAK,CAAC,EAAE,WAAW;IAI/B,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAUvB,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,GAAG,cAAc;CAGpG;AAED,SAAS,MAAM,CAAC"}
package/dist/viewdb.js ADDED
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var InMemoryStore = require("./inmemory/store");
3
+ var ViewDB = /** @class */ (function () {
4
+ function ViewDB(store) {
5
+ this._store = store || new InMemoryStore();
6
+ }
7
+ ViewDB.prototype.open = function () {
8
+ var _this = this;
9
+ if (this._store.open) {
10
+ return this._store.open().then(function () {
11
+ return _this;
12
+ });
13
+ }
14
+ else {
15
+ return Promise.resolve(this);
16
+ }
17
+ };
18
+ ViewDB.prototype.collection = function (collectionName, callback) {
19
+ return this._store.collection(collectionName, callback);
20
+ };
21
+ return ViewDB;
22
+ }());
23
+ module.exports = ViewDB;
24
+ //# sourceMappingURL=viewdb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewdb.js","sourceRoot":"","sources":["../src/viewdb.ts"],"names":[],"mappings":";AAAA,gDAAmD;AAQnD;IAGE,gBAAY,KAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,IAAI,aAAa,EAAE,CAAC;IAC7C,CAAC;IAED,qBAAI,GAAJ;QAAA,iBAQC;QAPC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;gBAC7B,OAAO,KAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,2BAAU,GAAV,UAAW,cAAsB,EAAE,QAA+C;QAChF,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IACH,aAAC;AAAD,CAAC,AApBD,IAoBC;AAED,iBAAS,MAAM,CAAC"}
package/package.json CHANGED
@@ -1,19 +1,24 @@
1
1
  {
2
2
  "name": "viewdb",
3
- "version": "0.11.0",
3
+ "version": "0.13.0-beta.0",
4
4
  "description": "",
5
- "main": "index.js",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
6
10
  "directories": {
7
11
  "test": "test"
8
12
  },
9
13
  "scripts": {
10
- "test": "jest test",
11
- "test.watch": "jest test --watch",
12
- "coverage": "jest test --collectCoverage",
14
+ "build": "tsc",
15
+ "test": "vitest run",
16
+ "test.watch": "vitest",
17
+ "coverage": "vitest run --coverage",
13
18
  "coverage-start": "npm run coverage && start coverage/lcov-report/index.html",
14
- "format": "prettier --write lib test",
15
- "jshint": "jshint ./lib",
16
- "jscs": "jscs -p google ./lib"
19
+ "format": "prettier --write src test",
20
+ "jshint": "jshint ./src",
21
+ "jscs": "jscs -p google ./src"
17
22
  },
18
23
  "repository": {
19
24
  "type": "git",
@@ -23,15 +28,17 @@
23
28
  "author": "",
24
29
  "license": "MIT",
25
30
  "devDependencies": {
26
- "es-jest": "^2.1.0",
27
- "jest": "^29.5.0",
31
+ "@types/lodash": "4.17.24",
32
+ "@types/node": "25.6.0",
33
+ "@types/uuid": "9.0.8",
28
34
  "jshint": "^2.13.6",
29
35
  "prettier": "^2.8.7",
30
- "prettier-config-surikaterna": "^1.0.1"
36
+ "prettier-config-surikaterna": "^1.0.1",
37
+ "vitest": "2.1.9"
31
38
  },
32
39
  "dependencies": {
33
40
  "kuery": "^0.6.0",
34
- "lodash": "^4.17.21",
41
+ "lodash": "^4.18.0",
35
42
  "uuid": "^9.0.0"
36
43
  }
37
44
  }
package/.prettierrc DELETED
@@ -1 +0,0 @@
1
- "prettier-config-surikaterna"
package/index.js DELETED
@@ -1 +0,0 @@
1
- module.exports = require('./lib');
package/jest.config.js DELETED
@@ -1,11 +0,0 @@
1
- /** @type {import('jest').Config} */
2
- module.exports = {
3
- roots: ['<rootDir>/lib', '<rootDir>/test'],
4
- transform: {
5
- '^.+\\.js$': ['es-jest']
6
- },
7
-
8
- testRegex: '(/test/.*|(\\.|/)(test|spec))\\.js$',
9
- moduleDirectories: ['node_modules', 'lib'],
10
- moduleFileExtensions: ['js', 'json', 'node']
11
- };
package/lib/cursor.js DELETED
@@ -1,84 +0,0 @@
1
- var _ = require('lodash');
2
- var Observe = require('./observe');
3
-
4
- var Cursor = function (collection, query, options, getDocuments) {
5
- this._collection = collection;
6
- this._query = query;
7
- this._options = options;
8
- this._getDocuments = getDocuments;
9
- this._isObserving = false;
10
- };
11
-
12
- Cursor.prototype.forEach = function (callback) {
13
- this._getDocuments(this._query, function (err, result) {
14
- _.forEach(result, function () {
15
- callback(result);
16
- });
17
- });
18
- };
19
-
20
- Cursor.prototype.toArray = function (callback) {
21
- this._getDocuments(this._query, callback);
22
- };
23
-
24
- Cursor.prototype.observe = function (options) {
25
- this._isObserving = true;
26
- return new Observe(this._query, this._options, this._collection, options);
27
- };
28
-
29
- Cursor.prototype.updateQuery = function (query) {
30
- this._query.query = query;
31
- this._refresh();
32
- };
33
-
34
- Cursor.prototype.skip = function (skip) {
35
- this._query.skip = skip;
36
- if (this._isObserving) {
37
- this._refresh();
38
- }
39
- return this;
40
- };
41
-
42
- Cursor.prototype.limit = function (limit) {
43
- this._query.limit = limit;
44
- if (this._isObserving) {
45
- this._refresh();
46
- }
47
- return this;
48
- };
49
-
50
- Cursor.prototype.sort = function (sort) {
51
- this._query.sort = sort;
52
- if (this._isObserving) {
53
- this._refresh();
54
- }
55
- return this;
56
- };
57
-
58
- Cursor.prototype._refresh = function () {
59
- this._collection.emit('change', {});
60
- };
61
-
62
- Cursor.prototype.rewind = function (options) {
63
- //NOOP
64
- };
65
-
66
- Cursor.prototype.count = function (callback) {
67
- var query = { query: this._query.query };
68
- if (this._query.skip) {
69
- query.skip = this._query.skip;
70
- }
71
- if (this._query.limit) {
72
- query.limit = this._query.limit;
73
- }
74
- this._getDocuments(query, function (err, res) {
75
- callback(err, res && res.length);
76
- });
77
- };
78
-
79
- Cursor.prototype.close = function (callback) {
80
- //NOOP
81
- callback();
82
- };
83
-
84
- module.exports = Cursor;
package/lib/index.js DELETED
@@ -1,6 +0,0 @@
1
- module.exports = require('./viewdb');
2
-
3
- module.exports.Cursor = require('./cursor');
4
- module.exports.Observer = require('./observe');
5
- module.exports.merge = require('./merger');
6
- module.exports.plugins = require('./plugins');
@@ -1,112 +0,0 @@
1
- var _ = require('lodash');
2
- var { v4: uuid } = require('uuid');
3
-
4
- var EventEmitter = require('events').EventEmitter;
5
- var util = require('util');
6
-
7
- var Kuery = require('kuery');
8
-
9
- var Cursor = require('../cursor');
10
-
11
- var Collection = function (collectionName) {
12
- EventEmitter.call(this);
13
-
14
- this._documents = [];
15
- this._name = collectionName;
16
- };
17
-
18
- util.inherits(Collection, EventEmitter);
19
-
20
- Collection.prototype.count = function (callback) {
21
- callback(null, this._documents.length);
22
- };
23
-
24
- Collection.prototype._write = function (op, documents, options, callback) {
25
- if (_.isFunction(options)) {
26
- callback = options;
27
- }
28
- if (!_.isArray(documents)) {
29
- documents = [documents];
30
- }
31
- var self = this;
32
- for (var i = 0; i < documents.length; i++) {
33
- var document = documents[i];
34
- if (!_.isObject(document)) {
35
- return callback(new Error('Document must be object'));
36
- }
37
- if (!_.has(document, '_id')) {
38
- document['_id'] = document['id'] || uuid();
39
- }
40
- var idx = _.findIndex(self._documents, { _id: document['_id'] });
41
- if (op === 'insert' && idx >= 0) {
42
- return callback(new Error('Unique constraint!'));
43
- }
44
- // not stored before
45
- if (idx === -1) {
46
- self._documents.push(document);
47
- } else {
48
- this._documents[idx] = document;
49
- }
50
- }
51
- this.emit('change', documents);
52
- if (callback) {
53
- callback(null, documents);
54
- }
55
- };
56
-
57
- Collection.prototype.insert = function (documents, options, callback) {
58
- return this._write('insert', documents, options, callback);
59
- };
60
-
61
- Collection.prototype.save = function (documents, options, callback) {
62
- return this._write('save', documents, options, callback);
63
- };
64
-
65
- Collection.prototype.drop = function (callback) {
66
- this._documents = [];
67
-
68
- if (callback) {
69
- callback(null);
70
- }
71
- };
72
-
73
- Collection.prototype.find = function (query, options) {
74
- return new Cursor(this, { query: query }, options, this._getDocuments.bind(this));
75
- };
76
-
77
- Collection.prototype.remove = function (query, options, callback) {
78
- var q = new Kuery(query);
79
- var documents = q.find(this._documents);
80
- this._documents = _.pullAll(this._documents, documents);
81
-
82
- process.nextTick(function () {
83
- callback(null);
84
- });
85
- };
86
- Collection.prototype.ensureIndex = function () {
87
- throw new Error('ensureIndex not supported!');
88
- };
89
- Collection.prototype.createIndex = function () {
90
- throw new Error('createIndex not supported!');
91
- };
92
-
93
- Collection.prototype._getDocuments = function (queryObject, callback) {
94
- var self = this;
95
- var query = queryObject.query || queryObject;
96
- var q = new Kuery(query);
97
- if (queryObject.sort) {
98
- q.sort(queryObject.sort);
99
- }
100
- if (queryObject.skip) {
101
- q.skip(queryObject.skip);
102
- }
103
- if (queryObject.limit) {
104
- q.limit(queryObject.limit);
105
- }
106
- var documents = q.find(self._documents);
107
- process.nextTick(function () {
108
- callback(null, _.cloneDeep(documents));
109
- });
110
- };
111
-
112
- module.exports = Collection;
@@ -1,19 +0,0 @@
1
- var Collection = require('./collection');
2
-
3
- var Store = function () {
4
- this._collections = {};
5
- };
6
-
7
- Store.prototype.collection = function (collectionName, callback) {
8
- var coll = this._collections[collectionName];
9
- if (coll === undefined) {
10
- coll = new Collection(collectionName);
11
- this._collections[collectionName] = coll;
12
- }
13
- if (callback) {
14
- callback(coll);
15
- }
16
- return coll;
17
- };
18
-
19
- module.exports = Store;