molly-db 1.3.6 → 1.3.8
Sign up to get free protection for your applications and to get access to all the features.
- package/main.js +6 -9
- package/module/api_handler.js +13 -8
- package/module/init_handler.js +24 -26
- package/module/utils.js +4 -4
- package/module/worker_handler.js +1 -2
- package/package.json +2 -2
- package/module/import_handler.js +0 -3
package/main.js
CHANGED
@@ -18,17 +18,14 @@ function config( _config ) {
|
|
18
18
|
|
19
19
|
class molly_db{
|
20
20
|
constructor( opt ){
|
21
|
-
if(opt.pass) this.pass = opt.pass; this.port = opt.port || 27017;
|
22
21
|
const dir = path.join(__dirname,'/module/worker_handler.js');
|
23
22
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
this.
|
29
|
-
this.
|
30
|
-
this.time = opt.saveTime || .1;
|
31
|
-
this.import = opt.import || '';
|
23
|
+
this.host = opt?.host || '127.0.0.1';
|
24
|
+
this.protocol = opt?.protocol || 'http';
|
25
|
+
this.port = opt?.port || 27017;
|
26
|
+
this.path = opt?.path || null;
|
27
|
+
this.pass = opt?.pass || null;
|
28
|
+
this.time = opt?.saveTime || .1;
|
32
29
|
|
33
30
|
return require(dir)(this);
|
34
31
|
}
|
package/module/api_handler.js
CHANGED
@@ -28,15 +28,20 @@ module.exports = function(db,req,res,arg){
|
|
28
28
|
|
29
29
|
req.on('data',(chunk)=>{ raw.push(chunk) });
|
30
30
|
req.on('close',()=>{
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
31
|
+
try {
|
32
|
+
const data = JSON.parse(Buffer.concat(raw));
|
33
|
+
send(db,arg,data).then(msg=>{
|
34
|
+
const status = msg.match(/\d+/i)[0];
|
35
|
+
res.writeHead(status,{'content-type': 'text/plain'});
|
36
|
+
res.write(msg); res.end();
|
37
|
+
}).catch(e=>{
|
38
|
+
res.writeHead(404,{'content-type': 'text/plain'});
|
39
|
+
res.write(e); res.end();
|
40
|
+
})
|
41
|
+
} catch(e) {
|
37
42
|
res.writeHead(404,{'content-type': 'text/plain'});
|
38
|
-
res.write(
|
39
|
-
}
|
43
|
+
res.write('unexpected body'); res.end();
|
44
|
+
}
|
40
45
|
});
|
41
46
|
|
42
47
|
}
|
package/module/init_handler.js
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
const download = require('./import_handler');
|
2
1
|
const crypto = require('./crypto_handler');
|
3
2
|
const fetch = require('molly-fetch');
|
4
3
|
const readline = require('readline');
|
@@ -11,23 +10,19 @@ const db = new Object();
|
|
11
10
|
function fillDB( _db, _table, _path, _pass ){
|
12
11
|
return new Promise(async(response,reject)=>{
|
13
12
|
|
14
|
-
let
|
13
|
+
let stream;
|
15
14
|
|
16
|
-
if(
|
17
|
-
const stream = await fetch(_path,{responseType:'stream'});
|
18
|
-
_itr = readline.createInterface({ input: stream.data });
|
19
|
-
} catch(e) { return response(`error reading ${_path}`); }}
|
15
|
+
if( fs.existsSync(_path) ) stream = fs.createReadStream(_path);
|
20
16
|
|
21
|
-
else if(
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
}); _itr.on('close',()=>{ response() });
|
17
|
+
else if( (/^http/).test(_path) )
|
18
|
+
stream = (await fetch(_path,{responseType:'stream'})).data;
|
19
|
+
|
20
|
+
try {
|
21
|
+
const _itr = readline.createInterface({ input: stream });
|
22
|
+
_itr.on('close',()=>{ response() }); _itr.on('line',(line)=>{
|
23
|
+
db[_db][_table].push(crypto.decrypt( line,_pass ));
|
24
|
+
});
|
25
|
+
} catch(e) { return response(`error: reading ${_path}`) }
|
31
26
|
|
32
27
|
});
|
33
28
|
}
|
@@ -38,19 +33,21 @@ module.exports = function(args){
|
|
38
33
|
return new Promise(async(response,reject)=>{
|
39
34
|
try {
|
40
35
|
|
41
|
-
const dir =
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
36
|
+
const dir = `${args.path}/_init_.json`;
|
37
|
+
|
38
|
+
if( !(/^http/).test(args.path) )
|
39
|
+
db._init_ = JSON.parse(fs.readFileSync(dir));
|
40
|
+
else
|
41
|
+
db._init_ = (await fetch(dir)).data;
|
42
|
+
db._path_ = args.path;
|
46
43
|
|
47
|
-
for(
|
44
|
+
for( let i in db._init_.DB ){
|
48
45
|
|
49
46
|
const DB = db._init_.DB[i]; const name = DB.name;
|
50
47
|
delete db[name]; db[name] = new Object();
|
51
48
|
|
52
|
-
for(
|
53
|
-
const table = DB.tables[j]; const dir =
|
49
|
+
for( let j in DB.tables ){
|
50
|
+
const table = DB.tables[j]; const dir = `${db._path_}/${table}.json`;
|
54
51
|
db[name][table] = new Array(); await fillDB( name,table,dir,args.pass );
|
55
52
|
}
|
56
53
|
|
@@ -58,8 +55,9 @@ module.exports = function(args){
|
|
58
55
|
|
59
56
|
} catch(e) {
|
60
57
|
db._init_ = {DB:[]}; db._path_ = args.path;
|
61
|
-
const dir =
|
62
|
-
|
58
|
+
const dir = `${args.path}/_init_.json`; try {
|
59
|
+
fs.writeFileSync( dir,JSON.stringify(db._init_) );
|
60
|
+
} catch(e) { }
|
63
61
|
} response(db);
|
64
62
|
});
|
65
63
|
}
|
package/module/utils.js
CHANGED
@@ -61,8 +61,8 @@ const encryptDB = function( param, db, _db, _table, _path ){
|
|
61
61
|
const modifyDB = async function( data, db, _name, _table ){
|
62
62
|
try{
|
63
63
|
|
64
|
-
const
|
65
|
-
const
|
64
|
+
const init = `${db._path_}/_init_.json`;
|
65
|
+
const dir = `${db._path_}/${_table}.json`;
|
66
66
|
|
67
67
|
fs.writeFileSync( init,JSON.stringify(db._init_) );
|
68
68
|
|
@@ -241,7 +241,7 @@ output.removeDB = function(data,db){
|
|
241
241
|
for( var i in db._init_.DB ){
|
242
242
|
if( db._init_.DB[i].name == data.db ){
|
243
243
|
db._init_.DB[i].tables.map(x=>{
|
244
|
-
const dir =
|
244
|
+
const dir = `${data.path}/${x}.json`;
|
245
245
|
if( fs.existsSync(dir) ) fs.unlinkSync(dir);
|
246
246
|
});
|
247
247
|
const arr = db._init_.DB; arr.splice(i,1);
|
@@ -301,7 +301,7 @@ output.removeTable = function(data,db){
|
|
301
301
|
|
302
302
|
for( var i in db._init_.DB ){
|
303
303
|
if( db._init_.DB[i].name == data.db ){
|
304
|
-
const dir =
|
304
|
+
const dir = `${data.path}/${data.table}.json`;
|
305
305
|
const j = db._init_.DB[i].tables.indexOf(data.table);
|
306
306
|
if( fs.existsSync(dir) ) fs.unlinkSync(dir);
|
307
307
|
const arr = db._init_.DB[i].tables; arr.splice(j,1);
|
package/module/worker_handler.js
CHANGED
@@ -7,7 +7,6 @@ const app = require('./api_handler');
|
|
7
7
|
const {Buffer} = require('buffer');
|
8
8
|
const utils = require('./utils');
|
9
9
|
const http = require('http');
|
10
|
-
const path = require('path');
|
11
10
|
|
12
11
|
/*--────────────────────────────────────────────────────────────────────────────────────────────--*/
|
13
12
|
|
@@ -33,7 +32,7 @@ module.exports = (arg)=>{ init( arg ).then((db)=>{
|
|
33
32
|
const server = http.createServer((req,res)=>app(db,req,res,arg));
|
34
33
|
server.listen( arg.port, arg.host, ()=>{
|
35
34
|
console.log(JSON.stringify({
|
36
|
-
name: 'molly-
|
35
|
+
name: 'molly-db', protocol: 'HTTP',
|
37
36
|
port: arg.port, host: arg.host,
|
38
37
|
}));
|
39
38
|
}); saveTimeout( arg, db );
|
package/package.json
CHANGED
@@ -5,12 +5,12 @@
|
|
5
5
|
"repository": "https://github.com/EDBC-REPO-NPM/Molly-db",
|
6
6
|
"dependencies": {
|
7
7
|
"crypto-js": "^4.1.1",
|
8
|
-
"molly-fetch": "^1.1.
|
8
|
+
"molly-fetch": "^1.1.7"
|
9
9
|
},
|
10
10
|
"license": "MIT",
|
11
11
|
"main": "main.js",
|
12
12
|
"name": "molly-db",
|
13
|
-
"version": "1.3.
|
13
|
+
"version": "1.3.8",
|
14
14
|
"author": "bececrazy",
|
15
15
|
"description": "Molly-db is a free and open source library for nodejs that allow you create a lightweight encrypted database using Json files",
|
16
16
|
"keywords": [
|
package/module/import_handler.js
DELETED