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.
@@ -5,13 +5,29 @@ const output = new Object();
5
5
 
6
6
  /*--────────────────────────────────────────────────────────────────────────────────────────────--*/
7
7
 
8
- module.exports = function( data,db ){
9
- return new Promise((response,reject)=>{
10
- utils.validator( db,data ).then(()=>{
11
- try { response(Array.isArray(data) ? data.map(x=>utils[x.type](x,db)) :
12
- utils[data.type](data,db))
13
- } catch(e) { response(JSON.stringify({ status:404, message:`error: ${e.message}` })) }
14
- }).catch(e=>{ reject(JSON.stringify(e)) });
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 = (key)=>{ return db._init_.DB.some(x=>{ return x.name == key; }) }
15
- const vtb = (key)=>{ return db._init_.DB.some(x=>{ return x.tables.join().match(key); }) }
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]) reject(x[1]); return x[0];}); if(validator) return 0;
27
-
28
- if( !(/table|db|all/gi).test(params.type) ){
29
- validator = [
30
- [!vdb(params?.db), {status:404,message:`erorr: no db called ${params.db} exist`}],
31
- [!vtb(params?.table), {status:404,message:`error: no table called ${params.table} exist`}]
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) { console.log(e); fs.unlinkSync( dir ); }
71
+ } catch(e) { fs.unlinkSync( dir ); }
73
72
 
74
- } catch(e) { console.log(e); return parseError(db,data,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
- fs.unlinkSync(path.join(data.path,`${x}.json`));
233
- }); db._init_.DB.splice(i,1);
234
- delete db[data.db];
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 j = db._init_.DB[i].tables.indexOf(x=>x==data.table);
290
- delete db[data.db][data.table]; db._init_.DB[i].tables.splice(j,1);
291
- break;
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) { console.log(e); return parseError(db,data,e) }
333
+ }} catch(e) { return parseError(db,data,e) }
317
334
  }
318
335
 
319
336
  /*--────────────────────────────────────────────────────────────────────────────────────────────--*/
@@ -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
- const data = copy( args,JSON.parse(raw) );
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.1",
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": [