mongoku 1.3.0 → 2.0.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/README.md +68 -42
- package/build/client/_app/immutable/assets/0.BHsXFfsc.css +1 -0
- package/build/client/_app/immutable/assets/0.BHsXFfsc.css.br +0 -0
- package/build/client/_app/immutable/assets/0.BHsXFfsc.css.gz +0 -0
- package/build/client/_app/immutable/assets/3.CRKE8WvY.css +1 -0
- package/build/client/_app/immutable/assets/3.CRKE8WvY.css.br +2 -0
- package/build/client/_app/immutable/assets/3.CRKE8WvY.css.gz +0 -0
- package/build/client/_app/immutable/assets/6.DawdmtJd.css +1 -0
- package/build/client/_app/immutable/assets/6.DawdmtJd.css.br +2 -0
- package/build/client/_app/immutable/assets/6.DawdmtJd.css.gz +0 -0
- package/build/client/_app/immutable/assets/Panel.BDHMtO-3.css +1 -0
- package/build/client/_app/immutable/assets/Panel.BDHMtO-3.css.br +0 -0
- package/build/client/_app/immutable/assets/Panel.BDHMtO-3.css.gz +0 -0
- package/build/client/_app/immutable/assets/PrettyJson.CtngcfyW.css +1 -0
- package/build/client/_app/immutable/assets/PrettyJson.CtngcfyW.css.br +0 -0
- package/build/client/_app/immutable/assets/PrettyJson.CtngcfyW.css.gz +0 -0
- package/build/client/_app/immutable/assets/cuprum-cyrillic-400-normal.Cnibl3-L.woff2 +0 -0
- package/build/client/_app/immutable/assets/cuprum-cyrillic-400-normal.RKIjpA76.woff +0 -0
- package/build/client/_app/immutable/assets/cuprum-cyrillic-ext-400-normal.CT5q4ZVh.woff2 +0 -0
- package/build/client/_app/immutable/assets/cuprum-cyrillic-ext-400-normal.iCCFJ4Gn.woff +0 -0
- package/build/client/_app/immutable/assets/cuprum-latin-400-normal.Cbwtr8a4.woff +0 -0
- package/build/client/_app/immutable/assets/cuprum-latin-400-normal.CjFvNwMJ.woff2 +0 -0
- package/build/client/_app/immutable/assets/cuprum-latin-ext-400-normal.BWTJtpjo.woff2 +0 -0
- package/build/client/_app/immutable/assets/cuprum-latin-ext-400-normal.BZXayy47.woff +0 -0
- package/build/client/_app/immutable/assets/cuprum-vietnamese-400-normal.uXRi1gw5.woff +0 -0
- package/build/client/_app/immutable/assets/rajdhani-devanagari-400-normal.BdIzgbsr.woff +0 -0
- package/build/client/_app/immutable/assets/rajdhani-devanagari-400-normal.CTuj2HZW.woff2 +0 -0
- package/build/client/_app/immutable/assets/rajdhani-latin-400-normal.C6_q4usG.woff +0 -0
- package/build/client/_app/immutable/assets/rajdhani-latin-400-normal.CurJOxDW.woff2 +0 -0
- package/build/client/_app/immutable/assets/rajdhani-latin-ext-400-normal.DACPYgMx.woff2 +0 -0
- package/build/client/_app/immutable/assets/rajdhani-latin-ext-400-normal.Der7ynDE.woff +0 -0
- package/build/client/_app/immutable/chunks/B-Z1NsR7.js +1 -0
- package/build/client/_app/immutable/chunks/B-Z1NsR7.js.br +0 -0
- package/build/client/_app/immutable/chunks/B-Z1NsR7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BEuO9qGi.js +1 -0
- package/build/client/_app/immutable/chunks/BEuO9qGi.js.br +0 -0
- package/build/client/_app/immutable/chunks/BEuO9qGi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BN_N9-2s.js +1 -0
- package/build/client/_app/immutable/chunks/BN_N9-2s.js.br +0 -0
- package/build/client/_app/immutable/chunks/BN_N9-2s.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BuIrCFA_.js +1 -0
- package/build/client/_app/immutable/chunks/BuIrCFA_.js.br +0 -0
- package/build/client/_app/immutable/chunks/BuIrCFA_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C9b4uNov.js +1 -0
- package/build/client/_app/immutable/chunks/C9b4uNov.js.br +0 -0
- package/build/client/_app/immutable/chunks/C9b4uNov.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CIYBIyvN.js +1 -0
- package/build/client/_app/immutable/chunks/CIYBIyvN.js.br +0 -0
- package/build/client/_app/immutable/chunks/CIYBIyvN.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CWUhQKKC.js +1 -0
- package/build/client/_app/immutable/chunks/CWUhQKKC.js.br +0 -0
- package/build/client/_app/immutable/chunks/CWUhQKKC.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CrJSDly5.js +2 -0
- package/build/client/_app/immutable/chunks/CrJSDly5.js.br +0 -0
- package/build/client/_app/immutable/chunks/CrJSDly5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DRy_44ib.js +1 -0
- package/build/client/_app/immutable/chunks/DRy_44ib.js.br +0 -0
- package/build/client/_app/immutable/chunks/DRy_44ib.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DS5yzhLt.js +1 -0
- package/build/client/_app/immutable/chunks/DS5yzhLt.js.br +0 -0
- package/build/client/_app/immutable/chunks/DS5yzhLt.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DZSJW-Zm.js +1 -0
- package/build/client/_app/immutable/chunks/DZSJW-Zm.js.br +0 -0
- package/build/client/_app/immutable/chunks/DZSJW-Zm.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dbyirw23.js +14 -0
- package/build/client/_app/immutable/chunks/Dbyirw23.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dbyirw23.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DsnmJJEf.js +1 -0
- package/build/client/_app/immutable/chunks/DsnmJJEf.js.br +2 -0
- package/build/client/_app/immutable/chunks/DsnmJJEf.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DzSHMQR7.js +1 -0
- package/build/client/_app/immutable/chunks/DzSHMQR7.js.br +0 -0
- package/build/client/_app/immutable/chunks/DzSHMQR7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/W-qL5_8w.js +1 -0
- package/build/client/_app/immutable/chunks/W-qL5_8w.js.br +0 -0
- package/build/client/_app/immutable/chunks/W-qL5_8w.js.gz +0 -0
- package/build/client/_app/immutable/chunks/aB6hH3ax.js +3 -0
- package/build/client/_app/immutable/chunks/aB6hH3ax.js.br +0 -0
- package/build/client/_app/immutable/chunks/aB6hH3ax.js.gz +0 -0
- package/build/client/_app/immutable/chunks/nJ6DKbk8.js +1 -0
- package/build/client/_app/immutable/chunks/nJ6DKbk8.js.br +0 -0
- package/build/client/_app/immutable/chunks/nJ6DKbk8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/zeTqHWB5.js +2 -0
- package/build/client/_app/immutable/chunks/zeTqHWB5.js.br +0 -0
- package/build/client/_app/immutable/chunks/zeTqHWB5.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CW91YXu8.js +2 -0
- package/build/client/_app/immutable/entry/app.CW91YXu8.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CW91YXu8.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CidwPVgO.js +1 -0
- package/build/client/_app/immutable/entry/start.CidwPVgO.js.br +2 -0
- package/build/client/_app/immutable/entry/start.CidwPVgO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.B2lBDs71.js +1 -0
- package/build/client/_app/immutable/nodes/0.B2lBDs71.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.B2lBDs71.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.CueZCvtl.js +1 -0
- package/build/client/_app/immutable/nodes/1.CueZCvtl.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.CueZCvtl.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.alYAlI3j.js +1 -0
- package/build/client/_app/immutable/nodes/3.alYAlI3j.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.alYAlI3j.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.BqBphmVX.js +1 -0
- package/build/client/_app/immutable/nodes/4.BqBphmVX.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.BqBphmVX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.BkAWRgl4.js +1 -0
- package/build/client/_app/immutable/nodes/5.BkAWRgl4.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.BkAWRgl4.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.KI4mq5ln.js +1 -0
- package/build/client/_app/immutable/nodes/6.KI4mq5ln.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.KI4mq5ln.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.Brjrw0K8.js +1 -0
- package/build/client/_app/immutable/nodes/7.Brjrw0K8.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.Brjrw0K8.js.gz +0 -0
- package/build/client/_app/version.json +1 -0
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/client/robots.txt +3 -0
- package/build/env.js +45 -0
- package/build/handler.js +1376 -0
- package/build/index.js +334 -0
- package/build/server/chunks/0-BGoFMRn2.js +21 -0
- package/build/server/chunks/0-BGoFMRn2.js.map +1 -0
- package/build/server/chunks/1-Ch0AY58K.js +9 -0
- package/build/server/chunks/1-Ch0AY58K.js.map +1 -0
- package/build/server/chunks/2-B39zPvzn.js +19 -0
- package/build/server/chunks/2-B39zPvzn.js.map +1 -0
- package/build/server/chunks/3-Bmk9Qof9.js +69 -0
- package/build/server/chunks/3-Bmk9Qof9.js.map +1 -0
- package/build/server/chunks/4-DnpScx2e.js +57 -0
- package/build/server/chunks/4-DnpScx2e.js.map +1 -0
- package/build/server/chunks/5-Bw8bTTBj.js +39 -0
- package/build/server/chunks/5-Bw8bTTBj.js.map +1 -0
- package/build/server/chunks/6-D8zNoyW_.js +197 -0
- package/build/server/chunks/6-D8zNoyW_.js.map +1 -0
- package/build/server/chunks/7-Cim4qVL3.js +42 -0
- package/build/server/chunks/7-Cim4qVL3.js.map +1 -0
- package/build/server/chunks/JsonEncoder-jJ2OBaud.js +62 -0
- package/build/server/chunks/JsonEncoder-jJ2OBaud.js.map +1 -0
- package/build/server/chunks/Panel-DTdYk-gk.js +37 -0
- package/build/server/chunks/Panel-DTdYk-gk.js.map +1 -0
- package/build/server/chunks/PrettyJson-wIuHvehp.js +290 -0
- package/build/server/chunks/PrettyJson-wIuHvehp.js.map +1 -0
- package/build/server/chunks/TooltipTable-J278e1CA.js +15 -0
- package/build/server/chunks/TooltipTable-J278e1CA.js.map +1 -0
- package/build/server/chunks/_layout.svelte-D7RD9tLN.js +108 -0
- package/build/server/chunks/_layout.svelte-D7RD9tLN.js.map +1 -0
- package/build/server/chunks/_page.svelte-4PYYtPii.js +119 -0
- package/build/server/chunks/_page.svelte-4PYYtPii.js.map +1 -0
- package/build/server/chunks/_page.svelte-Be5VTn1e.js +82 -0
- package/build/server/chunks/_page.svelte-Be5VTn1e.js.map +1 -0
- package/build/server/chunks/_page.svelte-DIPUjSjm.js +118 -0
- package/build/server/chunks/_page.svelte-DIPUjSjm.js.map +1 -0
- package/build/server/chunks/_page.svelte-DZ59Sr3N.js +192 -0
- package/build/server/chunks/_page.svelte-DZ59Sr3N.js.map +1 -0
- package/build/server/chunks/_page.svelte-sdKGQrEF.js +91 -0
- package/build/server/chunks/_page.svelte-sdKGQrEF.js.map +1 -0
- package/build/server/chunks/_server.ts-BIRebnb3.js +20 -0
- package/build/server/chunks/_server.ts-BIRebnb3.js.map +1 -0
- package/build/server/chunks/_server.ts-MnKJDybo.js +19 -0
- package/build/server/chunks/_server.ts-MnKJDybo.js.map +1 -0
- package/build/server/chunks/_server.ts-Tog8k3Mh.js +52 -0
- package/build/server/chunks/_server.ts-Tog8k3Mh.js.map +1 -0
- package/build/server/chunks/client-BZtxOgbR.js +7 -0
- package/build/server/chunks/client-BZtxOgbR.js.map +1 -0
- package/build/server/chunks/client2-LilSGYJA.js +26 -0
- package/build/server/chunks/client2-LilSGYJA.js.map +1 -0
- package/build/server/chunks/context-BU6gUbSI.js +137 -0
- package/build/server/chunks/context-BU6gUbSI.js.map +1 -0
- package/build/server/chunks/error.svelte-BfneeC-d.js +16 -0
- package/build/server/chunks/error.svelte-BfneeC-d.js.map +1 -0
- package/build/server/chunks/exports-DiyTWREe.js +198 -0
- package/build/server/chunks/exports-DiyTWREe.js.map +1 -0
- package/build/server/chunks/filters-CbFjTNFI.js +25 -0
- package/build/server/chunks/filters-CbFjTNFI.js.map +1 -0
- package/build/server/chunks/hooks.server-DNhdbQNi.js +7 -0
- package/build/server/chunks/hooks.server-DNhdbQNi.js.map +1 -0
- package/build/server/chunks/index-Djsj11qr.js +214 -0
- package/build/server/chunks/index-Djsj11qr.js.map +1 -0
- package/build/server/chunks/index-XFKuhGxM.js +68 -0
- package/build/server/chunks/index-XFKuhGxM.js.map +1 -0
- package/build/server/chunks/index3-CUhdJ7wv.js +24 -0
- package/build/server/chunks/index3-CUhdJ7wv.js.map +1 -0
- package/build/server/chunks/mongo-dLmCShL_.js +234 -0
- package/build/server/chunks/mongo-dLmCShL_.js.map +1 -0
- package/build/server/chunks/notifications.svelte-CrTIrfvL.js +38 -0
- package/build/server/chunks/notifications.svelte-CrTIrfvL.js.map +1 -0
- package/build/server/chunks/routing-zIlQn_LN.js +899 -0
- package/build/server/chunks/routing-zIlQn_LN.js.map +1 -0
- package/build/server/chunks/server2-DfQrrcsk.js +23 -0
- package/build/server/chunks/server2-DfQrrcsk.js.map +1 -0
- package/build/server/chunks/state.svelte-s-CFCWQX.js +9 -0
- package/build/server/chunks/state.svelte-s-CFCWQX.js.map +1 -0
- package/build/server/index.js +7451 -0
- package/build/server/index.js.map +1 -0
- package/build/server/manifest.js +107 -0
- package/build/server/manifest.js.map +1 -0
- package/build/shims.js +32 -0
- package/dist/cli.js +118 -47
- package/package.json +80 -38
- package/dist/app/3rdpartylicenses.txt +0 -403
- package/dist/app/index.html +0 -14
- package/dist/app/main.655e64f2fe8da11ef927.js +0 -1
- package/dist/app/polyfills.9d6088873d2a3c33ec93.js +0 -1
- package/dist/app/runtime.26209474bfa8dc87a77c.js +0 -1
- package/dist/app/styles.9e36674febaa92f30d0e.css +0 -6
- package/dist/lib/Collection.js +0 -82
- package/dist/lib/Database.js +0 -55
- package/dist/lib/Factory.js +0 -31
- package/dist/lib/HostsManager.js +0 -81
- package/dist/lib/JsonEncoder.js +0 -59
- package/dist/lib/MongoManager.js +0 -119
- package/dist/lib/Server.js +0 -45
- package/dist/lib/Utils.js +0 -20
- package/dist/routes/api.js +0 -201
- package/dist/server.js +0 -57
package/dist/lib/Factory.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const MongoManager_1 = require("./MongoManager");
|
|
4
|
-
const HostsManager_1 = require("./HostsManager");
|
|
5
|
-
class Factory {
|
|
6
|
-
get _initializedError() {
|
|
7
|
-
return new Error("Factory.load() must be called first");
|
|
8
|
-
}
|
|
9
|
-
get mongoManager() {
|
|
10
|
-
if (!this._mongoManager) {
|
|
11
|
-
throw this._initializedError;
|
|
12
|
-
}
|
|
13
|
-
return this._mongoManager;
|
|
14
|
-
}
|
|
15
|
-
get hostsManager() {
|
|
16
|
-
if (!this._hostsManager) {
|
|
17
|
-
throw this._initializedError;
|
|
18
|
-
}
|
|
19
|
-
return this._hostsManager;
|
|
20
|
-
}
|
|
21
|
-
async load() {
|
|
22
|
-
// Start by initializing the host manager (needed for mongo manager)
|
|
23
|
-
this._hostsManager = new HostsManager_1.HostsManager();
|
|
24
|
-
await this._hostsManager.load();
|
|
25
|
-
// Then we can initialize the mongo manager
|
|
26
|
-
this._mongoManager = new MongoManager_1.MongoManager();
|
|
27
|
-
await this._mongoManager.load();
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
const factory = new Factory();
|
|
31
|
-
exports.default = factory;
|
package/dist/lib/HostsManager.js
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const path = require("path");
|
|
4
|
-
const fs = require("fs");
|
|
5
|
-
const os = require("os");
|
|
6
|
-
const util = require("util");
|
|
7
|
-
const Nedb = require("nedb");
|
|
8
|
-
const DEFAULT_HOSTS = process.env.MONGOKU_DEFAULT_HOST ? process.env.MONGOKU_DEFAULT_HOST.split(';') : ['localhost:27017'];
|
|
9
|
-
const DATABASE_FILE = process.env.MONGOKU_DATABASE_FILE || path.join(os.homedir(), '.mongoku.db');
|
|
10
|
-
class HostsManager {
|
|
11
|
-
promise(fn) {
|
|
12
|
-
return util.promisify(fn.bind(this._db));
|
|
13
|
-
}
|
|
14
|
-
async load() {
|
|
15
|
-
let first = false;
|
|
16
|
-
try {
|
|
17
|
-
await fs.promises.stat(DATABASE_FILE);
|
|
18
|
-
}
|
|
19
|
-
catch (err) {
|
|
20
|
-
first = true;
|
|
21
|
-
}
|
|
22
|
-
this._db = new Nedb({
|
|
23
|
-
filename: DATABASE_FILE
|
|
24
|
-
});
|
|
25
|
-
const load = this.promise(this._db.loadDatabase);
|
|
26
|
-
await load();
|
|
27
|
-
if (first) {
|
|
28
|
-
await Promise.all(DEFAULT_HOSTS.map(async (hostname) => {
|
|
29
|
-
const insert = this.promise(this._db.insert);
|
|
30
|
-
return await insert({
|
|
31
|
-
path: hostname
|
|
32
|
-
});
|
|
33
|
-
}));
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
getHosts() {
|
|
37
|
-
return new Promise((resolve, reject) => {
|
|
38
|
-
this._db.find({}, (err, hosts) => {
|
|
39
|
-
if (err) {
|
|
40
|
-
return reject(err);
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
return resolve(hosts);
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
async add(path) {
|
|
49
|
-
return new Promise((resolve, reject) => {
|
|
50
|
-
this._db.update({
|
|
51
|
-
path: path
|
|
52
|
-
}, {
|
|
53
|
-
$set: {
|
|
54
|
-
path: path
|
|
55
|
-
}
|
|
56
|
-
}, { upsert: true }, (err) => {
|
|
57
|
-
if (err) {
|
|
58
|
-
return reject(err);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
return resolve();
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
async remove(path) {
|
|
67
|
-
return new Promise((resolve, reject) => {
|
|
68
|
-
this._db.remove({
|
|
69
|
-
path: new RegExp(`${path}`)
|
|
70
|
-
}, (err) => {
|
|
71
|
-
if (err) {
|
|
72
|
-
return reject(err);
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
return resolve();
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
exports.HostsManager = HostsManager;
|
package/dist/lib/JsonEncoder.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const MongoDb = require("mongodb");
|
|
4
|
-
class JsonEncoder {
|
|
5
|
-
static encode(obj) {
|
|
6
|
-
if (obj instanceof MongoDb.ObjectID) {
|
|
7
|
-
return {
|
|
8
|
-
$type: 'ObjectId',
|
|
9
|
-
$value: obj.toHexString(),
|
|
10
|
-
$date: obj.generationTime * 1000
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
if (obj instanceof Date) {
|
|
14
|
-
return {
|
|
15
|
-
$type: 'Date',
|
|
16
|
-
$value: obj.toISOString()
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
if (obj instanceof RegExp) {
|
|
20
|
-
return {
|
|
21
|
-
$type: 'RegExp',
|
|
22
|
-
$value: {
|
|
23
|
-
$pattern: obj.source,
|
|
24
|
-
$flags: obj.flags
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
if (Array.isArray(obj)) {
|
|
29
|
-
return [...obj.map(JsonEncoder.encode)];
|
|
30
|
-
}
|
|
31
|
-
if (obj && typeof obj === 'object') {
|
|
32
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
33
|
-
obj[key] = JsonEncoder.encode(value);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return obj;
|
|
37
|
-
}
|
|
38
|
-
static decode(obj) {
|
|
39
|
-
if (obj && obj.$type === 'ObjectId') {
|
|
40
|
-
return new MongoDb.ObjectID(obj.$value);
|
|
41
|
-
}
|
|
42
|
-
if (obj && obj.$type === "Date") {
|
|
43
|
-
return new Date(obj.$value);
|
|
44
|
-
}
|
|
45
|
-
if (obj && obj.$type === "RegExp") {
|
|
46
|
-
return new RegExp(obj.$value.$pattern, obj.$value.$flags);
|
|
47
|
-
}
|
|
48
|
-
if (Array.isArray(obj)) {
|
|
49
|
-
return [...obj.map(JsonEncoder.decode)];
|
|
50
|
-
}
|
|
51
|
-
if (obj && typeof obj === 'object') {
|
|
52
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
53
|
-
obj[key] = JsonEncoder.decode(value);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return obj;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
exports.default = JsonEncoder;
|
package/dist/lib/MongoManager.js
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const URL = require("url");
|
|
4
|
-
const MongoDb = require("mongodb");
|
|
5
|
-
const Factory_1 = require("../lib/Factory");
|
|
6
|
-
const Server_1 = require("./Server");
|
|
7
|
-
const Utils_1 = require("./Utils");
|
|
8
|
-
class MongoManager {
|
|
9
|
-
constructor() {
|
|
10
|
-
this._servers = {};
|
|
11
|
-
}
|
|
12
|
-
async connect(host) {
|
|
13
|
-
const urlStr = host.path.startsWith('mongodb')
|
|
14
|
-
? host.path
|
|
15
|
-
: `mongodb://${host.path}`;
|
|
16
|
-
const url = URL.parse(urlStr);
|
|
17
|
-
let hostname = url.host || host.path;
|
|
18
|
-
if (this._servers[hostname] instanceof Server_1.Server) {
|
|
19
|
-
// Already connected
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
try {
|
|
23
|
-
const client = await MongoDb.MongoClient.connect(urlStr, {
|
|
24
|
-
useNewUrlParser: true
|
|
25
|
-
});
|
|
26
|
-
const server = new Server_1.Server(hostname, client);
|
|
27
|
-
this._servers[hostname] = server;
|
|
28
|
-
console.info(`[${hostname}] Connected to ${hostname}`);
|
|
29
|
-
await this.checkAuth(hostname);
|
|
30
|
-
}
|
|
31
|
-
catch (err) {
|
|
32
|
-
console.error(`Error while connecting to ${hostname}:`, err.code, err.message);
|
|
33
|
-
this._servers[hostname] = err;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
getServer(name) {
|
|
37
|
-
const server = this._servers[name] || this._servers[`${name}:27017`];
|
|
38
|
-
if (!server) {
|
|
39
|
-
throw new Error('Server does not exist');
|
|
40
|
-
}
|
|
41
|
-
return server;
|
|
42
|
-
}
|
|
43
|
-
async checkAuth(name) {
|
|
44
|
-
const server = this.getServer(name);
|
|
45
|
-
if (server instanceof Error) {
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
try {
|
|
49
|
-
await server.toJson();
|
|
50
|
-
}
|
|
51
|
-
catch (err) {
|
|
52
|
-
console.log(require('util').inspect(err, false, 20));
|
|
53
|
-
if (err.code == 13 && err.codeName == "Unauthorized") {
|
|
54
|
-
this._servers[name] = err;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
async load() {
|
|
59
|
-
let hosts = await Factory_1.default.hostsManager.getHosts();
|
|
60
|
-
await Promise.all(hosts.map((h) => this.connect(h)));
|
|
61
|
-
}
|
|
62
|
-
removeServer(name) {
|
|
63
|
-
delete this._servers[name];
|
|
64
|
-
}
|
|
65
|
-
async getServersJson() {
|
|
66
|
-
const servers = [];
|
|
67
|
-
for (const [name, server] of Object.entries(this._servers)) {
|
|
68
|
-
if (server instanceof Error) {
|
|
69
|
-
servers.push({
|
|
70
|
-
name: name,
|
|
71
|
-
error: {
|
|
72
|
-
code: server.code,
|
|
73
|
-
name: server.name,
|
|
74
|
-
message: server.message
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
const json = await server.toJson();
|
|
80
|
-
servers.push(json);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
Utils_1.Utils.fieldSort(servers, "name");
|
|
84
|
-
return servers;
|
|
85
|
-
}
|
|
86
|
-
async getDatabasesJson(serverName) {
|
|
87
|
-
const server = this.getServer(serverName);
|
|
88
|
-
if (server instanceof Error) {
|
|
89
|
-
return [];
|
|
90
|
-
}
|
|
91
|
-
const json = await server.toJson();
|
|
92
|
-
return json.databases;
|
|
93
|
-
}
|
|
94
|
-
async getCollectionsJson(serverName, databaseName) {
|
|
95
|
-
const server = this.getServer(serverName);
|
|
96
|
-
if (server instanceof Error) {
|
|
97
|
-
return [];
|
|
98
|
-
}
|
|
99
|
-
const database = await server.database(databaseName);
|
|
100
|
-
if (!database) {
|
|
101
|
-
return [];
|
|
102
|
-
}
|
|
103
|
-
const json = await database.toJson();
|
|
104
|
-
return json.collections;
|
|
105
|
-
}
|
|
106
|
-
async getCollection(serverName, databaseName, collectionName) {
|
|
107
|
-
const server = this.getServer(serverName);
|
|
108
|
-
if (server instanceof Error) {
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
const database = await server.database(databaseName);
|
|
112
|
-
if (!database) {
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
const collection = await database.collection(collectionName);
|
|
116
|
-
return collection;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
exports.MongoManager = MongoManager;
|
package/dist/lib/Server.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const Database_1 = require("./Database");
|
|
4
|
-
const Utils_1 = require("./Utils");
|
|
5
|
-
class Server {
|
|
6
|
-
get name() { return this._name; }
|
|
7
|
-
get size() { return this._size; }
|
|
8
|
-
constructor(name, client) {
|
|
9
|
-
this._name = name;
|
|
10
|
-
this._client = client;
|
|
11
|
-
}
|
|
12
|
-
async databases() {
|
|
13
|
-
const db = this._client.db("test");
|
|
14
|
-
const results = await db.admin().listDatabases();
|
|
15
|
-
this._size = results.totalSize;
|
|
16
|
-
const databases = [];
|
|
17
|
-
if (Array.isArray(results.databases)) {
|
|
18
|
-
for (const d of results.databases) {
|
|
19
|
-
const db = this._client.db(d.name);
|
|
20
|
-
const database = new Database_1.Database(d.name, d.sizeOnDisk, d.empty, db);
|
|
21
|
-
databases.push(database);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return databases;
|
|
25
|
-
}
|
|
26
|
-
async database(name) {
|
|
27
|
-
const databases = await this.databases();
|
|
28
|
-
return databases.find(d => d.name === name);
|
|
29
|
-
}
|
|
30
|
-
async toJson() {
|
|
31
|
-
const databases = await this.databases();
|
|
32
|
-
const dbsJson = [];
|
|
33
|
-
for (const database of databases) {
|
|
34
|
-
const json = await database.toJson();
|
|
35
|
-
dbsJson.push(json);
|
|
36
|
-
}
|
|
37
|
-
Utils_1.Utils.fieldSort(dbsJson, 'name');
|
|
38
|
-
return {
|
|
39
|
-
name: this.name,
|
|
40
|
-
size: this.size,
|
|
41
|
-
databases: dbsJson
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
exports.Server = Server;
|
package/dist/lib/Utils.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var Utils;
|
|
4
|
-
(function (Utils) {
|
|
5
|
-
/**
|
|
6
|
-
* In-place sort of the given array of objects
|
|
7
|
-
* @param arr An array of objects
|
|
8
|
-
* @param field the field used to sort
|
|
9
|
-
* @param descending whether to use descending order
|
|
10
|
-
*/
|
|
11
|
-
Utils.fieldSort = (arr, field, descending = false) => {
|
|
12
|
-
return arr.sort((a, b) => {
|
|
13
|
-
return (a[field] == b[field])
|
|
14
|
-
? 0
|
|
15
|
-
: (a[field] > b[field])
|
|
16
|
-
? (descending) ? -1 : 1
|
|
17
|
-
: (descending) ? 1 : -1;
|
|
18
|
-
});
|
|
19
|
-
};
|
|
20
|
-
})(Utils = exports.Utils || (exports.Utils = {}));
|
package/dist/routes/api.js
DELETED
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const express = require("express");
|
|
4
|
-
const bodyParser = require("body-parser");
|
|
5
|
-
const Factory_1 = require("../lib/Factory");
|
|
6
|
-
exports.api = express.Router();
|
|
7
|
-
// Get servers
|
|
8
|
-
exports.api.get('/servers', async (req, res, next) => {
|
|
9
|
-
const servers = await Factory_1.default.mongoManager.getServersJson();
|
|
10
|
-
return res.json(servers);
|
|
11
|
-
});
|
|
12
|
-
exports.api.put('/servers', bodyParser.json(), async (req, res, next) => {
|
|
13
|
-
try {
|
|
14
|
-
await Factory_1.default.hostsManager.add(req.body.url);
|
|
15
|
-
await Factory_1.default.mongoManager.load();
|
|
16
|
-
}
|
|
17
|
-
catch (err) {
|
|
18
|
-
return next(err);
|
|
19
|
-
}
|
|
20
|
-
return res.json({
|
|
21
|
-
ok: true
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
exports.api.delete('/servers/:server', async (req, res, next) => {
|
|
25
|
-
try {
|
|
26
|
-
await Factory_1.default.hostsManager.remove(req.params.server);
|
|
27
|
-
Factory_1.default.mongoManager.removeServer(req.params.server);
|
|
28
|
-
}
|
|
29
|
-
catch (err) {
|
|
30
|
-
return next(err);
|
|
31
|
-
}
|
|
32
|
-
return res.json({
|
|
33
|
-
ok: true
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
exports.api.get('/servers/:server/databases', async (req, res, next) => {
|
|
37
|
-
const server = req.params.server;
|
|
38
|
-
try {
|
|
39
|
-
const databases = await Factory_1.default.mongoManager.getDatabasesJson(server);
|
|
40
|
-
return res.json(databases);
|
|
41
|
-
}
|
|
42
|
-
catch (err) {
|
|
43
|
-
return next(err);
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
exports.api.get('/servers/:server/databases/:database/collections', async (req, res, next) => {
|
|
47
|
-
const server = req.params.server;
|
|
48
|
-
const database = req.params.database;
|
|
49
|
-
try {
|
|
50
|
-
const collections = await Factory_1.default.mongoManager.getCollectionsJson(server, database);
|
|
51
|
-
return res.json(collections);
|
|
52
|
-
}
|
|
53
|
-
catch (err) {
|
|
54
|
-
return next(err);
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
exports.api.get('/servers/:server/databases/:database/collections/:collection/documents/:document', async (req, res, next) => {
|
|
58
|
-
const server = req.params.server;
|
|
59
|
-
const database = req.params.database;
|
|
60
|
-
const collection = req.params.collection;
|
|
61
|
-
const document = req.params.document;
|
|
62
|
-
try {
|
|
63
|
-
const c = await Factory_1.default.mongoManager.getCollection(server, database, collection);
|
|
64
|
-
if (!c) {
|
|
65
|
-
return next(new Error(`Collection not found: ${server}.${database}.${collection}`));
|
|
66
|
-
}
|
|
67
|
-
const doc = await c.findOne(document);
|
|
68
|
-
if (!doc) {
|
|
69
|
-
return next(new Error("This document does not exist"));
|
|
70
|
-
}
|
|
71
|
-
return res.json({
|
|
72
|
-
ok: true,
|
|
73
|
-
document: doc
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
catch (err) {
|
|
77
|
-
return next(err);
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
exports.api.post('/servers/:server/databases/:database/collections/:collection/documents/:document', bodyParser.json(), async (req, res, next) => {
|
|
81
|
-
const server = req.params.server;
|
|
82
|
-
const database = req.params.database;
|
|
83
|
-
const collection = req.params.collection;
|
|
84
|
-
const document = req.params.document;
|
|
85
|
-
const partial = !!req.query.partial;
|
|
86
|
-
try {
|
|
87
|
-
const c = await Factory_1.default.mongoManager.getCollection(server, database, collection);
|
|
88
|
-
if (!c) {
|
|
89
|
-
return next(new Error(`Collection not found: ${server}.${database}.${collection}`));
|
|
90
|
-
}
|
|
91
|
-
const update = await c.updateOne(document, req.body, partial);
|
|
92
|
-
return res.json({
|
|
93
|
-
ok: true,
|
|
94
|
-
update: update
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
catch (err) {
|
|
98
|
-
return next(err);
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
exports.api.delete('/servers/:server/databases/:database/collections/:collection/documents/:document', async (req, res, next) => {
|
|
102
|
-
const server = req.params.server;
|
|
103
|
-
const database = req.params.database;
|
|
104
|
-
const collection = req.params.collection;
|
|
105
|
-
const document = req.params.document;
|
|
106
|
-
try {
|
|
107
|
-
const c = await Factory_1.default.mongoManager.getCollection(server, database, collection);
|
|
108
|
-
if (!c) {
|
|
109
|
-
return next(new Error(`Collection not found: ${server}.${database}.${collection}`));
|
|
110
|
-
}
|
|
111
|
-
await c.removeOne(document);
|
|
112
|
-
return res.json({
|
|
113
|
-
ok: true
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
catch (err) {
|
|
117
|
-
return next(err);
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
exports.api.get('/servers/:server/databases/:database/collections/:collection/query', async (req, res, next) => {
|
|
121
|
-
const server = req.params.server;
|
|
122
|
-
const database = req.params.database;
|
|
123
|
-
const collection = req.params.collection;
|
|
124
|
-
let query = req.query.q;
|
|
125
|
-
if (typeof query !== "object") {
|
|
126
|
-
try {
|
|
127
|
-
query = JSON.parse(query);
|
|
128
|
-
}
|
|
129
|
-
catch (err) {
|
|
130
|
-
return next(new Error(`Invalid query: ${query}`));
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
let sort = req.query.sort || "{}";
|
|
134
|
-
if (sort && typeof sort !== "object") {
|
|
135
|
-
try {
|
|
136
|
-
sort = JSON.parse(sort);
|
|
137
|
-
}
|
|
138
|
-
catch (err) {
|
|
139
|
-
return next(new Error(`Invalid order: ${sort}`));
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
let project = req.query.project || "";
|
|
143
|
-
if (project && typeof project !== "object") {
|
|
144
|
-
try {
|
|
145
|
-
project = JSON.parse(project);
|
|
146
|
-
}
|
|
147
|
-
catch (err) {
|
|
148
|
-
return next(new Error(`Invalid project: ${project}`));
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
let limit = parseInt(req.query.limit, 10);
|
|
152
|
-
if (isNaN(limit)) {
|
|
153
|
-
limit = 20;
|
|
154
|
-
}
|
|
155
|
-
let skip = parseInt(req.query.skip, 10);
|
|
156
|
-
if (isNaN(skip)) {
|
|
157
|
-
skip = 0;
|
|
158
|
-
}
|
|
159
|
-
const c = await Factory_1.default.mongoManager.getCollection(server, database, collection);
|
|
160
|
-
if (!c) {
|
|
161
|
-
return next(new Error(`Collection not found: ${server}.${database}.${collection}`));
|
|
162
|
-
}
|
|
163
|
-
try {
|
|
164
|
-
const results = await c.find(query, project, sort, limit, skip);
|
|
165
|
-
return res.json({
|
|
166
|
-
ok: true,
|
|
167
|
-
results: results
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
catch (err) {
|
|
171
|
-
return next(err);
|
|
172
|
-
}
|
|
173
|
-
});
|
|
174
|
-
exports.api.get('/servers/:server/databases/:database/collections/:collection/count', async (req, res, next) => {
|
|
175
|
-
const server = req.params.server;
|
|
176
|
-
const database = req.params.database;
|
|
177
|
-
const collection = req.params.collection;
|
|
178
|
-
let query = req.query.q;
|
|
179
|
-
if (typeof query !== "object") {
|
|
180
|
-
try {
|
|
181
|
-
query = JSON.parse(query);
|
|
182
|
-
}
|
|
183
|
-
catch (err) {
|
|
184
|
-
return next(new Error(`Invalid query: ${query}`));
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
const c = await Factory_1.default.mongoManager.getCollection(server, database, collection);
|
|
188
|
-
if (!c) {
|
|
189
|
-
return next(new Error(`Collection not found: ${server}.${database}.${collection}`));
|
|
190
|
-
}
|
|
191
|
-
try {
|
|
192
|
-
const count = await c.count(query);
|
|
193
|
-
return res.json({
|
|
194
|
-
ok: true,
|
|
195
|
-
count: count
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
catch (err) {
|
|
199
|
-
return next(err);
|
|
200
|
-
}
|
|
201
|
-
});
|
package/dist/server.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const path = require("path");
|
|
4
|
-
const fs = require("fs");
|
|
5
|
-
const express = require("express");
|
|
6
|
-
const app = express();
|
|
7
|
-
const Factory_1 = require("./lib/Factory");
|
|
8
|
-
const api_1 = require("./routes/api");
|
|
9
|
-
const setupServer = () => {
|
|
10
|
-
const SERVER_PORT = process.env.MONGOKU_SERVER_PORT || 3100;
|
|
11
|
-
app.get('/', (req, res, next) => {
|
|
12
|
-
res.sendFile("app/index.html", { root: __dirname }, (err) => {
|
|
13
|
-
if (err) {
|
|
14
|
-
return next(err);
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
app.use('/api', api_1.api);
|
|
19
|
-
app.get('/*', (req, res, next) => {
|
|
20
|
-
const ext = path.extname(req.url);
|
|
21
|
-
fs.stat(path.join(__dirname, "app", req.url), (err, stats) => {
|
|
22
|
-
let file = "index.html";
|
|
23
|
-
if (stats && stats.isFile()) {
|
|
24
|
-
file = req.url;
|
|
25
|
-
}
|
|
26
|
-
res.sendFile(file, { root: path.join(__dirname, "app") }, (err) => {
|
|
27
|
-
if (err) {
|
|
28
|
-
return next(err);
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
app.use((err, req, res, next) => {
|
|
34
|
-
res.status(500);
|
|
35
|
-
return res.json({
|
|
36
|
-
ok: false,
|
|
37
|
-
message: err.message
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
app.listen(SERVER_PORT, () => console.log(`[Mongoku] listening on port ` + SERVER_PORT));
|
|
41
|
-
};
|
|
42
|
-
exports.start = async () => {
|
|
43
|
-
console.log(`[Mongoku] Starting...`);
|
|
44
|
-
try {
|
|
45
|
-
await Factory_1.default.load();
|
|
46
|
-
setupServer();
|
|
47
|
-
}
|
|
48
|
-
catch (err) {
|
|
49
|
-
console.error(err);
|
|
50
|
-
process.exit(1);
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
if (require.main === module) {
|
|
54
|
-
(async () => {
|
|
55
|
-
await exports.start();
|
|
56
|
-
})();
|
|
57
|
-
}
|