cry-db 2.0.6
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/base.d.ts +39 -0
- package/dist/base.js +151 -0
- package/dist/base.js.map +1 -0
- package/dist/db.d.ts +40 -0
- package/dist/db.js +103 -0
- package/dist/db.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/mongo.d.ts +115 -0
- package/dist/mongo.js +1431 -0
- package/dist/mongo.js.map +1 -0
- package/dist/repo.d.ts +91 -0
- package/dist/repo.js +245 -0
- package/dist/repo.js.map +1 -0
- package/dist/types.d.ts +72 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +33 -0
- package/readme.txt +3 -0
package/dist/base.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { MongoClient, ObjectId, Timestamp } from "mongodb";
|
|
2
|
+
import { Log } from "cry-helpers";
|
|
3
|
+
import { Id, IdOrEntity } from "./types";
|
|
4
|
+
export declare const log: Log;
|
|
5
|
+
interface DbInfo {
|
|
6
|
+
name: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class Base {
|
|
9
|
+
protected url: string;
|
|
10
|
+
protected client: MongoClient | null;
|
|
11
|
+
protected _isOnReplica: boolean | undefined;
|
|
12
|
+
appname: string;
|
|
13
|
+
constructor(url?: string);
|
|
14
|
+
static toId(id: IdOrEntity): Id;
|
|
15
|
+
static newid(): ObjectId;
|
|
16
|
+
newId(): ObjectId;
|
|
17
|
+
isConnected(): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Creates an objectid from parameter or a new one
|
|
20
|
+
* @param {*} o - ObjectID or null
|
|
21
|
+
*/
|
|
22
|
+
static objectid(o: Id): ObjectId;
|
|
23
|
+
static timestamp(t?: undefined | string | number | Date | Timestamp): Timestamp;
|
|
24
|
+
/**
|
|
25
|
+
* returns a list of mongo databases
|
|
26
|
+
*/
|
|
27
|
+
getDatabases(): Promise<string[]>;
|
|
28
|
+
/**
|
|
29
|
+
* returns a list of mongo databases including info
|
|
30
|
+
*/
|
|
31
|
+
getDatabaseInfos(): Promise<DbInfo[]>;
|
|
32
|
+
isOnReplicaSet(): Promise<boolean>;
|
|
33
|
+
ping(): Promise<boolean | undefined>;
|
|
34
|
+
protected connect(): Promise<MongoClient>;
|
|
35
|
+
close(): Promise<void>;
|
|
36
|
+
/** @protected */
|
|
37
|
+
static _toId(id: IdOrEntity): Id;
|
|
38
|
+
}
|
|
39
|
+
export {};
|
package/dist/base.js
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Base = exports.log = void 0;
|
|
4
|
+
const mongodb_1 = require("mongodb");
|
|
5
|
+
const cry_helpers_1 = require("cry-helpers");
|
|
6
|
+
function myDir() {
|
|
7
|
+
let dirs = process.cwd().replace(/\\/, "/").split("/");
|
|
8
|
+
let dir = dirs[dirs.length - 1];
|
|
9
|
+
return dir;
|
|
10
|
+
}
|
|
11
|
+
exports.log = new cry_helpers_1.Log(['MONGO']);
|
|
12
|
+
const DEFAULT_APPNAME = "crymongo";
|
|
13
|
+
const CONNECTION_OPTIONS = {
|
|
14
|
+
useNewUrlParser: true,
|
|
15
|
+
useUnifiedTopology: true,
|
|
16
|
+
appname: DEFAULT_APPNAME,
|
|
17
|
+
};
|
|
18
|
+
class Base {
|
|
19
|
+
constructor(url) {
|
|
20
|
+
this.url = url || process.env.MONGO_URL || "mongodb://127.0.0.1:27017";
|
|
21
|
+
this.appname = process.env.APPNAME || myDir() || DEFAULT_APPNAME;
|
|
22
|
+
this.client = null; // MongoClient(this.url, { useNewUrlParser: true, useUnifiedTopology: true }) // see also retry
|
|
23
|
+
this._isOnReplica = undefined;
|
|
24
|
+
exports.log.debug(`new Base for ${this.appname}:`, this.url);
|
|
25
|
+
}
|
|
26
|
+
static toId(id) {
|
|
27
|
+
return this._toId(id);
|
|
28
|
+
}
|
|
29
|
+
static newid() {
|
|
30
|
+
return new mongodb_1.ObjectId();
|
|
31
|
+
}
|
|
32
|
+
newId() {
|
|
33
|
+
return new mongodb_1.ObjectId();
|
|
34
|
+
}
|
|
35
|
+
isConnected() {
|
|
36
|
+
return (!!this.client && this.client.isConnected());
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Creates an objectid from parameter or a new one
|
|
40
|
+
* @param {*} o - ObjectID or null
|
|
41
|
+
*/
|
|
42
|
+
static objectid(o) {
|
|
43
|
+
if (!o)
|
|
44
|
+
return new mongodb_1.ObjectId();
|
|
45
|
+
if (o instanceof mongodb_1.ObjectId)
|
|
46
|
+
return o;
|
|
47
|
+
if (typeof o === "string")
|
|
48
|
+
mongodb_1.ObjectId.createFromHexString(o);
|
|
49
|
+
return new mongodb_1.ObjectId(o);
|
|
50
|
+
}
|
|
51
|
+
static timestamp(t = undefined) {
|
|
52
|
+
if (t instanceof mongodb_1.Timestamp)
|
|
53
|
+
return t;
|
|
54
|
+
if (typeof t === "object" && t.hasOwnProperty("high"))
|
|
55
|
+
return mongodb_1.Timestamp.fromString(t.toString());
|
|
56
|
+
if (t === null || t === undefined)
|
|
57
|
+
return new mongodb_1.Timestamp(new Date().valueOf() % 1000, new Date().valueOf() / 1000);
|
|
58
|
+
if (t instanceof Date)
|
|
59
|
+
return new mongodb_1.Timestamp(t.valueOf() % 1000, t.valueOf() / 1000);
|
|
60
|
+
if (typeof t === "string")
|
|
61
|
+
return mongodb_1.Timestamp.fromString(t);
|
|
62
|
+
if (typeof t === "number" && Number.isInteger(t))
|
|
63
|
+
return mongodb_1.Timestamp.fromInt(t);
|
|
64
|
+
if (typeof t === "number")
|
|
65
|
+
return mongodb_1.Timestamp.fromNumber(t);
|
|
66
|
+
throw new Error(`cannot convert timestamp: ${t}`);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* returns a list of mongo databases
|
|
70
|
+
*/
|
|
71
|
+
async getDatabases() {
|
|
72
|
+
return (await this.getDatabaseInfos()).map(d => d.name);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* returns a list of mongo databases including info
|
|
76
|
+
*/
|
|
77
|
+
async getDatabaseInfos() {
|
|
78
|
+
let conn = await this.connect();
|
|
79
|
+
return (await conn.db("admin").admin().listDatabases()).databases;
|
|
80
|
+
}
|
|
81
|
+
async isOnReplicaSet() {
|
|
82
|
+
if (this._isOnReplica !== undefined)
|
|
83
|
+
return this._isOnReplica;
|
|
84
|
+
try {
|
|
85
|
+
await this.connect();
|
|
86
|
+
await this.client.db("admin").executeDbAdminCommand({ replSetGetStatus: 1 });
|
|
87
|
+
return this._isOnReplica = true;
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
if (err.message === "not running with --replSet")
|
|
91
|
+
return this._isOnReplica = false;
|
|
92
|
+
else
|
|
93
|
+
throw err;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async ping() {
|
|
97
|
+
if (this._isOnReplica !== undefined)
|
|
98
|
+
return this._isOnReplica;
|
|
99
|
+
try {
|
|
100
|
+
await this.connect();
|
|
101
|
+
let ret = await this.client.db("admin").executeDbAdminCommand({ ping: 1 });
|
|
102
|
+
return (ret === null || ret === void 0 ? void 0 : ret.ok) === 1;
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
}
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
async connect() {
|
|
109
|
+
if (this.client && this.client.isConnected)
|
|
110
|
+
return this.client;
|
|
111
|
+
if (this.client && !this.client.isConnected)
|
|
112
|
+
await this.close();
|
|
113
|
+
exports.log.debug(`Mongo connecting app ${this.appname}: `, this.url);
|
|
114
|
+
this.client = new mongodb_1.MongoClient(this.url, { ...CONNECTION_OPTIONS, appname: this.appname });
|
|
115
|
+
this.client = await this.client.connect();
|
|
116
|
+
exports.log.info("mongo connected to ", this.url);
|
|
117
|
+
return this.client;
|
|
118
|
+
}
|
|
119
|
+
async close() {
|
|
120
|
+
var _a;
|
|
121
|
+
if ((_a = this.client) === null || _a === void 0 ? void 0 : _a.isConnected())
|
|
122
|
+
try {
|
|
123
|
+
await this.client.close();
|
|
124
|
+
exports.log.info("connection closed");
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
exports.log.error(`Error closing client ${err.message}`);
|
|
128
|
+
this.client = null;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/** @protected */
|
|
132
|
+
static _toId(id) {
|
|
133
|
+
if (id === null || id === undefined)
|
|
134
|
+
return id;
|
|
135
|
+
if (typeof id === "number")
|
|
136
|
+
return id;
|
|
137
|
+
if (id instanceof mongodb_1.ObjectId)
|
|
138
|
+
return id;
|
|
139
|
+
if (typeof id === "string" && id.match(/^[0-9a-f]{24,24}$/i))
|
|
140
|
+
return mongodb_1.ObjectId.createFromHexString(id);
|
|
141
|
+
if (typeof id === "object" && id._id)
|
|
142
|
+
return Base.toId(id._id);
|
|
143
|
+
if (typeof id === "object" && id._bsontype.match(/ObjectID/i))
|
|
144
|
+
return mongodb_1.ObjectId.createFromHexString(id.toString());
|
|
145
|
+
//console.log("_toId fall throu")
|
|
146
|
+
//console.dir(id)
|
|
147
|
+
return id.toString();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
exports.Base = Base;
|
|
151
|
+
//# sourceMappingURL=base.js.map
|
package/dist/base.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
|
package/dist/db.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Base, log } from "./base";
|
|
2
|
+
import { IndexOptions, MongoClient } from "mongodb";
|
|
3
|
+
import { Entity, Id } from "./types";
|
|
4
|
+
export { log };
|
|
5
|
+
export declare class Db extends Base {
|
|
6
|
+
protected db: string;
|
|
7
|
+
constructor(db?: string, url?: string);
|
|
8
|
+
static newid(): import("bson").ObjectId;
|
|
9
|
+
static toId(id: Id | Entity): Id;
|
|
10
|
+
static objectid(o: Id): import("bson").ObjectId;
|
|
11
|
+
/**
|
|
12
|
+
* Sets a new mongo database
|
|
13
|
+
* @param {string} newdb - name of mongo database
|
|
14
|
+
*/
|
|
15
|
+
setDb(newdb: string): void;
|
|
16
|
+
getDb(): string;
|
|
17
|
+
protected connect(): Promise<MongoClient>;
|
|
18
|
+
/**
|
|
19
|
+
* enumerates collections of a mongo database
|
|
20
|
+
* @returns {Promise<string[]>} - array of collection
|
|
21
|
+
*/
|
|
22
|
+
getCollections(): Promise<string[]>;
|
|
23
|
+
indexes(collection: string): Promise<any>;
|
|
24
|
+
createIndex(collection: string, name: string, spec: any, opts?: IndexOptions): Promise<string | undefined>;
|
|
25
|
+
/**
|
|
26
|
+
* Creates a back-up set
|
|
27
|
+
* @param {Array<string>} [onlyCollections] - backup only these collections
|
|
28
|
+
* @param {Array<string>} [excludeCollections] - exclude these collections (takes precedence over onlyCollections)
|
|
29
|
+
*/
|
|
30
|
+
backupDb(onlyCollections?: Array<string> | null, excludeCollections?: Array<string> | null): Promise<Record<string, string[]>>;
|
|
31
|
+
/**
|
|
32
|
+
* Restores a backupset
|
|
33
|
+
* @param {Object} backupSet - a object, keys are collection names, values are arrays of entities
|
|
34
|
+
*/
|
|
35
|
+
restoreDb(backupSet: {
|
|
36
|
+
[collection: string]: Array<Object>;
|
|
37
|
+
}): Promise<{
|
|
38
|
+
[id: string]: Object;
|
|
39
|
+
}>;
|
|
40
|
+
}
|
package/dist/db.js
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Db = exports.log = void 0;
|
|
4
|
+
const base_1 = require("./base");
|
|
5
|
+
Object.defineProperty(exports, "log", { enumerable: true, get: function () { return base_1.log; } });
|
|
6
|
+
class Db extends base_1.Base {
|
|
7
|
+
constructor(db, url) {
|
|
8
|
+
super(url);
|
|
9
|
+
this.db = "";
|
|
10
|
+
if (db)
|
|
11
|
+
this.db = db;
|
|
12
|
+
else if (process.env.MONGO_DB)
|
|
13
|
+
this.db = process.env.MONGO_DB;
|
|
14
|
+
}
|
|
15
|
+
static newid() {
|
|
16
|
+
return base_1.Base.newid();
|
|
17
|
+
}
|
|
18
|
+
static toId(id) {
|
|
19
|
+
return base_1.Base.toId(id);
|
|
20
|
+
}
|
|
21
|
+
static objectid(o) {
|
|
22
|
+
return base_1.Base.objectid(o);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Sets a new mongo database
|
|
26
|
+
* @param {string} newdb - name of mongo database
|
|
27
|
+
*/
|
|
28
|
+
setDb(newdb) {
|
|
29
|
+
base_1.log.debug('Mongo switch db:', newdb);
|
|
30
|
+
this.db = newdb;
|
|
31
|
+
}
|
|
32
|
+
getDb() {
|
|
33
|
+
return this.db;
|
|
34
|
+
}
|
|
35
|
+
async connect() {
|
|
36
|
+
if (!this.db)
|
|
37
|
+
throw new Error("Db cannot connect - must specify db or set MONGO_DB");
|
|
38
|
+
return await super.connect();
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* enumerates collections of a mongo database
|
|
42
|
+
* @returns {Promise<string[]>} - array of collection
|
|
43
|
+
*/
|
|
44
|
+
async getCollections() {
|
|
45
|
+
base_1.log.debug('getCollections called');
|
|
46
|
+
let conn = await this.connect();
|
|
47
|
+
let ret = (await conn.db(this.db).collections()).map((c) => c.s.namespace.collection);
|
|
48
|
+
base_1.log.debug('getCollections returns', ret);
|
|
49
|
+
return ret;
|
|
50
|
+
}
|
|
51
|
+
async indexes(collection) {
|
|
52
|
+
await this.connect();
|
|
53
|
+
return await this.client.db(this.db).collection(collection).indexes();
|
|
54
|
+
}
|
|
55
|
+
async createIndex(collection, name, spec, opts = {}) {
|
|
56
|
+
await this.connect();
|
|
57
|
+
opts.name = name;
|
|
58
|
+
let indexes = await this.client.db(this.db).collection(collection).indexes();
|
|
59
|
+
if (indexes.map((i) => i.name).includes(name))
|
|
60
|
+
return;
|
|
61
|
+
return await this.client.db(this.db).collection(collection).createIndex(spec, opts);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Creates a back-up set
|
|
65
|
+
* @param {Array<string>} [onlyCollections] - backup only these collections
|
|
66
|
+
* @param {Array<string>} [excludeCollections] - exclude these collections (takes precedence over onlyCollections)
|
|
67
|
+
*/
|
|
68
|
+
async backupDb(onlyCollections = null, excludeCollections = []) {
|
|
69
|
+
let conn = await this.connect();
|
|
70
|
+
let colls = await this.getCollections();
|
|
71
|
+
if (onlyCollections)
|
|
72
|
+
colls = colls.filter(c => onlyCollections.includes(c));
|
|
73
|
+
if (excludeCollections)
|
|
74
|
+
colls = colls.filter(c => !excludeCollections.includes(c));
|
|
75
|
+
base_1.log.debug("backupDb collections", colls);
|
|
76
|
+
let backup = {};
|
|
77
|
+
for await (let col of colls) {
|
|
78
|
+
backup[col] = await conn.db(this.db).collection(col).find({}).toArray();
|
|
79
|
+
}
|
|
80
|
+
return backup;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Restores a backupset
|
|
84
|
+
* @param {Object} backupSet - a object, keys are collection names, values are arrays of entities
|
|
85
|
+
*/
|
|
86
|
+
async restoreDb(backupSet) {
|
|
87
|
+
base_1.log.debug('restorDb called');
|
|
88
|
+
let conn = (await this.connect()).db(this.db);
|
|
89
|
+
let restored = {};
|
|
90
|
+
for await (let colName of Object.keys(backupSet)) {
|
|
91
|
+
let c = conn.collection(colName);
|
|
92
|
+
await c.deleteMany({});
|
|
93
|
+
if (backupSet[colName].length) {
|
|
94
|
+
restored[colName] = (await (c.insertMany(backupSet[colName]))).result.n;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
base_1.log.debug('restorDb returns', restored);
|
|
98
|
+
return restored;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.Db = Db;
|
|
102
|
+
module.exports = { Db, log: base_1.log };
|
|
103
|
+
//# sourceMappingURL=db.js.map
|
package/dist/db.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.Db = exports.Repo = exports.Mongo = exports.Base = exports.Types = void 0;
|
|
26
|
+
const base_1 = require("./base");
|
|
27
|
+
Object.defineProperty(exports, "Base", { enumerable: true, get: function () { return base_1.Base; } });
|
|
28
|
+
const mongo_1 = __importDefault(require("./mongo"));
|
|
29
|
+
exports.Mongo = mongo_1.default;
|
|
30
|
+
const repo_1 = require("./repo");
|
|
31
|
+
Object.defineProperty(exports, "Repo", { enumerable: true, get: function () { return repo_1.Repo; } });
|
|
32
|
+
const db_1 = require("./db");
|
|
33
|
+
Object.defineProperty(exports, "Db", { enumerable: true, get: function () { return db_1.Db; } });
|
|
34
|
+
const Types = __importStar(require("./types"));
|
|
35
|
+
exports.Types = Types;
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAA8B;AAQ1B,qFARK,WAAI,OAQL;AAPR,oDAA4B;AAQxB,gBARG,eAAK,CAQH;AAPT,iCAA8B;AAQ1B,qFARK,WAAI,OAQL;AAPR,6BAA0B;AAQtB,mFARK,OAAE,OAQL;AAPN,+CAAkC;AAG9B,sBAAK"}
|
package/dist/mongo.d.ts
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import MongoDb, { CollectionAggregationOptions, MongoClient, Timestamp } from 'mongodb';
|
|
2
|
+
import { Db } from './db';
|
|
3
|
+
import { AuditRecord, BatchSpec, Entity, GetAfterSpec, GetNewerSpec, Id, IdOrEntity, InsertSpec, MongoEmittedEvents, Projection, Query, QueryOpts, UpdateSpec, UpsertOptions } from './types';
|
|
4
|
+
declare type DebugObject = {
|
|
5
|
+
operation: string;
|
|
6
|
+
} & Record<any, any>;
|
|
7
|
+
export declare const DummyExportToFixTsCompilation = true;
|
|
8
|
+
export default class Mongo extends Db {
|
|
9
|
+
private revisions;
|
|
10
|
+
private softdelete;
|
|
11
|
+
private session;
|
|
12
|
+
private emittingPublishEvents;
|
|
13
|
+
private auditing;
|
|
14
|
+
private auditCollectionName;
|
|
15
|
+
private auditedCollections;
|
|
16
|
+
private emitter;
|
|
17
|
+
private user;
|
|
18
|
+
private audit;
|
|
19
|
+
private syncSupport;
|
|
20
|
+
constructor(db?: string, url?: string);
|
|
21
|
+
static newid(): MongoDb.ObjectId;
|
|
22
|
+
static toId(id: Id | Entity): Id;
|
|
23
|
+
static objectid(o: Id): MongoDb.ObjectId;
|
|
24
|
+
on<U extends keyof MongoEmittedEvents>(evt: U, listener: MongoEmittedEvents[U]): void;
|
|
25
|
+
off<U extends keyof MongoEmittedEvents>(evt: U, listener: MongoEmittedEvents[U]): void;
|
|
26
|
+
once<U extends keyof MongoEmittedEvents>(evt: U, listener: MongoEmittedEvents[U]): void;
|
|
27
|
+
setUser(username: string): string;
|
|
28
|
+
setAudit(obj: Object): Object;
|
|
29
|
+
useRevisions(enabled: boolean): boolean;
|
|
30
|
+
usesRevisions(): boolean;
|
|
31
|
+
useSoftDelete(enabled: boolean): boolean;
|
|
32
|
+
usesSoftDelete(): boolean;
|
|
33
|
+
useAuditing(enabled: boolean): boolean;
|
|
34
|
+
usesAuditing(): boolean;
|
|
35
|
+
useSync(enabled: boolean): boolean;
|
|
36
|
+
usesSync(): boolean;
|
|
37
|
+
auditToCollection(c: string): string;
|
|
38
|
+
auditCollection(coll: string, enable?: boolean): void;
|
|
39
|
+
auditCollections(arr: string[] | string): string[];
|
|
40
|
+
auditingCollection(coll: string, db?: string): boolean;
|
|
41
|
+
emitPublishEvents(enabled: boolean): boolean;
|
|
42
|
+
emitsPublishEvents(): boolean;
|
|
43
|
+
distinct<T>(collection: string, field: string): Promise<T[]>;
|
|
44
|
+
count<T>(collection: string, query?: Query, opts?: QueryOpts): Promise<T[]>;
|
|
45
|
+
find<T>(collection: string, query?: Query, opts?: QueryOpts): Promise<T[]>;
|
|
46
|
+
findAll<T>(collection: string, query?: Query, opts?: QueryOpts): Promise<T[]>;
|
|
47
|
+
findNewer<T>(collection: string, timestamp: Timestamp | number | string | Date, query?: Query, opts?: QueryOpts): Promise<T[]>;
|
|
48
|
+
findNewerMany(spec?: GetNewerSpec[]): Promise<Record<string, any[]>>;
|
|
49
|
+
findAfter<T>(collection: string, csq: number, query?: Query, opts?: QueryOpts): Promise<T[]>;
|
|
50
|
+
findAfterMany(spec?: GetAfterSpec[]): Promise<Record<string, any[]>>;
|
|
51
|
+
findNewerFromDate<T>(collection: string, date: Date | string, query?: Query, opts?: QueryOpts): Promise<T[]>;
|
|
52
|
+
findOne<T>(collection: string, query: Query, projection?: Projection): Promise<T | null>;
|
|
53
|
+
findById<T>(collection: string, id: Id, projection?: Projection): Promise<T | null>;
|
|
54
|
+
updateOne<T>(collection: string, query: Query, update: UpdateSpec<T>, options?: UpsertOptions<T>): Promise<T>;
|
|
55
|
+
save<T>(collection: string, update: UpdateSpec<T>, id?: Id | undefined, options?: UpsertOptions<T>): Promise<T>;
|
|
56
|
+
update<T>(collection: string, query: Query, update: UpdateSpec<T>): Promise<{
|
|
57
|
+
n: number;
|
|
58
|
+
ok: boolean;
|
|
59
|
+
}>;
|
|
60
|
+
upsert<T>(collection: string, query: Query, update: UpdateSpec<T>, options?: UpsertOptions<T>): Promise<T>;
|
|
61
|
+
insert<T>(collection: string, insert: InsertSpec<T>): Promise<T>;
|
|
62
|
+
upsertBatch<T>(collection: string, batch: BatchSpec<T>): Promise<T[]>;
|
|
63
|
+
insertMany<T>(collection: string, insert: InsertSpec<T>[]): Promise<T[]>;
|
|
64
|
+
deleteOne<T>(collection: string, query: Query): Promise<T>;
|
|
65
|
+
blockOne<T>(collection: string, query: Query): Promise<T>;
|
|
66
|
+
unblockOne<T>(collection: string, query: Query): Promise<T>;
|
|
67
|
+
hardDeleteOne<T>(collection: string, query: Query): Promise<T>;
|
|
68
|
+
delete(collection: string, query: Query): Promise<{
|
|
69
|
+
ok: boolean;
|
|
70
|
+
n: number;
|
|
71
|
+
}>;
|
|
72
|
+
hardDelete(collection: string, query: Query): Promise<{
|
|
73
|
+
ok: boolean;
|
|
74
|
+
n: number;
|
|
75
|
+
}>;
|
|
76
|
+
testHash(collection: string, query: Query, field: string | Object, unhashedValue: string | Object): Promise<boolean>;
|
|
77
|
+
aggregate<T>(collection: string, pipeline: object[], opts?: MongoDb.CollectionAggregationOptions): Promise<T[]>;
|
|
78
|
+
isUnique<T>(collection: string, field: keyof T, value: string, id?: Id): Promise<boolean>;
|
|
79
|
+
collectFieldValues<T>(collection: string, field: keyof T, inArray: boolean | undefined, opts: CollectionAggregationOptions): Promise<any>;
|
|
80
|
+
dropCollection(collection: string): Promise<void>;
|
|
81
|
+
resetCollectionSync(collection: string): Promise<void>;
|
|
82
|
+
dropCollections(collections: string[]): Promise<void>;
|
|
83
|
+
createCollections(collections: string[]): Promise<void>;
|
|
84
|
+
createCollection(collection: string): Promise<void>;
|
|
85
|
+
dbLogPurge(collection: string, _id: Id | undefined): Promise<{
|
|
86
|
+
n: number;
|
|
87
|
+
}>;
|
|
88
|
+
dbLogGet(collection: string, _id: IdOrEntity): Promise<AuditRecord[]>;
|
|
89
|
+
private replaceIds;
|
|
90
|
+
connect(): Promise<MongoClient>;
|
|
91
|
+
close(): Promise<void>;
|
|
92
|
+
inTransaction(): Promise<boolean>;
|
|
93
|
+
withTransaction(funct: (coll: MongoClient, session: MongoDb.ClientSession | null) => Promise<void>): Promise<any>;
|
|
94
|
+
startTransaction(): Promise<void>;
|
|
95
|
+
commitTransaction(): Promise<void>;
|
|
96
|
+
abortTransaction(): Promise<void>;
|
|
97
|
+
private _try_once;
|
|
98
|
+
executeTransactionally(collection: string, f: (db: MongoDb.Collection, client: MongoClient) => Promise<any>, useTransaction: boolean | undefined, debugObject: DebugObject): Promise<any>;
|
|
99
|
+
private _findLastSequenceForKey;
|
|
100
|
+
private _getNextCollectionUpdateSeqNo;
|
|
101
|
+
private _findSequenceKeys;
|
|
102
|
+
private _processSequenceField;
|
|
103
|
+
private _processSequenceFieldForMany;
|
|
104
|
+
private _getFieldsRecursively;
|
|
105
|
+
private _removeUnchanged;
|
|
106
|
+
private _shouldAuditCollection;
|
|
107
|
+
private _publishAndAudit;
|
|
108
|
+
private _makePublication;
|
|
109
|
+
private emit;
|
|
110
|
+
private _writeAuditRecord;
|
|
111
|
+
private _processUpdateObject;
|
|
112
|
+
private _processHashedKeys;
|
|
113
|
+
private _processReturnedObject;
|
|
114
|
+
}
|
|
115
|
+
export {};
|