gcl
Version:
码农村nodejs类库,完成解决回调陷阱,配置框架,IOC框架,统一多DB访问框架,可扩展日志框架和io/db/net/thread/pool 克隆表达式,加解密算法等等一系列基础类库和算法的实现
1,557 lines (1,500 loc) • 68.5 kB
JavaScript
/**
* Created by baibing on 2016/9/4.
*/
console.log("hello world");
const test1 = function () {
//文件处理机制
var fs = require("fs");
//console.log(fs.readFileSync("c:\\RHDSetup.Log").toString());
/*fs.readFile('c:\\RHDSetup.log',function(err,data){
console.log('read:'+data.toString());
});
fs.watchFile('c:\\RHDSetup.log',function(err,data){
console.log('watch:'+data.toString());
});
//require('gcl');//证明package可以假冒 可以全局搜索 否则只能写全名
/*
require('\\baibing\\work\\cv\\test\\src\\com\\coooders\\common\\tool').tryC(()=>{
console.log(require('cookies'));
})*/
console.log(__dirname); //在不同文件中返回值不同
console.log(__filename);
//console.log('/com/coooders/net/tool'.replace(new RegExp('(^\/*)|(\/*$)'),''));
/*var P = require('path');
console.log(P.parse(P.resolve(P.normalize(process.mainModule.filename))).name);
var V = require('./com/coooders/common/tool');
*/
//
//console.log(V.include('/com/coooders/net/tool').test());
//;
//todo include 两次required 保证先绝对路径再相对路径
//console.log(process);
};
const test2 = function () {
var event = require("events");
var emitter = new event.EventEmitter();
//emitter.on('error',function(err){console.log('出现错误!\r\n');console.log(err);});
/*
emitter.on("newListener",function(name){
console.log(arguments);
});
//emitter.emit("my.ss","haha","hahha");
//结论 emitter是专有对象事件 不是全局对象事件
emitter.emit.apply(emitter, ["my.ss", "hha"]);
emitter.emit.call(emitter, "my.ss", "hahsh");
var func = function () {
console.log(arguments);
};
func.apply(null, [22, 23, 24]);
func.call(null, 22, 23, 24);
emitter.on('my.ss', function (ss2) {
console.log(arguments);
});
//订阅前的事件不可用 需要使用VJ方式取代
emitter.emit.apply(emitter, ["my.ss", "hh2"]);
*/
};
/*
const test3 = function(){
//Buffer 和 Array有什么不同? Buffer不是数组 不支持多维数组而且是个缓存 只能用Buffer读取String字符 该类用来创建一个专门存放二进制数据的缓存区
var buf = new Buffer(256);
buf.fill(0);
buf.write('中文',0);
var ss = "中文";
console.log(ss[0]);
console.log(buf.length);
console.log(buf.toString('utf-8',0,3)); //按照指定位置 可以正常读取字符串 buf.slice 和 array.slice 一样 也没有内容大小属性
}*/
/*
const test4 = function(){
//stream 流文件
var fs = require('fs');
var fs2 = fs.createReadStream("c:\\RHDSetup.Log");
var fs3 = fs.createWriteStream("c:\\abc.txt",{flags:'a'});//flags 默认是w
var sb = new Buffer(2302);
sb.fill(0);
fs2.setEncoding("UTF-8");
//fs3.setEncoding("UTF-8");
console.log(fs3);
fs3.on("finish",function(){
console.log('write all');
});
fs2.on("end",function(){
//console.log(sb.toString("utf-8"));
fs3.end();
});
fs2.on("error",function(err){
console.log(err);
});
fs2.on("data",function(datas){
console.log(datas.length);
sb.write(datas);
fs3.write(datas,"UTF-8");
console.log(1);
//console.log(datas);
});
console.log(fs);
fs.exists("c:\\abbb",function(isTrue){
console.log(isTrue);
if(isTrue) fs.rmdir("c:\\abbb");
else fs.mkdir("c:\\abbb",function(){console.log('create OK');});
});
//太恐怖了 先读再设置事件!! 如何设置添加方法?
}*/
const test5 = function () {
//module.exports
//var ss = require('./ca');
//console.log(ss);
//ss.world();
console.log(global.__filename);
console.log(__filename);
console.log(__dirname);
console.log(global.process.argv);
console.log(global.process.execPath);
console.log("当前目录: " + process.cwd());
console.log(global.process.execPath);
console.log(global.process.memoryUsage());
setTimeout(function () {
console.log(222222222);
}, 1);
var w = 0;
//var ww = function(){if(w++<100){console.log(22);process.nextTick(ww);} };//证明nextTick并不一定超过setTimeout执行
//ww();
var i = 100;
while (i--) {
console.log(i);
}
//console.log(process);
process.on("uncaughtException", function (err) {
console.log(err);
});
process.stdout.write("Hello World!" + "\n");
};
const test6 = function () {
var util = require("util");
var V = require("./com/coooders/common/tool");
console.log(new Date().sub("h", new Date().add("d", 1)));
console.log(22);
/*
var father = function(){
var _ = this,__ = {};
__.abc = 22;
_.abc = ()=>__.abc;
_.bcd = 33;
};
father.prototype.test1 = function(){console.log(this.bcd);}
var son = function(){this.b = 323;father.apply(this,[])};
util.inherits(son,father);
son.prototype.test2 = function(){console.log(this.b);}
var son2 = function(){this.c = 444;son.call(this)};
util.inherits(son2,son);
son2.prototype.test3 = function(){console.log(this.c);};
son2.test1 = son2.prototype.test1;
son2.prototype.test1 = function(){console.log(this.c);son2.test1.apply(this);};
(new son2()).test1();
(new son()).test1();
(new father()).test1();
//可以实现直接的继承,但是私有方法和私有属性无法保存
*/
};
/*
{
var fs = require('fs');
console.log(fs);
fs.readdir("D:\\TDDOWNLOAD1\\",function(err,fss){
fss.forEach(function(v){console.log(v);});
});
//结论 目前没有找到搜索在某个目录下所有文件的能力 递归搜索不清楚如何进行
/*
fs.unlink("D:\\*.torrent",function(err){
if(err) console.log(err);
else
fs.readdir("D:\\TDDOWNLOAD1",function(err,fss){
fss.forEach(function(v){console.log(v);});
});
})*/
//结论 只能更新文件名 不能复制文件 可以同盘符移动文件
/*
fs.rename("D:\\1F5087B247C40AC71AE4AF9D97687D938FEE95EC.torrent1","C:\\1F5087B247C40AC71AE4AF9D97687D938FEE95EC.torrent1",function(err){
if(err) console.log(err);
});*/
/*
//fs.link("D:\\TDDOWNLOAD1\\1F5087B247C40AC71AE4AF9D97687D938FEE95EC.torrent1","c:\\abcd.tor",function(err){if(err)console.log(err);})
//类似于同盘符复制
fs.link("D:\\abcd.tor","D:\\abcd1.tor",function(err){
if(err) console.log(err);
});
}*/
/*
const test8 = function(){
var path = require('path');
console.log(path.basename("D:\\TDDOWNLOAD1\\1F5087B247C40AC71AE4AF9D97687D938FEE95EC.torrent1"));
console.log(path.dirname("D:\\TDDOWNLOAD1\\1F5087B247C40AC71AE4AF9D97687D938FEE95EC.torrent1"));
console.log(path.extname("D:\\TDDOWNLOAD1\\1F5087B247C40AC71AE4AF9D97687D938FEE95EC.torrent1"));
console.log(path.parse('D:\\TDDOWNLOAD1\\abcde\\1F5087B247C40AC71AE4AF9D97687D938FEE95EC.torrent1'));
console.log(path.resolve("./main.js"))
console.log(path.normalize(".././abc.js"));
//console.log(process.versions);
}
const test9 = function(){
var http = require('http');
http.createServer(function(req,rep){
rep.writeHead(200, {'Content-Type': 'text/html'});
// 响应文件内容
rep.write("Hello World");
rep.end();
}).listen(81,function(){console.log('server start');});
http.request({host:'localhost',port:81,path:'/',method:'post'},function(resp){
var sb = "";
resp.on('data',function(abc){sb+=abc;});
resp.on('end',function(){console.log(sb);})
}).end();
console.log(http);
}
*/
const test10 = function () {
const M = require("./com/coooders/net/mime");
console.log(M.get("abc.js"));
console.log(M.MIME["mp4"]);
var tool = require("./com/coooders/common/tool");
tool.isDebug = true;
console.log(tool.isValid("222"));
var s = tool.sb();
s.append("22323232");
s.append("111");
console.log(s.toString());
s.appendFormat("a:{a}", {
a: 22,
});
console.log(s.toString());
//console.log(tool.isArray([]));
/* 得到日期年月日等加数字后的日期 new Date().add('h',1)*/
tool.each([1, 2, 3], function (v) {
console.log(v);
});
tool.forC(
{
a: 1,
b: 2,
c: 3,
},
function (k, v) {
console.log(k + ":" + v);
return true;
}
);
tool.forC(
{
a: 1,
b: 2,
c: 3,
},
function (k, v, next) {
console.log(k + ":" + v);
if (next) next();
}
);
const I = require("./com/coooders/io/tool");
console.log(I.execDir());
var i = 100;
//tool.whileC(function() { return i--; }, function(v, next) { console.log(v); if (next) next(); });
tool.finalC(
function (data, next) {
tool.once(function () {
console.log(10);
next();
}, 500);
},
function (data, next) {
tool.once(function () {
console.log(20);
if (next) next();
}, 300);
},
function (data, next) {
tool.once(function () {
console.log(12);
if (next) next();
}, 1);
}
);
const once = tool.once;
tool.finalC(
(data, call) => {
once(() => {
console.log(1);
call();
}, 400);
},
(data, call) => {
once(() => {
console.log(2);
call();
}, 200);
},
(data, call) => {
once(() => {
console.log(3);
call();
}, 300);
},
(data, call) => {
once(() => {
console.log(4);
call();
}, 500);
},
(data, call) => {
once(() => {
console.log(5);
call();
}, 100);
}
);
console.log(6);
tool.next(
function (data, next) {
tool.once(function () {
console.log(11111);
if (next) next();
}, 500);
//测试为true时中断循环
return true;
},
function (data, next) {
tool.once(function () {
console.log(22222);
if (next) next();
}, 300);
},
function (data, next) {
tool.once(function () {
console.log(33333);
if (next) next();
}, 1);
}
);
console.log("abc".endWith("c"));
console.log(
JSON.stringify({
a: 1,
b: 2,
})
);
console.log(
tool.hash(
JSON.parse(
JSON.stringify({
a: 1,
b: 2,
})
)
)
);
console.log(
tool.merge(
{
a: 1,
b: 2,
},
{
c: 3,
}
)
);
var ss = function () {
this.name = "1111";
console.log(arguments);
};
var ss2 = function () {
var _ = this,
__ = {};
tool.inherit.apply(_, [ss, [1, 2, 3]]);
this.abc = "32222332";
};
var ss2 = eval("(new ss())");
ss2 = tool.create2(ss, [1, 2, 3, 4]);
console.log(ss2);
/*
var create2 = function(type,args){
var ret = '(new '+type+'(';
if(tool.isArray(args)){
for(var i in args){
ret+='args['+i+'],'
}
if(args.length>0){
ret = ret.substr(0,ret.length-1);
}
}
return eval(ret+'))');
};*/
//console.log(global.ss); 暂时无法使用
//console.log(this.create2);
var event = require("events");
var ff = function () {
event.EventEmitter.call(this);
tool.applyCAE(this);
this.write = function (ss) {
this.emit("data", ss);
this.callEvent("data", ss);
};
};
require("util").inherits(ff, event.EventEmitter);
//此为nodejs内部继承
var f2 = tool.create(ff);
//tool.inherit2(f2,ff,event.EventEmitter,[]);
console.log(f2);
/*
var ss3 = tool.create.apply(this,[ss2,[1,2,3,4]]);
//ss2 = tool.create(ss,[1,2,3,4]);
//Object.create 不可用
//console.log(encodeURIComponent("ddfefesefe"));
var event = require('events');
var ff = function(){
event.EventEmitter.call(this);
tool.applyCommandAndEvent(this);
this.write = function(ss){this.emit('data',ss);this.callEvent('data',ss);};
};
require('util').inherits(ff,event.EventEmitter);
//此为nodejs内部继承
var f2 = tool.create(ff);
//tool.inherit2(f2,ff,event.EventEmitter,[]);
console.log(f2);
//f2.on('data',function(data){console.log(data)});
*/
f2.registEvent("data", function (data) {
console.log(data);
});
f2.registCommand("abced", function (data) {
console.log(data);
});
f2.write("data test");
f2.write("data test");
f2.callCommand("abced", ["ddd"]);
/*var ss = function(abc,func){
func.apply(null,[abc]);
};
ss('3fjjeisieef',data=>{console.log(data);});
*/
//console.log(require('url').parse("http://www.runoob.com/nodejs/nodejs-web-module.html?a=1&b=2"));
/*var P = require('path');
var tt = P.parse(P.resolve(P.normalize('./com/coooders/aaaaa/abc/')));
//require('fs').mkdir('d:/a/b/c/d');
console.log(tt);
*/
//console.log(require('fs'));
//I.moveFile('./com/test.js', './com1/test.js').then(() => console.log('move ok!'));
/*
I.moveDir('./com2', './com1').then(() => {
console.log('复制成功');
});
*/
};
const test11 = function () {
//console.log(require('zlib'));
var nettool = require("./com/coooders/net/tool");
//nettool.upload("http://www.zc.com/Module/home/Index.html","D:\\TDDOWNLOAD1\\撤离科威特.mp3",(err,data)=>{});
//console.log(require('url').parse('http://www.hengshuiac.org/Module/home/Index.html'));
//nettool.post("http://www.hengshuiac.org/Module/home/Index.html").then(data => { console.log('完成' + data); });
//console.log(' '.trim());
var client = new nettool.WebClient();
//client.get("http://admin.3vjia.com/3D/v2/default.aspx").then((data) => console.log(data));
/*client.get("http://www.hengshuiac.org/Module/home/GetCheckCode.x?&_r=0.4258418398972825").then(function(data) {
//console.log(client.cookies);
client.get("http://www.hengshuiac.org/Module/home/Index.html").then(function(data) { console.log(client.cookies); });
});*/
//client.postJson("http://www.hengshuiac.org/Module/home/Index.html", { a: 1, b: 2 }).then(function(data) { console.log(client.cookies); });
//client.download("http://www.hengshuiac.org/Module/home/GetCheckCode.x?&_r=0.4258418398972825", './mm.png').then(function(err, data) { console.log('下载完成'); });
console.log("未测试");
nettool
.upload(
"http://www.hengshuiac.org/Module/admin/UploadFile.x?crossDomain=1",
"/Users/baibing/Downloads/公章.jpg"
)
.then(function (data) {
console.log("上传完成" + data);
});
};
const test12 = function () {
/*stream 测试学习
V.ArrayStream = function(args){
var _ = this,__={};
stream.Readable.call(this,args);
stream.Writeable.call(this,args);
_.datas = [];
};
U.inherit(V.ArrayStream,stream.Readable);
U.inherit(V.ArrayStream,stream.Writeable);
V.ArrayStream.prototype._read = function () {
var i = this._index++;
if (i > this._max)
this.push(null);
else {
var str = '' + i;
var buf = new Buffer(str, 'ascii');
this.push(buf);
}
}
//console.log(require('stream').Duplex.prototype);
var ss = [5,4,3,2,1]
//console.log(ss.splice(0,10));
//console.log(ss.length);
console.log(new Array());
var s = new Buffer(ss);
console.log(s.toJSON().data);
//console.log(require('zlib'));*/
};
const test13 = function () {
var C = require("./com/coooders/io/config");
var M = require("./com/coooders/bean/middler");
var N = require("./com/coooders/db/ni");
var V = require("./com/coooders/common/tool");
let P = require("./com/coooders/collection/pool");
var I = require("./com/coooders/io/tool");
//I.createDir('/Users/baibing/a/b/c/d');
//console.log(new P.pool());
//console.log(require('/Users/baibing/work/cv_zc/gcl/com/coooders/io/log.js'));
//C.getBaseConfigManager().then(conf => console.log(conf));
C.getApplicationConfigManager().then((cm) => {
/*
console.log(cm.getConfigValue('AppSettings', 'b'));
var m = new M.Middler(cm);
let v = m.getObjectByAppName('VESH.view', 'Logger');
console.log(v);
v.release(" test ");
//console.log(v);
v.error("我靠是真的吗? test ");
V.watch();
V.once(() => {
v.release(" test 111");
V.watch();
console.log(new Date().toString('HH:mm:ss'));
}, 4756);
m.setObjectByAppName('VESH.view', 'Logger', v);
C.getApplicationConfigManager().then((cm) => {});
*/
});
/*C.getBaseConfigManager((err,cm)=>{
console.log(222);
console.log(cm);
})
/*middler*/
/*ni*/
//var I = require('./com/coooders/io/log');
//证明middler框架正式可用
//证明slice复制可用 var ss = function(){console.log(Array.prototype.slice.apply(arguments,[0,arguments.length]));};
const fa = class {
constructor(a, b, c) {
this.a = c;
}
test1() {
console.log(this.a);
}
};
const son = class extends fa {
constructor(c) {
super("aaa", "bbb", c);
}
};
console.log(new son());
console.log(V.create(fa, ["aa", "bb", "11"]));
console.log(V.create2(fa, ["aa", "bb", "11"]));
C.getApplicationConfigManagerFromFile(["test.npcf", "test2.npcf"]).then(
(cm) => {
//C.getApplicationConfigManager().then((cm) => {
console.log(C.AppSettings(cm, "b"));
var m = new M.Middler(cm);
const v = m.getObjectByAppName("VESH.view", "Logger");
//v.error('333 test ');
//v.error("我靠是真的吗? test ");
//V.watch();
//V.once(()=>{v.release(" test 111");V.watch();console.log(new Date().toString('HH:mm:ss'));},4756);
m.setObjectByAppName("VESH.view", "Logger", v);
/*
console.log(m.getObjectByAppName('VESH.view','Logger2'));
return;
*/
/*
const M2 = require('mysql');
const conn = M2.createConnection({
host: '192.168.1.116',
user: 'root2',
password: '111111',
database: 'cv_zc',
port: 3306,
charset: 'UTF8_GENERAL_CI',
connectTimeout: 60000
});
conn.connect(() => {
console.log(333);
});
//conn.end();
conn.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
if (err) throw err;
console.log('The solution is: ', rows[0].solution);
});
conn.end();
* /
var temp = m.getObjectByAppName('Ni', 'template1');
console.log(temp);
temp.execute('ajaxtest11', { limit1: 11 }).then((result) => {
console.log(333);
console.log(result);
if (result.hasData())
console.log(result.last()[0][0]);
});
const temp2 = m.getObjectByAppName("Ni", "template");
temp2.execute('ajaxtest33', { data: 'ni test ' }).then(result => {
console.log(555);
console.log(result.last());
});
mongo mem decarator*/
const res = new N.NiDataResult();
res.add(
[
[],
null,
[
{
affected: 0,
},
{},
],
],
0
);
console.log("hasData", res.hasData());
const temp = m.getObjectByAppName("Ni", "template1");
temp
.execute("module.gettest", {
id: "11",
name: "2222",
})
.then((ret) => {
if (ret.hasData()) console.log(ret.last());
ret.clear();
temp
.execute("module.gettest", {
id: "11",
name: "2222",
})
.then((ret) => {
if (ret.hasData()) console.log(ret.last());
ret.clear();
})
.catch((e) => {
console.log(e.message);
});
})
.catch((e) => {
console.log(e.message);
});
/*
const temp = m.getObjectByAppName('Ni', 'template6');
temp.execute('url.test', { args: { productSerialNo: '124', orderId: '222' } }).then(ret => {
if (ret.hasData())
console.log(ret.last()[0][0]);
}).catch(e => {
console.log(e.message);
});
/*const temp = m.getObjectByAppName('Ni', 'template2');
temp.execute('ajaxtest22', { limit1: 11 }).then(ret => {
console.log(ret);
if (ret.hasData())
console.log(ret.last()[0][0]);
}).catch(e => {
console.log(e.message);
});
//参数化 存储过程 out参数 缓存
/*
var temp = m.getObjectByAppName('Ni', 'template');
V.next((data, next) => {
temp.execute('ajaxtest77', { limit1: 10, a: 15 }).then(result => {
console.log(result.last());
next();
});
}, (data, next) => {
temp.execute('ajaxtest44', { limit1: 10, a: 15, cacheValue: '3332' }).then(result => {
console.log(result.last());
next();
});
}, (data, next) => {
temp.execute('ajaxtest66', { limit1: 10, a: 15, cacheValue: '3334' }).then(result => {
console.log(result.last());
next();
});
}, (data, next) => {
temp.execute('ajaxtest55', { limit1: 10, a: 15 }).then(result => {
console.log(result.last());
next();
m.setObjectByAppName('Ni', 'template', temp);
console.log('end');
});
});
/*
var manager = m.getObjectByAppName('Ni','templatemanager');
manager.execute('template','ajaxtest33',{limit1:2},(err,result)=>{
if(result.hasData())
console.log(result.last());
});*/
/*
var no = require('./com/coooders/db/nosql');
var sql = new no.NoSQLParser('?');
//var ret = sql.parse('update abc<a> set a=?a where a>?a and b<?b and c=?d and d=?d or (d>=4 or not e=5) order by a desc skip 10 limit 10',{a:1,b:2,c:3,d:4});
//var ret = sql.parse('insert into abc<a> values(?a)', { a: 1, b: 2, c: 3, d: 4 });
//var ret = sql.parse('abc<a>.select(*).where(a>?a and b<?b and c=?d and d=?d and (a<?b))', { a: 1, b: 2, c: 3, d: 4 });
//console.log(ret);
//ar ret = sql.parse('abc<a>.update(a=?a,b=3).where(e=5 and c=?a).skip(10).order(a desc).limit(10)', { a: 1, b: 2, c: 3, d: 4 });
//console.log(ret);
//ret = sql.parse('abc<a>.select(*).where(e=?a)', { a: 1, e: 2 });
//console.log(ret[0]);
ret = sql.parse('delete from abc<a> where a>?a and b<?b and c=?d and d=?d or (d>=4 or not e=5) order by a desc skip 10 limit 10', { a: 4, b: 3, c: 2, d: 1 });
console.log(ret[0]);*/
}
);
};
const test14 = function () {
var M1 = require("./com/coooders/module/tool");
console.log(M1.tcd(22, 112));
console.log(M1.gcd(22, 112));
/*
var CryptoJS = require('crypto-js');
var JsonFormatter = {
stringify: function (cipherParams) {
// create json object with ciphertext
console.log(cipherParams.ciphertext);
var jsonObj = {
ct: cipherParams.ciphertext.toString(CryptoJS.enc.Base64)
};
// optionally add iv and salt
if (cipherParams.iv) {
jsonObj.iv = cipherParams.iv.toString();
}
if (cipherParams.salt) {
jsonObj.s = cipherParams.salt.toString();
}
// stringify json object
return JSON.stringify(jsonObj);
},
parse: function (jsonStr) {
// parse json string
var jsonObj = JSON.parse(jsonStr);
// extract ciphertext from json object, and create cipher params object
var cipherParams = CryptoJS.lib.CipherParams.create({
ciphertext: CryptoJS.enc.Base64.parse(jsonObj.ct)
});
// optionally extract iv and salt
if (jsonObj.iv) {
cipherParams.iv = CryptoJS.enc.Hex.parse(jsonObj.iv)
}
if (jsonObj.s) {
cipherParams.salt = CryptoJS.enc.Hex.parse(jsonObj.s)
}
return cipherParams;
}
};
var ss = new GCL.Module.DESXcrypt("dQ69muDQO5Xq2I0Q2278+ZTKq/JnecDk", "wjG3Vwmk34U=");
var word = ss.Encrypt("abc");
Console.WriteLine(word);//36E8tNE6Yzg= 36E8tNE6Yzg=
CryptoJS.enc.Base64.parse('dQ69muDQO5Xq2I0Q2278+ZTKq/JnecDk')
CryptoJS.enc.Base64.parse('wjG3Vwmk34U=')
var data = CryptoJS.enc.Base64.parse('dQ69muDQO5Xq2I0Q2278+ZTKq/JnecDk');
console.log(CryptoJS.enc.Base64.stringify(data));
var encrypted = CryptoJS.algo.TripleDES.createEncryptor(CryptoJS.enc.Base64.parse('dQ69muDQO5Xq2I0Q2278+ZTKq/JnecDk'), { iv:CryptoJS.enc.Base64.parse('wjG3Vwmk34U='), mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7});
var decrypted = CryptoJS.algo.TripleDES.createDecryptor(CryptoJS.enc.Base64.parse('dQ69muDQO5Xq2I0Q2278+ZTKq/JnecDk'), { iv:CryptoJS.enc.Base64.parse('wjG3Vwmk34U='), mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7});
//encrypted.process("abc");
//var encrypted = CryptoJS.TripleDES.encrypt(CryptoJS.enc.Utf8.parse('abc'), CryptoJS.enc.Base64.parse('dQ69muDQO5Xq2I0Q2278+ZTKq/JnecDk'), { iv:CryptoJS.enc.Base64.parse('wjG3Vwmk34U='), mode: CryptoJS.mode.CFB, padding: CryptoJS.pad.Pkcs7, format: JsonFormatter });
var ret = encrypted.finalize(CryptoJS.enc.Utf8.parse("abc"));
console.log(ret.toString(CryptoJS.enc.Base64));
decrypted.process(CryptoJS.enc.Base64.parse(ret.toString(CryptoJS.enc.Base64)));
console.log(decrypted.finalize().toString(CryptoJS.enc.Utf8));*/
var enc = require("./com/coooders/module/des3xcrypt");
var encrypt = new enc.des3xcrypt(
"9Xd4M/3bHkhdXXutImJiS4oPuV6UUxvy",
"+e/runweeTA="
); //new enc.des3xcrypt("dQ69muDQO5Xq2I0Q2278+ZTKq/JnecDk", "wjG3Vwmk34U=");
console.log(encrypt.encrypt("abc"));
console.log(encrypt.encrypt("abc"));
console.log(encrypt.decrypt("7N1frV26vgE="));
console.log(encrypt.decrypt("7N1frV26vgE="));
console.log(enc.createKey());
console.log(enc.createIV());
/*资料较少暂时取消未找到des3-ECB 选项
var crypto = require('crypto');
var hash = crypto.createHash('sha1');
console.log(hash.update('aadvdfd').digest('base64'));
var cipher = crypto.createCipheriv('des3', new Buffer("dQ69muDQO5Xq2I0Q2278+ZTKq/JnecDk","base64"), new Buffer("wjG3Vwmk34U=","base64"));
cipher.setAutoPadding(true);
console.log(cipher.update("abc", "utf8", "base64")+cipher.final("base64"));
*/
};
const test15 = function () {
/*
let range = (n) => n > 0 ? range(n - 1).concat([n - 1]) : [];
console.log(range(5));
let c = function(lst, m) {
if (m == 1) return lst;
else {
var ret = [];
for (let i in lst) {
var tlst = Array.prototype.slice.apply(lst, [0]);
tlst.splice(i);
for (let w of c(tlst, m - 1)) {
//console.log(w);
ret.push([lst[i]].concat(w));
}
}
return ret;
}
};
/*
0 1 2
0 1 3
0 1 4
0 2 3
0 2 4
0 3 4
1 2 3
1 2 4
1 3 4
2 3 4
* /
let p = (lst, m) => {
if (m == 1) return lst;
else {
var ret = [];
for (let i in lst) {
var tlst = Array.prototype.slice.apply(lst, [0]);
tlst.splice(i, 1);
for (let w of p(tlst, m - 1)) {
//console.log(w);
ret.push([lst[i]].concat(w));
}
}
return ret;
}
};
console.log(c(range(5), 3));
console.log(p(range(5), 3));
*/
};
const test19 = function () {
const I = require("./com/coooders/io/log");
console.log(new I.LogRecord().clone());
};
const test20 = function () {
var C = require("./com/coooders/io/config");
var M = require("./com/coooders/bean/middler");
var V = require("./com/coooders/common/tool");
let P = require("./com/coooders/collection/pool");
var I = require("./com/coooders/io/tool");
var M2 = require("./com/coooders/net/mime");
//I.createDir('/Users/baibing/a/b/c/d');
//console.log(new P.pool());
//console.log(require('/Users/baibing/work/cv_zc/gcl/com/coooders/io/log.js'));
//C.getBaseConfigManager().then(conf => console.log(conf));
C.getApplicationConfigManager().then((cm) => {
var Middler = new M.Middler(cm);
var temp = Middler.getObjectByAppName("Ni", "template7");
temp
.execute("", {
text2: "如上内容请引起注意:2232222", // text of the email
from: "system@mx.its-cn.com", //'26342049@qq.com', //'system@mx.its-cn.com', // sender of the format (address or name <address> or "name" <address>)
to: "baibing0004@sohu.com", // recipients (same format as above), multiple recipients are separated by a comma
cc: "", // carbon copied recipients (same format as above)
bcc: "", // blind carbon copied recipients (same format as above)
subject: "白冰请注意情况2", // string subject of the email
attachment: [
{
data: "<html><body>错误的信息:请注意消息格式!\r\n</body></html>",
alternative: true,
},
{
path: "/Users/baibing/Downloads/福岛核辐射.jpg",
type: M2.get("福岛核辐射2.jpg"),
name: "福岛核辐射2.jpg",
},
],
// one attachment or array of attachments
})
.then((ret) => {
console.log(ret.last());
Middler.setObjectByAppName("Ni", "template7", temp);
});
});
};
const test21 = function () {
var C = require("./com/coooders/module/cron");
// const c2 = new C.Cron("0/5 26,29,33 0 * * 2#2"); //26,29,33 0/5 2#1
const c2 = new C.Cron("0 0 9 * * 2");
//todo 有重载
var date = new Date();
for (let i = 0; i < 10; i++) {
date = c2.next(date);
console.log(date.toString("yyyy-MM-dd HH:mm:ss"));
}
console.log("isEnd");
};
const test22 = function () {
var V = require("./com/coooders/common/tool");
console.log(
V.merge(
{
a: 1,
},
{
b: null,
},
{
c: 0,
},
{
d: undefined,
}
)
);
};
const test23 = function () {
var C = require("./com/coooders/io/config");
var M = require("./com/coooders/bean/middler");
var N = require("./com/coooders/db/ni");
var V = require("./com/coooders/common/tool");
let P = require("./com/coooders/collection/pool");
var I = require("./com/coooders/io/tool");
C.getApplicationConfigManagerFromFile(["test.npcf", "test2.npcf"]).then(
(cm) => {
const m = new M.Middler(cm);
const temp = m.getObjectByAppName("Ni", "template1");
temp
.execute("mssql.test33", {})
.then((ret) => {
if (ret.hasData()) {
console.log(ret.last());
}
console.log("ok");
ret.clear();
})
.catch((e) => {
console.log(e.message);
});
}
);
};
const test24 = function () {
var C = require("./com/coooders/io/config");
var M = require("./com/coooders/bean/middler");
var N = require("./com/coooders/db/ni");
var V = require("./com/coooders/common/tool");
let P = require("./com/coooders/collection/pool");
var I = require("./com/coooders/io/tool");
C.getApplicationConfigManagerFromDirSync("./Ni");
// .then((cm) => {
// const m = new M.Middler(cm);
// console.log(m);
// process.exit();
// });
};
const test25 = function () {
var C = require("./com/coooders/io/config");
var M = require("./com/coooders/bean/middler");
var N = require("./com/coooders/db/ni");
var V = require("./com/coooders/common/tool");
let P = require("./com/coooders/collection/pool");
var I = require("./com/coooders/io/tool");
C.getApplicationConfigManagerFromFile(["test.npcf", "test2.npcf"]).then(
(cm) => {
const m = new M.Middler(cm);
const temp = m.getObjectByAppName("Ni", "template9");
temp
.execute("redishashselect", {
mv: "m",
aa: "aav",
})
.then((ret) => {
if (ret.hasData()) {
console.log("ret", ret.last());
}
console.log("ok");
ret.clear();
})
.catch((e) => {
console.log(e.message);
});
}
);
};
const test26 = function () {
var C = require("./com/coooders/io/config");
var M = require("./com/coooders/bean/middler");
var N = require("./com/coooders/db/ni");
var V = require("./com/coooders/common/tool");
let P = require("./com/coooders/collection/pool");
var I = require("./com/coooders/io/tool");
C.getApplicationConfigManagerFromFile(["test.npcf", "test2.npcf"]).then(
(cm) => {
const m = new M.Middler(cm);
const temp = m.getObjectByAppName("Ni", "template10");
temp
.execute("redisinsert", {
mv: "m",
aa: "aav",
bb: "bbv",
})
.then((ret) => {
if (ret.hasData()) {
console.log(ret.last());
}
console.log("ok");
ret.clear();
})
.catch((e) => {
console.log(e.message);
});
}
);
};
const test27 = function () {
var C = require("./com/coooders/io/config");
var M = require("./com/coooders/bean/middler");
var N = require("./com/coooders/db/ni");
var V = require("./com/coooders/common/tool");
let P = require("./com/coooders/collection/pool");
var I = require("./com/coooders/io/tool");
C.getApplicationConfigManagerFromFile(["test.npcf", "test2.npcf"]).then(
(cm) => {
const m = new M.Middler(cm);
const temp = m.getObjectByAppName("Ni", "template10");
temp
.execute("redisselect", {
mv: "m",
aa: "aav",
})
.then((ret) => {
if (ret.hasData()) {
console.log("ret", ret.last());
}
console.log(ret);
console.log("ok");
ret.clear();
})
.catch((e) => {
console.log(e.message);
});
}
);
};
const test28 = function () {
var C = require("./com/coooders/io/config");
var M = require("./com/coooders/bean/middler");
var N = require("./com/coooders/db/ni");
var V = require("./com/coooders/common/tool");
let P = require("./com/coooders/collection/pool");
var I = require("./com/coooders/io/tool");
C.getApplicationConfigManagerFromFile(["test.npcf", "test2.npcf"]).then(
(cm) => {
const m = new M.Middler(cm);
const temp = m.getObjectByAppName("Ni", "template11");
var ret = temp.execute("soaptest", {
arg0: "EUCP-EMY-SMS1-08TBV",
arg1: "507697",
arg2: null,
arg3: ["13520493404"],
arg4: "【电子地址】白冰,您的验证码是111111",
arg5: "",
arg6: "GBK",
arg7: 5,
arg8: 0,
});
if (ret) {
console.log("ret", ret.last()[0]);
}
// temp.execute('soaptest', {
// code: "378023249405",
// imei: "100100100100"
// }).then(ret => {
// if (ret.hasData()) {
// console.log("ret", ret.last()[0]);
// // console.log(ret.last()[0]["CsoListModel"]);
// // console.log(ret.last()[0]["LogisticsVendors"]["LogisticsVendorModel"][0]);
// }
// ret.clear();
// }).catch(e => {
// console.log(e.message);
// });
}
);
};
const test29 = function () {
var C = require("./com/coooders/io/config");
var M = require("./com/coooders/bean/middler");
var N = require("./com/coooders/db/ni");
var V = require("./com/coooders/common/tool");
let P = require("./com/coooders/collection/pool");
var I = require("./com/coooders/io/tool");
C.getApplicationConfigManagerFromFile(["test.npcf", "test2.npcf"]).then(
(cm) => {
const m = new M.Middler(cm);
var d = new Date();
console.log(d.getMinutes(), d.getSeconds(), d.getMilliseconds());
const temp = m.getObjectByAppName("Ni", "template10");
temp
.execute("redistransinsert", {
mv: "m",
aa: "aav",
bb: "bbv",
mv2: "m",
aa2: "aav",
bb2: "bbv",
})
.then((ret) => {
if (ret.hasData()) {
console.log(ret.last());
}
console.log("ok");
ret.clear();
})
.catch((e) => {
console.log(e.message);
});
// temp.execute('redisinsert', {
// "mv": "m",
// "aa": "aav",
// "bb": "bbv"
// }).then(ret => {
// if (ret.hasData()) {
// console.log(ret.last());
// }
// console.log('ok');
// ret.clear();
// console.log(d.getMinutes(), d.getSeconds(), d.getMilliseconds());
// }).catch(e => {
// console.log(e.message);
// });
}
);
};
const test30 = function () {
var C = require("./com/coooders/io/config");
var M = require("./com/coooders/bean/middler");
var N = require("./com/coooders/db/ni");
var V = require("./com/coooders/common/tool");
let P = require("./com/coooders/collection/pool");
var I = require("./com/coooders/io/tool");
C.getApplicationConfigManagerFromFile(["test.npcf", "test2.npcf"]).then(
(cm) => {
const m = new M.Middler(cm);
var d = new Date();
console.log(d.getMinutes(), d.getSeconds(), d.getMilliseconds());
const temp = m.getObjectByAppName("Ni", "template10");
temp
.execute("redistransselect", {
mv: "m",
mv2: "m2",
})
.then((ret) => {
if (ret.hasData()) {
console.log(ret.last());
}
console.log("ok");
ret.clear();
})
.catch((e) => {
console.log(e.message);
});
// temp.execute('redisinsert', {
// "mv": "m",
// "aa": "aav",
// "bb": "bbv"
// }).then(ret => {
// if (ret.hasData()) {
// console.log(ret.last());
// }
// console.log('ok');
// ret.clear();
// console.log(d.getMinutes(), d.getSeconds(), d.getMilliseconds());
// }).catch(e => {
// console.log(e.message);
// });
}
);
};
//test23();
const test31 = function () {
var V = require("./index");
console.log(V);
console.log("&a=1&b=&".trim("&"));
};
//test31();
const test32 = function () {
var V = require("./com/coooders/module/cron");
const c = new V.Cron("0 0 0,4 * * ?");
for (var i = 0, dt = new Date(); i < 4; i++) {
dt = c.next(dt);
console.log(dt.toString("yyyy-MM-dd HH:mm:ss"));
}
};
const test33 = function () {
var V = require("./index");
//pri方式的确可以继承父类的私有方法,类似实现了protected关键词,但是限制同一个文件,且旧函数中仍然引用旧的对象。
new V.Net.test333().test();
};
const test34 = function () {
var V = require("./index");
//pri方式的确可以继承父类的私有方法,类似实现了protected关键词,但是限制同一个文件,且旧函数中仍然引用旧的对象。
V.Net.post("https://c1.blueblue.cc/api2/getProducts.string", {
PageIndex: "0",
PageSize: "10",
status: "1",
sessionID: "8900bd95f1340d1cd0a537249d835eb7",
}).then(function (ret) {
console.log(ret);
});
return false;
};
const test35 = function () {
var V = require("./index");
const data = [];
for (var i = 0; i < 50000; i++) data.push(i);
let count = data.length;
V.each(
data,
function (v, call) {
console.log(v);
count--;
//if (count == 2332) throw new Error('2222');
V.once(call, 100 * Math.random());
},
1000
)
.then(function () {
console.log(count);
})
.catch(function (e) {
console.log(e.stack);
});
};
const test36 = function () {
var C = require("./com/coooders/io/config");
var M = require("./com/coooders/bean/middler");
var N = require("./com/coooders/db/ni");
var V = require("./com/coooders/common/tool");
let P = require("./com/coooders/collection/pool");
var I = require("./com/coooders/io/tool");
C.getApplicationConfigManagerFromFile(["test.npcf", "test2.npcf"]).then(
(cm) => {
const m = new M.Middler(cm);
/*const temp = m.getObjectByAppName('Ni', 'templateredis');
temp.execute('redis.inserts', {
"key": "s_test2",
"value": V.toJsonString({id:(+new Date())})
}).then(ret => {
if (ret.hasData()) {
console.log("ret", ret.last());
}
console.log(ret);
console.log('ok');
ret.clear();
}).catch(e => {
console.log(e.message);
});*/
/*
const temp = m.getObjectByAppName('Ni', 'templateredis');
temp.execute('redis.selects', {
"key": "test1",
"value": "test"
}).then(ret => {
if (ret.hasData()) {
console.log("ret", ret.last());
}
console.log(ret);
console.log('ok');
ret.clear();
}).catch(e => {
console.log(e.message);
});*/
/*const temp = m.getObjectByAppName('Ni', 'templateredis');
temp.execute('redis.deletes', {
"key": "test2",
"value": "test"
}).then(ret => {
if (ret.hasData()) {
console.log("ret", ret.last());
}
console.log(ret);
console.log('ok');
ret.clear();
}).catch(e => {
console.log(e.message);
});*/
const temp = m.getObjectByAppName("Ni", "templateredis");
// temp.execute('redis.inserth', {
// "key": "test4",
// "value": V.toJsonString({ a: 44, b: 5, id: '356455' })
// }).then(ret => {
// if (ret.hasData()) {
// console.log("ret", ret.last());
// }
// console.log('ok');
// ret.clear();
// }).catch(e => {
// console.log(e.message);
// });
// temp.execute('hlen from inserth<key>', {
// "key": "test3",
// }).then(ret => {
// if (ret.hasData()) {
// console.log("redis.hlen", ret.last());
// }
// console.log('ok');
// ret.clear();
// }).catch(e => {
// console.log(e.message);
// });
// temp.execute('redis.selecth', {
// "key": "test3",
// }).then(ret => {
// if (ret.hasData()) {
// console.log("redis.selecth", ret.last());
// }
// console.log('ok');
// ret.clear();
// }).catch(e => {
// console.log(e.message);
// });
// temp.execute('redis.expire', {
// "_datetime": 20000,
// "datetime": 300000
// }).then(ret => {
// if (ret.hasData()) {
// console.log("redis.expire", ret.last());
// }
// console.log('ok');
// ret.clear();
// }).catch(e => {
// console.log(e.message);
// });
// const temp = m.getObjectByAppName('Ni', 'templateredis');
// temp.execute('redis.getdbs', {
// "key": "htest2",
// "value": V.toJsonString({ a: "a", b: 5, id: '356455' })
// }).then(ret => {
// if (ret.hasData()) {
// console.log("ret", ret.last());
// }
// console.log(ret.single());
// console.log('ok');
// ret.clear();
// }).catch(e => {
// console.log(e.message);
// });
//const temp = m.getObjectByAppName('Ni', 'templateredis');
/**
*
* @desc 扣减库存Lua脚本
* 库存(stock)-1:表示不限库存
* 库存(stock)0:表示没有库存
* 库存(stock)大于0:表示剩余库存
*
* @params 库存key
* @return
* 0:库存不足
* -1:库存未初始化
* 大于0:剩余库存(扣减之前剩余的库存)
* redis缓存的库存(value)是-1表示不限库存,直接返回1
*/
// temp.execute('redis.hngcrby', {
// "ID": "htest2",
// "_value": 8
// }).then(ret => {
// if (ret.hasData()) {
// console.log("ret", ret.last());
// }
// console.log(ret.single());
// console.log('ok');
// ret.clear();
// }).catch(e => {
// console.log(e.message);
// });
/*
const temp = m.getObjectByAppName('Ni', 'templateredis');
temp.execute('redis.deleteh', {
"key": "htest2",
"value": V.toJsonString({a:"aa",b:55,id:(+new Date())})
}).then(ret => {
if (ret.hasData()) {
console.log("ret", ret.last());
}
console.log(ret);
console.log('ok');
ret.clear();
}).catch(e => {
console.log(e.message);
});*/
// const temp = m.getObjectByAppName('Ni', 'templateredis');
temp
.execute("redis.insertz1", {
key: 11, //V.toJsonString({ a: "aa", b: 11, id: (+new Date()) }),
Gen: parseInt(Math.random() * 100),
value: V.toJsonString({ a: parseInt(Math.random() * 100) }),
})
.then((ret) => {
if (ret.hasData()) {
console.log("insertz", ret.single().value);
}
console.log("1338 ok");
ret.clear();
temp
.execute("redis.selectz1", {
key: 11, //V.toJsonString({ a: "aa", b: 55, id: (+new Date()) }),
// "score": parseInt(Math.random() * 100),
// "limits": 3
})
.then((ret) => {
if (ret.hasData()) {
console.log("selectz", ret.last());
}
console.log("1369 ok");
ret.clear();
})
.catch((e) => {
console.log(1392, e.stack);
});
})
.catch((e) => {
console.log(1362, e.message);
});
/*
const temp = m.getObjectByAppName('Ni', 'templateredis');
temp.execute('hkeys value from a<>', {
"key": V.toJsonString({ a: "aa", b: 55, id: (+new Date()) }),
"score": parseInt(Math.random() * 100),
"limit": 2
}).then(ret => {
if (ret.hasData()) {
console.log("ret", ret.last());
}
console.log(ret);
console.log('ok');
ret.clear();
}).catch(e => {
console.log(e.message);
});*/
//const temp = m.getObjectByAppName('Ni', 'templateredis');
// temp.execute('redis.deletez', {
// "key": "{\"a\":\"aa\",\"b\":11,\"id\":1587991635544}",
// }).then(ret => {
// if (ret.hasData()) {
// console.log("ret", ret.last());
// }
// console.log(ret);
// console.log('ok');
// ret.clear();
// }).catch(e => {
// console.log(e.message);
// }); //
//const temp = m.getObjectByAppName('Ni', 'templateredis');
// temp.execute('redis.insertl', {
// "key": 'dsd' + parseInt((Math.random() * 20)),
// "score": 1,
// "limits": -300
// }).then(ret => {
// if (ret.hasData()) {
// console.log("ret", ret.last());
// }
// console.log(ret);
// console.log('ok');
// ret.clear();
// }).catch(e => {
// console.log(e.message);
// });
// temp.execute('llen from alist<key>', {
// "key": "test3",
// }).then(ret => {
// if (ret.hasData()) {
// console.log("redis.llen", ret.last());
// }
// console.log('ok');
// ret.clear();
// }).catch(e => {
// console.log(e.message);
// });
/*const temp = m.getObjectByAppName('Ni', 'templateredis');
temp.execute('redis.selectlpop', {
"key": 'dsd'+parseInt((Math.random()*20)),
"score": 1,
"limits":-300
}).then(ret => {
if (ret.hasData()) {
console.log("ret", ret.last());
}
console.log(ret);
console.log('ok');
ret.clear();
}).catch(e => {
console.log(e.message);
});*/
/*const temp = m.getObjectByAppName('Ni', 'templateredis');
temp.execute('redis.deletel', {
"key": '{"key":"dsd14"}',
"score": 1,
"limits":-300