cgserver 6.0.7 → 6.1.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.
Files changed (137) hide show
  1. package/dist/lib/AI/AiObject.js +10 -0
  2. package/dist/lib/AI/Astar.js +133 -0
  3. package/dist/lib/AI/BehaviorAI.js +307 -0
  4. package/dist/lib/AI/Entity.js +33 -0
  5. package/dist/lib/AI/Point.js +68 -0
  6. package/dist/lib/AI/TriggerMgr.js +201 -0
  7. package/dist/lib/Config/Config.js +37 -0
  8. package/dist/lib/Config/FrameworkConfig.js +234 -0
  9. package/dist/lib/Config/ServerConfig.js +18 -0
  10. package/dist/lib/Config/_error_.js +35 -0
  11. package/dist/lib/Core/Core.js +561 -0
  12. package/dist/lib/Core/Timer.js +116 -0
  13. package/dist/lib/Database/BaseMongoService.js +79 -0
  14. package/dist/lib/Database/BaseService.js +281 -0
  15. package/dist/lib/Database/Decorator/AutoIncrement.js +11 -0
  16. package/dist/lib/Database/Decorator/DBCache.js +64 -0
  17. package/dist/lib/Database/Decorator/NotNull.js +11 -0
  18. package/dist/lib/Database/Decorator/PrimaryKey.js +11 -0
  19. package/dist/lib/Database/Decorator/Property.js +61 -0
  20. package/dist/lib/Database/Decorator/Table.js +15 -0
  21. package/dist/lib/Database/Decorator/Type.js +20 -0
  22. package/dist/lib/Database/MSSqlManager.js +43 -0
  23. package/dist/lib/Database/MongoManager.js +401 -0
  24. package/dist/lib/Database/MysqlManager.js +180 -0
  25. package/dist/lib/Database/RedisManager.js +408 -0
  26. package/dist/lib/Logic/CacheTool.js +73 -0
  27. package/dist/lib/Logic/HttpTool.js +58 -0
  28. package/dist/lib/Logic/Log.js +77 -0
  29. package/dist/lib/Service/AccountService.js +473 -0
  30. package/dist/lib/Service/MongoAccountService.js +396 -0
  31. package/dist/lib/Service/MongoCacheService.js +27 -0
  32. package/dist/lib/Service/MongoUserService.js +93 -0
  33. package/dist/lib/Service/UserService.js +184 -0
  34. package/dist/lib/Service/ini.js +35 -0
  35. package/dist/lib/SocketServer/IClientWebSocket.js +71 -0
  36. package/dist/lib/SocketServer/IServerWebSocket.js +41 -0
  37. package/dist/lib/SocketServer/ISocketServer.js +190 -0
  38. package/dist/lib/SocketServer/IWebSocket.js +223 -0
  39. package/dist/lib/SocketServer/ProtoFilter/GoogleProtoFilter.js +57 -0
  40. package/dist/lib/SocketServer/ProtoFilter/IProtoFilter.js +8 -0
  41. package/dist/lib/SocketServer/ProtoFilter/JsonProtoFilter.js +29 -0
  42. package/dist/lib/SocketServer/ProtoFilter/ProtoFactory.js +31 -0
  43. package/dist/lib/ThirdParty/AlipayTool.js +122 -0
  44. package/dist/lib/ThirdParty/Alisms.js +46 -0
  45. package/dist/lib/ThirdParty/AppleTool.js +234 -0
  46. package/dist/lib/ThirdParty/EmailTool.js +33 -0
  47. package/dist/lib/ThirdParty/OpenSocial.js +32 -0
  48. package/dist/lib/ThirdParty/QQTool.js +115 -0
  49. package/dist/lib/ThirdParty/QiniuTool.js +21 -0
  50. package/dist/lib/ThirdParty/WechatOATool.js +61 -0
  51. package/dist/lib/ThirdParty/WechatTool.js +74 -0
  52. package/dist/lib/WebServer/Controller/BaseController.js +112 -0
  53. package/dist/lib/WebServer/Controller/BaseUserController.js +168 -0
  54. package/dist/lib/WebServer/Controller/MongoBaseUserController.js +168 -0
  55. package/dist/lib/WebServer/Decorator/AdminValidate.js +19 -0
  56. package/dist/lib/WebServer/Decorator/AuthorityValidate.js +22 -0
  57. package/dist/lib/WebServer/Decorator/CreatorValidate.js +19 -0
  58. package/dist/lib/WebServer/Decorator/JsonAdminValidate.js +15 -0
  59. package/dist/lib/WebServer/Decorator/JsonAuthorityValidate.js +20 -0
  60. package/dist/lib/WebServer/Decorator/JsonCreatorValidate.js +19 -0
  61. package/dist/lib/WebServer/Engine/ControllerManager.js +112 -0
  62. package/dist/lib/WebServer/Engine/Engine.js +135 -0
  63. package/dist/lib/WebServer/Engine/RazorJs.js +544 -0
  64. package/dist/lib/WebServer/Engine/Request.js +214 -0
  65. package/dist/lib/WebServer/Engine/Response.js +94 -0
  66. package/dist/lib/WebServer/IWebServer.js +49 -0
  67. package/dist/lib/cgserver.js +153 -0
  68. package/dist/{AI → types/AI}/AiObject.d.ts +0 -0
  69. package/dist/{AI → types/AI}/Astar.d.ts +0 -0
  70. package/dist/{AI → types/AI}/BehaviorAI.d.ts +0 -0
  71. package/dist/{AI → types/AI}/Entity.d.ts +0 -0
  72. package/dist/{AI → types/AI}/Point.d.ts +0 -0
  73. package/dist/{AI → types/AI}/TriggerMgr.d.ts +0 -0
  74. package/dist/{Config → types/Config}/Config.d.ts +0 -0
  75. package/dist/{Config → types/Config}/FrameworkConfig.d.ts +0 -0
  76. package/dist/{Config → types/Config}/ServerConfig.d.ts +0 -0
  77. package/dist/{Config → types/Config}/_error_.d.ts +0 -0
  78. package/dist/{Core → types/Core}/Core.d.ts +0 -0
  79. package/dist/{Core → types/Core}/Timer.d.ts +0 -0
  80. package/dist/{Database → types/Database}/BaseMongoService.d.ts +1 -1
  81. package/dist/{Database → types/Database}/BaseService.d.ts +0 -0
  82. package/dist/{Database → types/Database}/Decorator/AutoIncrement.d.ts +0 -0
  83. package/dist/{Database → types/Database}/Decorator/DBCache.d.ts +0 -0
  84. package/dist/{Database → types/Database}/Decorator/NotNull.d.ts +0 -0
  85. package/dist/{Database → types/Database}/Decorator/PrimaryKey.d.ts +0 -0
  86. package/dist/{Database → types/Database}/Decorator/Property.d.ts +0 -0
  87. package/dist/{Database → types/Database}/Decorator/Table.d.ts +0 -0
  88. package/dist/{Database → types/Database}/Decorator/Type.d.ts +0 -0
  89. package/dist/{Database → types/Database}/MSSqlManager.d.ts +0 -0
  90. package/dist/{Database → types/Database}/MongoManager.d.ts +1 -1
  91. package/dist/{Database → types/Database}/MysqlManager.d.ts +0 -0
  92. package/dist/{Database → types/Database}/RedisManager.d.ts +0 -0
  93. package/dist/{Logic → types/Logic}/CacheTool.d.ts +0 -0
  94. package/dist/{Logic → types/Logic}/HttpTool.d.ts +0 -0
  95. package/dist/{Logic → types/Logic}/Log.d.ts +0 -0
  96. package/dist/{Service → types/Service}/AccountService.d.ts +0 -0
  97. package/dist/{Service → types/Service}/MongoAccountService.d.ts +0 -0
  98. package/dist/{Service → types/Service}/MongoCacheService.d.ts +0 -0
  99. package/dist/{Service → types/Service}/MongoUserService.d.ts +0 -0
  100. package/dist/{Service → types/Service}/UserService.d.ts +0 -0
  101. package/dist/{Service → types/Service}/ini.d.ts +0 -0
  102. package/dist/{SocketServer → types/SocketServer}/IClientWebSocket.d.ts +0 -0
  103. package/dist/{SocketServer → types/SocketServer}/IServerWebSocket.d.ts +0 -0
  104. package/dist/{SocketServer → types/SocketServer}/ISocketServer.d.ts +0 -0
  105. package/dist/{SocketServer → types/SocketServer}/IWebSocket.d.ts +0 -0
  106. package/dist/{SocketServer → types/SocketServer}/ProtoFilter/GoogleProtoFilter.d.ts +0 -0
  107. package/dist/{SocketServer → types/SocketServer}/ProtoFilter/IProtoFilter.d.ts +0 -0
  108. package/dist/{SocketServer → types/SocketServer}/ProtoFilter/JsonProtoFilter.d.ts +0 -0
  109. package/dist/{SocketServer → types/SocketServer}/ProtoFilter/ProtoFactory.d.ts +0 -0
  110. package/dist/{ThirdParty → types/ThirdParty}/AlipayTool.d.ts +0 -0
  111. package/dist/{ThirdParty → types/ThirdParty}/Alisms.d.ts +0 -0
  112. package/dist/{ThirdParty → types/ThirdParty}/AppleTool.d.ts +0 -0
  113. package/dist/{ThirdParty → types/ThirdParty}/EmailTool.d.ts +0 -0
  114. package/dist/{ThirdParty → types/ThirdParty}/OpenSocial.d.ts +0 -0
  115. package/dist/{ThirdParty → types/ThirdParty}/QQTool.d.ts +0 -0
  116. package/dist/{ThirdParty → types/ThirdParty}/QiniuTool.d.ts +0 -0
  117. package/dist/{ThirdParty → types/ThirdParty}/WechatOATool.d.ts +0 -0
  118. package/dist/{ThirdParty → types/ThirdParty}/WechatTool.d.ts +0 -0
  119. package/dist/{WebServer → types/WebServer}/Controller/BaseController.d.ts +0 -0
  120. package/dist/{WebServer → types/WebServer}/Controller/BaseUserController.d.ts +0 -0
  121. package/dist/{WebServer → types/WebServer}/Controller/MongoBaseUserController.d.ts +0 -0
  122. package/dist/{WebServer → types/WebServer}/Decorator/AdminValidate.d.ts +0 -0
  123. package/dist/{WebServer → types/WebServer}/Decorator/AuthorityValidate.d.ts +0 -0
  124. package/dist/{WebServer → types/WebServer}/Decorator/CreatorValidate.d.ts +0 -0
  125. package/dist/{WebServer → types/WebServer}/Decorator/JsonAdminValidate.d.ts +0 -0
  126. package/dist/{WebServer → types/WebServer}/Decorator/JsonAuthorityValidate.d.ts +0 -0
  127. package/dist/{WebServer → types/WebServer}/Decorator/JsonCreatorValidate.d.ts +0 -0
  128. package/dist/{WebServer → types/WebServer}/Engine/ControllerManager.d.ts +0 -0
  129. package/dist/{WebServer → types/WebServer}/Engine/Engine.d.ts +0 -0
  130. package/dist/{WebServer → types/WebServer}/Engine/RazorJs.d.ts +0 -0
  131. package/dist/{WebServer → types/WebServer}/Engine/Request.d.ts +0 -0
  132. package/dist/{WebServer → types/WebServer}/Engine/Response.d.ts +0 -0
  133. package/dist/{WebServer → types/WebServer}/IWebServer.d.ts +0 -0
  134. package/dist/{cgserver.d.ts → types/cgserver.d.ts} +0 -0
  135. package/package.json +3 -3
  136. package/dist/Index.d.ts +0 -73
  137. package/dist/cgserver.js +0 -1037
