wenay-common 1.0.149 → 1.0.154
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/lib/Common/Listen.d.ts +63 -4
- package/lib/Common/Listen.js +88 -6
- package/lib/Common/node_console.d.ts +1 -0
- package/lib/Common/node_console.js +15 -1
- package/lib/test.d.ts +1 -0
- package/lib/test.js +65 -0
- package/lib/tsconfig.json +6 -0
- package/package.json +1 -1
package/lib/Common/Listen.d.ts
CHANGED
|
@@ -1,26 +1,47 @@
|
|
|
1
1
|
type tr222<T extends any[]> = (...r: T) => void;
|
|
2
|
-
export declare function funcListenCallback<T extends any[]>(a: (e: tr222<T>) => (void | (() => void)), event?: (type: "add" | "remove", count: number) => void): {
|
|
2
|
+
export declare function funcListenCallback<T extends any[]>(a: (e: tr222<T>) => (void | (() => void)), event?: (type: "add" | "remove", count: number, api: ReturnType<typeof funcListenCallback<T>>) => void): {
|
|
3
3
|
lastUpdate: () => Date | null;
|
|
4
4
|
lastUpdateMs: () => number | null;
|
|
5
5
|
isRun: () => boolean;
|
|
6
6
|
run: () => (() => void) | null;
|
|
7
7
|
close: () => void;
|
|
8
|
-
addListen: (a: tr222<T>) => void;
|
|
8
|
+
addListen: (a: tr222<T>) => () => void;
|
|
9
9
|
removeListen: (a: (tr222<T>) | null) => void;
|
|
10
10
|
count: () => number;
|
|
11
11
|
};
|
|
12
|
+
type tr2<T extends (...a: any[]) => any> = (a: Parameters<T>[0]) => void;
|
|
13
|
+
type t1<T extends any[] = any[]> = ReturnType<typeof funcListenCallback<T>>;
|
|
14
|
+
type tt = tr2<Parameters<t1["addListen"]>[0]>;
|
|
15
|
+
export declare function funcListenBySocket3<Z extends any[] = any[]>(e: t1<Z>, z: {
|
|
16
|
+
readonly status?: () => boolean;
|
|
17
|
+
readonly setEventClose?: (eventClose: () => any) => any;
|
|
18
|
+
}): {
|
|
19
|
+
callback: (z: (a: Z[0]) => void) => void;
|
|
20
|
+
removeCallback: () => boolean;
|
|
21
|
+
};
|
|
22
|
+
export declare function funcListenBySocket2<Z extends any[] = any[]>(e: t1<Z>, { stop, setEventClose, status, paramsModify }: {
|
|
23
|
+
readonly status?: () => boolean;
|
|
24
|
+
readonly setEventClose?: (eventClose: () => any) => any;
|
|
25
|
+
readonly stop?: (x: tt) => any;
|
|
26
|
+
readonly paramsModify?: (...e: Parameters<tt>) => any[];
|
|
27
|
+
}): {
|
|
28
|
+
callback: (z: (a: Z[0]) => void) => void;
|
|
29
|
+
removeCallback: () => boolean;
|
|
30
|
+
};
|
|
12
31
|
export declare function funcListenBySocket<Z extends any[] = any[]>(e: ReturnType<typeof funcListenCallback<Z>>, status: () => boolean): {
|
|
13
32
|
callback: (z: (param: Parameters<Parameters<typeof e.addListen>[0]>[0]) => void) => void;
|
|
14
33
|
removeCallback: () => boolean;
|
|
15
34
|
};
|
|
16
35
|
export declare const funcListenBySocket1: typeof funcListenBySocket;
|
|
17
|
-
export declare function UseListen<T extends any[]>(
|
|
36
|
+
export declare function UseListen<T extends any[]>(data?: {
|
|
37
|
+
event?: Parameters<typeof funcListenCallback<T>>[1];
|
|
38
|
+
}): readonly [(...e: T) => void | undefined, {
|
|
18
39
|
lastUpdate: () => Date | null;
|
|
19
40
|
lastUpdateMs: () => number | null;
|
|
20
41
|
isRun: () => boolean;
|
|
21
42
|
run: () => (() => void) | null;
|
|
22
43
|
close: () => void;
|
|
23
|
-
addListen: (a: tr222<T>) => void;
|
|
44
|
+
addListen: (a: tr222<T>) => () => void;
|
|
24
45
|
removeListen: (a: tr222<T> | null) => void;
|
|
25
46
|
count: () => number;
|
|
26
47
|
}];
|
|
@@ -38,4 +59,42 @@ export declare function PromiseArrayListen<T extends any = unknown>(array: ((()
|
|
|
38
59
|
count: number;
|
|
39
60
|
};
|
|
40
61
|
};
|
|
62
|
+
export type realSocket2<T extends any> = (data: {
|
|
63
|
+
callback: (data: T) => void;
|
|
64
|
+
[key: string]: any;
|
|
65
|
+
}, ...b: any[]) => (any | (() => any));
|
|
66
|
+
export type getTypeCallback<T extends realSocket2<any>> = T extends realSocket2<infer R> ? R : never;
|
|
67
|
+
type ParametersOther<T extends (forget: any, ...args: any) => any> = T extends (forget: any, ...args: infer P) => any ? P : never;
|
|
68
|
+
type tr22<T> = T extends undefined ? never : T;
|
|
69
|
+
export declare function socketBuffer3<T extends realSocket2<any | any[]>, T2 extends (readonly unknown[]) | undefined, T3 extends {
|
|
70
|
+
[key: string]: unknown;
|
|
71
|
+
}>(func: T, callbackMain: (data: getTypeCallback<T>, memo: T3) => T2, memo?: T3): (a: Omit<Parameters<T>[0], "callback"> & {
|
|
72
|
+
callback: (...data: tr22<T2>) => any;
|
|
73
|
+
}, ...b: ParametersOther<T>) => ReturnType<T>;
|
|
74
|
+
export declare function socketBufferBySnapshot<T extends realSocket2<any | any[]>, T2 extends (readonly unknown[]) | undefined, T3 extends {
|
|
75
|
+
[key: string]: unknown;
|
|
76
|
+
}>({ func, memo, callbackSave, snapshot }: {
|
|
77
|
+
func: () => T;
|
|
78
|
+
callbackSave: (data: getTypeCallback<T>, memo: T3) => T2;
|
|
79
|
+
memo: T3;
|
|
80
|
+
snapshot?: (memo: T3) => T3;
|
|
81
|
+
}): {
|
|
82
|
+
run: (a: tr222<[data: getTypeCallback<T>, memo: T3]>) => () => void;
|
|
83
|
+
snapshot: () => T3 | undefined;
|
|
84
|
+
memo: T3;
|
|
85
|
+
listenA: {
|
|
86
|
+
lastUpdate: () => Date | null;
|
|
87
|
+
lastUpdateMs: () => number | null;
|
|
88
|
+
isRun: () => boolean;
|
|
89
|
+
run: () => (() => void) | null;
|
|
90
|
+
close: () => void;
|
|
91
|
+
addListen: (a: tr222<[data: getTypeCallback<T>, memo: T3]>) => () => void;
|
|
92
|
+
removeListen: (a: tr222<[data: getTypeCallback<T>, memo: T3]> | null) => void;
|
|
93
|
+
count: () => number;
|
|
94
|
+
};
|
|
95
|
+
connect: () => void;
|
|
96
|
+
readonly disconnect: ((a: Omit<Parameters<T>[0], "callback"> & {
|
|
97
|
+
callback: (...data: tr22<T2>) => any;
|
|
98
|
+
}, ...b: ParametersOther<T>) => ReturnType<T>) | null;
|
|
99
|
+
};
|
|
41
100
|
export {};
|
package/lib/Common/Listen.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PromiseArrayListen = exports.UseListen = exports.funcListenBySocket1 = exports.funcListenBySocket = exports.funcListenCallback = void 0;
|
|
3
|
+
exports.socketBufferBySnapshot = exports.socketBuffer3 = exports.PromiseArrayListen = exports.UseListen = exports.funcListenBySocket1 = exports.funcListenBySocket = exports.funcListenBySocket2 = exports.funcListenBySocket3 = exports.funcListenCallback = void 0;
|
|
4
4
|
function funcListenCallback(a, event) {
|
|
5
5
|
const obj = new Map;
|
|
6
6
|
let close = null;
|
|
@@ -9,7 +9,7 @@ function funcListenCallback(a, event) {
|
|
|
9
9
|
lastUpdate = Date.now();
|
|
10
10
|
obj.forEach(e => e(...z));
|
|
11
11
|
})) ?? null);
|
|
12
|
-
|
|
12
|
+
const api = {
|
|
13
13
|
lastUpdate: () => lastUpdate != null ? new Date(lastUpdate) : lastUpdate,
|
|
14
14
|
lastUpdateMs: () => lastUpdate,
|
|
15
15
|
isRun: () => close != null,
|
|
@@ -17,16 +17,66 @@ function funcListenCallback(a, event) {
|
|
|
17
17
|
close: () => { close?.(); close = null; },
|
|
18
18
|
addListen: (a) => {
|
|
19
19
|
obj.set(a, a);
|
|
20
|
-
event?.("add", obj.size);
|
|
20
|
+
event?.("add", obj.size, api);
|
|
21
|
+
return () => api.removeListen(a);
|
|
21
22
|
},
|
|
22
23
|
removeListen: (a) => {
|
|
23
24
|
obj.delete(a);
|
|
24
|
-
event?.("remove", obj.size);
|
|
25
|
+
event?.("remove", obj.size, api);
|
|
25
26
|
},
|
|
26
27
|
count: () => obj.size
|
|
27
28
|
};
|
|
29
|
+
return api;
|
|
28
30
|
}
|
|
29
31
|
exports.funcListenCallback = funcListenCallback;
|
|
32
|
+
function funcListenBySocket3(e, z) {
|
|
33
|
+
return funcListenBySocket2(e, { ...z, stop: x => x("___STOP"), paramsModify: (...e) => [e[0]] });
|
|
34
|
+
}
|
|
35
|
+
exports.funcListenBySocket3 = funcListenBySocket3;
|
|
36
|
+
function funcListenBySocket2(e, { stop, setEventClose, status, paramsModify }) {
|
|
37
|
+
const { addListen, removeListen, count } = e;
|
|
38
|
+
const x = { x: null };
|
|
39
|
+
let r2 = null;
|
|
40
|
+
const removeCallback = () => {
|
|
41
|
+
if (x.x) {
|
|
42
|
+
stop?.(x.x);
|
|
43
|
+
x.x = null;
|
|
44
|
+
}
|
|
45
|
+
if (r2)
|
|
46
|
+
removeListen(r2);
|
|
47
|
+
return true;
|
|
48
|
+
};
|
|
49
|
+
return {
|
|
50
|
+
callback: (z) => {
|
|
51
|
+
if (x.x)
|
|
52
|
+
stop?.(x.x);
|
|
53
|
+
if (r2)
|
|
54
|
+
removeListen(r2);
|
|
55
|
+
x.x = z;
|
|
56
|
+
if (!z) {
|
|
57
|
+
console.log(z);
|
|
58
|
+
console.log(e.count());
|
|
59
|
+
console.trace();
|
|
60
|
+
}
|
|
61
|
+
let ta;
|
|
62
|
+
ta = z;
|
|
63
|
+
if (paramsModify) {
|
|
64
|
+
ta = (...a) => {
|
|
65
|
+
const params = paramsModify(...a);
|
|
66
|
+
z(...params);
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
if (status)
|
|
70
|
+
r2 = (a) => { status() ? ta(a) : removeListen(r2); };
|
|
71
|
+
else
|
|
72
|
+
r2 = (a) => ta(a);
|
|
73
|
+
addListen(r2);
|
|
74
|
+
setEventClose?.(() => removeCallback());
|
|
75
|
+
},
|
|
76
|
+
removeCallback
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
exports.funcListenBySocket2 = funcListenBySocket2;
|
|
30
80
|
function funcListenBySocket(e, status) {
|
|
31
81
|
const { addListen, removeListen, count } = e;
|
|
32
82
|
let x = null;
|
|
@@ -59,9 +109,9 @@ function funcListenBySocket(e, status) {
|
|
|
59
109
|
}
|
|
60
110
|
exports.funcListenBySocket = funcListenBySocket;
|
|
61
111
|
exports.funcListenBySocket1 = funcListenBySocket;
|
|
62
|
-
function UseListen() {
|
|
112
|
+
function UseListen(data) {
|
|
63
113
|
let t = null;
|
|
64
|
-
const a = funcListenCallback((e) => { t = e; });
|
|
114
|
+
const a = funcListenCallback((e) => { t = e; }, data?.event);
|
|
65
115
|
a.run();
|
|
66
116
|
return [(...e) => t?.(...e), a];
|
|
67
117
|
}
|
|
@@ -102,3 +152,35 @@ function PromiseArrayListen(array) {
|
|
|
102
152
|
};
|
|
103
153
|
}
|
|
104
154
|
exports.PromiseArrayListen = PromiseArrayListen;
|
|
155
|
+
function socketBuffer3(func, callbackMain, memo = {}) {
|
|
156
|
+
return (a, ...b) => func({ ...a, callback: (v) => { const z = callbackMain(v, memo); if (z)
|
|
157
|
+
a.callback(...z); }
|
|
158
|
+
}, ...b);
|
|
159
|
+
}
|
|
160
|
+
exports.socketBuffer3 = socketBuffer3;
|
|
161
|
+
function socketBufferBySnapshot({ func, memo = {}, callbackSave, snapshot }) {
|
|
162
|
+
let d = null;
|
|
163
|
+
const [callback, listenA] = UseListen({
|
|
164
|
+
event: (type, count, api) => {
|
|
165
|
+
if (type == "remove" && count == 0) {
|
|
166
|
+
api.close();
|
|
167
|
+
d?.();
|
|
168
|
+
}
|
|
169
|
+
if (type == "add" && count == 1)
|
|
170
|
+
api.run();
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
const connect = () => {
|
|
174
|
+
if (d == null)
|
|
175
|
+
d = socketBuffer3(func(), callbackSave, memo)({ callback });
|
|
176
|
+
};
|
|
177
|
+
const run = (...params) => {
|
|
178
|
+
if (!listenA.isRun()) {
|
|
179
|
+
snapshot?.(memo);
|
|
180
|
+
connect();
|
|
181
|
+
}
|
|
182
|
+
return listenA.addListen(...params);
|
|
183
|
+
};
|
|
184
|
+
return { run, snapshot: () => snapshot?.(memo), memo, listenA, connect, get disconnect() { return d; } };
|
|
185
|
+
}
|
|
186
|
+
exports.socketBufferBySnapshot = socketBufferBySnapshot;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.__LineFile = exports.disable = exports.enable = void 0;
|
|
3
|
+
exports.__LineFiles = exports.__LineFile = exports.disable = exports.enable = void 0;
|
|
4
4
|
let _enabled = false;
|
|
5
5
|
function enable(flag = true) { _enabled = flag; }
|
|
6
6
|
exports.enable = enable;
|
|
@@ -74,3 +74,17 @@ function __LineFile(lvl = 0) {
|
|
|
74
74
|
return `${e.getFileName()}:${e.getLineNumber()}:${e.getColumnNumber()} ` + e.getFunctionName();
|
|
75
75
|
}
|
|
76
76
|
exports.__LineFile = __LineFile;
|
|
77
|
+
function __LineFiles(lvlStart = 0, lvlEnd = 5) {
|
|
78
|
+
if (!_enabled) {
|
|
79
|
+
return "";
|
|
80
|
+
}
|
|
81
|
+
const originalPrepareStackTrace = Error.prepareStackTrace;
|
|
82
|
+
Error.prepareStackTrace = (_, stack) => stack;
|
|
83
|
+
let e = new Error().stack.slice(lvlStart + 1, lvlEnd);
|
|
84
|
+
if (wrapCallSite)
|
|
85
|
+
e = e.map(e => wrapCallSite(e));
|
|
86
|
+
const msgs = e.map(e => `${e.getFileName()}:${e.getLineNumber()}:${e.getColumnNumber()} ` + e.getFunctionName());
|
|
87
|
+
Error.prepareStackTrace = originalPrepareStackTrace;
|
|
88
|
+
return msgs;
|
|
89
|
+
}
|
|
90
|
+
exports.__LineFiles = __LineFiles;
|
package/lib/test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/lib/test.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const wenay_common_1 = require("wenay-common");
|
|
4
|
+
const Listen_1 = require("./Common/Listen");
|
|
5
|
+
function testSocketBufferBySnapshot() {
|
|
6
|
+
function snapshot() {
|
|
7
|
+
return {
|
|
8
|
+
a: 3,
|
|
9
|
+
b: 4,
|
|
10
|
+
c: 10
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function tt(a, key, time) {
|
|
14
|
+
const [startTime, endTime] = [Date.now(), Date.now() + time];
|
|
15
|
+
return ({ callback }) => {
|
|
16
|
+
let t = true;
|
|
17
|
+
async function re() {
|
|
18
|
+
const step = Math.round((Math.random()) * 500);
|
|
19
|
+
await (0, wenay_common_1.sleepAsync)(step);
|
|
20
|
+
a += Math.round((Math.random() - 0.5) * 100);
|
|
21
|
+
callback({ [key]: a });
|
|
22
|
+
if (Date.now() < endTime && t)
|
|
23
|
+
return re();
|
|
24
|
+
}
|
|
25
|
+
re();
|
|
26
|
+
return () => {
|
|
27
|
+
console.log("tttt");
|
|
28
|
+
t = false;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const memo = {};
|
|
33
|
+
const c1 = tt(5, "a", 10000);
|
|
34
|
+
const test = (0, Listen_1.socketBufferBySnapshot)({
|
|
35
|
+
func: () => c1,
|
|
36
|
+
memo,
|
|
37
|
+
callbackSave: (data, memo1) => {
|
|
38
|
+
Object.entries(data).forEach(([key, value]) => memo[key] = value);
|
|
39
|
+
return [data, memo1];
|
|
40
|
+
},
|
|
41
|
+
snapshot: (memo) => {
|
|
42
|
+
Object.entries(snapshot()).forEach(([key, value]) => memo[key] = value);
|
|
43
|
+
return memo;
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
test.snapshot();
|
|
47
|
+
console.log(test.memo);
|
|
48
|
+
const t = test.run((a, m) => {
|
|
49
|
+
console.log(a, m);
|
|
50
|
+
});
|
|
51
|
+
const t1 = test.run((a, m) => {
|
|
52
|
+
console.log(a, m);
|
|
53
|
+
});
|
|
54
|
+
(0, wenay_common_1.sleepAsync)(2000)
|
|
55
|
+
.then(() => {
|
|
56
|
+
t();
|
|
57
|
+
console.log("stop t");
|
|
58
|
+
});
|
|
59
|
+
(0, wenay_common_1.sleepAsync)(3000)
|
|
60
|
+
.then(() => {
|
|
61
|
+
t1();
|
|
62
|
+
console.log("stop t");
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
testSocketBufferBySnapshot();
|