@dra2020/baseclient 1.0.11 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -5
- package/dist/all/all.d.ts +18 -2
- package/dist/all/allclient.d.ts +18 -0
- package/dist/base.js +33010 -0
- package/dist/base.js.map +1 -0
- package/dist/baseclient.js +166 -1279
- package/dist/baseclient.js.map +1 -1
- package/dist/dbabstract/all.d.ts +1 -0
- package/dist/dbabstract/db.d.ts +83 -0
- package/dist/dbdynamo/all.d.ts +1 -0
- package/dist/dbdynamo/dbdynamo.d.ts +190 -0
- package/dist/filterexpr/filterexpr.d.ts +0 -3
- package/dist/fsm/fsm.d.ts +0 -1
- package/dist/fsmfile/all.d.ts +1 -0
- package/dist/fsmfile/fsmfile.d.ts +47 -0
- package/dist/jsonstream/all.d.ts +1 -0
- package/dist/jsonstream/jsonstream.d.ts +130 -0
- package/dist/lambda/all.d.ts +1 -0
- package/dist/lambda/env.d.ts +10 -0
- package/dist/lambda/lambda.d.ts +18 -0
- package/dist/logserver/all.d.ts +5 -0
- package/dist/logserver/log.d.ts +11 -0
- package/dist/logserver/logaccum.d.ts +154 -0
- package/dist/logserver/logblob.d.ts +24 -0
- package/dist/logserver/logconcat.d.ts +55 -0
- package/dist/logserver/logkey.d.ts +28 -0
- package/dist/memsqs/all.d.ts +4 -0
- package/dist/memsqs/client.d.ts +13 -0
- package/dist/memsqs/loopback.d.ts +11 -0
- package/dist/memsqs/orderedlist.d.ts +19 -0
- package/dist/memsqs/queue.d.ts +84 -0
- package/dist/memsqs/server.d.ts +37 -0
- package/dist/ot-js/otsession.d.ts +0 -3
- package/dist/poly/union.d.ts +0 -1
- package/dist/storage/all.d.ts +4 -0
- package/dist/storage/datablob.d.ts +9 -0
- package/dist/storage/env.d.ts +10 -0
- package/dist/storage/splitsblob.d.ts +13 -0
- package/dist/storage/storage.d.ts +166 -0
- package/dist/storages3/all.d.ts +1 -0
- package/dist/storages3/s3.d.ts +62 -0
- package/docs/dbabstract.md +2 -0
- package/docs/dbdynamo.md +2 -0
- package/docs/fsmfile.md +2 -0
- package/docs/jsonstream.md +44 -0
- package/docs/lambda.md +2 -0
- package/docs/logserver.md +2 -0
- package/docs/storage.md +2 -0
- package/docs/storages3.md +2 -0
- package/lib/all/all.ts +22 -2
- package/lib/all/allclient.ts +19 -0
- package/lib/dbabstract/all.ts +1 -0
- package/lib/dbabstract/db.ts +246 -0
- package/lib/dbdynamo/all.ts +1 -0
- package/lib/dbdynamo/dbdynamo.ts +1551 -0
- package/lib/filterexpr/filterexpr.ts +5 -79
- package/lib/fsm/fsm.ts +2 -12
- package/lib/fsmfile/all.ts +1 -0
- package/lib/fsmfile/fsmfile.ts +236 -0
- package/lib/jsonstream/all.ts +1 -0
- package/lib/jsonstream/jsonstream.ts +940 -0
- package/lib/lambda/all.ts +1 -0
- package/lib/lambda/env.ts +13 -0
- package/lib/lambda/lambda.ts +120 -0
- package/lib/logserver/all.ts +5 -0
- package/lib/logserver/log.ts +565 -0
- package/lib/logserver/logaccum.ts +1445 -0
- package/lib/logserver/logblob.ts +84 -0
- package/lib/logserver/logconcat.ts +313 -0
- package/lib/logserver/logkey.ts +125 -0
- package/lib/memsqs/all.ts +4 -0
- package/lib/memsqs/client.ts +268 -0
- package/lib/memsqs/loopback.ts +64 -0
- package/lib/memsqs/orderedlist.ts +74 -0
- package/lib/memsqs/queue.ts +395 -0
- package/lib/memsqs/server.ts +262 -0
- package/lib/ot-js/otsession.ts +1 -4
- package/lib/poly/hash.ts +1 -1
- package/lib/poly/topo.ts +41 -15
- package/lib/poly/union.ts +0 -17
- package/lib/storage/all.ts +4 -0
- package/lib/storage/datablob.ts +36 -0
- package/lib/storage/env.ts +14 -0
- package/lib/storage/splitsblob.ts +63 -0
- package/lib/storage/storage.ts +604 -0
- package/lib/storages3/all.ts +1 -0
- package/lib/storages3/s3.ts +576 -0
- package/package.json +10 -9
- package/dist/geo/all.d.ts +0 -2
- package/dist/geo/geo.d.ts +0 -67
- package/dist/geo/vfeature.d.ts +0 -4
- package/docs/filterexpr.md +0 -22
- package/lib/geo/all.ts +0 -2
- package/lib/geo/geo.ts +0 -452
- package/lib/geo/vfeature.ts +0 -34
|
@@ -484,45 +484,6 @@ function wordyDate(s: string): string
|
|
|
484
484
|
return s;
|
|
485
485
|
}
|
|
486
486
|
|
|
487
|
-
function clauseEqual(c1: Clause, c2: Clause): boolean
|
|
488
|
-
{
|
|
489
|
-
if (c1 == null && c2 == null) return true;
|
|
490
|
-
if (c1 == null || c2 == null) return false;
|
|
491
|
-
if (c1.op.tt === c2.op.tt)
|
|
492
|
-
{
|
|
493
|
-
if (c1.op.tt === TokType.Text)
|
|
494
|
-
return c1.op.text === c2.op.text;
|
|
495
|
-
else
|
|
496
|
-
return clauseEqual(c1.operand1, c2.operand1) && clauseEqual(c1.operand2, c2.operand2);
|
|
497
|
-
}
|
|
498
|
-
else
|
|
499
|
-
return false;
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
function containsClause(c: Clause, s: Clause): boolean
|
|
503
|
-
{
|
|
504
|
-
if (clauseEqual(c, s))
|
|
505
|
-
return true;
|
|
506
|
-
if (c == null || s == null) return false;
|
|
507
|
-
return containsClause(c.operand1, s) || containsClause(c.operand2, s);
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
function removeClause(c: Clause, s: Clause): Clause
|
|
511
|
-
{
|
|
512
|
-
if (c == null || (c.op.tt === TokType.Text && c.op.tt !== s.op.tt))
|
|
513
|
-
return c;
|
|
514
|
-
else if (clauseEqual(c, s))
|
|
515
|
-
return null;
|
|
516
|
-
else
|
|
517
|
-
{
|
|
518
|
-
c.operand1 = removeClause(c.operand1, s);
|
|
519
|
-
c.operand2 = removeClause(c.operand2, s);
|
|
520
|
-
if ((c.op.tt === TokType.And || c.op.tt === TokType.Or) && (c.operand1 == null || c.operand2 == null))
|
|
521
|
-
return c.operand1 || c.operand2;
|
|
522
|
-
return c;
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
|
|
526
487
|
export class FilterExpr
|
|
527
488
|
{
|
|
528
489
|
lexer: Lexer;
|
|
@@ -551,47 +512,12 @@ export class FilterExpr
|
|
|
551
512
|
return this.asStringClause(this.parser.clause);
|
|
552
513
|
}
|
|
553
514
|
|
|
554
|
-
containsClause(expr: string): boolean
|
|
555
|
-
{
|
|
556
|
-
let sub = new FilterExpr(this.lexer.coder, expr);
|
|
557
|
-
return containsClause(this.parser.clause, sub.parser.clause);
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
addClause(expr: string): void
|
|
561
|
-
{
|
|
562
|
-
let sub = new FilterExpr(this.lexer.coder, expr);
|
|
563
|
-
if (! containsClause(this.parser.clause, sub.parser.clause))
|
|
564
|
-
{
|
|
565
|
-
if (this.parser.clause)
|
|
566
|
-
this.parser.clauses = [ { op: { tt: TokType.And }, operand1: this.parser.clause, operand2: sub.parser.clause } ];
|
|
567
|
-
else
|
|
568
|
-
this.parser.clauses = [ sub.parser.clause ];
|
|
569
|
-
}
|
|
570
|
-
}
|
|
571
|
-
|
|
572
|
-
removeClause(expr: string): void
|
|
573
|
-
{
|
|
574
|
-
if (this.containsClause(expr))
|
|
575
|
-
{
|
|
576
|
-
let sub = new FilterExpr(this.lexer.coder, expr);
|
|
577
|
-
this.parser.clauses = [ removeClause(this.parser.clause, sub.parser.clause) ];
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
|
|
581
515
|
asStringClause(clause: Clause): string
|
|
582
516
|
{
|
|
583
517
|
if (clause == null) return '';
|
|
584
|
-
if (clause.op.tt == TokType.Text)
|
|
585
|
-
{
|
|
586
|
-
this.lexer.set(clause.op.text);
|
|
587
|
-
if (this.lexer.tokens.length == 1 && this.lexer.tokens[0].tt === TokType.Text)
|
|
588
|
-
return clause.op.text;
|
|
589
|
-
else
|
|
590
|
-
return `'${clause.op.text}'`;
|
|
591
|
-
}
|
|
518
|
+
if (clause.op.tt == TokType.Text) return `'${clause.op.text}'`;
|
|
592
519
|
let a: string[] = [];
|
|
593
|
-
|
|
594
|
-
a.push('(');
|
|
520
|
+
a.push('(');
|
|
595
521
|
switch (clause.op.tt)
|
|
596
522
|
{
|
|
597
523
|
case TokType.And:
|
|
@@ -609,7 +535,8 @@ export class FilterExpr
|
|
|
609
535
|
a.push(this.asStringClause(clause.operand1));
|
|
610
536
|
break;
|
|
611
537
|
case TokType.Colon:
|
|
612
|
-
a.push(
|
|
538
|
+
a.push(this.asStringClause(clause.operand1));
|
|
539
|
+
a.push(':');
|
|
613
540
|
a.push(this.asStringClause(clause.operand2));
|
|
614
541
|
break;
|
|
615
542
|
case TokType.Equal:
|
|
@@ -624,8 +551,7 @@ export class FilterExpr
|
|
|
624
551
|
default:
|
|
625
552
|
throw 'Unexpected token in asString';
|
|
626
553
|
}
|
|
627
|
-
|
|
628
|
-
a.push(')');
|
|
554
|
+
a.push(')');
|
|
629
555
|
return a.join(' ');
|
|
630
556
|
}
|
|
631
557
|
|
package/lib/fsm/fsm.ts
CHANGED
|
@@ -291,7 +291,6 @@ export class FsmOnDone extends Fsm
|
|
|
291
291
|
export class FsmSleep extends Fsm
|
|
292
292
|
{
|
|
293
293
|
delay: number;
|
|
294
|
-
timeoutHandle: any;
|
|
295
294
|
|
|
296
295
|
constructor(env: FsmEnvironment, delay: number)
|
|
297
296
|
{
|
|
@@ -301,19 +300,10 @@ export class FsmSleep extends Fsm
|
|
|
301
300
|
|
|
302
301
|
tick(): void
|
|
303
302
|
{
|
|
304
|
-
|
|
305
|
-
if (this.done && this.timeoutHandle !== undefined)
|
|
306
|
-
{
|
|
307
|
-
clearTimeout(this.timeoutHandle);
|
|
308
|
-
delete this.timeoutHandle;
|
|
309
|
-
}
|
|
310
|
-
else if (this.ready && this.state === FSM_STARTING)
|
|
303
|
+
if (this.ready && this.state === FSM_STARTING)
|
|
311
304
|
{
|
|
312
305
|
this.setState(FSM_PENDING);
|
|
313
|
-
|
|
314
|
-
delete this.timeoutHandle;
|
|
315
|
-
this.setState(FSM_DONE)
|
|
316
|
-
}, this.delay);
|
|
306
|
+
setTimeout(() => { this.setState(FSM_DONE); }, this.delay);
|
|
317
307
|
}
|
|
318
308
|
}
|
|
319
309
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './fsmfile';
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
// Node libraries
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
|
|
4
|
+
// Shared libraries
|
|
5
|
+
import * as LogAbstract from '../logabstract/all';
|
|
6
|
+
import * as FSM from '../fsm/all';
|
|
7
|
+
|
|
8
|
+
export interface Environment
|
|
9
|
+
{
|
|
10
|
+
log: LogAbstract.ILog;
|
|
11
|
+
fsmManager: FSM.FsmManager;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const FSM_READING = FSM.FSM_CUSTOM1;
|
|
15
|
+
const FSM_WRITING = FSM.FSM_CUSTOM1;
|
|
16
|
+
|
|
17
|
+
export class FsmUnlink extends FSM.Fsm
|
|
18
|
+
{
|
|
19
|
+
path: string;
|
|
20
|
+
err: any;
|
|
21
|
+
|
|
22
|
+
constructor(env: Environment, path: string)
|
|
23
|
+
{
|
|
24
|
+
super(env);
|
|
25
|
+
this.path = path;
|
|
26
|
+
this.err = null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
tick(): void
|
|
30
|
+
{
|
|
31
|
+
if (this.ready && this.state === FSM.FSM_STARTING)
|
|
32
|
+
{
|
|
33
|
+
this.setState(FSM.FSM_PENDING);
|
|
34
|
+
fs.unlink(this.path, (err: any) => {
|
|
35
|
+
if (err)
|
|
36
|
+
{
|
|
37
|
+
this.setState(FSM.FSM_ERROR);
|
|
38
|
+
this.err = err;
|
|
39
|
+
}
|
|
40
|
+
else
|
|
41
|
+
this.setState(FSM.FSM_DONE);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export class FsmMkdir extends FSM.Fsm
|
|
48
|
+
{
|
|
49
|
+
dir: string;
|
|
50
|
+
bAllowExist: boolean;
|
|
51
|
+
err: any;
|
|
52
|
+
|
|
53
|
+
constructor(env: Environment, dir: string, bAllowExist: boolean = true)
|
|
54
|
+
{
|
|
55
|
+
super(env);
|
|
56
|
+
this.dir = dir;
|
|
57
|
+
this.err = null;
|
|
58
|
+
this.bAllowExist = true;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
tick(): void
|
|
62
|
+
{
|
|
63
|
+
if (this.ready && this.state == FSM.FSM_STARTING)
|
|
64
|
+
{
|
|
65
|
+
this.err = null;
|
|
66
|
+
this.setState(FSM.FSM_PENDING);
|
|
67
|
+
fs.mkdir(this.dir, 0o777, (err: any) => {
|
|
68
|
+
// ignore EEXISTS errors
|
|
69
|
+
if (err === null || (this.bAllowExist && err.code === 'EEXIST'))
|
|
70
|
+
this.setState(FSM.FSM_DONE);
|
|
71
|
+
else
|
|
72
|
+
{
|
|
73
|
+
this.err = err;
|
|
74
|
+
this.setState(FSM.FSM_ERROR);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export class FsmRmdir extends FSM.Fsm
|
|
82
|
+
{
|
|
83
|
+
dir: string;
|
|
84
|
+
err: any;
|
|
85
|
+
|
|
86
|
+
constructor(env: Environment, dir: string)
|
|
87
|
+
{
|
|
88
|
+
super(env);
|
|
89
|
+
this.dir = dir;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
tick(): void
|
|
93
|
+
{
|
|
94
|
+
if (this.ready && this.state == FSM.FSM_STARTING)
|
|
95
|
+
{
|
|
96
|
+
this.err = null;
|
|
97
|
+
this.setState(FSM.FSM_PENDING);
|
|
98
|
+
fs.rmdir(this.dir, (err: any) => {
|
|
99
|
+
// ignore ENOENT errors
|
|
100
|
+
if (err === null || err.code === 'ENOENT')
|
|
101
|
+
this.setState(FSM.FSM_DONE);
|
|
102
|
+
else
|
|
103
|
+
{
|
|
104
|
+
this.err = err;
|
|
105
|
+
this.setState(FSM.FSM_ERROR);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export class FsmLs extends FSM.Fsm
|
|
113
|
+
{
|
|
114
|
+
dir: string;
|
|
115
|
+
err: any;
|
|
116
|
+
entries: string[];
|
|
117
|
+
|
|
118
|
+
constructor(env: Environment, dir: string)
|
|
119
|
+
{
|
|
120
|
+
super(env);
|
|
121
|
+
this.dir = dir;
|
|
122
|
+
this.err = null;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
tick(): void
|
|
126
|
+
{
|
|
127
|
+
if (this.ready)
|
|
128
|
+
{
|
|
129
|
+
switch (this.state)
|
|
130
|
+
{
|
|
131
|
+
case FSM.FSM_STARTING:
|
|
132
|
+
this.setState(FSM.FSM_PENDING);
|
|
133
|
+
fs.readdir(this.dir, (err: any, entries: string[]) => {
|
|
134
|
+
if (err)
|
|
135
|
+
{
|
|
136
|
+
this.err = err;
|
|
137
|
+
this.setState(FSM.FSM_ERROR);
|
|
138
|
+
}
|
|
139
|
+
else
|
|
140
|
+
{
|
|
141
|
+
this.entries = entries;
|
|
142
|
+
this.setState(FSM.FSM_DONE);
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export class FsmReadFile extends FSM.Fsm
|
|
152
|
+
{
|
|
153
|
+
path: string;
|
|
154
|
+
result: string;
|
|
155
|
+
err: any;
|
|
156
|
+
|
|
157
|
+
constructor(env: Environment, path: string)
|
|
158
|
+
{
|
|
159
|
+
super(env);
|
|
160
|
+
|
|
161
|
+
this.path = path;
|
|
162
|
+
this.result = null;
|
|
163
|
+
this.err = null;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
tick(): void
|
|
167
|
+
{
|
|
168
|
+
if (this.ready)
|
|
169
|
+
{
|
|
170
|
+
switch (this.state)
|
|
171
|
+
{
|
|
172
|
+
case FSM.FSM_STARTING:
|
|
173
|
+
this.err = null;
|
|
174
|
+
this.result = null;
|
|
175
|
+
this.setState(FSM_READING);
|
|
176
|
+
fs.readFile(this.path, 'utf8', (err: any, data: string) => {
|
|
177
|
+
if (err)
|
|
178
|
+
{
|
|
179
|
+
this.result = null;
|
|
180
|
+
this.err = err;
|
|
181
|
+
this.setState(FSM.FSM_ERROR);
|
|
182
|
+
}
|
|
183
|
+
else
|
|
184
|
+
{
|
|
185
|
+
this.err = null;
|
|
186
|
+
this.result = data;
|
|
187
|
+
this.setState(FSM.FSM_DONE);
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export class FsmWriteFile extends FSM.Fsm
|
|
197
|
+
{
|
|
198
|
+
path: string;
|
|
199
|
+
contents: string | Buffer;
|
|
200
|
+
err: any;
|
|
201
|
+
|
|
202
|
+
constructor(env: Environment, path: string, contents: string | Buffer)
|
|
203
|
+
{
|
|
204
|
+
super(env);
|
|
205
|
+
|
|
206
|
+
this.path = path;
|
|
207
|
+
this.contents = contents;
|
|
208
|
+
this.err = null;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
tick(): void
|
|
212
|
+
{
|
|
213
|
+
if (this.ready)
|
|
214
|
+
{
|
|
215
|
+
switch (this.state)
|
|
216
|
+
{
|
|
217
|
+
case FSM.FSM_STARTING:
|
|
218
|
+
this.err = null;
|
|
219
|
+
this.setState(FSM_WRITING);
|
|
220
|
+
fs.writeFile(this.path, this.contents, (err: any) => {
|
|
221
|
+
if (err)
|
|
222
|
+
{
|
|
223
|
+
this.err = err;
|
|
224
|
+
this.setState(FSM.FSM_ERROR);
|
|
225
|
+
}
|
|
226
|
+
else
|
|
227
|
+
{
|
|
228
|
+
this.err = null;
|
|
229
|
+
this.setState(FSM.FSM_DONE);
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './jsonstream';
|