@@ -0,0 +1,561 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.core = void 0;
4
+ let Md5 = require("md5");
5
+ let os = require('os');
6
+ let request = require('request');
7
+ const _ = require("underscore");
8
+ /**
9
+ * 常用的工具函数类
10
+ */
11
+ class core {
12
+ /**
13
+ * 判断变量是不是对象
14
+ * @param param 需要检查的变量
15
+ * @returns true为对象
16
+ */
17
+ static isObject(param) {
18
+ return typeof (param) === "object";
19
+ }
20
+ static isArray(param) {
21
+ return param instanceof Array;
22
+ }
23
+ static isNumber(param) {
24
+ return typeof (param) === "number";
25
+ }
26
+ static isNaN(param) {
27
+ return isNaN(param);
28
+ }
29
+ static isFunction(param) {
30
+ return typeof (param) === "function";
31
+ }
32
+ static isString(param) {
33
+ return typeof (param) === "string";
34
+ }
35
+ /**
36
+ * 深度拷贝
37
+ * @param obj
38
+ * @returns
39
+ */
40
+ static clone(obj) {
41
+ if (!obj) {
42
+ return obj;
43
+ }
44
+ if (core.isArray(obj)) {
45
+ let newArray = new Array();
46
+ for (let i = 0, length = obj.length; i < length; ++i) {
47
+ newArray[i] = this.clone(obj[i]);
48
+ }
49
+ return newArray;
50
+ }
51
+ if (core.isObject(obj)) {
52
+ let newObj = new Object();
53
+ for (let i in obj) {
54
+ newObj[i] = this.clone(obj[i]);
55
+ }
56
+ return newObj;
57
+ }
58
+ return obj;
59
+ }
60
+ //合并但是不改变dest
61
+ static merge(dest, src) {
62
+ let t = core.clone(dest);
63
+ if (!src) {
64
+ return t;
65
+ }
66
+ if (core.isArray(src)) {
67
+ t = t || [];
68
+ let tlen = t.length;
69
+ for (let i = 0, len = src.length; i < len; ++i) {
70
+ let value = src[i];
71
+ if (core.isFunction(value)) {
72
+ continue;
73
+ }
74
+ if (core.isArray(value) || core.isObject(value)) {
75
+ if (i < tlen) {
76
+ t[i] = core.merge(null, value);
77
+ }
78
+ else {
79
+ t.push(core.merge(null, value));
80
+ }
81
+ }
82
+ else {
83
+ if (i < tlen) {
84
+ t[i] = value;
85
+ }
86
+ else {
87
+ t.push(value);
88
+ }
89
+ }
90
+ }
91
+ }
92
+ else if (core.isObject(src)) {
93
+ t = t || {};
94
+ for (let key in src) {
95
+ let value = src[key];
96
+ if (core.isFunction(value)) {
97
+ continue;
98
+ }
99
+ if (core.isArray(value) || core.isObject(value)) {
100
+ t[key] = core.merge(null, value);
101
+ }
102
+ else {
103
+ t[key] = value;
104
+ }
105
+ }
106
+ }
107
+ else {
108
+ t = src;
109
+ }
110
+ return t;
111
+ }
112
+ //只是取出template里面已经有的部分
113
+ static getExit(template, src) {
114
+ if (!src || !template) {
115
+ return {};
116
+ }
117
+ let t = {};
118
+ for (let key in src) {
119
+ if (template[key] === undefined) {
120
+ continue;
121
+ }
122
+ let value = src[key];
123
+ if (core.isFunction(value)) {
124
+ continue;
125
+ }
126
+ if (core.isArray(value) || core.isObject(value)) {
127
+ t[key] = core.getExit(template[key], value);
128
+ }
129
+ else {
130
+ t[key] = value;
131
+ }
132
+ }
133
+ return t;
134
+ }
135
+ static toArray(table) {
136
+ let array = [];
137
+ for (let key in table) {
138
+ if (core.isFunction(table[key])) {
139
+ continue;
140
+ }
141
+ array.push(key);
142
+ array.push(table[key]);
143
+ }
144
+ return array;
145
+ }
146
+ static foreach(items, callback) {
147
+ if (!items || !callback) {
148
+ return;
149
+ }
150
+ if (core.isNumber(items)) {
151
+ for (let i = 0; i < items; ++i) {
152
+ let ret = callback(i);
153
+ if (ret) {
154
+ return;
155
+ }
156
+ }
157
+ }
158
+ else if (core.isString(items)) {
159
+ for (let i = 0, length = items.length; i < length; i++) {
160
+ let ret = callback(i, items.charAt(i));
161
+ if (ret) {
162
+ return;
163
+ }
164
+ }
165
+ }
166
+ else if (core.isArray(items)) {
167
+ for (let i = 0, length = items.length; i < length; ++i) {
168
+ let ret = callback(i, items[i]);
169
+ if (ret) {
170
+ return;
171
+ }
172
+ }
173
+ }
174
+ else if (core.isObject(items)) {
175
+ for (let key in items) {
176
+ let ret = callback(key, items[key]);
177
+ if (ret) {
178
+ return;
179
+ }
180
+ }
181
+ }
182
+ return;
183
+ }
184
+ static getLength(items) {
185
+ if (core.isArray(items)) {
186
+ return items.length;
187
+ }
188
+ if (core.isObject) {
189
+ let len = 0;
190
+ core.foreach(items, function () {
191
+ ++len;
192
+ });
193
+ return len;
194
+ }
195
+ return 0;
196
+ }
197
+ static char2buf(str) {
198
+ let out = new ArrayBuffer(str.length * 2);
199
+ let u16a = new Uint16Array(out);
200
+ let strs = str.split("");
201
+ for (let i = 0; i < strs.length; i++) {
202
+ u16a[i] = strs[i].charCodeAt();
203
+ }
204
+ return out;
205
+ }
206
+ static array2arraybuffer(array) {
207
+ let b = new ArrayBuffer(array.length);
208
+ let v = new DataView(b, 0);
209
+ for (let i = 0; i < array.length; i++) {
210
+ v.setUint8(i, array[i]);
211
+ }
212
+ return b;
213
+ }
214
+ static arraybuffer2array(buffer) {
215
+ let v = new DataView(buffer, 0);
216
+ let a = new Uint8Array(v.byteLength);
217
+ for (let i = 0; i < v.byteLength; i++) {
218
+ a[i] = v.getUint8(i);
219
+ }
220
+ return a;
221
+ }
222
+ static firstCharUpCase(str) {
223
+ let reg = /\b(\w)|\s(\w)/g;
224
+ str = str.toLowerCase();
225
+ return str.replace(reg, function (m) { return m.toUpperCase(); });
226
+ }
227
+ static convertIntToUInt8Array(num) {
228
+ let c2 = num % 256;
229
+ let c1 = Math.floor(num / 256);
230
+ let arr = new Uint8Array(2);
231
+ arr[0] = c1;
232
+ arr[1] = c2;
233
+ return arr;
234
+ }
235
+ static convertUInt8ArrayToInt(array) {
236
+ if (array.length != 2) {
237
+ return 0;
238
+ }
239
+ return array[0] * 256 + array[1];
240
+ }
241
+ //从一个数组里面按照下标和长度的方式去获取另一个数组,至少返回空数组
242
+ //包含start
243
+ static getArrayFromArray(data, start, l) {
244
+ let len = data.length;
245
+ start = start || 0; //默认最开始
246
+ l = l || len; //默认到最后
247
+ if (start >= len) {
248
+ return new Uint8Array();
249
+ }
250
+ let arr = new Uint8Array(l);
251
+ for (let i = start; i < start + l && i < len; ++i) {
252
+ arr[i] = data[i];
253
+ }
254
+ return arr;
255
+ }
256
+ static blobToArrayBuffer(data, callback) {
257
+ let fileReader = new FileReader();
258
+ fileReader.onload = function (progressEvent) {
259
+ if (callback) {
260
+ callback(this.result);
261
+ }
262
+ };
263
+ fileReader.readAsArrayBuffer(data);
264
+ }
265
+ static format = function (src, formatStr) {
266
+ if (core.isString(src)) {
267
+ let args = Array.prototype.slice.call(arguments, 1);
268
+ return src.replace(/\{(\d+)\}/g, function (m, i) {
269
+ return args[i];
270
+ });
271
+ }
272
+ else {
273
+ if (this.isNumber(src)) {
274
+ src = new Date(src);
275
+ }
276
+ let str = formatStr;
277
+ let Week = ['日', '一', '二', '三', '四', '五', '六'];
278
+ let month = src.getMonth() + 1;
279
+ let year = src.getFullYear();
280
+ let date = src.getDate();
281
+ let hour = src.getHours();
282
+ let min = src.getMinutes();
283
+ let sec = src.getSeconds();
284
+ let day = src.getDay();
285
+ str = str.replace(/yyyy|YYYY/, year);
286
+ str = str.replace(/yy|YY/, (year % 100) > 9 ? (year % 100).toString() : '0' + (year % 100));
287
+ str = str.replace(/MM/, month > 9 ? month.toString() : '0' + month);
288
+ str = str.replace(/M/g, month);
289
+ str = str.replace(/w|W/g, Week[day]);
290
+ str = str.replace(/dd|DD/, date > 9 ? date.toString() : '0' + date);
291
+ str = str.replace(/d|D/g, date);
292
+ str = str.replace(/hh|HH/, hour > 9 ? hour.toString() : '0' + hour);
293
+ str = str.replace(/h|H/g, hour);
294
+ str = str.replace(/mm/, min > 9 ? min.toString() : '0' + min);
295
+ str = str.replace(/m/g, min);
296
+ str = str.replace(/ss|SS/, sec > 9 ? sec.toString() : '0' + sec);
297
+ str = str.replace(/s|S/g, sec);
298
+ return str;
299
+ }
300
+ };
301
+ /**
302
+ * 字符串中间保密
303
+ * @param str
304
+ */
305
+ static fuzzy(str) {
306
+ if (!str) {
307
+ return str;
308
+ }
309
+ if (str.length <= 1) {
310
+ return str;
311
+ }
312
+ if (str.length == 2) {
313
+ return str[0] + "*";
314
+ }
315
+ let first = str[0];
316
+ let last = str[str.length - 1];
317
+ let newStr = first;
318
+ for (let i = 0; i < str.length - 2; ++i) {
319
+ newStr += "*";
320
+ }
321
+ newStr += last;
322
+ return newStr;
323
+ }
324
+ static md5 = function (data) {
325
+ let str = data;
326
+ if (!core.isString(data)) {
327
+ str = JSON.stringify(data);
328
+ }
329
+ return Md5(str);
330
+ };
331
+ static getLocalIP = function () {
332
+ let iptable = {};
333
+ let ifaces = os.networkInterfaces();
334
+ for (let dev in ifaces) {
335
+ ifaces[dev].forEach(function (details, alias) {
336
+ if ((details.family == 'IPv4') && (details.internal == false)) {
337
+ iptable['localIP'] = details.address;
338
+ }
339
+ });
340
+ }
341
+ return iptable['localIP'];
342
+ };
343
+ static getIP = async function () {
344
+ return new Promise((resolve, reject) => {
345
+ request('http://ip.chinaz.com/getip.aspx', function (error, response, body) {
346
+ if (!error && response.statusCode == 200) {
347
+ body = eval('(' + body + ')');
348
+ resolve(body.ip);
349
+ }
350
+ else {
351
+ console.error("can not get correct ip!");
352
+ resolve(null);
353
+ }
354
+ });
355
+ });
356
+ };
357
+ /**
358
+ * 判断是否是手机号
359
+ * @param phone 手机号
360
+ */
361
+ static isPhoneNo(phone) {
362
+ let reg = /^1[3|4|5|7|8][0-9]{9}$/; //验证规则
363
+ let flag = reg.test(phone); //true
364
+ return flag;
365
+ }
366
+ /**
367
+ * 判断是否是email
368
+ * @param email
369
+ */
370
+ static isEmail(email) {
371
+ if (!email) {
372
+ return false;
373
+ }
374
+ var regu = "^(([0-9a-zA-Z]+)|([0-9a-zA-Z]+[_.0-9a-zA-Z-]*))@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2}|net|com|gov|mil|org|edu|int|name|asia)$";
375
+ var re = new RegExp(regu);
376
+ if (email.search(re) == -1) {
377
+ return false;
378
+ }
379
+ return true;
380
+ }
381
+ /**
382
+ * 根据概率分布获取概率分布的下标
383
+ * @param probabilitys 概率分布列表
384
+ * @param totalProbability 总概率
385
+ */
386
+ static getRandomIndex(probabilitys, totalProbability) {
387
+ let result = 0;
388
+ let random = 0;
389
+ totalProbability = totalProbability || -1;
390
+ if (totalProbability < 0) {
391
+ totalProbability = eval(probabilitys.join("+"));
392
+ }
393
+ if (totalProbability > 1) {
394
+ random = _.random(totalProbability);
395
+ }
396
+ else {
397
+ random = Math.random();
398
+ }
399
+ let value = 0;
400
+ for (let index = 0; index < probabilitys.length; ++index) {
401
+ value += probabilitys[index];
402
+ if (random < value) {
403
+ result = index;
404
+ break;
405
+ }
406
+ }
407
+ return result;
408
+ }
409
+ /**
410
+ * 检查是否是闰年
411
+ * @param year
412
+ */
413
+ static checkLeap(year) {
414
+ if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
415
+ return true;
416
+ }
417
+ else {
418
+ return false;
419
+ }
420
+ }
421
+ /**
422
+ * 获取几月一共有多少天
423
+ * @param year
424
+ * @param month
425
+ */
426
+ static getMonthDays(year, month) {
427
+ let months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
428
+ if (this.checkLeap(year)) {
429
+ months[1] = 29;
430
+ }
431
+ return months[month - 1];
432
+ }
433
+ /**
434
+ * 获取今日开始的时间
435
+ */
436
+ static getTodayStartTime() {
437
+ let now = new Date();
438
+ let time = now.getTime();
439
+ time = time - (now.getHours() * 60 * 60 * 1000 + now.getMinutes() * 60 * 1000 + now.getSeconds() * 1000 + now.getMilliseconds());
440
+ return time;
441
+ }
442
+ /**
443
+ * 获取某个时间的开始时间
444
+ * @param time 时间戳
445
+ * @returns
446
+ */
447
+ static getStartTime(time) {
448
+ let now = null;
449
+ if (time) {
450
+ now = new Date(time);
451
+ }
452
+ else {
453
+ now = new Date();
454
+ }
455
+ time = now.getTime();
456
+ time = time - (now.getHours() * 60 * 60 * 1000 + now.getMinutes() * 60 * 1000 + now.getSeconds() * 1000 + now.getMilliseconds());
457
+ return time;
458
+ }
459
+ static getLastMonthStartTime() {
460
+ let now = new Date();
461
+ let time = null;
462
+ if (now.getMonth() != 0) {
463
+ time = new Date(now.getFullYear(), now.getMonth() - 1);
464
+ }
465
+ else {
466
+ time = new Date(now.getFullYear() - 1, 12);
467
+ }
468
+ return time.getTime();
469
+ }
470
+ static getCurMonthStartTime() {
471
+ let now = new Date();
472
+ let time = new Date(now.getFullYear(), now.getMonth());
473
+ return time.getTime();
474
+ }
475
+ static getLastWeekStartTime() {
476
+ let one_day = 24 * 60 * 60 * 1000;
477
+ let time = this.getTodayStartTime();
478
+ let day = new Date().getDay();
479
+ return time - (day + 7) * one_day;
480
+ }
481
+ static getCurWeekStartTime() {
482
+ let one_day = 24 * 60 * 60 * 1000;
483
+ let time = this.getTodayStartTime();
484
+ let day = new Date().getDay();
485
+ return time - day * one_day;
486
+ }
487
+ static isSameMonth(src_time, target_time) {
488
+ let src_date = new Date(src_time);
489
+ let target_date = new Date(target_time);
490
+ if (src_date.getFullYear() != target_date.getFullYear()) {
491
+ return false;
492
+ }
493
+ return src_date.getMonth() == target_date.getMonth();
494
+ }
495
+ static isSameDay(src_time, target_time) {
496
+ let oneDayTime = 1000 * 60 * 60 * 24;
497
+ let eight_time = 1000 * 60 * 60 * 8;
498
+ let old_count = Math.floor((src_time + eight_time) / oneDayTime);
499
+ let now_other = Math.floor((target_time + eight_time) / oneDayTime);
500
+ return old_count == now_other;
501
+ }
502
+ /**
503
+ * 两个日期是否是同一周
504
+ * 思路: 因为1970年1月1 是周4 所以(天数+4)/7 取整 就是周数 如果相同就是同一周反之就不是
505
+ * @param old
506
+ * @param now
507
+ */
508
+ static isSameWeek(src_time, target_time) {
509
+ let oneDayTime = 1000 * 60 * 60 * 24;
510
+ let eight_time = 1000 * 60 * 60 * 8;
511
+ let old_count = Math.floor((src_time + eight_time) / oneDayTime);
512
+ let now_other = Math.floor((target_time + eight_time) / oneDayTime);
513
+ return Math.floor((old_count + 4) / 7) == Math.floor((now_other + 4) / 7);
514
+ }
515
+ static sum(datas) {
516
+ let total = 0;
517
+ for (let v of datas) {
518
+ total += v;
519
+ }
520
+ return total;
521
+ }
522
+ /**
523
+ * 转球为全球数字格式,三位数一个逗号
524
+ * @param num
525
+ */
526
+ static convertToGlobalStr(num) {
527
+ if (!num) {
528
+ return num + "";
529
+ }
530
+ if (num < 1000) {
531
+ return num + "";
532
+ }
533
+ let str = "";
534
+ while (true) {
535
+ let n = num % 1000;
536
+ if (n > 99) {
537
+ str = "," + n + str;
538
+ }
539
+ else if (n > 9) {
540
+ str = ",0" + n + str;
541
+ }
542
+ else {
543
+ str = ",00" + n + str;
544
+ }
545
+ num = Math.floor(num / 1000);
546
+ if (num < 1000) {
547
+ str = num + str;
548
+ break;
549
+ }
550
+ }
551
+ return str;
552
+ }
553
+ static sleep(milliseconds) {
554
+ return new Promise((resolve) => {
555
+ setTimeout(() => {
556
+ resolve(null);
557
+ }, milliseconds);
558
+ });
559
+ }
560
+ }
561
+ exports.core = core;
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Timer = void 0;
4
+ const Log_1 = require("../Logic/Log");
5
+ class Timer {
6
+ _deadline = -1;
7
+ get deadline() {
8
+ return this._deadline;
9
+ }
10
+ _handler = null;
11
+ get handler() {
12
+ return this._handler;
13
+ }
14
+ get isRunning() {
15
+ if (this._handler) {
16
+ return true;
17
+ }
18
+ return false;
19
+ }
20
+ _call_back = null;
21
+ _left_time = -1;
22
+ _is_interval = false;
23
+ constructor() {
24
+ }
25
+ setTimeout(handler, timeout, ...args) {
26
+ this._call_back = handler;
27
+ this.clear();
28
+ if (timeout == undefined) {
29
+ timeout = 30000;
30
+ }
31
+ this._deadline = Date.now() + timeout;
32
+ this._handler = setTimeout(() => {
33
+ this._deadline = -1;
34
+ this._handler = null;
35
+ this._left_time = -1;
36
+ try {
37
+ this._call_back();
38
+ }
39
+ catch (e) {
40
+ if (e && e.stack) {
41
+ Log_1.GLog.error(e.stack);
42
+ }
43
+ else {
44
+ Log_1.GLog.error(e);
45
+ }
46
+ }
47
+ }, timeout, ...args);
48
+ }
49
+ setInterval(handler, timeout, ...args) {
50
+ this._call_back = handler;
51
+ this.clear();
52
+ this._is_interval = true;
53
+ if (timeout == undefined) {
54
+ timeout = 30000;
55
+ }
56
+ this._deadline = -1;
57
+ this._left_time = timeout;
58
+ this._handler = setInterval(() => {
59
+ try {
60
+ this._call_back();
61
+ }
62
+ catch (e) {
63
+ if (e && e.stack) {
64
+ Log_1.GLog.error(e.stack);
65
+ }
66
+ else {
67
+ Log_1.GLog.error(e);
68
+ }
69
+ }
70
+ }, timeout, ...args);
71
+ }
72
+ pause() {
73
+ if (this._handler) {
74
+ if (!this._is_interval) {
75
+ this._left_time = this._deadline - Date.now();
76
+ clearTimeout(this._handler);
77
+ }
78
+ else {
79
+ clearInterval(this._handler);
80
+ }
81
+ this._deadline = -1;
82
+ this._handler = null;
83
+ }
84
+ }
85
+ resume() {
86
+ if (this._left_time > 0) {
87
+ if (!this._is_interval) {
88
+ this._deadline = Date.now() + this._left_time;
89
+ this._handler = setTimeout(() => {
90
+ this._call_back();
91
+ this._deadline = -1;
92
+ this._handler = null;
93
+ this._left_time = -1;
94
+ }, this._left_time);
95
+ }
96
+ else {
97
+ this.setInterval(this._call_back, this._left_time);
98
+ }
99
+ }
100
+ }
101
+ clear() {
102
+ if (this._handler) {
103
+ if (!this._is_interval) {
104
+ clearTimeout(this._handler);
105
+ }
106
+ else {
107
+ clearInterval(this._handler);
108
+ }
109
+ }
110
+ this._deadline = -1;
111
+ this._handler = null;
112
+ this._left_time = -1;
113
+ this._is_interval = false;
114
+ }
115
+ }
116
+ exports.Timer = Timer;