@social-mail/social-mail-web-server 1.16.310 → 1.16.312
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/dist/.tsbuildinfo +1 -1
- package/dist/common/globalEnv.d.ts +0 -3
- package/dist/common/globalEnv.d.ts.map +1 -1
- package/dist/common/globalEnv.js +0 -3
- package/dist/common/globalEnv.js.map +1 -1
- package/dist/server/services/EmailAddressService.d.ts +3 -3
- package/dist/server/services/EmailAddressService.d.ts.map +1 -1
- package/dist/server/services/EmailAddressService.js +15 -15
- package/dist/server/services/EmailAddressService.js.map +1 -1
- package/dist/server/services/geo-ip/GeoIPService.d.ts +3 -3
- package/dist/server/services/geo-ip/GeoIPService.d.ts.map +1 -1
- package/dist/server/services/geo-ip/GeoIPService.js +2 -2
- package/dist/server/services/geo-ip/GeoIPService.js.map +1 -1
- package/dist/server/smtp/services/DomainReputationService.d.ts +3 -3
- package/dist/server/smtp/services/DomainReputationService.d.ts.map +1 -1
- package/dist/server/smtp/services/DomainReputationService.js +2 -2
- package/dist/server/smtp/services/DomainReputationService.js.map +1 -1
- package/dist/wwwroot/routes/social-mail/site/preview/[host]/[type]/[cacheKey]/get.js +1 -1
- package/dist/wwwroot/routes/social-mail/site/preview/[host]/[type]/[cacheKey]/get.js.map +1 -1
- package/package.json +1 -1
- package/src/common/globalEnv.ts +0 -3
- package/src/server/services/EmailAddressService.ts +17 -17
- package/src/server/services/geo-ip/GeoIPService.ts +4 -4
- package/src/server/smtp/services/DomainReputationService.ts +4 -4
- package/src/wwwroot/routes/social-mail/site/preview/[host]/[type]/[cacheKey]/get.tsx +1 -1
- package/dist/common/JsonClient.d.ts +0 -13
- package/dist/common/JsonClient.d.ts.map +0 -1
- package/dist/common/JsonClient.js +0 -203
- package/dist/common/JsonClient.js.map +0 -1
- package/dist/common/LocalCache.d.ts +0 -21
- package/dist/common/LocalCache.d.ts.map +0 -1
- package/dist/common/LocalCache.js +0 -120
- package/dist/common/LocalCache.js.map +0 -1
- package/src/common/JsonClient.ts +0 -228
- package/src/common/LocalCache.ts +0 -148
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export default class JsonClient {
|
|
2
|
-
private readonly socketPath;
|
|
3
|
-
private socket;
|
|
4
|
-
private pending;
|
|
5
|
-
constructor(socketPath: string);
|
|
6
|
-
sendCommand<TIn = any, TOut = any>(msg: {
|
|
7
|
-
cmd: any;
|
|
8
|
-
} & TIn, log?: boolean): Promise<TOut>;
|
|
9
|
-
private resolveReferences;
|
|
10
|
-
private recursiveGenerate;
|
|
11
|
-
private init;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=JsonClient.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JsonClient.d.ts","sourceRoot":"","sources":["../../src/common/JsonClient.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,OAAO,OAAO,UAAU;IAMf,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJvC,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,OAAO,CAAkD;IAEjE,YAA6B,UAAU,EAAE,MAAM,EAE9C;IAEY,WAAW,CAAC,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE,GAAG,EAAE;QAAE,GAAG,MAAA;KAAE,GAAG,GAAG,EAAE,GAAG,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB7F;IAED,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAE,iBAAiB;YAgGZ,IAAI;CA8DrB"}
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
import { connect } from "node:net";
|
|
2
|
-
import TimeoutError from "./errors/TimeoutError.js";
|
|
3
|
-
let nextId = 1;
|
|
4
|
-
export default class JsonClient {
|
|
5
|
-
constructor(socketPath) {
|
|
6
|
-
this.socketPath = socketPath;
|
|
7
|
-
this.pending = new Map();
|
|
8
|
-
}
|
|
9
|
-
async sendCommand(msg, log = true) {
|
|
10
|
-
await this.init();
|
|
11
|
-
const id = (nextId++).toString(36);
|
|
12
|
-
let resolve;
|
|
13
|
-
let reject;
|
|
14
|
-
const p = new Promise((res, rej) => (resolve = res, reject = rej));
|
|
15
|
-
const timeout = setTimeout(() => {
|
|
16
|
-
this.pending.delete(id);
|
|
17
|
-
reject(new TimeoutError());
|
|
18
|
-
}, 15000);
|
|
19
|
-
this.pending.set(id, { resolve, reject, timeout });
|
|
20
|
-
msg.id = id;
|
|
21
|
-
let line = "";
|
|
22
|
-
for (const text of this.recursiveGenerate(msg)) {
|
|
23
|
-
line += text;
|
|
24
|
-
}
|
|
25
|
-
this.socket.write(`${line}\n`, (error) => error && console.error(error));
|
|
26
|
-
// if (log) {
|
|
27
|
-
// console.log(line);
|
|
28
|
-
// }
|
|
29
|
-
const v = await p;
|
|
30
|
-
if (v?.value) {
|
|
31
|
-
this.resolveReferences(v, new Map());
|
|
32
|
-
}
|
|
33
|
-
return v;
|
|
34
|
-
}
|
|
35
|
-
resolveReferences(v, map) {
|
|
36
|
-
if (!v) {
|
|
37
|
-
return v;
|
|
38
|
-
}
|
|
39
|
-
if (Array.isArray(v)) {
|
|
40
|
-
return v.map((i) => this.resolveReferences(i, map));
|
|
41
|
-
}
|
|
42
|
-
if (typeof v !== "object") {
|
|
43
|
-
return v;
|
|
44
|
-
}
|
|
45
|
-
const { $ref, $id } = v;
|
|
46
|
-
if ($ref) {
|
|
47
|
-
return map.get($ref);
|
|
48
|
-
}
|
|
49
|
-
if ($id) {
|
|
50
|
-
map.set($id, v);
|
|
51
|
-
}
|
|
52
|
-
for (const key in v) {
|
|
53
|
-
if (!Object.hasOwn(v, key)) {
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
v[key] = this.resolveReferences(v[key], map);
|
|
57
|
-
}
|
|
58
|
-
return v;
|
|
59
|
-
}
|
|
60
|
-
*recursiveGenerate(model, doneMap = new Map()) {
|
|
61
|
-
if (model === null) {
|
|
62
|
-
yield "null";
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
if (model === void 0) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
switch (typeof model) {
|
|
69
|
-
case "bigint":
|
|
70
|
-
case "string":
|
|
71
|
-
yield JSON.stringify(model.toString());
|
|
72
|
-
return;
|
|
73
|
-
case "number":
|
|
74
|
-
yield model.toString();
|
|
75
|
-
return;
|
|
76
|
-
case "boolean":
|
|
77
|
-
yield model ? "true" : "false";
|
|
78
|
-
return;
|
|
79
|
-
case "undefined":
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
if (model instanceof Date) {
|
|
83
|
-
yield `"${model.toJSON()}"`;
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
let suffix = "";
|
|
87
|
-
if (Array.isArray(model)) {
|
|
88
|
-
yield "[";
|
|
89
|
-
for (const element of model) {
|
|
90
|
-
if (element === void 0) {
|
|
91
|
-
continue;
|
|
92
|
-
}
|
|
93
|
-
if (suffix) {
|
|
94
|
-
yield suffix;
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
suffix = ",";
|
|
98
|
-
}
|
|
99
|
-
yield* this.recursiveGenerate(element, doneMap);
|
|
100
|
-
}
|
|
101
|
-
yield "]";
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
let $id = doneMap.get(model);
|
|
105
|
-
if ($id) {
|
|
106
|
-
yield `{"$ref": ${$id}}`;
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
$id = doneMap.size + 1;
|
|
110
|
-
doneMap.set(model, $id);
|
|
111
|
-
yield `{"$id": ${$id}`;
|
|
112
|
-
for (const key in model) {
|
|
113
|
-
if (Object.hasOwn(model, key)) {
|
|
114
|
-
const element = model[key];
|
|
115
|
-
if (element === void 0) {
|
|
116
|
-
continue;
|
|
117
|
-
}
|
|
118
|
-
yield ",";
|
|
119
|
-
yield JSON.stringify(key);
|
|
120
|
-
yield `:`;
|
|
121
|
-
if (element === null) {
|
|
122
|
-
yield "null";
|
|
123
|
-
continue;
|
|
124
|
-
}
|
|
125
|
-
switch (typeof element) {
|
|
126
|
-
case "bigint":
|
|
127
|
-
yield JSON.stringify(element.toString());
|
|
128
|
-
continue;
|
|
129
|
-
case "boolean":
|
|
130
|
-
yield element ? "true" : "false";
|
|
131
|
-
continue;
|
|
132
|
-
case "string":
|
|
133
|
-
case "number":
|
|
134
|
-
yield JSON.stringify(element);
|
|
135
|
-
continue;
|
|
136
|
-
}
|
|
137
|
-
if (element instanceof Date) {
|
|
138
|
-
yield `"${element.toJSON()}"`;
|
|
139
|
-
continue;
|
|
140
|
-
}
|
|
141
|
-
yield* this.recursiveGenerate(element, doneMap);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
yield `}`;
|
|
145
|
-
}
|
|
146
|
-
async init() {
|
|
147
|
-
const n = "\n".charCodeAt(0);
|
|
148
|
-
const s = this.socket = await new Promise((resolve, reject) => {
|
|
149
|
-
const s1 = connect({ path: this.socketPath }, () => {
|
|
150
|
-
resolve(s1);
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
s.on("error", (error) => {
|
|
154
|
-
console.error(error);
|
|
155
|
-
});
|
|
156
|
-
s.on("end", () => delete this.init);
|
|
157
|
-
s.on("close", () => delete this.init);
|
|
158
|
-
let buffer = null;
|
|
159
|
-
s.on("data", (d) => {
|
|
160
|
-
try {
|
|
161
|
-
// console.log(d.toString("utf-8"));
|
|
162
|
-
for (;;) {
|
|
163
|
-
const i = d.indexOf(n);
|
|
164
|
-
if (i === -1) {
|
|
165
|
-
buffer = buffer ? Buffer.concat([buffer, d]) : d;
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
const prefix = d.subarray(0, i);
|
|
169
|
-
const line = buffer ? Buffer.concat([buffer, prefix]) : prefix;
|
|
170
|
-
const lineText = line.toString("utf-8");
|
|
171
|
-
const parsed = JSON.parse(lineText);
|
|
172
|
-
const { id, error } = parsed;
|
|
173
|
-
const pending = this.pending.get(id);
|
|
174
|
-
if (pending) {
|
|
175
|
-
const { timeout } = pending;
|
|
176
|
-
clearTimeout(timeout);
|
|
177
|
-
this.pending.delete(id);
|
|
178
|
-
if (error) {
|
|
179
|
-
pending.reject(error);
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
pending.resolve(parsed);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
if (prefix.length === d.length) {
|
|
186
|
-
buffer = null;
|
|
187
|
-
break;
|
|
188
|
-
}
|
|
189
|
-
d = d.subarray(i + 1);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
catch (error) {
|
|
193
|
-
console.error(error);
|
|
194
|
-
}
|
|
195
|
-
});
|
|
196
|
-
setInterval(() => {
|
|
197
|
-
this.sendCommand({ cmd: "ping" }, false).catch(console.error);
|
|
198
|
-
}, 5000);
|
|
199
|
-
const p = Promise.resolve();
|
|
200
|
-
Object.defineProperty(this, "init", { value: () => p, configurable: true });
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
//# sourceMappingURL=JsonClient.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"JsonClient.js","sourceRoot":"","sources":["../../src/common/JsonClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
interface ILocalCacheClient {
|
|
2
|
-
get(key: string): Promise<any>;
|
|
3
|
-
delete(key: string): Promise<void>;
|
|
4
|
-
set(key: string, value: string, ttl: any, maxAge: any): Promise<void>;
|
|
5
|
-
clear(): any;
|
|
6
|
-
}
|
|
7
|
-
export declare class ObjectLocalCache<T> implements Disposable {
|
|
8
|
-
private readonly bucketName;
|
|
9
|
-
private readonly ttl?;
|
|
10
|
-
private cache;
|
|
11
|
-
constructor(bucketName: string, ttl?: any);
|
|
12
|
-
for(name: keyof T): ILocalCacheClient;
|
|
13
|
-
clear(name?: keyof T): void;
|
|
14
|
-
[Symbol.dispose](): void;
|
|
15
|
-
}
|
|
16
|
-
export interface ILocalCacheContainer<T> {
|
|
17
|
-
cache: ObjectLocalCache<T> | undefined;
|
|
18
|
-
}
|
|
19
|
-
export declare function localCache<T>(): any;
|
|
20
|
-
export {};
|
|
21
|
-
//# sourceMappingURL=LocalCache.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LocalCache.d.ts","sourceRoot":"","sources":["../../src/common/LocalCache.ts"],"names":[],"mappings":"AAKA,UAAU,iBAAiB;IACvB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAA,EAAE,MAAM,KAAA,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,KAAK,QAAG;CACX;AAuED,qBAAa,gBAAgB,CAAC,CAAC,CAAE,YAAW,UAAU;IAItC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAAU,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;IAFtE,OAAO,CAAC,KAAK,CAA0C;IAEvD,YAA6B,UAAU,EAAE,MAAM,EAAmB,GAAG,CAAC,KAAA,EAErE;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,qBAShB;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,QASnB;IAED,CAAC,MAAM,CAAC,OAAO,CAAC,SAIf;CACJ;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACnC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CAC1C;AAGD,wBAAgB,UAAU,CAAC,CAAC,KAuBnB,GAAG,CACX"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { globalEnv } from "./globalEnv.js";
|
|
2
|
-
import JsonClient from "./JsonClient.js";
|
|
3
|
-
const localCacheJsonClient = new JsonClient(globalEnv.localCache.port);
|
|
4
|
-
class LocalCacheClient {
|
|
5
|
-
constructor(bucket, ttlSeconds = 60, maxAge = 4) {
|
|
6
|
-
this.bucket = bucket;
|
|
7
|
-
this.ttlSeconds = ttlSeconds;
|
|
8
|
-
this.maxAge = maxAge;
|
|
9
|
-
}
|
|
10
|
-
async get(key) {
|
|
11
|
-
const r = await localCacheJsonClient.sendCommand({ cmd: "get", bucket: this.bucket, key });
|
|
12
|
-
const value = r.value;
|
|
13
|
-
if (!value) {
|
|
14
|
-
return void 0;
|
|
15
|
-
}
|
|
16
|
-
return value.value;
|
|
17
|
-
}
|
|
18
|
-
async delete(key) {
|
|
19
|
-
await localCacheJsonClient.sendCommand({ cmd: "delete", bucket: this.bucket, key });
|
|
20
|
-
}
|
|
21
|
-
async set(key, value, ttl = this.ttlSeconds, maxAge = this.maxAge) {
|
|
22
|
-
await localCacheJsonClient.sendCommand({ cmd: "set", bucket: this.bucket, key, value: { value }, ttl, maxAge });
|
|
23
|
-
}
|
|
24
|
-
clear() {
|
|
25
|
-
localCacheJsonClient.sendCommand({ cmd: "clear", bucket: this.bucket }).catch(console.error);
|
|
26
|
-
}
|
|
27
|
-
async getOrCreateAsync(key, factory) {
|
|
28
|
-
let r = await this.get(key);
|
|
29
|
-
if (r === void 0) {
|
|
30
|
-
r = await factory(key);
|
|
31
|
-
await this.set(key, r);
|
|
32
|
-
}
|
|
33
|
-
return r;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
class TestLocalCacheClient {
|
|
37
|
-
constructor(...a) {
|
|
38
|
-
this.map = new Map();
|
|
39
|
-
// do nothing
|
|
40
|
-
}
|
|
41
|
-
async get(key) {
|
|
42
|
-
return this.map.get(key);
|
|
43
|
-
}
|
|
44
|
-
async delete(key) {
|
|
45
|
-
this.map.delete(key);
|
|
46
|
-
}
|
|
47
|
-
async set(key, value, ttl, maxAge) {
|
|
48
|
-
this.map.set(key, value);
|
|
49
|
-
}
|
|
50
|
-
clear() {
|
|
51
|
-
this.map.clear();
|
|
52
|
-
}
|
|
53
|
-
async getOrCreateAsync(key, factory) {
|
|
54
|
-
let r = await this.get(key);
|
|
55
|
-
if (r === void 0) {
|
|
56
|
-
r = await factory(key);
|
|
57
|
-
await this.set(key, r, 0, 0);
|
|
58
|
-
}
|
|
59
|
-
return r;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
export class ObjectLocalCache {
|
|
63
|
-
constructor(bucketName, ttl) {
|
|
64
|
-
this.bucketName = bucketName;
|
|
65
|
-
this.ttl = ttl;
|
|
66
|
-
this.cache = new Map();
|
|
67
|
-
}
|
|
68
|
-
for(name) {
|
|
69
|
-
let tc = this.cache.get(name);
|
|
70
|
-
if (!tc) {
|
|
71
|
-
tc = globalEnv.isLocalTestMode
|
|
72
|
-
? new TestLocalCacheClient(`${this.bucketName}.${name}`, this.ttl)
|
|
73
|
-
: new LocalCacheClient(`${this.bucketName}.${name}`, this.ttl);
|
|
74
|
-
this.cache.set(name, tc);
|
|
75
|
-
}
|
|
76
|
-
return tc;
|
|
77
|
-
}
|
|
78
|
-
clear(name) {
|
|
79
|
-
if (!name) {
|
|
80
|
-
for (const element of this.cache.values()) {
|
|
81
|
-
element.clear();
|
|
82
|
-
}
|
|
83
|
-
this.cache.clear();
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
this.cache.get(name)?.clear();
|
|
87
|
-
}
|
|
88
|
-
[Symbol.dispose]() {
|
|
89
|
-
for (const element of this.cache.values()) {
|
|
90
|
-
element.clear();
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
;
|
|
95
|
-
export function localCache() {
|
|
96
|
-
return function (target, key) {
|
|
97
|
-
const oldMethod = target[key];
|
|
98
|
-
function value(...a) {
|
|
99
|
-
const cache = (this.cache ??= new ObjectLocalCache(`${globalEnv.serverID}:${target.constructor.name}`)).for(key);
|
|
100
|
-
const cacheKey = a.join();
|
|
101
|
-
return cache.getOrCreateAsync(cacheKey, (k) => {
|
|
102
|
-
const nv = oldMethod.apply(this, a);
|
|
103
|
-
nv?.catch((error) => {
|
|
104
|
-
console.error(`${key}(${cacheKey}) failed with`);
|
|
105
|
-
console.error(error);
|
|
106
|
-
cache.delete(cacheKey);
|
|
107
|
-
});
|
|
108
|
-
return nv;
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
const d = {
|
|
112
|
-
value,
|
|
113
|
-
enumerable: true,
|
|
114
|
-
configurable: true
|
|
115
|
-
};
|
|
116
|
-
Object.defineProperty(target, key, d);
|
|
117
|
-
return d;
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=LocalCache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LocalCache.js","sourceRoot":"","sources":["../../src/common/LocalCache.ts"],"names":[],"mappings":"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"}
|
package/src/common/JsonClient.ts
DELETED
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
import { connect, Socket } from "node:net";
|
|
2
|
-
import TimeoutError from "./errors/TimeoutError.js";
|
|
3
|
-
|
|
4
|
-
let nextId = 1;
|
|
5
|
-
|
|
6
|
-
export default class JsonClient {
|
|
7
|
-
|
|
8
|
-
private socket: Socket;
|
|
9
|
-
|
|
10
|
-
private pending = new Map<string,{ resolve, reject, timeout }>();
|
|
11
|
-
|
|
12
|
-
constructor(private readonly socketPath: string) {
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
public async sendCommand<TIn = any, TOut = any>(msg: { cmd } & TIn, log = true): Promise<TOut> {
|
|
17
|
-
await this.init();
|
|
18
|
-
const id = (nextId++).toString(36);
|
|
19
|
-
let resolve;
|
|
20
|
-
let reject;
|
|
21
|
-
const p = new Promise<TOut>((res, rej) => (resolve = res, reject = rej));
|
|
22
|
-
const timeout = setTimeout(() => {
|
|
23
|
-
this.pending.delete(id);
|
|
24
|
-
reject(new TimeoutError());
|
|
25
|
-
}, 15000);
|
|
26
|
-
this.pending.set(id, { resolve, reject, timeout});
|
|
27
|
-
(msg as any).id = id;
|
|
28
|
-
let line = "";
|
|
29
|
-
for (const text of this.recursiveGenerate(msg)) {
|
|
30
|
-
line += text;
|
|
31
|
-
}
|
|
32
|
-
this.socket.write(`${line}\n`, (error) => error && console.error(error));
|
|
33
|
-
// if (log) {
|
|
34
|
-
// console.log(line);
|
|
35
|
-
// }
|
|
36
|
-
const v: any = await p;
|
|
37
|
-
if(v?.value) {
|
|
38
|
-
this.resolveReferences(v, new Map());
|
|
39
|
-
}
|
|
40
|
-
return v;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
private resolveReferences(v, map: Map<any,any>) {
|
|
44
|
-
if (!v) {
|
|
45
|
-
return v;
|
|
46
|
-
}
|
|
47
|
-
if (Array.isArray(v)) {
|
|
48
|
-
return v.map((i) => this.resolveReferences(i, map));
|
|
49
|
-
}
|
|
50
|
-
if (typeof v !== "object") {
|
|
51
|
-
return v;
|
|
52
|
-
}
|
|
53
|
-
const { $ref, $id } = v;
|
|
54
|
-
if ($ref) {
|
|
55
|
-
return map.get($ref);
|
|
56
|
-
}
|
|
57
|
-
if ($id) {
|
|
58
|
-
map.set($id, v);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
for (const key in v) {
|
|
62
|
-
if (!Object.hasOwn(v, key)) {
|
|
63
|
-
continue;
|
|
64
|
-
}
|
|
65
|
-
v[key] = this.resolveReferences(v[key], map);
|
|
66
|
-
}
|
|
67
|
-
return v;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
private *recursiveGenerate(model, doneMap: Map<any,any> = new Map()): Generator<any, any, any> {
|
|
71
|
-
|
|
72
|
-
if (model === null) {
|
|
73
|
-
yield "null";
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
if (model === void 0) {
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
switch(typeof model) {
|
|
82
|
-
case "bigint":
|
|
83
|
-
case "string":
|
|
84
|
-
yield JSON.stringify(model.toString());
|
|
85
|
-
return;
|
|
86
|
-
case "number":
|
|
87
|
-
yield model.toString();
|
|
88
|
-
return;
|
|
89
|
-
case "boolean":
|
|
90
|
-
yield model ? "true" : "false";
|
|
91
|
-
return;
|
|
92
|
-
case "undefined":
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
if (model instanceof Date) {
|
|
97
|
-
yield `"${model.toJSON()}"`;
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
let suffix = "";
|
|
102
|
-
|
|
103
|
-
if (Array.isArray(model)) {
|
|
104
|
-
yield "[";
|
|
105
|
-
for (const element of model) {
|
|
106
|
-
if (element === void 0) {
|
|
107
|
-
continue;
|
|
108
|
-
}
|
|
109
|
-
if (suffix) {
|
|
110
|
-
yield suffix;
|
|
111
|
-
} else {
|
|
112
|
-
suffix = ",";
|
|
113
|
-
}
|
|
114
|
-
yield * this.recursiveGenerate(element, doneMap);
|
|
115
|
-
}
|
|
116
|
-
yield "]";
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
let $id = doneMap.get(model);
|
|
121
|
-
if ($id) {
|
|
122
|
-
yield `{"$ref": ${$id}}`;
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
$id = doneMap.size + 1;
|
|
126
|
-
doneMap.set(model, $id);
|
|
127
|
-
|
|
128
|
-
yield `{"$id": ${$id}`;
|
|
129
|
-
for (const key in model) {
|
|
130
|
-
if (Object.hasOwn(model, key)) {
|
|
131
|
-
const element = model[key];
|
|
132
|
-
if (element === void 0) {
|
|
133
|
-
continue;
|
|
134
|
-
}
|
|
135
|
-
yield ",";
|
|
136
|
-
yield JSON.stringify(key);
|
|
137
|
-
yield `:`;
|
|
138
|
-
if (element === null) {
|
|
139
|
-
yield "null";
|
|
140
|
-
continue;
|
|
141
|
-
}
|
|
142
|
-
switch(typeof element) {
|
|
143
|
-
case "bigint":
|
|
144
|
-
yield JSON.stringify(element.toString());
|
|
145
|
-
continue;
|
|
146
|
-
case "boolean":
|
|
147
|
-
yield element ? "true": "false";
|
|
148
|
-
continue;
|
|
149
|
-
case "string":
|
|
150
|
-
case "number":
|
|
151
|
-
yield JSON.stringify(element);
|
|
152
|
-
continue;
|
|
153
|
-
}
|
|
154
|
-
if (element instanceof Date) {
|
|
155
|
-
yield `"${element.toJSON()}"`;
|
|
156
|
-
continue;
|
|
157
|
-
}
|
|
158
|
-
yield *this.recursiveGenerate(element, doneMap);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
yield `}`;
|
|
163
|
-
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
private async init() {
|
|
167
|
-
const n = "\n".charCodeAt(0) as any;
|
|
168
|
-
const s = this.socket = await new Promise<Socket>((resolve, reject) => {
|
|
169
|
-
const s1 = connect({ path: this.socketPath }, () => {
|
|
170
|
-
resolve(s1);
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
|
|
174
|
-
s.on("error", (error) => {
|
|
175
|
-
console.error(error);
|
|
176
|
-
});
|
|
177
|
-
s.on("end", () => delete this.init);
|
|
178
|
-
s.on("close", () => delete this.init);
|
|
179
|
-
let buffer = null as Buffer;
|
|
180
|
-
s.on("data", (d: Buffer) => {
|
|
181
|
-
try {
|
|
182
|
-
// console.log(d.toString("utf-8"));
|
|
183
|
-
for(;;) {
|
|
184
|
-
const i = d.indexOf(n);
|
|
185
|
-
if (i === -1) {
|
|
186
|
-
buffer = buffer ? Buffer.concat([buffer, d]): d;
|
|
187
|
-
return;
|
|
188
|
-
}
|
|
189
|
-
const prefix = d.subarray(0, i);
|
|
190
|
-
|
|
191
|
-
const line = buffer ? Buffer.concat([buffer, prefix]) : prefix;
|
|
192
|
-
const lineText = line.toString("utf-8");
|
|
193
|
-
const parsed = JSON.parse(lineText);
|
|
194
|
-
const { id, error } = parsed;
|
|
195
|
-
const pending = this.pending.get(id);
|
|
196
|
-
if (pending) {
|
|
197
|
-
const { timeout} = pending;
|
|
198
|
-
clearTimeout(timeout);
|
|
199
|
-
this.pending.delete(id);
|
|
200
|
-
if (error) {
|
|
201
|
-
pending.reject(error);
|
|
202
|
-
} else {
|
|
203
|
-
pending.resolve(parsed);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
if (prefix.length === d.length) {
|
|
207
|
-
buffer = null;
|
|
208
|
-
break;
|
|
209
|
-
}
|
|
210
|
-
d = d.subarray(i+1);
|
|
211
|
-
}
|
|
212
|
-
} catch (error) {
|
|
213
|
-
console.error(error);
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
});
|
|
217
|
-
|
|
218
|
-
setInterval(() => {
|
|
219
|
-
|
|
220
|
-
this.sendCommand({ cmd: "ping"}, false).catch(console.error);
|
|
221
|
-
|
|
222
|
-
}, 5000);
|
|
223
|
-
|
|
224
|
-
const p = Promise.resolve();
|
|
225
|
-
Object.defineProperty(this, "init", { value: () => p, configurable: true});
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
}
|