flexbiz-server 12.3.13 → 12.3.14

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
@@ -2,7 +2,7 @@
2
2
  "name": "flexbiz-server",
3
3
  "main": "./server/app.js",
4
4
  "description": "Flexible Server",
5
- "version": "12.3.13",
5
+ "version": "12.3.14",
6
6
  "author": {
7
7
  "name": "Van Truong Pham",
8
8
  "email": "invncur@gmail.com"
@@ -20,6 +20,7 @@
20
20
  "async": "^3.2.0",
21
21
  "axios": "^0.20.0",
22
22
  "body-parser": "^1.19.0",
23
+ "brorand": "^1.1.0",
23
24
  "bwip-js": "^3.1.0",
24
25
  "cheerio": "^1.0.0-rc.10",
25
26
  "compression": "^1.7.4",
@@ -1,5 +1,5 @@
1
- 'use strict';const async=require("async"),asskeySchema=new Schema({id_app:String,name:String,username:{type:String,required:!0,maxlength:1024,trim:!0},address:{type:String,required:!0,maxlength:2024,trim:!0},mnemonic:String,private_key:String,privateKey:String,note:String,wallet_type:{type:Number,default:9},asset:{type:String,uppercase:!0,trim:!0},balances:Schema.Types.Mixed,exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,
2
- default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});asskeySchema.index({id_app:1});asskeySchema.index({username:1,address:1});asskeySchema.index({note:1});asskeySchema.index({name:1});asskeySchema.index({id_app:1,address:1},{unique:!0});asskeySchema.index({status:1});asskeySchema.index({user_created:1});asskeySchema.index({username:"text",address:"text",note:"text",name:"text"},{name:"asskey_index"});
1
+ 'use strict';const async=require("async"),{ec}=require("elliptic-nodejs"),EC=new ec("secp256k1"),asskeySchema=new Schema({id_app:String,name:String,username:{type:String,required:!0,maxlength:1024,trim:!0},address:{type:String,required:!0,maxlength:2024,trim:!0},mnemonic:String,private_key:String,privateKey:String,note:String,wallet_type:{type:Number,default:9},asset:{type:String,uppercase:!0,trim:!0},balances:Schema.Types.Mixed,exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,
2
+ default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});asskeySchema.index({id_app:1});asskeySchema.index({username:1,address:1});asskeySchema.index({note:1});asskeySchema.index({name:1});asskeySchema.index({id_app:1,address:1},{unique:!0});asskeySchema.index({status:1});asskeySchema.index({user_created:1});asskeySchema.index({username:"text",address:"text",note:"text",name:"text"},{name:"asskey_index"});
3
3
  const model=mongoose.models.asskey||mongoose.model("asskey",asskeySchema);model.on("index",async function($err$$){$err$$?console.error("asskey index error",$err$$):console.info("asskey indexing complete")});
4
4
  model.getCoinBalance=async($condition$$={},$options$$={})=>{if(!$condition$$.id_app)throw"H\u00e0m n\u00e0y y\u00eau c\u1ea7u \u0111i\u1ec1u ki\u1ec7n ch\u1ee9a id_app";const {bankBalancesGet:$bankBalancesGet$$}=require("../libs/blockchainconnect");let $items$$=await model.find($condition$$).lean();await new Promise(($rs$$,$rj$$)=>{async.mapSeries($items$$,($item$$,$cb$$)=>{setImmediate(async()=>{try{let $bls$$=await $bankBalancesGet$$($condition$$.id_app,$item$$.address);$options$$.denom&&($bls$$=
5
5
  $bls$$.filter($b$$=>$b$$.denom==$options$$.denom));let $needtobuys$$=await global.getModel("assneedtobuy").find({creator:$item$$.address,id_app:$item$$.id_app,trang_thai:"0"}).lean();$needtobuys$$=$needtobuys$$.filter($s$$=>0<$s$$.so_luong_con_lai&&"0"==$s$$.trang_thai).map($s$$=>({denom:$s$$.denom,amount:$s$$.so_luong_con_lai*$s$$.gia_mua}));$bls$$=[...$bls$$,...$needtobuys$$];$bls$$.forEach($r$$=>{$r$$.amount=Number($r$$.amount);$r$$.price=$r$$.price||1;$r$$.value=$r$$.price*$r$$.amount;delete $r$$.key});
@@ -7,9 +7,9 @@ $item$$.balances=$bls$$;$cb$$()}catch($e$$){$cb$$($e$$)}})},$e$$=>{if($e$$)retur
7
7
  model.getInvestBalance=async($condition$$={})=>{if(!$condition$$.id_app)throw"H\u00e0m n\u00e0y y\u00eau c\u1ea7u \u0111i\u1ec1u ki\u1ec7n ch\u1ee9a id_app";const {bankBalancesGet:$bankBalancesGet$$}=require("../libs/blockchainconnect");let $items$$=await model.find($condition$$).lean();await new Promise(($rs$$,$rj$$)=>{async.mapSeries($items$$,($item$$,$cb$$)=>{setImmediate(async()=>{try{let $bls$$=(await $bankBalancesGet$$($condition$$.id_app,$item$$.address)).filter($b$$=>$b$$.denom!==configs.MAIN_DENOM),
8
8
  $sellings$$=await global.getModel("asssell").find({creator:$item$$.address,id_app:$item$$.id_app,trang_thai:"0"}).lean();$sellings$$=$sellings$$.filter($s$$=>0<$s$$.con_lai&&"0"==$s$$.trang_thai).map($s$$=>({denom:$s$$.token,amount:$s$$.con_lai}));$bls$$=[...$bls$$,...$sellings$$];await $bls$$.asyncJoinModel2($condition$$.id_app,global.getModel("assinvestment"),{where:{denom:"token"},fields:[{price:"gia",id_investment:"id"}]});$bls$$=$bls$$.filter($b$$=>$b$$.id_investment);$bls$$.forEach($r$$=>{$r$$.amount=
9
9
  Number($r$$.amount);$r$$.price=$r$$.price||1;$r$$.value=$r$$.price*$r$$.amount;delete $r$$.key});$item$$.balances=$bls$$;$cb$$()}catch($e$$){$cb$$($e$$)}})},$e$$=>{if($e$$)return $rj$$($e$$);$rs$$()})});return $items$$.map($item$$=>($item$$.balances||[]).map($bl$$=>$bl$$.value||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0)).reduce(($a$$,$b$$)=>$a$$+$b$$,0)};const toHexString=$byteArray$$=>Array.from($byteArray$$,$byte$$=>("0"+($byte$$&255).toString(16)).slice(-2)).join("");
10
- model.createWallet=async($id_app$$,$username$$,$name$$="",$wallet_type$$=9,$save$$=!0)=>new Promise(($resolve$$,$reject$$)=>{try{const {ec:$ec$$}=require("elliptic-nodejs");let $privateKey$$=(new $ec$$("secp256k1")).genKeyPair().getPrivate().toString(8),$address$$=model.getPublicKeyFromPrivateKey($privateKey$$);if($save$$){let $wallet$$=new model({username:$username$$,user_created:$username$$,privateKey:$privateKey$$,address:$address$$,id_app:$id_app$$,wallet_type:$wallet_type$$,name:$name$$||$username$$});
11
- $wallet$$.save($e$$=>{if($e$$)return $reject$$(Error($e$$.message));$resolve$$($wallet$$)})}else $resolve$$({privateKey:$privateKey$$,address:$address$$})}catch($e$$){console.error($e$$),$reject$$(Error($e$$.message))}});model.getPrivateKey=async($id_app$$,$address$$)=>new Promise(($resolve$$,$reject$$)=>{model.findOne({id_app:$id_app$$,address:$address$$}).lean().exec(async($e$$,$rs$$)=>{if($e$$)return $reject$$(Error($e$$.message));if($rs$$)return $resolve$$($rs$$.privateKey);$reject$$(Error("Not found wallet"))})});
12
- model.getPublicKeyFromPrivateKey=$key$jscomp$8_privateKey$$=>{const {ec:$ec$$}=require("elliptic-nodejs");$key$jscomp$8_privateKey$$=(new $ec$$("secp256k1")).keyFromPrivate($key$jscomp$8_privateKey$$,"hex");return`${global.configs.ADDRESS_PREFIX||""}${$key$jscomp$8_privateKey$$.getPublic().encode("hex")}`};
10
+ model.createWallet=async($id_app$$,$username$$,$name$$="",$wallet_type$$=9,$save$$=!0)=>new Promise(($resolve$$,$reject$$)=>{try{let $privateKey$$=EC.genKeyPair().getPrivate().toString(8),$address$$=model.getPublicKeyFromPrivateKey($privateKey$$);if($save$$){let $wallet$$=new model({username:$username$$,user_created:$username$$,privateKey:$privateKey$$,address:$address$$,id_app:$id_app$$,wallet_type:$wallet_type$$,name:$name$$||$username$$});$wallet$$.save($e$$=>{if($e$$)return $reject$$(Error($e$$.message));
11
+ $resolve$$($wallet$$)})}else $resolve$$({privateKey:$privateKey$$,address:$address$$})}catch($e$$){console.error($e$$),$reject$$(Error($e$$.message))}});model.getPrivateKey=async($id_app$$,$address$$)=>new Promise(($resolve$$,$reject$$)=>{model.findOne({id_app:$id_app$$,address:$address$$}).lean().exec(async($e$$,$rs$$)=>{if($e$$)return $reject$$(Error($e$$.message));if($rs$$)return $resolve$$($rs$$.privateKey);$reject$$(Error("Not found wallet"))})});
12
+ model.getPublicKeyFromPrivateKey=$key$jscomp$8_privateKey$$=>{$key$jscomp$8_privateKey$$=EC.keyFromPrivate($key$jscomp$8_privateKey$$,"hex");return`${global.configs.ADDRESS_PREFIX||""}${$key$jscomp$8_privateKey$$.getPublic().encode("hex")}`};
13
13
  model.getUsername=async($id_app$$,$address$$)=>new Promise(($resolve$$,$reject$$)=>{model.findOne({id_app:$id_app$$,address:$address$$}).lean().exec(async($e$$,$rs$$)=>$e$$||!$rs$$?$reject$$(Error($e$$?$e$$.message:"\u0110\u1ecba ch\u1ec9 v\u00ed n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i")):$resolve$$($rs$$.username))});
14
- model.sign=async($id_app$$,$address$$,$dataToSign$$)=>{try{let $privateKey$$=await model.getPrivateKey($id_app$$,$address$$);const {ec:$ec$$}=require("elliptic-nodejs");let $key$$=(new $ec$$("secp256k1")).keyFromPrivate($privateKey$$,"hex"),$msgHash$$=[JSON.stringify($dataToSign$$)];return toHexString($key$$.sign($msgHash$$).toDER())}catch($e$$){throw Error(`Can't sign data. Error: ${$e$$.message}`);}};
15
- model.verifySignature=async($address$jscomp$4_key$$,$data_msgHash$$,$signature$$)=>{configs.ADDRESS_PREFIX&&($address$jscomp$4_key$$=$address$jscomp$4_key$$.split(configs.ADDRESS_PREFIX).join(""));const {ec:$ec$$}=require("elliptic-nodejs");$address$jscomp$4_key$$=(new $ec$$("secp256k1")).keyFromPublic($address$jscomp$4_key$$,"hex");$data_msgHash$$=[JSON.stringify($data_msgHash$$)];return $address$jscomp$4_key$$.verify($data_msgHash$$,$signature$$)};module.exports=model;
14
+ model.sign=async($id_app$$,$address$$,$dataToSign$$)=>{try{let $privateKey$$=await model.getPrivateKey($id_app$$,$address$$),$key$$=EC.keyFromPrivate($privateKey$$,"hex"),$msgHash$$=[JSON.stringify($dataToSign$$)];return toHexString($key$$.sign($msgHash$$).toDER())}catch($e$$){throw Error(`Can't sign data. Error: ${$e$$.message}`);}};
15
+ model.verifySignature=async($address$jscomp$4_key$$,$data_msgHash$$,$signature$$)=>{configs.ADDRESS_PREFIX&&($address$jscomp$4_key$$=$address$jscomp$4_key$$.split(configs.ADDRESS_PREFIX).join(""));$address$jscomp$4_key$$=EC.keyFromPublic($address$jscomp$4_key$$,"hex");$data_msgHash$$=[JSON.stringify($data_msgHash$$)];return $address$jscomp$4_key$$.verify($data_msgHash$$,$signature$$)};module.exports=model;
@@ -1,9 +1,8 @@
1
- 'use strict';const walletSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},privateKey:{type:String,required:!0},publicKey:{type:String,required:!0},email:{type:String,required:!0,lowercase:!0},exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});walletSchema.index({id_app:1,privateKey:1,email:1});walletSchema.index({email:"text"});
2
- walletSchema.index({status:1});walletSchema.index({user_created:1,visible_to:1,visible_to_users:1});const model=mongoose.models.wallet||mongoose.model("wallet",walletSchema),toHexString=$byteArray$$=>Array.from($byteArray$$,$byte$$=>("0"+($byte$$&255).toString(16)).slice(-2)).join("");
3
- model.createWallet=async($id_app$$,$email$$)=>new Promise(($resolve$$,$reject$$)=>{model.findOne({id_app:$id_app$$,email:$email$$},($e$$,$rs$$)=>{if($e$$||$rs$$)return $reject$$(Error($e$$?$e$$.message:"This user has wallet"));try{const {ec:$ec$$}=require("elliptic-nodejs");let $privateKey$$=(new $ec$$("secp256k1")).genKeyPair().getPrivate().toString(16),$publicKey$$=model.getPublicKeyFromPrivateKey($privateKey$$);(new model({email:$email$$,privateKey:$privateKey$$,publicKey:$publicKey$$,id_app:$id_app$$})).save($e$$=>
4
- {if($e$$)return $reject$$(Error($e$$.message));$resolve$$($privateKey$$)})}catch($e$$){console.error($e$$),$reject$$(Error($e$$.message))}})});model.getPrivateKey=async($id_app$$,$email$$)=>new Promise(($resolve$$,$reject$$)=>{model.findOne({id_app:$id_app$$,email:$email$$}).lean().exec(async($e$jscomp$0$$,$rs$$)=>{if($e$jscomp$0$$)return $reject$$(Error($e$jscomp$0$$.message));if($rs$$)return $resolve$$($rs$$.privateKey);try{let $privateKey$$=await model.createWallet($id_app$$,$email$$);$resolve$$($privateKey$$)}catch($e$$){$reject$$(Error($e$$.message))}})});
5
- model.getPublicKey=async($id_app$$,$email$$)=>{var $privateKey$jscomp$2_publicKey$$=await model.getPrivateKey($id_app$$,$email$$);$privateKey$jscomp$2_publicKey$$=model.getPublicKeyFromPrivateKey($privateKey$jscomp$2_publicKey$$);await model.findOneAndUpdate({id_app:$id_app$$,email:$email$$},{publicKey:$privateKey$jscomp$2_publicKey$$});return $privateKey$jscomp$2_publicKey$$};
6
- model.getPublicKeyFromPrivateKey=$privateKey$$=>{const {ec:$ec$$}=require("elliptic-nodejs");return(new $ec$$("secp256k1")).keyFromPrivate($privateKey$$,"hex").getPublic().encode("hex")};model.getEmail=async($id_app$$,$publicKey$$)=>new Promise(($resolve$$,$reject$$)=>{model.findOne({id_app:$id_app$$,publicKey:$publicKey$$}).lean().exec(async($e$$,$rs$$)=>$e$$||!$rs$$?$reject$$(Error($e$$?$e$$.message:"\u0110\u1ecba ch\u1ec9 v\u00ed n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i")):$resolve$$($rs$$.email))});
7
- model.sign=async($id_app$$,$email$$,$dataToSign$$)=>{try{let $privateKey$$=await model.getPrivateKey($id_app$$,$email$$);const {ec:$ec$$}=require("elliptic-nodejs");let $key$$=(new $ec$$("secp256k1")).keyFromPrivate($privateKey$$,"hex"),$msgHash$$=[JSON.stringify($dataToSign$$)];return toHexString($key$$.sign($msgHash$$).toDER())}catch($e$$){throw Error(`Can't sign data. Error: ${$e$$.message}`);}};
8
- model.verifySignature=async($address_id_app$jscomp$5_key$$,$ec$jscomp$3_email$$,$data_msgHash$$,$signature$$)=>{$address_id_app$jscomp$5_key$$=await model.getPublicKey($address_id_app$jscomp$5_key$$,$ec$jscomp$3_email$$);({ec:$ec$jscomp$3_email$$}=require("elliptic-nodejs"));$address_id_app$jscomp$5_key$$=(new $ec$jscomp$3_email$$("secp256k1")).keyFromPublic($address_id_app$jscomp$5_key$$,"hex");$data_msgHash$$=[JSON.stringify($data_msgHash$$)];return $address_id_app$jscomp$5_key$$.verify($data_msgHash$$,
9
- $signature$$)};module.exports=model;
1
+ 'use strict';const {ec}=require("elliptic-nodejs"),EC=new ec("secp256k1"),walletSchema=new Schema({id_app:{type:String,required:!0,maxlength:1024},privateKey:{type:String,required:!0},publicKey:{type:String,required:!0},email:{type:String,required:!0,lowercase:!0},exfields:Schema.Types.Mixed,status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});
2
+ walletSchema.index({id_app:1,privateKey:1,email:1});walletSchema.index({email:"text"});walletSchema.index({status:1});walletSchema.index({user_created:1,visible_to:1,visible_to_users:1});const model=mongoose.models.wallet||mongoose.model("wallet",walletSchema),toHexString=$byteArray$$=>Array.from($byteArray$$,$byte$$=>("0"+($byte$$&255).toString(16)).slice(-2)).join("");
3
+ model.createWallet=async($id_app$$,$email$$)=>new Promise(($resolve$$,$reject$$)=>{model.findOne({id_app:$id_app$$,email:$email$$},($e$$,$rs$$)=>{if($e$$||$rs$$)return $reject$$(Error($e$$?$e$$.message:"This user has wallet"));try{let $privateKey$$=EC.genKeyPair().getPrivate().toString(16),$publicKey$$=model.getPublicKeyFromPrivateKey($privateKey$$);(new model({email:$email$$,privateKey:$privateKey$$,publicKey:$publicKey$$,id_app:$id_app$$})).save($e$$=>{if($e$$)return $reject$$(Error($e$$.message));
4
+ $resolve$$($privateKey$$)})}catch($e$$){console.error($e$$),$reject$$(Error($e$$.message))}})});model.getPrivateKey=async($id_app$$,$email$$)=>new Promise(($resolve$$,$reject$$)=>{model.findOne({id_app:$id_app$$,email:$email$$}).lean().exec(async($e$jscomp$0$$,$rs$$)=>{if($e$jscomp$0$$)return $reject$$(Error($e$jscomp$0$$.message));if($rs$$)return $resolve$$($rs$$.privateKey);try{let $privateKey$$=await model.createWallet($id_app$$,$email$$);$resolve$$($privateKey$$)}catch($e$$){$reject$$(Error($e$$.message))}})});
5
+ model.getPublicKey=async($id_app$$,$email$$)=>{var $privateKey$jscomp$2_publicKey$$=await model.getPrivateKey($id_app$$,$email$$);$privateKey$jscomp$2_publicKey$$=model.getPublicKeyFromPrivateKey($privateKey$jscomp$2_publicKey$$);await model.findOneAndUpdate({id_app:$id_app$$,email:$email$$},{publicKey:$privateKey$jscomp$2_publicKey$$});return $privateKey$jscomp$2_publicKey$$};model.getPublicKeyFromPrivateKey=$privateKey$$=>EC.keyFromPrivate($privateKey$$,"hex").getPublic().encode("hex");
6
+ model.getEmail=async($id_app$$,$publicKey$$)=>new Promise(($resolve$$,$reject$$)=>{model.findOne({id_app:$id_app$$,publicKey:$publicKey$$}).lean().exec(async($e$$,$rs$$)=>$e$$||!$rs$$?$reject$$(Error($e$$?$e$$.message:"\u0110\u1ecba ch\u1ec9 v\u00ed n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i")):$resolve$$($rs$$.email))});
7
+ model.sign=async($id_app$$,$email$$,$dataToSign$$)=>{try{let $privateKey$$=await model.getPrivateKey($id_app$$,$email$$),$key$$=EC.keyFromPrivate($privateKey$$,"hex"),$msgHash$$=[JSON.stringify($dataToSign$$)];return toHexString($key$$.sign($msgHash$$).toDER())}catch($e$$){throw Error(`Can't sign data. Error: ${$e$$.message}`);}};
8
+ model.verifySignature=async($address_id_app$jscomp$5_key$$,$email$$,$data_msgHash$$,$signature$$)=>{$address_id_app$jscomp$5_key$$=await model.getPublicKey($address_id_app$jscomp$5_key$$,$email$$);$address_id_app$jscomp$5_key$$=EC.keyFromPublic($address_id_app$jscomp$5_key$$,"hex");$data_msgHash$$=[JSON.stringify($data_msgHash$$)];return $address_id_app$jscomp$5_key$$.verify($data_msgHash$$,$signature$$)};module.exports=model;