applay-utils 1.6.2 → 1.7.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "applay-utils",
3
- "version": "1.6.2",
3
+ "version": "1.7.0",
4
4
  "description": "Utilitary tools for Applay applications",
5
5
  "scripts": {
6
6
  "build": "npm version patch",
package/utils/crypto.js CHANGED
@@ -3,6 +3,21 @@ var algorithm = 'aes-256-cbc';
3
3
  var key=process.env.key;
4
4
 
5
5
  var utils = {
6
+ 'genHash': (json) => {
7
+ if(!key) return null;
8
+ if (json.apyHash) { delete json.apyHash; }
9
+ var block = `KEY=>${key}|JSON=>${JSON.stringify(json)}`;
10
+ json.apyHash = sha1(block);
11
+ return json;
12
+ },
13
+ 'verifyHash': (orig) => {
14
+ if (!key) return null;
15
+ var json = Object({}, orig);
16
+ if (json.apyHash) { delete json.apyHash; }
17
+ var block = `KEY=>${key}|JSON=>${JSON.stringify(json)}`;
18
+ json.apyHash = sha1(block);
19
+ return json.apyHash == orig.apyHash
20
+ },
6
21
  'setKey': (newkey)=>{key=newkey},
7
22
  'genIV': () => {
8
23
  return Math.random().toString(36).substr(2, 30);
package/utils/querys.js CHANGED
@@ -3,6 +3,39 @@ const mdb = require('./mdb');
3
3
  var querys = {
4
4
  'findAsync': (db, collection, filter, fields) => new Promise(resolve => db.collection(collection).find(filter, fields).toArray((err, result) => resolve(result))),
5
5
  'findOneAsync': (db, collection, filter, fields) => new Promise(resolve => db.collection(collection).findOne(filter, fields, (err, result) => resolve(result))),
6
+ 'findOneMapAsync': (db, collection, param) => new Promise(resolve => {
7
+ if (!param || typeof param.rule != 'string' || param.rule.split('.').length != 2 || !Array.isArray(param.list)) {
8
+ // return resolve({ status: false, err: 'param deve ser parecido {filter:{},rule:"lista.codigo",list:[],project:{}}' });
9
+ console.log(`Erro findOneMapAsync: param deve ser parecido { filter: {}, rule: "lista.codigo", list: [], project: {} }`);
10
+ return resolve(null);
11
+ }
12
+
13
+ var fieldLista = param.rule.split('.')[0];
14
+ var fieldItem = param.rule.split('.')[1];
15
+
16
+ var projectAuto = {}
17
+
18
+ projectAuto[fieldLista] = {
19
+ $filter: {
20
+ input: '$' + fieldLista,
21
+ as: 'item',
22
+ cond: {
23
+ $in: [
24
+ "$$item." + fieldItem,
25
+ param.list || []
26
+ ]
27
+ }
28
+ }
29
+ }
30
+
31
+ db.collection(collection).aggregate([
32
+ { $match: param.filter || {} },
33
+ { $project: Object.assign(projectAuto, param.project || {}) }
34
+ ]).toArray((err, result) => {
35
+ if (err) { console.log('Erro aggregate cad: ', err); }
36
+ resolve(result[0]);
37
+ });
38
+ }),
6
39
  'findLimitAsync': (db, collection, filter, limit) => new Promise(resolve => db.collection(collection).find(filter).limit(limit).toArray((err, result) => resolve(result))),
7
40
  'distinctAsync': (db, collection, filter, campo) => new Promise(resolve => db.collection(collection).distinct(campo, filter, (err, result) => resolve(result))),
8
41
  'findLimitSortAsync': (db, collection, filter, sort, limit) => new Promise(resolve => db.collection(collection).find(filter).sort(sort).limit(limit).toArray((err, result) => resolve(result))),