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.
- package/dist/cursor.d.ts +23 -0
- package/dist/cursor.d.ts.map +1 -0
- package/dist/cursor.js +81 -0
- package/dist/cursor.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/inmemory/collection.d.ts +20 -0
- package/dist/inmemory/collection.d.ts.map +1 -0
- package/dist/inmemory/collection.js +111 -0
- package/dist/inmemory/collection.js.map +1 -0
- package/dist/inmemory/store.d.ts +8 -0
- package/dist/inmemory/store.d.ts.map +1 -0
- package/dist/inmemory/store.js +21 -0
- package/dist/inmemory/store.js.map +1 -0
- package/dist/merger.d.ts +4 -0
- package/dist/merger.d.ts.map +1 -0
- package/dist/merger.js +139 -0
- package/dist/merger.js.map +1 -0
- package/dist/observe.d.ts +18 -0
- package/dist/observe.d.ts.map +1 -0
- package/dist/observe.js +93 -0
- package/dist/observe.js.map +1 -0
- package/dist/plugins/index.d.ts +4 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +8 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/viewdb_timestamp_plugin.d.ts +3 -0
- package/dist/plugins/viewdb_timestamp_plugin.d.ts.map +1 -0
- package/dist/plugins/viewdb_timestamp_plugin.js +92 -0
- package/dist/plugins/viewdb_timestamp_plugin.js.map +1 -0
- package/dist/plugins/viewdb_versioning_plugin.d.ts +3 -0
- package/dist/plugins/viewdb_versioning_plugin.d.ts.map +1 -0
- package/dist/plugins/viewdb_versioning_plugin.js +83 -0
- package/dist/plugins/viewdb_versioning_plugin.js.map +1 -0
- package/dist/types.d.ts +76 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/viewdb.d.ts +13 -0
- package/dist/viewdb.d.ts.map +1 -0
- package/dist/viewdb.js +24 -0
- package/dist/viewdb.js.map +1 -0
- package/package.json +19 -12
- package/.prettierrc +0 -1
- package/index.js +0 -1
- package/jest.config.js +0 -11
- package/lib/cursor.js +0 -84
- package/lib/index.js +0 -6
- package/lib/inmemory/collection.js +0 -112
- package/lib/inmemory/store.js +0 -19
- package/lib/merger.js +0 -62
- package/lib/observe.js +0 -53
- package/lib/plugins/index.js +0 -2
- package/lib/plugins/viewdb_timestamp_plugin.js +0 -106
- package/lib/plugins/viewdb_versioning_plugin.js +0 -93
- package/lib/viewdb.js +0 -21
- package/test/cursor.js +0 -101
- package/test/merger.js +0 -196
- package/test/observe.js +0 -165
- package/test/plugins/viewdb_timestamp_plugin.js +0 -159
- package/test/plugins/viewdb_versioning_plugin.js +0 -112
- 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 @@
|
|
|
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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"}
|
package/dist/types.d.ts
ADDED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/viewdb.d.ts
ADDED
|
@@ -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.
|
|
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
|
-
"
|
|
11
|
-
"test
|
|
12
|
-
"
|
|
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
|
|
15
|
-
"jshint": "jshint ./
|
|
16
|
-
"jscs": "jscs -p google ./
|
|
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
|
-
"
|
|
27
|
-
"
|
|
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.
|
|
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,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;
|
package/lib/inmemory/store.js
DELETED
|
@@ -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;
|