@adviser/cement 0.5.12 → 0.5.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/cjs/base-basic-sys-abstraction.test.cjs +1 -2
- package/cjs/base-basic-sys-abstraction.test.cjs.map +1 -1
- package/cjs/base-service.cjs +67 -0
- package/cjs/base-service.cjs.map +1 -0
- package/cjs/base-service.d.ts +27 -0
- package/cjs/base-service.d.ts.map +1 -0
- package/cjs/base-sys-abstraction.cjs +6 -49
- package/cjs/base-sys-abstraction.cjs.map +1 -1
- package/cjs/base-sys-abstraction.d.ts +2 -14
- package/cjs/base-sys-abstraction.d.ts.map +1 -1
- package/cjs/evento.cjs +104 -20
- package/cjs/evento.cjs.map +1 -1
- package/cjs/evento.d.ts +51 -7
- package/cjs/evento.d.ts.map +1 -1
- package/cjs/evento.test.cjs +139 -24
- package/cjs/evento.test.cjs.map +1 -1
- package/cjs/index.cjs +1 -0
- package/cjs/index.cjs.map +1 -1
- package/cjs/index.d.ts +1 -0
- package/cjs/index.d.ts.map +1 -1
- package/cjs/sys-abstraction.cjs +1 -11
- package/cjs/sys-abstraction.cjs.map +1 -1
- package/cjs/sys-abstraction.d.ts +0 -12
- package/cjs/sys-abstraction.d.ts.map +1 -1
- package/cjs/version.cjs +1 -1
- package/deno.json +1 -1
- package/esm/base-basic-sys-abstraction.test.js +2 -3
- package/esm/base-basic-sys-abstraction.test.js.map +1 -1
- package/esm/base-service.d.ts +27 -0
- package/esm/base-service.d.ts.map +1 -0
- package/esm/base-service.js +62 -0
- package/esm/base-service.js.map +1 -0
- package/esm/base-sys-abstraction.d.ts +2 -14
- package/esm/base-sys-abstraction.d.ts.map +1 -1
- package/esm/base-sys-abstraction.js +6 -47
- package/esm/base-sys-abstraction.js.map +1 -1
- package/esm/evento.d.ts +51 -7
- package/esm/evento.d.ts.map +1 -1
- package/esm/evento.js +101 -19
- package/esm/evento.js.map +1 -1
- package/esm/evento.test.js +140 -25
- package/esm/evento.test.js.map +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/sys-abstraction.d.ts +0 -12
- package/esm/sys-abstraction.d.ts.map +1 -1
- package/esm/sys-abstraction.js +0 -10
- package/esm/sys-abstraction.js.map +1 -1
- package/esm/version.js +1 -1
- package/package.json +1 -1
- package/src/base-service.ts +129 -0
- package/src/base-sys-abstraction.ts +6 -118
- package/src/evento.ts +159 -45
- package/src/index.ts +1 -0
- package/src/sys-abstraction.ts +0 -14
- package/ts/cjs/base-basic-sys-abstraction.test.js +1 -2
- package/ts/cjs/base-basic-sys-abstraction.test.js.map +1 -1
- package/ts/cjs/base-service.d.ts +27 -0
- package/ts/cjs/base-service.d.ts.map +1 -0
- package/ts/cjs/base-service.js +67 -0
- package/ts/cjs/base-service.js.map +1 -0
- package/ts/cjs/base-sys-abstraction.d.ts +2 -14
- package/ts/cjs/base-sys-abstraction.d.ts.map +1 -1
- package/ts/cjs/base-sys-abstraction.js +6 -49
- package/ts/cjs/base-sys-abstraction.js.map +1 -1
- package/ts/cjs/evento.d.ts +51 -7
- package/ts/cjs/evento.d.ts.map +1 -1
- package/ts/cjs/evento.js +104 -20
- package/ts/cjs/evento.js.map +1 -1
- package/ts/cjs/evento.test.js +139 -24
- package/ts/cjs/evento.test.js.map +1 -1
- package/ts/cjs/index.d.ts +1 -0
- package/ts/cjs/index.d.ts.map +1 -1
- package/ts/cjs/index.js +1 -0
- package/ts/cjs/index.js.map +1 -1
- package/ts/cjs/sys-abstraction.d.ts +0 -12
- package/ts/cjs/sys-abstraction.d.ts.map +1 -1
- package/ts/cjs/sys-abstraction.js +1 -11
- package/ts/cjs/sys-abstraction.js.map +1 -1
- package/ts/cjs/version.js +1 -1
- package/ts/esm/base-basic-sys-abstraction.test.js +2 -3
- package/ts/esm/base-basic-sys-abstraction.test.js.map +1 -1
- package/ts/esm/base-service.d.ts +27 -0
- package/ts/esm/base-service.d.ts.map +1 -0
- package/ts/esm/base-service.js +62 -0
- package/ts/esm/base-service.js.map +1 -0
- package/ts/esm/base-sys-abstraction.d.ts +2 -14
- package/ts/esm/base-sys-abstraction.d.ts.map +1 -1
- package/ts/esm/base-sys-abstraction.js +6 -47
- package/ts/esm/base-sys-abstraction.js.map +1 -1
- package/ts/esm/evento.d.ts +51 -7
- package/ts/esm/evento.d.ts.map +1 -1
- package/ts/esm/evento.js +101 -19
- package/ts/esm/evento.js.map +1 -1
- package/ts/esm/evento.test.js +140 -25
- package/ts/esm/evento.test.js.map +1 -1
- package/ts/esm/index.d.ts +1 -0
- package/ts/esm/index.d.ts.map +1 -1
- package/ts/esm/index.js +1 -0
- package/ts/esm/index.js.map +1 -1
- package/ts/esm/sys-abstraction.d.ts +0 -12
- package/ts/esm/sys-abstraction.d.ts.map +1 -1
- package/ts/esm/sys-abstraction.js +0 -10
- package/ts/esm/sys-abstraction.js.map +1 -1
- package/ts/esm/version.js +1 -1
package/src/evento.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AppContext } from "./app-context.js";
|
|
2
|
+
import { IdService } from "./base-service.js";
|
|
2
3
|
import { Option } from "./option.js";
|
|
3
4
|
import { ResolveOnce } from "./resolve-once.js";
|
|
4
5
|
import { exception2Result, Result } from "./result.js";
|
|
@@ -36,7 +37,7 @@ export interface EventoEnDecoder<REQ, RES> {
|
|
|
36
37
|
* @typeParam REQ - The validated request type
|
|
37
38
|
* @typeParam RES - The response type
|
|
38
39
|
*/
|
|
39
|
-
export interface
|
|
40
|
+
export interface EventoSendProvider<INREQ, REQ, RES> {
|
|
40
41
|
/**
|
|
41
42
|
* Optional hook called once before the first handler processes the event.
|
|
42
43
|
*
|
|
@@ -65,14 +66,67 @@ export interface EventoSend<INREQ, REQ, RES> {
|
|
|
65
66
|
done?(trigger: HandleTriggerCtx<INREQ, REQ, RES>): Promise<Result<void>>;
|
|
66
67
|
}
|
|
67
68
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
69
|
+
export interface ActionStat {
|
|
70
|
+
startTime: Date;
|
|
71
|
+
doneTime: Date;
|
|
72
|
+
}
|
|
73
|
+
export interface SendStatItem<T> extends ActionStat {
|
|
74
|
+
readonly item: Result<T>;
|
|
75
|
+
}
|
|
76
|
+
export interface SendStat extends ActionStat {
|
|
77
|
+
items: SendStatItem<unknown>[];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export type RequestStat = ActionStat;
|
|
81
|
+
|
|
82
|
+
export interface TriggerStats {
|
|
83
|
+
readonly request: RequestStat;
|
|
84
|
+
readonly encode: ActionStat;
|
|
85
|
+
readonly handlers: {
|
|
86
|
+
readonly handler: EventoHandler;
|
|
87
|
+
readonly total: ActionStat;
|
|
88
|
+
readonly validated: ActionStat;
|
|
89
|
+
readonly handled: ActionStat;
|
|
90
|
+
}[];
|
|
91
|
+
readonly send: SendStat;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export class EventoSend<INREQ, REQ, RES> {
|
|
95
|
+
readonly provider: EventoSendProvider<INREQ, REQ, RES>;
|
|
96
|
+
|
|
97
|
+
constructor(provider: EventoSendProvider<INREQ, REQ, RES>) {
|
|
98
|
+
this.provider = provider;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
start(trigger: HandleTriggerCtx<INREQ, REQ, RES>): Promise<Result<void>> {
|
|
102
|
+
trigger.stats.send.startTime = new Date();
|
|
103
|
+
if (this.provider.start) {
|
|
104
|
+
return this.provider.start(trigger);
|
|
105
|
+
}
|
|
106
|
+
return Promise.resolve(Result.Ok());
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
done(trigger: HandleTriggerCtx<INREQ, REQ, RES>): Promise<Result<void>> {
|
|
110
|
+
trigger.stats.send.doneTime = new Date();
|
|
111
|
+
if (this.provider.done) {
|
|
112
|
+
return this.provider.done(trigger);
|
|
113
|
+
}
|
|
114
|
+
return Promise.resolve(Result.Ok());
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
async send<IS, OS>(trigger: HandleTriggerCtx<INREQ, REQ, RES>, data: IS): Promise<Result<SendStatItem<OS>>> {
|
|
118
|
+
const start = new Date();
|
|
119
|
+
const rSend = await this.provider.send<IS, OS>(trigger, data);
|
|
120
|
+
const done = new Date();
|
|
121
|
+
const item: SendStatItem<OS> = {
|
|
122
|
+
startTime: start,
|
|
123
|
+
doneTime: done,
|
|
124
|
+
item: rSend,
|
|
125
|
+
};
|
|
126
|
+
trigger.stats.send.items.push(item);
|
|
127
|
+
return Result.Ok(item);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
76
130
|
|
|
77
131
|
/**
|
|
78
132
|
* Base interface for trigger context containing core dependencies.
|
|
@@ -81,8 +135,7 @@ export interface EventoSend<INREQ, REQ, RES> {
|
|
|
81
135
|
* @typeParam REQ - The validated request type
|
|
82
136
|
* @typeParam RES - The response type
|
|
83
137
|
*/
|
|
84
|
-
export interface TriggerCtxBase<INREQ,
|
|
85
|
-
send: EventoSend<INREQ, REQ, RES>;
|
|
138
|
+
export interface TriggerCtxBase<INREQ, RES> {
|
|
86
139
|
ctx: AppContext;
|
|
87
140
|
encoder: EventoEnDecoder<INREQ, RES>;
|
|
88
141
|
}
|
|
@@ -90,14 +143,21 @@ export interface TriggerCtxBase<INREQ, REQ, RES> {
|
|
|
90
143
|
/**
|
|
91
144
|
* Readonly version of the base trigger context.
|
|
92
145
|
*/
|
|
93
|
-
export type ReadonlyTriggerCtxBase<INREQ, REQ, RES> = Readonly<TriggerCtxBase<INREQ,
|
|
146
|
+
export type ReadonlyTriggerCtxBase<INREQ, REQ, RES> = Readonly<TriggerCtxBase<INREQ, RES>> & {
|
|
147
|
+
readonly send: EventoSend<INREQ, REQ, RES>;
|
|
148
|
+
readonly stats: TriggerStats;
|
|
149
|
+
};
|
|
94
150
|
|
|
95
151
|
/**
|
|
96
152
|
* Parameters for creating a trigger context.
|
|
97
153
|
* Requires send, but ctx and encoder are optional and will use defaults.
|
|
98
154
|
*/
|
|
99
|
-
export type TriggerCtxBaseParams<INREQ, REQ, RES> =
|
|
100
|
-
Partial<Pick<ReadonlyTriggerCtxBase<INREQ, REQ, RES>, "ctx" | "encoder"
|
|
155
|
+
export type TriggerCtxBaseParams<INREQ, REQ, RES> = Partial<Omit<ReadonlyTriggerCtxBase<INREQ, REQ, RES>, "send">> &
|
|
156
|
+
Partial<Pick<ReadonlyTriggerCtxBase<INREQ, REQ, RES>, "ctx" | "encoder">> & {
|
|
157
|
+
send: EventoSendProvider<INREQ, REQ, RES>;
|
|
158
|
+
stats?: TriggerStats;
|
|
159
|
+
idService?: IdService;
|
|
160
|
+
};
|
|
101
161
|
|
|
102
162
|
/**
|
|
103
163
|
* Complete parameters for triggering an event, including optional request data.
|
|
@@ -113,6 +173,20 @@ export type TriggerCtx<INREQ, REQ, RES> =
|
|
|
113
173
|
| (ReadonlyTriggerCtxBase<INREQ, REQ, RES> & { enRequest: unknown })
|
|
114
174
|
| (ReadonlyTriggerCtxBase<INREQ, REQ, RES> & { enRequest: unknown; request: INREQ });
|
|
115
175
|
|
|
176
|
+
export type TriggerResult<INREQ, REQ, RES> = Omit<ReadonlyTriggerCtxBase<INREQ, REQ, RES>, "send"> & {
|
|
177
|
+
readonly send: EventoSend<INREQ, REQ, RES>;
|
|
178
|
+
readonly stats: TriggerStats;
|
|
179
|
+
readonly id: string;
|
|
180
|
+
} & Partial<MutableHandleTriggerCtx<INREQ, REQ>>;
|
|
181
|
+
|
|
182
|
+
export class TriggerResultError<INREQ, REQ, RES> extends Error {
|
|
183
|
+
readonly ctx: TriggerResult<INREQ, REQ, RES>;
|
|
184
|
+
constructor(message: string, ctx: TriggerResult<INREQ, REQ, RES>) {
|
|
185
|
+
super(message);
|
|
186
|
+
this.ctx = ctx;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
116
190
|
/**
|
|
117
191
|
* Context provided to validation handlers.
|
|
118
192
|
* Contains the encoded request data for validation.
|
|
@@ -131,7 +205,6 @@ export interface MutableHandleTriggerCtx<INREQ, REQ> {
|
|
|
131
205
|
enRequest: unknown;
|
|
132
206
|
validated: REQ;
|
|
133
207
|
error?: Error;
|
|
134
|
-
triggerResult?: string[];
|
|
135
208
|
}
|
|
136
209
|
|
|
137
210
|
/**
|
|
@@ -458,25 +531,47 @@ export class Evento {
|
|
|
458
531
|
* @param ictx - The trigger context parameters
|
|
459
532
|
* @returns A Result containing an array of handler hashes that processed the event
|
|
460
533
|
*/
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
| ValidateTriggerCtx<INREQ, REQ, RES>
|
|
465
|
-
| (ReadonlyTriggerCtxBase<INREQ, REQ, RES> & Partial<MutableHandleTriggerCtx<INREQ, REQ>>)
|
|
466
|
-
| object = {};
|
|
534
|
+
|
|
535
|
+
async trigger<INREQ, REQ, RES>(ictx: TriggerCtxParams<INREQ, REQ, RES>): Promise<Result<TriggerResult<INREQ, REQ, RES>>> {
|
|
536
|
+
let stepCtx: TriggerResult<INREQ, REQ, RES> | null = null;
|
|
467
537
|
const toPost: EventoHandler[] = [];
|
|
468
538
|
const startOnce = new ResolveOnce<Result<HandleTriggerCtx<INREQ, REQ, RES>>>();
|
|
469
539
|
const res = await exception2Result(async (): Promise<Result<string[]>> => {
|
|
470
|
-
const
|
|
540
|
+
const nullDate = new Date(0);
|
|
541
|
+
const ctx: Omit<ReadonlyTriggerCtxBase<INREQ, REQ, RES>, "send"> & {
|
|
542
|
+
readonly send: EventoSend<INREQ, REQ, RES>;
|
|
543
|
+
readonly stats: TriggerStats;
|
|
544
|
+
readonly id: string;
|
|
545
|
+
} & Partial<MutableHandleTriggerCtx<INREQ, REQ>> = {
|
|
471
546
|
...ictx,
|
|
472
547
|
encoder: ictx.encoder ?? (this.encoder as EventoEnDecoder<INREQ, RES>),
|
|
548
|
+
stats: ictx.stats ?? {
|
|
549
|
+
request: {
|
|
550
|
+
startTime: new Date(),
|
|
551
|
+
doneTime: nullDate,
|
|
552
|
+
},
|
|
553
|
+
encode: {
|
|
554
|
+
startTime: nullDate,
|
|
555
|
+
doneTime: nullDate,
|
|
556
|
+
},
|
|
557
|
+
handlers: [],
|
|
558
|
+
send: {
|
|
559
|
+
startTime: nullDate,
|
|
560
|
+
doneTime: nullDate,
|
|
561
|
+
items: [],
|
|
562
|
+
},
|
|
563
|
+
},
|
|
564
|
+
send: new EventoSend(ictx.send),
|
|
473
565
|
ctx: ictx.ctx ?? new AppContext(),
|
|
566
|
+
id: (ictx.idService ?? IdService.create()).NextId(),
|
|
474
567
|
};
|
|
475
568
|
stepCtx = ctx;
|
|
476
569
|
const results: string[] = [];
|
|
477
570
|
// this skips encoding if already encoded
|
|
478
571
|
if (!ctx.enRequest) {
|
|
572
|
+
ctx.stats.encode.startTime = new Date();
|
|
479
573
|
const rUnk = await this.encoder.encode(ctx.request as never);
|
|
574
|
+
ctx.stats.encode.doneTime = new Date();
|
|
480
575
|
if (rUnk.isErr()) {
|
|
481
576
|
return Result.Err(rUnk);
|
|
482
577
|
}
|
|
@@ -499,8 +594,27 @@ export class Evento {
|
|
|
499
594
|
if (hdl.post) {
|
|
500
595
|
toPost.push(hdl);
|
|
501
596
|
}
|
|
597
|
+
const stat = {
|
|
598
|
+
handler: hdl,
|
|
599
|
+
total: {
|
|
600
|
+
startTime: new Date(),
|
|
601
|
+
doneTime: nullDate,
|
|
602
|
+
},
|
|
603
|
+
validated: {
|
|
604
|
+
startTime: nullDate,
|
|
605
|
+
doneTime: nullDate,
|
|
606
|
+
},
|
|
607
|
+
handled: {
|
|
608
|
+
startTime: nullDate,
|
|
609
|
+
doneTime: nullDate,
|
|
610
|
+
},
|
|
611
|
+
};
|
|
612
|
+
ctx.stats.handlers.push(stat);
|
|
613
|
+
stat.validated.startTime = new Date();
|
|
502
614
|
const rData = await Promise.resolve(hdl.validate ? hdl.validate(validateCtx) : Result.Ok(Option.Some(ctx.enRequest)));
|
|
615
|
+
stat.validated.doneTime = new Date();
|
|
503
616
|
if (rData.isErr()) {
|
|
617
|
+
stat.total.doneTime = new Date();
|
|
504
618
|
return Result.Err(rData);
|
|
505
619
|
}
|
|
506
620
|
const data = rData.Ok();
|
|
@@ -513,22 +627,24 @@ export class Evento {
|
|
|
513
627
|
request: ctx.request as INREQ,
|
|
514
628
|
enRequest: ctx.enRequest,
|
|
515
629
|
}); // satisfies HandleTriggerCtx<INREQ, REQ, RES>;
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
);
|
|
526
|
-
|
|
527
|
-
return Result.Err(rStart);
|
|
528
|
-
}
|
|
630
|
+
const rStart = await startOnce.once(() =>
|
|
631
|
+
ctx.send.start(hdlCtx).then((rv): Result<HandleTriggerCtx<INREQ, REQ, RES>> => {
|
|
632
|
+
if (rv.isErr()) {
|
|
633
|
+
return Result.Err(rv);
|
|
634
|
+
}
|
|
635
|
+
return Result.Ok(hdlCtx);
|
|
636
|
+
}),
|
|
637
|
+
);
|
|
638
|
+
if (rStart.isErr()) {
|
|
639
|
+
stat.total.doneTime = new Date();
|
|
640
|
+
return Result.Err(rStart);
|
|
529
641
|
}
|
|
642
|
+
stat.handled.startTime = new Date();
|
|
530
643
|
const rHandle = await hdl.handle(hdlCtx);
|
|
644
|
+
stat.handled.doneTime = new Date();
|
|
645
|
+
stat.total.doneTime = new Date();
|
|
531
646
|
if (rHandle.isErr()) {
|
|
647
|
+
stat.total.doneTime = new Date();
|
|
532
648
|
return Result.Err(rHandle);
|
|
533
649
|
}
|
|
534
650
|
results.push(hdl.hash);
|
|
@@ -536,13 +652,12 @@ export class Evento {
|
|
|
536
652
|
break;
|
|
537
653
|
}
|
|
538
654
|
}
|
|
539
|
-
|
|
540
655
|
return Result.Ok(results);
|
|
541
656
|
});
|
|
657
|
+
if (!stepCtx) {
|
|
658
|
+
throw new Error("Internal error: stepCtx is null");
|
|
659
|
+
}
|
|
542
660
|
for (const hdl of toPost) {
|
|
543
|
-
if (res.isOk()) {
|
|
544
|
-
(stepCtx as MutableHandleTriggerCtx<INREQ, REQ>).triggerResult = res.Ok();
|
|
545
|
-
}
|
|
546
661
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
547
662
|
await exception2Result(() => hdl.post!(stepCtx as HandleTriggerCtx<INREQ, REQ, RES>));
|
|
548
663
|
}
|
|
@@ -552,12 +667,11 @@ export class Evento {
|
|
|
552
667
|
await exception2Result(() => hdl.handle(stepCtx as HandleTriggerCtx<INREQ, REQ, RES>));
|
|
553
668
|
}
|
|
554
669
|
}
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
}
|
|
670
|
+
if (startOnce.value?.isOk()) {
|
|
671
|
+
const ctx = startOnce.value.Ok();
|
|
672
|
+
ctx.stats.request.doneTime = new Date();
|
|
673
|
+
await startOnce.value.Ok().send.done(ctx);
|
|
560
674
|
}
|
|
561
|
-
return
|
|
675
|
+
return Result.Ok(stepCtx);
|
|
562
676
|
}
|
|
563
677
|
}
|
package/src/index.ts
CHANGED
|
@@ -34,6 +34,7 @@ export * from "./timeouted.js";
|
|
|
34
34
|
export * from "./promise-sleep.js";
|
|
35
35
|
export * from "./keyed-ng.js";
|
|
36
36
|
export * from "./evento.js";
|
|
37
|
+
export * from "./base-service.js";
|
|
37
38
|
|
|
38
39
|
// ugly not really esm but how could that work otherwise?
|
|
39
40
|
// export * as utils from "@adviser/cement/utils"
|
package/src/sys-abstraction.ts
CHANGED
|
@@ -9,20 +9,6 @@ export const TimeMode = {
|
|
|
9
9
|
};
|
|
10
10
|
export type TimeMode = (typeof TimeMode)[keyof typeof TimeMode];
|
|
11
11
|
|
|
12
|
-
export const RandomMode = {
|
|
13
|
-
CONST: "const",
|
|
14
|
-
STEP: "step",
|
|
15
|
-
RANDOM: "random",
|
|
16
|
-
};
|
|
17
|
-
export type RandomMode = (typeof RandomMode)[keyof typeof RandomMode];
|
|
18
|
-
|
|
19
|
-
export const IDMode = {
|
|
20
|
-
UUID: "uuid",
|
|
21
|
-
CONST: "const",
|
|
22
|
-
STEP: "step",
|
|
23
|
-
};
|
|
24
|
-
export type IDMode = (typeof IDMode)[keyof typeof IDMode];
|
|
25
|
-
|
|
26
12
|
export function String2TimeMode(s?: string): TimeMode {
|
|
27
13
|
switch (s?.toLowerCase()) {
|
|
28
14
|
case "real":
|
|
@@ -57,8 +57,7 @@ for (const abstraction of abstractions) {
|
|
|
57
57
|
const sys = abstraction.fn({ IdMode: cement_1.IDMode.STEP });
|
|
58
58
|
const id1 = sys.NextId();
|
|
59
59
|
const id2 = sys.NextId();
|
|
60
|
-
(0, vitest_1.
|
|
61
|
-
(0, vitest_1.expect)(id2).toEqual("STEPId-1");
|
|
60
|
+
(0, vitest_1.assert)(id1 < id2, "Expected id1 < id2");
|
|
62
61
|
}
|
|
63
62
|
});
|
|
64
63
|
(0, vitest_1.it)("time sleep", async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-basic-sys-abstraction.test.js","sourceRoot":"","sources":["../../../src/base-basic-sys-abstraction.test.ts"],"names":[],"mappings":";;AAAA,iDAA4D;AAC5D,gDAA0D;AAC1D,kDAA8D;AAC9D,kDAA8D;AAC9D,
|
|
1
|
+
{"version":3,"file":"base-basic-sys-abstraction.test.js","sourceRoot":"","sources":["../../../src/base-basic-sys-abstraction.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare const RandomMode: {
|
|
2
|
+
CONST: string;
|
|
3
|
+
STEP: string;
|
|
4
|
+
RANDOM: string;
|
|
5
|
+
};
|
|
6
|
+
export type RandomMode = (typeof RandomMode)[keyof typeof RandomMode];
|
|
7
|
+
export declare const IDMode: {
|
|
8
|
+
UUID: string;
|
|
9
|
+
CONST: string;
|
|
10
|
+
STEP: string;
|
|
11
|
+
};
|
|
12
|
+
export type IDMode = (typeof IDMode)[keyof typeof IDMode];
|
|
13
|
+
export declare class IdService {
|
|
14
|
+
readonly _mode: IDMode;
|
|
15
|
+
_step: number;
|
|
16
|
+
static create(mode?: IDMode): IdService;
|
|
17
|
+
private constructor();
|
|
18
|
+
NextId(): string;
|
|
19
|
+
}
|
|
20
|
+
export declare class RandomService {
|
|
21
|
+
readonly _mode: RandomMode;
|
|
22
|
+
_step: number;
|
|
23
|
+
static create(mode: RandomMode): RandomService;
|
|
24
|
+
private constructor();
|
|
25
|
+
Random0ToValue(value: number): number;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=base-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-service.d.ts","sourceRoot":"","sources":["../../../src/base-service.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU;;;;CAItB,CAAC;AACF,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEtE,eAAO,MAAM,MAAM;;;;CAIlB,CAAC;AACF,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,OAAO,MAAM,CAAC,CAAC;AA4B1D,qBAAa,SAAS;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,KAAK,SAAK;IAEV,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAEtC;IAED,OAAO,eAKN;IAMD,MAAM,IAAI,MAAM,CAWf;CACF;AA2BD,qBAAa,aAAa;IACxB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,KAAK,SAAK;IACV,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,CAE7C;IACD,OAAO,eAEN;IAOD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYpC;CACF"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RandomService = exports.IdService = exports.IDMode = exports.RandomMode = void 0;
|
|
4
|
+
const resolve_once_js_1 = require("./resolve-once.js");
|
|
5
|
+
exports.RandomMode = {
|
|
6
|
+
CONST: "const",
|
|
7
|
+
STEP: "step",
|
|
8
|
+
RANDOM: "random",
|
|
9
|
+
};
|
|
10
|
+
exports.IDMode = {
|
|
11
|
+
UUID: "uuid",
|
|
12
|
+
CONST: "const",
|
|
13
|
+
STEP: "step",
|
|
14
|
+
};
|
|
15
|
+
const idServices = new resolve_once_js_1.KeyedResolvOnce();
|
|
16
|
+
class IdService {
|
|
17
|
+
_mode;
|
|
18
|
+
_step = 0;
|
|
19
|
+
static create(mode) {
|
|
20
|
+
return idServices.get(mode ?? exports.IDMode.UUID).once(() => new IdService(mode));
|
|
21
|
+
}
|
|
22
|
+
constructor(mode) {
|
|
23
|
+
if (!mode) {
|
|
24
|
+
mode = exports.IDMode.UUID;
|
|
25
|
+
}
|
|
26
|
+
this._mode = mode;
|
|
27
|
+
}
|
|
28
|
+
NextId() {
|
|
29
|
+
switch (this._mode) {
|
|
30
|
+
case exports.IDMode.UUID:
|
|
31
|
+
return crypto.randomUUID();
|
|
32
|
+
case exports.IDMode.CONST:
|
|
33
|
+
return "VeryUniqueID";
|
|
34
|
+
case exports.IDMode.STEP:
|
|
35
|
+
return `STEPId-${this._step++}`;
|
|
36
|
+
default:
|
|
37
|
+
throw new Error("Unknown IDMode");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.IdService = IdService;
|
|
42
|
+
const randomServices = new resolve_once_js_1.KeyedResolvOnce();
|
|
43
|
+
class RandomService {
|
|
44
|
+
_mode;
|
|
45
|
+
_step = 0;
|
|
46
|
+
static create(mode) {
|
|
47
|
+
return randomServices.get(mode).once(() => new RandomService(mode));
|
|
48
|
+
}
|
|
49
|
+
constructor(mode) {
|
|
50
|
+
this._mode = mode;
|
|
51
|
+
}
|
|
52
|
+
Random0ToValue(value) {
|
|
53
|
+
switch (this._mode) {
|
|
54
|
+
case exports.RandomMode.CONST:
|
|
55
|
+
return 0.5 * value;
|
|
56
|
+
case exports.RandomMode.STEP:
|
|
57
|
+
this._step += 0.0001;
|
|
58
|
+
return this._step * value;
|
|
59
|
+
case exports.RandomMode.RANDOM:
|
|
60
|
+
return Math.random() * value;
|
|
61
|
+
default:
|
|
62
|
+
throw new Error("Unknown RandomMode");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.RandomService = RandomService;
|
|
67
|
+
//# sourceMappingURL=base-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-service.js","sourceRoot":"","sources":["../../../src/base-service.ts"],"names":[],"mappings":";;;AAAA,uDAAoD;AAEvC,QAAA,UAAU,GAAG;IACxB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;CACjB,CAAC;AAGW,QAAA,MAAM,GAAG;IACpB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;CACb,CAAC;AA4BF,MAAM,UAAU,GAAG,IAAI,iCAAe,EAAa,CAAC;AACpD;IACW,KAAK,CAAS;IACvB,KAAK,GAAG,CAAC,CAAC;IAEV,MAAM,CAAC,MAAM,CAAC,IAAa,EAAa;QACtC,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,QAAA,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAAA,CAC5E;IAED,YAAoB,IAAa,EAAE;QACjC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,QAAA,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IAAA,CACnB;IAMD,MAAM,GAAW;QACf,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,KAAK,QAAA,MAAM,CAAC,IAAI;gBACd,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;YAC7B,KAAK,QAAA,MAAM,CAAC,KAAK;gBACf,OAAO,cAAc,CAAC;YACxB,KAAK,QAAA,MAAM,CAAC,IAAI;gBACd,OAAO,UAAU,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YAClC;gBACE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACtC,CAAC;IAAA,CACF;CACF;;AA0BD,MAAM,cAAc,GAAG,IAAI,iCAAe,EAAiB,CAAC;AAC5D;IACW,KAAK,CAAa;IAC3B,KAAK,GAAG,CAAC,CAAC;IACV,MAAM,CAAC,MAAM,CAAC,IAAgB,EAAiB;QAC7C,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAAA,CACrE;IACD,YAAoB,IAAgB,EAAE;QACpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IAAA,CACnB;IAOD,cAAc,CAAC,KAAa,EAAU;QACpC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,KAAK,QAAA,UAAU,CAAC,KAAK;gBACnB,OAAO,GAAG,GAAG,KAAK,CAAC;YACrB,KAAK,QAAA,UAAU,CAAC,IAAI;gBAClB,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC;gBACrB,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YAC5B,KAAK,QAAA,UAAU,CAAC,MAAM;gBACpB,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC;YAC/B;gBACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC1C,CAAC;IAAA,CACF;CACF"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { FileService } from "./file-service.js";
|
|
2
|
-
import { TimeMode,
|
|
2
|
+
import { TimeMode, SystemService, VoidFunc, BasicSysAbstraction, type BasicRuntimeService } from "./sys-abstraction.js";
|
|
3
3
|
import { Time } from "./time.js";
|
|
4
4
|
import { TxtEnDecoder } from "./txt-en-decoder.js";
|
|
5
5
|
import { Env } from "./sys-env.js";
|
|
6
|
-
import { WithCement } from "@adviser/cement";
|
|
6
|
+
import { IDMode, IdService, RandomMode, RandomService, WithCement } from "@adviser/cement";
|
|
7
7
|
export declare class SysTime extends Time {
|
|
8
8
|
Now(): Date;
|
|
9
9
|
Sleep(duration: number): Promise<void>;
|
|
@@ -20,18 +20,6 @@ export declare class StepTime extends Time {
|
|
|
20
20
|
Sleep(duration: number): Promise<void>;
|
|
21
21
|
}
|
|
22
22
|
export declare function TimeFactory(timeMode: TimeMode): Time;
|
|
23
|
-
export declare class RandomService {
|
|
24
|
-
readonly _mode: RandomMode;
|
|
25
|
-
_step: number;
|
|
26
|
-
constructor(mode: RandomMode);
|
|
27
|
-
Random0ToValue(value: number): number;
|
|
28
|
-
}
|
|
29
|
-
export declare class IdService {
|
|
30
|
-
readonly _mode: IDMode;
|
|
31
|
-
_step: number;
|
|
32
|
-
constructor(mode?: IDMode);
|
|
33
|
-
NextId(): string;
|
|
34
|
-
}
|
|
35
23
|
export interface BaseBasicSysAbstractionParams {
|
|
36
24
|
readonly TxtEnDecoder: TxtEnDecoder;
|
|
37
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-sys-abstraction.d.ts","sourceRoot":"","sources":["../../../src/base-sys-abstraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,
|
|
1
|
+
{"version":3,"file":"base-sys-abstraction.d.ts","sourceRoot":"","sources":["../../../src/base-sys-abstraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAInC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQ3F,qBAAa,OAAQ,SAAQ,IAAI;IAC/B,GAAG,IAAI,IAAI,CAEV;IACD,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrC;CACF;AAQD,qBAAa,SAAU,SAAQ,IAAI;IACjC,GAAG,IAAI,IAAI,CAEV;IAED,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErC;CACF;AAQD,qBAAa,QAAS,SAAQ,IAAI;IAChC,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,cAIC;IACD,GAAG,CAAC,KAAK,SAAI,GAAG,IAAI,CAanB;IACD,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrC;CACF;AAoBD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAUpD;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;CACrC;AAED,MAAM,WAAW,wBAAyB,SAAQ,6BAA6B;IAC7E,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;CACvC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAC9C,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AA2BD,qBAAa,uBAAuB;IAClC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAiB;IAGxC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAsB;IACpD,QAAQ,CAAC,cAAc,EAAE,aAAa,CAA2C;IACjF,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAEhC,YAAY,MAAM,EAAE,6BAA6B,EAEhD;CACF;AA2BD,qBAAa,kBAAmB,SAAQ,uBAAuB;IAE7D,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC;IAEvC,YAAY,MAAM,EAAE,wBAAwB,EAI3C;CACF;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAGhC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;CAErC;AAED,MAAM,MAAM,gCAAgC,GAAG,OAAO,CAAC,mBAAmB,GAAG,yBAAyB,CAAC,CAAC;AAExG,MAAM,MAAM,oCAAoC,GAC5C,CAAC,mBAAmB,GAAG,yBAAyB,CAAC,GACjD,CAAC,mBAAmB,GAAG,wBAAwB,CAAC,CAAC;AAErD,MAAM,MAAM,qCAAqC,GAAG,UAAU,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,CAAC;AAgC9G,wBAAgB,0BAA0B,CAAC,MAAM,CAAC,EAAE,gCAAgC,GAAG,mBAAmB,CAczG;AAwCD,qBAAa,0BAA2B,YAAW,mBAAmB;IACpE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;IACnD,YACE,IAAI,EAAE,uBAAuB,EAC7B,MAAM,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG;QAAE,mBAAmB,EAAE,mBAAmB,CAAA;KAAE,EAe1F;IAED,IAAI,IAAI,IAAI,CAEX;IACD,MAAM,IAAI,MAAM,CAEf;IACD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpC;IACD,MAAM,IAAI,cAAc,CAEvB;IACD,MAAM,IAAI,cAAc,CAEvB;IACD,GAAG,IAAI,GAAG,CAET;IACD,IAAI,IAAI,MAAM,EAAE,CAEf;CAQF;AAoCD,qBAAa,4BAA6B,SAAQ,0BAA0B;IAC1E,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,YACE,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG;QACzC,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,UAAU,CAAC,EAAE,WAAW,CAAC;QACzB,mBAAmB,EAAE,mBAAmB,CAAC;KAC1C,EAKF;IAED,MAAM,IAAI,aAAa,CAEtB;IACD,UAAU,IAAI,WAAW,CAExB;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WrapperRuntimeSysAbstraction = exports.WrapperBasicSysAbstraction = exports.BaseSysAbstraction = exports.BaseBasicSysAbstraction = exports.
|
|
3
|
+
exports.WrapperRuntimeSysAbstraction = exports.WrapperBasicSysAbstraction = exports.BaseSysAbstraction = exports.BaseBasicSysAbstraction = exports.StepTime = exports.ConstTime = exports.SysTime = void 0;
|
|
4
4
|
exports.TimeFactory = TimeFactory;
|
|
5
5
|
exports.BasicSysAbstractionFactory = BasicSysAbstractionFactory;
|
|
6
6
|
const runtime_js_1 = require("./runtime.js");
|
|
@@ -10,6 +10,7 @@ const index_js_1 = require("./web-env/index.js");
|
|
|
10
10
|
const index_js_2 = require("./cf-env/index.js");
|
|
11
11
|
const index_js_3 = require("./deno-env/index.js");
|
|
12
12
|
const index_js_4 = require("./node-env/index.js");
|
|
13
|
+
const cement_1 = require("@adviser/cement");
|
|
13
14
|
const add_cement_do_not_export_js_1 = require("./add-cement-do-not-export.js");
|
|
14
15
|
class SysTime extends time_js_1.Time {
|
|
15
16
|
Now() {
|
|
@@ -67,54 +68,10 @@ function TimeFactory(timeMode) {
|
|
|
67
68
|
}
|
|
68
69
|
return new SysTime();
|
|
69
70
|
}
|
|
70
|
-
class RandomService {
|
|
71
|
-
_mode;
|
|
72
|
-
_step = 0;
|
|
73
|
-
constructor(mode) {
|
|
74
|
-
this._mode = mode;
|
|
75
|
-
}
|
|
76
|
-
Random0ToValue(value) {
|
|
77
|
-
switch (this._mode) {
|
|
78
|
-
case sys_abstraction_js_1.RandomMode.CONST:
|
|
79
|
-
return 0.5 * value;
|
|
80
|
-
case sys_abstraction_js_1.RandomMode.STEP:
|
|
81
|
-
this._step += 0.0001;
|
|
82
|
-
return this._step * value;
|
|
83
|
-
case sys_abstraction_js_1.RandomMode.RANDOM:
|
|
84
|
-
return Math.random() * value;
|
|
85
|
-
default:
|
|
86
|
-
throw new Error("Unknown RandomMode");
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
exports.RandomService = RandomService;
|
|
91
|
-
class IdService {
|
|
92
|
-
_mode;
|
|
93
|
-
_step = 0;
|
|
94
|
-
constructor(mode) {
|
|
95
|
-
if (!mode) {
|
|
96
|
-
mode = sys_abstraction_js_1.IDMode.UUID;
|
|
97
|
-
}
|
|
98
|
-
this._mode = mode;
|
|
99
|
-
}
|
|
100
|
-
NextId() {
|
|
101
|
-
switch (this._mode) {
|
|
102
|
-
case sys_abstraction_js_1.IDMode.UUID:
|
|
103
|
-
return crypto.randomUUID();
|
|
104
|
-
case sys_abstraction_js_1.IDMode.CONST:
|
|
105
|
-
return "VeryUniqueID";
|
|
106
|
-
case sys_abstraction_js_1.IDMode.STEP:
|
|
107
|
-
return `STEPId-${this._step++}`;
|
|
108
|
-
default:
|
|
109
|
-
throw new Error("Unknown IDMode");
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
exports.IdService = IdService;
|
|
114
71
|
class BaseBasicSysAbstraction {
|
|
115
72
|
_time = new SysTime();
|
|
116
|
-
_idService =
|
|
117
|
-
_randomService =
|
|
73
|
+
_idService = cement_1.IdService.create();
|
|
74
|
+
_randomService = cement_1.RandomService.create(cement_1.RandomMode.RANDOM);
|
|
118
75
|
_txtEnDe;
|
|
119
76
|
constructor(params) {
|
|
120
77
|
this._txtEnDe = params.TxtEnDecoder;
|
|
@@ -160,10 +117,10 @@ class WrapperBasicSysAbstraction {
|
|
|
160
117
|
this._time = TimeFactory(params.TimeMode);
|
|
161
118
|
}
|
|
162
119
|
if (params.IdMode) {
|
|
163
|
-
this._idService =
|
|
120
|
+
this._idService = cement_1.IdService.create(params.IdMode);
|
|
164
121
|
}
|
|
165
122
|
if (params.RandomMode) {
|
|
166
|
-
this._randomService =
|
|
123
|
+
this._randomService = cement_1.RandomService.create(params.RandomMode);
|
|
167
124
|
}
|
|
168
125
|
}
|
|
169
126
|
Time() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-sys-abstraction.js","sourceRoot":"","sources":["../../../src/base-sys-abstraction.ts"],"names":[],"mappings":";;;;;AACA,6CAAyC;AACzC,
|
|
1
|
+
{"version":3,"file":"base-sys-abstraction.js","sourceRoot":"","sources":["../../../src/base-sys-abstraction.ts"],"names":[],"mappings":"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"}
|