molly-db 1.3.1 → 1.3.3
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/module/memory_handler.js +23 -7
- package/module/utils.js +41 -24
- package/module/worker_handler.js +1 -11
- package/package.json +3 -5
package/module/memory_handler.js
CHANGED
@@ -5,13 +5,29 @@ const output = new Object();
|
|
5
5
|
|
6
6
|
/*--────────────────────────────────────────────────────────────────────────────────────────────--*/
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
8
|
+
function copy( A,B ){
|
9
|
+
const result = new Object();
|
10
|
+
Object.keys(A).map(x=>result[x] = A[x]);
|
11
|
+
Object.keys(B).map(x=>result[x] = B[x]);
|
12
|
+
return result;
|
13
|
+
}
|
14
|
+
|
15
|
+
/*--────────────────────────────────────────────────────────────────────────────────────────────--*/
|
16
|
+
|
17
|
+
module.exports = function( data,inst,db ){
|
18
|
+
return new Promise(async(response,reject)=>{
|
19
|
+
const input = Array.isArray(inst) ? inst : [inst];
|
20
|
+
const result = new Array();
|
21
|
+
|
22
|
+
for( var i in input ){
|
23
|
+
const cfg = copy(data,input[i]); try {
|
24
|
+
const bool = await utils.validator(db,cfg);
|
25
|
+
if( !bool[0] ) return reject(bool[1]);
|
26
|
+
else result.push(utils[cfg.type](cfg,db));
|
27
|
+
} catch(e) {
|
28
|
+
return reject({ status:404, message:`error: ${e.message}` })
|
29
|
+
}
|
30
|
+
} return response( result );
|
15
31
|
})
|
16
32
|
};
|
17
33
|
|
package/module/utils.js
CHANGED
@@ -11,28 +11,27 @@ output.validator = function( db, params ){
|
|
11
11
|
return new Promise((response,reject)=>{
|
12
12
|
|
13
13
|
let validator = false; output.bodyParser( params );
|
14
|
-
const vdb = (
|
15
|
-
const vtb = (
|
14
|
+
const vdb = ()=>db._init_.DB.some(x=>x.name==params.db);
|
15
|
+
const vtb = ()=>db._init_.DB.some(x=>x.tables?.join().match(params.table));
|
16
16
|
|
17
17
|
validator = [
|
18
|
+
[ !params?.db, 'params.db = "test"' ],
|
18
19
|
[ !params?.offset, 'params.offset = 0' ],
|
19
20
|
[ !params?.target, 'params.target = ""' ],
|
20
21
|
[ !params?.length, 'params.length = 100' ],
|
22
|
+
[ !params?.table, 'params.table = "test"' ],
|
21
23
|
].every(x=>{ if(x[0]) eval(x[1]); return true; });
|
22
24
|
|
23
25
|
validator = [
|
24
26
|
[!params?.db, {status:404,message:'error: no db name added'}],
|
25
|
-
[!params?.table, {status:404,message:'error: no table name added'}]
|
26
|
-
].some(x=>{ if(x[0])
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
].some(x=>{ if(x[0]) reject(x[1]); return x[0];}); if(validator) return 0;
|
33
|
-
}
|
27
|
+
[!params?.table, {status:404,message:'error: no table name added'}],
|
28
|
+
].some(x=>{ if(x[0]) response([0,x[1]]); return x[0];}); if(validator) return 0;
|
29
|
+
|
30
|
+
validator = [
|
31
|
+
[!vdb(), output.addDB(params,db)],
|
32
|
+
[!vtb(), output.addTable(params,db)],
|
33
|
+
].some(x=>x[0]); response([1,'']);
|
34
34
|
|
35
|
-
response();
|
36
35
|
});
|
37
36
|
}
|
38
37
|
|
@@ -69,9 +68,9 @@ const modifyDB = async function( data, db, _name, _table ){
|
|
69
68
|
try{const length = db[_name][_table].length;
|
70
69
|
if( !(length>0) ) fs.writeFileSync(dir,'');
|
71
70
|
else await encryptDB( data, db, _name, _table, dir );
|
72
|
-
} catch(e) {
|
71
|
+
} catch(e) { fs.unlinkSync( dir ); }
|
73
72
|
|
74
|
-
} catch(e) {
|
73
|
+
} catch(e) { return parseError(db,data,e) }
|
75
74
|
}
|
76
75
|
|
77
76
|
const parseData = function( db,params,_data, _length ){
|
@@ -132,6 +131,18 @@ output.unshift = function( data,db ){ db._update_ = true;
|
|
132
131
|
|
133
132
|
/*-- ── --*/
|
134
133
|
|
134
|
+
output.tableList = function( data,db ){
|
135
|
+
const result = Object.keys(db[data.db]);
|
136
|
+
return parseData( db,data,result );
|
137
|
+
}
|
138
|
+
/*
|
139
|
+
output.dbList = function( data,db ){
|
140
|
+
const result = Object.keys(db);
|
141
|
+
return parseData( db,data,result );
|
142
|
+
}
|
143
|
+
*/
|
144
|
+
/*-- ── --*/
|
145
|
+
|
135
146
|
output.list = function(data,db){
|
136
147
|
try{return parseData( db,data,
|
137
148
|
db[data.db][data.table].slice(
|
@@ -227,11 +238,14 @@ output.removeDB = function(data,db){
|
|
227
238
|
};
|
228
239
|
|
229
240
|
for( var i in db._init_.DB ){
|
230
|
-
if( db._init_.DB.name == data.db ){
|
241
|
+
if( db._init_.DB[i].name == data.db ){
|
231
242
|
db._init_.DB[i].tables.map(x=>{
|
232
|
-
|
233
|
-
|
234
|
-
|
243
|
+
const dir = path.join(data.path,`${x}.json`);
|
244
|
+
if( fs.existsSync(dir) ) fs.unlinkSync(dir);
|
245
|
+
});
|
246
|
+
const arr = db._init_.DB; arr.splice(i,1);
|
247
|
+
db._init_.DB = arr||new Array();
|
248
|
+
delete db[data.db];
|
235
249
|
break;
|
236
250
|
}
|
237
251
|
}
|
@@ -286,12 +300,15 @@ output.removeTable = function(data,db){
|
|
286
300
|
|
287
301
|
for( var i in db._init_.DB ){
|
288
302
|
if( db._init_.DB[i].name == data.db ){
|
289
|
-
const
|
290
|
-
|
291
|
-
|
303
|
+
const dir = path.join(data.path,`${data.table}.json`);
|
304
|
+
const j = db._init_.DB[i].tables.indexOf(data.table);
|
305
|
+
if( fs.existsSync(dir) ) fs.unlinkSync(dir);
|
306
|
+
const arr = db._init_.DB[i].tables; arr.splice(j,1);
|
307
|
+
db._init_.DB[i].tables = arr||new Array();
|
308
|
+
delete db[data.db][data.table];
|
292
309
|
}
|
293
310
|
}
|
294
|
-
|
311
|
+
|
295
312
|
return {
|
296
313
|
status: 200,
|
297
314
|
database: data.db,
|
@@ -306,14 +323,14 @@ output.removeTable = function(data,db){
|
|
306
323
|
|
307
324
|
output.saveAll = async function(data,db){
|
308
325
|
try { for( var i in db['_init_'] ){ for( var j in db['_init_'][i] ){
|
309
|
-
const {name,tables} = db['_init_'][i][j];
|
326
|
+
const { name, tables } = db['_init_'][i][j];
|
310
327
|
for( var k in tables ) await modifyDB(data,db,name,tables[k])
|
311
328
|
}} return {
|
312
329
|
status: 200,
|
313
330
|
database: data.db,
|
314
331
|
table: data.table,
|
315
332
|
message: 'DB Saved'
|
316
|
-
}} catch(e) {
|
333
|
+
}} catch(e) { return parseError(db,data,e) }
|
317
334
|
}
|
318
335
|
|
319
336
|
/*--────────────────────────────────────────────────────────────────────────────────────────────--*/
|
package/module/worker_handler.js
CHANGED
@@ -25,15 +25,6 @@ function saveTimeout(data,db){
|
|
25
25
|
|
26
26
|
/*--────────────────────────────────────────────────────────────────────────────────────────────--*/
|
27
27
|
|
28
|
-
function copy( A,B ){
|
29
|
-
const result = new Object();
|
30
|
-
Object.keys(A).map(x=>result[x] = A[x]);
|
31
|
-
Object.keys(B).map(x=>result[x] = B[x]);
|
32
|
-
return result;
|
33
|
-
}
|
34
|
-
|
35
|
-
/*--────────────────────────────────────────────────────────────────────────────────────────────--*/
|
36
|
-
|
37
28
|
module.exports = (args)=>{
|
38
29
|
init( args ).then((db)=>{ saveTimeout( args, db );
|
39
30
|
const dir = path.join(__dirname,'server_worker.js');
|
@@ -43,8 +34,7 @@ module.exports = (args)=>{
|
|
43
34
|
const error = '{ "status":"404", "message":"error data" }';
|
44
35
|
try {
|
45
36
|
const raw = Buffer.from(msg).toString();
|
46
|
-
|
47
|
-
memory(data,db).then(x=>{
|
37
|
+
memory(args,JSON.parse(raw),db).then(x=>{
|
48
38
|
const out = JSON.stringify(x); srv.postMessage(out||empty);
|
49
39
|
}).catch(e=>{
|
50
40
|
const out = JSON.stringify(e); srv.postMessage(out||empty);
|
package/package.json
CHANGED
@@ -1,17 +1,15 @@
|
|
1
1
|
{
|
2
|
-
"scripts": {
|
3
|
-
"start": "node main"
|
4
|
-
},
|
2
|
+
"scripts": { "start": "node main" },
|
5
3
|
"repository": "https://github.com/EDBC-REPO-NPM/Molly-db",
|
6
4
|
"dependencies": {
|
7
|
-
"crypto-js": "^4.1.1",
|
8
5
|
"molly-fetch": "^1.0.16",
|
6
|
+
"crypto-js": "^4.1.1",
|
9
7
|
"ws": "^8.11.0"
|
10
8
|
},
|
11
9
|
"license": "MIT",
|
12
10
|
"main": "main.js",
|
13
11
|
"name": "molly-db",
|
14
|
-
"version": "1.3.
|
12
|
+
"version": "1.3.3",
|
15
13
|
"author": "bececrazy",
|
16
14
|
"description": "Molly-db is a free and open source library for nodejs that allow you create a lightweight encrypted database using Json files",
|
17
15
|
"keywords": [
|