@adviser/cement 0.2.2 → 0.2.4
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/{base_sys_abstraction-BsaOQtnz.d.cts → base_sys_abstraction-B_h8JSlV.d.cts} +1 -1
- package/{base_sys_abstraction-CQ7PJOct.d.ts → base_sys_abstraction-uF0nL2K3.d.ts} +1 -1
- package/{chunk-ZYFWDQGV.js → chunk-J2IM7FHM.js} +1 -3
- package/{chunk-XBYS4FSO.js → chunk-WZMCPT2R.js} +4 -4
- package/chunk-WZMCPT2R.js.map +1 -0
- package/{chunk-CI63N5CK.js → chunk-X4Z6DNDD.js} +284 -109
- package/chunk-X4Z6DNDD.js.map +1 -0
- package/index.cjs +337 -282
- package/index.cjs.map +1 -1
- package/index.d.cts +22 -18
- package/index.d.ts +22 -18
- package/index.js +64 -177
- package/index.js.map +1 -1
- package/node/index.cjs +220 -106
- package/node/index.cjs.map +1 -1
- package/node/index.d.cts +3 -3
- package/node/index.d.ts +3 -3
- package/node/index.js +4 -4
- package/node/index.js.map +1 -1
- package/package.json +6 -5
- package/{sys_abstraction-BzkoCY1p.d.cts → sys_abstraction-C1-BRiiP.d.cts} +26 -9
- package/{sys_abstraction-BzkoCY1p.d.ts → sys_abstraction-C1-BRiiP.d.ts} +26 -9
- package/utils/index.js +1 -1
- package/web/index.cjs +220 -106
- package/web/index.cjs.map +1 -1
- package/web/index.d.cts +2 -2
- package/web/index.d.ts +2 -2
- package/web/index.js +3 -3
- package/chunk-CI63N5CK.js.map +0 -1
- package/chunk-XBYS4FSO.js.map +0 -1
- /package/{chunk-ZYFWDQGV.js.map → chunk-J2IM7FHM.js.map} +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
import { V as VoidFunc, T as TimeMode, I as IDMode, R as RandomMode, F as FileService, b as SystemService } from './sys_abstraction-
|
1
|
+
import { V as VoidFunc, T as TimeMode, I as IDMode, R as RandomMode, F as FileService, b as SystemService } from './sys_abstraction-C1-BRiiP.cjs';
|
2
2
|
|
3
3
|
interface ExitHandler {
|
4
4
|
readonly hdl: VoidFunc;
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { V as VoidFunc, T as TimeMode, I as IDMode, R as RandomMode, F as FileService, b as SystemService } from './sys_abstraction-
|
1
|
+
import { V as VoidFunc, T as TimeMode, I as IDMode, R as RandomMode, F as FileService, b as SystemService } from './sys_abstraction-C1-BRiiP.js';
|
2
2
|
|
3
3
|
interface ExitHandler {
|
4
4
|
readonly hdl: VoidFunc;
|
@@ -22,7 +22,6 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
|
|
22
22
|
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
23
23
|
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
24
24
|
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
25
|
-
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
26
25
|
var __await = function(promise, isYieldStar) {
|
27
26
|
this[0] = promise;
|
28
27
|
this[1] = isYieldStar;
|
@@ -61,7 +60,6 @@ export {
|
|
61
60
|
__privateGet,
|
62
61
|
__privateAdd,
|
63
62
|
__privateSet,
|
64
|
-
__privateMethod,
|
65
63
|
__yieldStar
|
66
64
|
};
|
67
|
-
//# sourceMappingURL=chunk-
|
65
|
+
//# sourceMappingURL=chunk-J2IM7FHM.js.map
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import {
|
2
2
|
BaseSysAbstraction,
|
3
3
|
WrapperSysAbstraction,
|
4
|
-
|
5
|
-
} from "./chunk-
|
4
|
+
envFactory
|
5
|
+
} from "./chunk-X4Z6DNDD.js";
|
6
6
|
|
7
7
|
// src/web/web_sys_abstraction.ts
|
8
8
|
var WebFileService = class {
|
@@ -52,7 +52,7 @@ var WebFileService = class {
|
|
52
52
|
};
|
53
53
|
var WebSystemService = class {
|
54
54
|
Env() {
|
55
|
-
return
|
55
|
+
return envFactory();
|
56
56
|
}
|
57
57
|
Args() {
|
58
58
|
throw new Error("Args-Method not implemented.");
|
@@ -80,4 +80,4 @@ function WebSysAbstraction(param) {
|
|
80
80
|
export {
|
81
81
|
WebSysAbstraction
|
82
82
|
};
|
83
|
-
//# sourceMappingURL=chunk-
|
83
|
+
//# sourceMappingURL=chunk-WZMCPT2R.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/web/web_sys_abstraction.ts"],"sourcesContent":["import { BaseSysAbstraction, WrapperSysAbstraction, WrapperSysAbstractionParams } from \"../base_sys_abstraction\";\nimport { FileService, NamedWritableStream } from \"../file_service\";\nimport { SysAbstraction, SystemService, VoidFunc } from \"../sys_abstraction\";\nimport { envFactory } from \"../sys_env\";\n\nclass WebFileService implements FileService {\n get baseDir(): string {\n throw new Error(\"basedir-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n create(fname: string): Promise<NamedWritableStream> {\n throw new Error(\"create-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n readFileString(fname: string): Promise<string> {\n throw new Error(\"readFileString-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n writeFileString(fname: string, content: string): Promise<void> {\n throw new Error(\"writeFileString-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n abs(fname: string): string {\n throw new Error(\"abs-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n join(...paths: string[]): string {\n throw new Error(\"join-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n relative(from: string, to?: string | undefined): string {\n throw new Error(\"relative-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dirname(fname: string): string {\n throw new Error(\"dirname-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n basename(fname: string): string {\n throw new Error(\"basename-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n nodeImport(fname: string): string {\n throw new Error(\"nodeImport-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isAbsolute(fname: string): boolean {\n throw new Error(\"isAbsolute-Method not implemented.\");\n }\n}\n\nclass WebSystemService implements SystemService {\n Env() {\n return envFactory();\n }\n Args(): string[] {\n throw new Error(\"Args-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n OnExit(hdl: VoidFunc): VoidFunc {\n throw new Error(\"OnExit-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Exit(code: number): void {\n throw new Error(\"Exit-Method not implemented.\");\n }\n}\n\nlet my: BaseSysAbstraction | undefined = undefined;\nexport function WebSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {\n if (!my) {\n my = new BaseSysAbstraction({\n FileSystem: new WebFileService(),\n SystemService: new WebSystemService(),\n });\n }\n return new WrapperSysAbstraction(my, param);\n}\n"],"mappings":";;;;;;;AAKA,IAAM,iBAAN,MAA4C;AAAA,EAC1C,IAAI,UAAkB;AACpB,UAAM,IAAI,MAAM,iCAAiC;AAAA,EACnD;AAAA;AAAA,EAEA,OAAO,OAA6C;AAClD,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AAAA;AAAA,EAEA,eAAe,OAAgC;AAC7C,UAAM,IAAI,MAAM,wCAAwC;AAAA,EAC1D;AAAA;AAAA,EAEA,gBAAgB,OAAe,SAAgC;AAC7D,UAAM,IAAI,MAAM,yCAAyC;AAAA,EAC3D;AAAA;AAAA,EAEA,IAAI,OAAuB;AACzB,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC/C;AAAA;AAAA,EAEA,QAAQ,OAAyB;AAC/B,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AAAA;AAAA,EAEA,SAAS,MAAc,IAAiC;AACtD,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AAAA;AAAA,EAEA,QAAQ,OAAuB;AAC7B,UAAM,IAAI,MAAM,iCAAiC;AAAA,EACnD;AAAA;AAAA,EAEA,SAAS,OAAuB;AAC9B,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AAAA;AAAA,EAEA,WAAW,OAAuB;AAChC,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACtD;AAAA;AAAA,EAEA,WAAW,OAAwB;AACjC,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACtD;AACF;AAEA,IAAM,mBAAN,MAAgD;AAAA,EAC9C,MAAM;AACJ,WAAO,WAAW;AAAA,EACpB;AAAA,EACA,OAAiB;AACf,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AAAA;AAAA,EAEA,OAAO,KAAyB;AAC9B,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AAAA;AAAA,EAEA,KAAK,MAAoB;AACvB,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AACF;AAEA,IAAI,KAAqC;AAClC,SAAS,kBAAkB,OAAqD;AACrF,MAAI,CAAC,IAAI;AACP,SAAK,IAAI,mBAAmB;AAAA,MAC1B,YAAY,IAAI,eAAe;AAAA,MAC/B,eAAe,IAAI,iBAAiB;AAAA,IACtC,CAAC;AAAA,EACH;AACA,SAAO,IAAI,sBAAsB,IAAI,KAAK;AAC5C;","names":[]}
|
@@ -1,9 +1,8 @@
|
|
1
1
|
import {
|
2
2
|
__privateAdd,
|
3
3
|
__privateGet,
|
4
|
-
__privateMethod,
|
5
4
|
__privateSet
|
6
|
-
} from "./chunk-
|
5
|
+
} from "./chunk-J2IM7FHM.js";
|
7
6
|
|
8
7
|
// src/sys_abstraction.ts
|
9
8
|
var TimeMode = /* @__PURE__ */ ((TimeMode2) => {
|
@@ -52,170 +51,339 @@ var TimeUnits = /* @__PURE__ */ ((TimeUnits2) => {
|
|
52
51
|
return TimeUnits2;
|
53
52
|
})(TimeUnits || {});
|
54
53
|
|
54
|
+
// src/future.ts
|
55
|
+
var _promise, _resolveFn, _rejectFn;
|
56
|
+
var Future = class {
|
57
|
+
constructor() {
|
58
|
+
__privateAdd(this, _promise);
|
59
|
+
__privateAdd(this, _resolveFn, () => {
|
60
|
+
throw new Error("This Promise is not working as expected.");
|
61
|
+
});
|
62
|
+
__privateAdd(this, _rejectFn, () => {
|
63
|
+
throw new Error("This Promise is not working as expected.");
|
64
|
+
});
|
65
|
+
__privateSet(this, _promise, new Promise((resolve, reject) => {
|
66
|
+
__privateSet(this, _resolveFn, resolve);
|
67
|
+
__privateSet(this, _rejectFn, reject);
|
68
|
+
}));
|
69
|
+
}
|
70
|
+
async asPromise() {
|
71
|
+
return __privateGet(this, _promise);
|
72
|
+
}
|
73
|
+
resolve(value) {
|
74
|
+
__privateGet(this, _resolveFn).call(this, value);
|
75
|
+
}
|
76
|
+
reject(reason) {
|
77
|
+
__privateGet(this, _rejectFn).call(this, reason);
|
78
|
+
}
|
79
|
+
};
|
80
|
+
_promise = new WeakMap();
|
81
|
+
_resolveFn = new WeakMap();
|
82
|
+
_rejectFn = new WeakMap();
|
83
|
+
|
84
|
+
// src/resolve-once.ts
|
85
|
+
var ResolveSeq = class {
|
86
|
+
constructor(ctx) {
|
87
|
+
this._seqFutures = [];
|
88
|
+
this.ctx = ctx;
|
89
|
+
}
|
90
|
+
reset() {
|
91
|
+
}
|
92
|
+
async _step(item) {
|
93
|
+
if (!item) {
|
94
|
+
return;
|
95
|
+
}
|
96
|
+
item.fn(this.ctx).then((value) => item.future.resolve(value)).catch((e) => item.future.reject(e)).finally(() => this._step(this._seqFutures.shift()));
|
97
|
+
}
|
98
|
+
async add(fn) {
|
99
|
+
const future = new Future();
|
100
|
+
this._seqFutures.push({ future, fn });
|
101
|
+
this._step(this._seqFutures.shift());
|
102
|
+
return future.asPromise();
|
103
|
+
}
|
104
|
+
};
|
105
|
+
var ResolveOnce = class {
|
106
|
+
constructor(ctx) {
|
107
|
+
this._onceDone = false;
|
108
|
+
this._onceFutures = [];
|
109
|
+
this._onceOk = false;
|
110
|
+
this._isPromise = false;
|
111
|
+
this.ctx = ctx;
|
112
|
+
}
|
113
|
+
get ready() {
|
114
|
+
return this._onceDone;
|
115
|
+
}
|
116
|
+
reset() {
|
117
|
+
this._onceDone = false;
|
118
|
+
this._onceOk = false;
|
119
|
+
this._onceValue = void 0;
|
120
|
+
this._onceError = void 0;
|
121
|
+
this._onceFutures.length = 0;
|
122
|
+
}
|
123
|
+
// T extends Option<infer U> ? U : T
|
124
|
+
once(fn) {
|
125
|
+
if (this._onceDone) {
|
126
|
+
if (this._onceError) {
|
127
|
+
if (this._isPromise) {
|
128
|
+
return Promise.reject(this._onceError);
|
129
|
+
} else {
|
130
|
+
throw this._onceError;
|
131
|
+
}
|
132
|
+
}
|
133
|
+
if (this._onceOk) {
|
134
|
+
if (this._isPromise) {
|
135
|
+
return Promise.resolve(this._onceValue);
|
136
|
+
} else {
|
137
|
+
return this._onceValue;
|
138
|
+
}
|
139
|
+
}
|
140
|
+
throw new Error("ResolveOnce.once impossible");
|
141
|
+
}
|
142
|
+
const future = new Future();
|
143
|
+
this._onceFutures.push(future);
|
144
|
+
if (this._onceFutures.length === 1) {
|
145
|
+
const okFn = (value) => {
|
146
|
+
this._onceValue = value;
|
147
|
+
this._onceOk = true;
|
148
|
+
this._onceDone = true;
|
149
|
+
if (this._isPromise) {
|
150
|
+
this._onceFutures.forEach((f) => f.resolve(this._onceValue));
|
151
|
+
}
|
152
|
+
this._onceFutures.length = 0;
|
153
|
+
};
|
154
|
+
const catchFn = (e) => {
|
155
|
+
this._onceError = e;
|
156
|
+
this._onceOk = false;
|
157
|
+
this._onceValue = void 0;
|
158
|
+
this._onceDone = true;
|
159
|
+
if (this._isPromise) {
|
160
|
+
this._onceFutures.forEach((f) => f.reject(this._onceError));
|
161
|
+
}
|
162
|
+
this._onceFutures.length = 0;
|
163
|
+
};
|
164
|
+
try {
|
165
|
+
const ret = fn(this.ctx);
|
166
|
+
if (typeof ret.then === "function") {
|
167
|
+
this._isPromise = true;
|
168
|
+
ret.then(okFn).catch(catchFn);
|
169
|
+
} else {
|
170
|
+
okFn(ret);
|
171
|
+
}
|
172
|
+
} catch (e) {
|
173
|
+
catchFn(e);
|
174
|
+
}
|
175
|
+
}
|
176
|
+
if (this._isPromise) {
|
177
|
+
return future.asPromise();
|
178
|
+
} else {
|
179
|
+
return this.once(fn);
|
180
|
+
}
|
181
|
+
}
|
182
|
+
};
|
183
|
+
var Keyed = class {
|
184
|
+
constructor(factory) {
|
185
|
+
this._map = /* @__PURE__ */ new Map();
|
186
|
+
this.factory = factory;
|
187
|
+
}
|
188
|
+
async asyncGet(key) {
|
189
|
+
return this.get(await key());
|
190
|
+
}
|
191
|
+
get(key) {
|
192
|
+
if (typeof key === "function") {
|
193
|
+
key = key();
|
194
|
+
}
|
195
|
+
let keyed = this._map.get(key);
|
196
|
+
if (!keyed) {
|
197
|
+
keyed = this.factory(key);
|
198
|
+
this._map.set(key, keyed);
|
199
|
+
}
|
200
|
+
return keyed;
|
201
|
+
}
|
202
|
+
reset() {
|
203
|
+
this._map.forEach((keyed) => keyed.reset());
|
204
|
+
this._map.clear();
|
205
|
+
}
|
206
|
+
};
|
207
|
+
var KeyedResolvOnce = class extends Keyed {
|
208
|
+
constructor() {
|
209
|
+
super((key) => new ResolveOnce(key));
|
210
|
+
}
|
211
|
+
};
|
212
|
+
var KeyedResolvSeq = class extends Keyed {
|
213
|
+
constructor() {
|
214
|
+
super((key) => new ResolveSeq(key));
|
215
|
+
}
|
216
|
+
};
|
217
|
+
|
55
218
|
// src/sys_env.ts
|
56
|
-
var _node
|
219
|
+
var _node;
|
57
220
|
var NodeEnvActions = class {
|
58
221
|
// eslint-disable-next-line @typescript-eslint/no-useless-constructor, @typescript-eslint/no-unused-vars
|
59
222
|
constructor(opts) {
|
60
223
|
__privateAdd(this, _node, globalThis);
|
61
|
-
|
224
|
+
this._env = this.active() ? __privateGet(this, _node).process.env : {};
|
62
225
|
}
|
63
|
-
|
226
|
+
register(env) {
|
227
|
+
return env;
|
228
|
+
}
|
229
|
+
active() {
|
64
230
|
return typeof __privateGet(this, _node) === "object" && typeof __privateGet(this, _node).process === "object" && typeof __privateGet(this, _node).process.env === "object";
|
65
231
|
}
|
66
232
|
keys() {
|
67
|
-
return Object.keys(
|
233
|
+
return Object.keys(this._env);
|
68
234
|
}
|
69
235
|
get(key) {
|
70
|
-
return
|
236
|
+
return this._env[key];
|
71
237
|
}
|
72
238
|
set(key, value) {
|
73
239
|
if (value) {
|
74
|
-
|
240
|
+
this._env[key] = value;
|
75
241
|
}
|
76
242
|
}
|
77
|
-
|
78
|
-
delete
|
243
|
+
delete(key) {
|
244
|
+
delete this._env[key];
|
79
245
|
}
|
80
246
|
};
|
81
247
|
_node = new WeakMap();
|
82
|
-
|
83
|
-
var _deno, _env2;
|
248
|
+
var _deno;
|
84
249
|
var DenoEnvActions = class {
|
85
|
-
constructor
|
250
|
+
// eslint-disable-next-line @typescript-eslint/no-useless-constructor, @typescript-eslint/no-unused-vars
|
251
|
+
constructor(opts) {
|
86
252
|
__privateAdd(this, _deno, globalThis);
|
87
|
-
__privateAdd(this, _env2);
|
88
|
-
if (env) {
|
89
|
-
__privateSet(this, _env2, env);
|
90
|
-
} else {
|
91
|
-
__privateSet(this, _env2, this.use() ? __privateGet(this, _deno).Deno.env : /* @__PURE__ */ new Map());
|
92
|
-
}
|
93
253
|
}
|
94
|
-
|
254
|
+
get _env() {
|
255
|
+
return __privateGet(this, _deno).Deno.env;
|
256
|
+
}
|
257
|
+
register(env) {
|
258
|
+
return env;
|
259
|
+
}
|
260
|
+
active() {
|
95
261
|
return typeof __privateGet(this, _deno) === "object" && typeof __privateGet(this, _deno).Deno === "object" && typeof __privateGet(this, _deno).Deno.env === "object";
|
96
262
|
}
|
97
263
|
keys() {
|
98
|
-
return Array.from(
|
264
|
+
return Array.from(this._env.keys());
|
99
265
|
}
|
100
266
|
get(key) {
|
101
|
-
return
|
267
|
+
return this._env.get(key);
|
102
268
|
}
|
103
269
|
set(key, value) {
|
104
270
|
if (value) {
|
105
|
-
|
271
|
+
this._env.set(key, value);
|
106
272
|
}
|
107
273
|
}
|
108
|
-
|
109
|
-
|
274
|
+
delete(key) {
|
275
|
+
this._env.delete(key);
|
110
276
|
}
|
111
277
|
};
|
112
278
|
_deno = new WeakMap();
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
279
|
+
var BrowserEnvActions = class {
|
280
|
+
constructor(opts) {
|
281
|
+
this.env = /* @__PURE__ */ new Map();
|
282
|
+
this.opts = opts;
|
283
|
+
}
|
284
|
+
get(key) {
|
285
|
+
return this.env.get(key);
|
286
|
+
}
|
287
|
+
set(key, value) {
|
288
|
+
if (value) {
|
289
|
+
this.env.set(key, value);
|
119
290
|
}
|
120
|
-
const map = /* @__PURE__ */ new Map();
|
121
|
-
return {
|
122
|
-
map,
|
123
|
-
finalize: (bea) => {
|
124
|
-
browser[sym] = bea;
|
125
|
-
return map;
|
126
|
-
}
|
127
|
-
};
|
128
291
|
}
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
292
|
+
delete(key) {
|
293
|
+
this.env.delete(key);
|
294
|
+
}
|
295
|
+
keys() {
|
296
|
+
return Array.from(this.env.keys());
|
133
297
|
}
|
134
|
-
|
298
|
+
active() {
|
135
299
|
return true;
|
136
300
|
}
|
301
|
+
register(env) {
|
302
|
+
const sym = Symbol.for(this.opts.symbol || "CP_ENV");
|
303
|
+
const browser = globalThis;
|
304
|
+
browser[sym] = env;
|
305
|
+
return env;
|
306
|
+
}
|
137
307
|
};
|
308
|
+
var _envFactory = new ResolveOnce();
|
138
309
|
function envFactory(opts = {}) {
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
310
|
+
return _envFactory.once(() => {
|
311
|
+
const found = [new NodeEnvActions(opts), new DenoEnvActions(opts), new BrowserEnvActions(opts)].find((env) => env.active());
|
312
|
+
if (!found) {
|
313
|
+
throw new Error("SysContainer:envFactory: no env available");
|
314
|
+
}
|
315
|
+
const ret = new EnvImpl(found, opts);
|
316
|
+
found.register(ret);
|
317
|
+
return ret;
|
318
|
+
});
|
144
319
|
}
|
145
|
-
var _envImpl, _EnvImpl_instances, updatePresets_fn, applyOnSet_fn, _onSet;
|
146
320
|
var EnvImpl = class {
|
147
|
-
constructor(opts = {}) {
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
321
|
+
constructor(map, opts = {}) {
|
322
|
+
this._onSet = [];
|
323
|
+
this._map = map;
|
324
|
+
this._updatePresets(opts.presetEnv);
|
325
|
+
}
|
326
|
+
_updatePresets(presetEnv) {
|
327
|
+
if (!presetEnv) {
|
328
|
+
return;
|
329
|
+
}
|
330
|
+
for (const [key, value] of presetEnv) {
|
331
|
+
this._map.set(key, value);
|
332
|
+
}
|
333
|
+
}
|
334
|
+
_applyOnSet(onSet, key, value) {
|
335
|
+
onSet.forEach((item) => {
|
336
|
+
let keys = [];
|
337
|
+
if (key) {
|
338
|
+
keys = [key];
|
339
|
+
} else {
|
340
|
+
keys = this._map.keys();
|
341
|
+
}
|
342
|
+
keys.filter((k) => {
|
343
|
+
if (item.filter.size === 0) {
|
344
|
+
return true;
|
345
|
+
}
|
346
|
+
if (item.filter.has(k)) {
|
347
|
+
return true;
|
348
|
+
}
|
349
|
+
return false;
|
350
|
+
}).forEach((k) => {
|
351
|
+
let v;
|
352
|
+
if (!key && !value) {
|
353
|
+
v = this._map.get(k);
|
354
|
+
} else if (key && !value) {
|
355
|
+
v = void 0;
|
356
|
+
} else {
|
357
|
+
v = value;
|
358
|
+
}
|
359
|
+
item.fn(k, v);
|
360
|
+
});
|
361
|
+
});
|
153
362
|
}
|
154
363
|
keys() {
|
155
|
-
return
|
364
|
+
return this._map.keys();
|
156
365
|
}
|
157
366
|
// filter is not set all sets passed
|
158
367
|
onSet(fn, ...filter) {
|
159
368
|
const item = { filter: new Set(filter), fn };
|
160
|
-
|
161
|
-
|
369
|
+
this._onSet.push(item);
|
370
|
+
this._applyOnSet([item]);
|
162
371
|
}
|
163
372
|
get(key) {
|
164
|
-
return
|
373
|
+
return this._map.get(key);
|
165
374
|
}
|
166
375
|
set(key, value) {
|
167
376
|
if (!value) {
|
168
377
|
return;
|
169
378
|
}
|
170
|
-
|
171
|
-
|
172
|
-
}
|
173
|
-
del(key) {
|
174
|
-
__privateGet(this, _envImpl).del(key);
|
175
|
-
__privateMethod(this, _EnvImpl_instances, applyOnSet_fn).call(this, __privateGet(this, _onSet), key);
|
176
|
-
}
|
177
|
-
};
|
178
|
-
_envImpl = new WeakMap();
|
179
|
-
_EnvImpl_instances = new WeakSet();
|
180
|
-
updatePresets_fn = function(presetEnv) {
|
181
|
-
if (!presetEnv) {
|
182
|
-
return;
|
379
|
+
this._map.set(key, value);
|
380
|
+
this._applyOnSet(this._onSet, key, value);
|
183
381
|
}
|
184
|
-
|
185
|
-
|
382
|
+
delete(key) {
|
383
|
+
this._map.delete(key);
|
384
|
+
this._applyOnSet(this._onSet, key);
|
186
385
|
}
|
187
386
|
};
|
188
|
-
applyOnSet_fn = function(onSet, key, value) {
|
189
|
-
onSet.forEach((item) => {
|
190
|
-
let keys = [];
|
191
|
-
if (key) {
|
192
|
-
keys = [key];
|
193
|
-
} else {
|
194
|
-
keys = __privateGet(this, _envImpl).keys();
|
195
|
-
}
|
196
|
-
keys.filter((k) => {
|
197
|
-
if (item.filter.size === 0) {
|
198
|
-
return true;
|
199
|
-
}
|
200
|
-
if (item.filter.has(k)) {
|
201
|
-
return true;
|
202
|
-
}
|
203
|
-
return false;
|
204
|
-
}).forEach((k) => {
|
205
|
-
let v;
|
206
|
-
if (!key && !value) {
|
207
|
-
v = __privateGet(this, _envImpl).get(k);
|
208
|
-
} else if (key && !value) {
|
209
|
-
v = void 0;
|
210
|
-
} else {
|
211
|
-
v = value;
|
212
|
-
}
|
213
|
-
item.fn(k, v);
|
214
|
-
});
|
215
|
-
});
|
216
|
-
};
|
217
|
-
_onSet = new WeakMap();
|
218
|
-
var envImpl = new EnvImpl();
|
219
387
|
|
220
388
|
// src/base_sys_abstraction.ts
|
221
389
|
var SysTime = class extends Time {
|
@@ -401,7 +569,14 @@ export {
|
|
401
569
|
TimeUnits,
|
402
570
|
BaseSysAbstraction,
|
403
571
|
WrapperSysAbstraction,
|
404
|
-
|
405
|
-
|
572
|
+
Future,
|
573
|
+
ResolveSeq,
|
574
|
+
ResolveOnce,
|
575
|
+
Keyed,
|
576
|
+
KeyedResolvOnce,
|
577
|
+
KeyedResolvSeq,
|
578
|
+
BrowserEnvActions,
|
579
|
+
envFactory,
|
580
|
+
EnvImpl
|
406
581
|
};
|
407
|
-
//# sourceMappingURL=chunk-
|
582
|
+
//# sourceMappingURL=chunk-X4Z6DNDD.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/sys_abstraction.ts","../../src/time.ts","../../src/future.ts","../../src/resolve-once.ts","../../src/sys_env.ts","../../src/base_sys_abstraction.ts"],"sourcesContent":["import { FileService } from \"./file_service\";\nimport { Env } from \"./sys_env\";\nimport { Time } from \"./time\";\n\nexport enum TimeMode {\n REAL = \"real\",\n CONST = \"const\",\n STEP = \"step\",\n}\n\nexport enum RandomMode {\n CONST = \"const\",\n STEP = \"step\",\n RANDOM = \"random\",\n}\n\nexport enum IDMode {\n UUID = \"uuid\",\n CONST = \"const\",\n STEP = \"step\",\n}\n\nexport function String2TimeMode(s?: string): TimeMode {\n switch (s?.toLowerCase()) {\n case \"real\":\n return TimeMode.REAL;\n case \"const\":\n return TimeMode.CONST;\n case \"step\":\n return TimeMode.STEP;\n default:\n return TimeMode.REAL;\n }\n}\n\nexport type VoidFunc = () => void | Promise<void>;\n\nexport interface SystemService {\n Env(): Env;\n Args(): string[];\n OnExit(hdl: VoidFunc): VoidFunc;\n Exit(code: number): void;\n}\n\nexport interface SysAbstraction {\n Time(): Time;\n Stdout(): WritableStream<Uint8Array>;\n Stderr(): WritableStream<Uint8Array>;\n NextId(): string;\n Random0ToValue(value: number): number;\n System(): SystemService;\n FileSystem(): FileService;\n}\n","export abstract class Time {\n abstract Now(): Date;\n abstract Sleep(duration: Duration): Promise<void>;\n TimeSince(start: Date): Duration {\n const now = this.Now();\n return now.getTime() - start.getTime();\n }\n}\n\nexport type Duration = number;\n\nexport enum TimeUnits {\n Microsecond = 1,\n // eslint-disable-next-line @typescript-eslint/prefer-literal-enum-member\n Second = 1000 * Microsecond,\n // eslint-disable-next-line @typescript-eslint/prefer-literal-enum-member\n Minute = 60 * Second,\n // eslint-disable-next-line @typescript-eslint/prefer-literal-enum-member\n Hour = 60 * Minute,\n}\n","export class Future<T> {\n readonly #promise: Promise<T>;\n #resolveFn: (value: T) => void = () => {\n throw new Error(\"This Promise is not working as expected.\");\n };\n #rejectFn: (reason: unknown) => void = () => {\n throw new Error(\"This Promise is not working as expected.\");\n };\n\n constructor() {\n this.#promise = new Promise<T>((resolve, reject) => {\n this.#resolveFn = resolve;\n this.#rejectFn = reject;\n });\n }\n\n async asPromise(): Promise<T> {\n return this.#promise;\n }\n\n resolve(value: T) {\n this.#resolveFn(value);\n }\n reject(reason: unknown) {\n this.#rejectFn(reason);\n }\n}\n","import { Future } from \"./future\";\n\ninterface ResolveSeqItem<T, C> {\n future: Future<T>;\n fn: (c: C) => Promise<T>;\n}\n\nexport class ResolveSeq<T, C = void> {\n readonly ctx: C;\n constructor(ctx?: C) {\n this.ctx = ctx as C;\n }\n reset() {\n /* noop */\n }\n async _step(item?: ResolveSeqItem<T, C> | undefined) {\n if (!item) {\n // done\n return;\n }\n item\n .fn(this.ctx)\n .then((value) => item.future.resolve(value))\n .catch((e) => item.future.reject(e as Error))\n .finally(() => this._step(this._seqFutures.shift()));\n }\n readonly _seqFutures: ResolveSeqItem<T, C>[] = [];\n async add(fn: (c: C) => Promise<T>): Promise<T> {\n const future = new Future<T>();\n this._seqFutures.push({ future, fn });\n this._step(this._seqFutures.shift());\n return future.asPromise();\n }\n}\n\nexport class ResolveOnce<T, CTX = void> {\n _onceDone = false;\n readonly _onceFutures: Future<T>[] = [];\n _onceOk = false;\n _onceValue?: T;\n _onceError?: Error;\n _isPromise = false;\n\n readonly ctx: CTX;\n\n constructor(ctx?: CTX) {\n this.ctx = ctx as CTX;\n }\n\n get ready() {\n return this._onceDone;\n }\n\n reset() {\n this._onceDone = false;\n this._onceOk = false;\n this._onceValue = undefined;\n this._onceError = undefined;\n this._onceFutures.length = 0;\n }\n\n // T extends Option<infer U> ? U : T\n once<R>(fn: (c: CTX) => R): R {\n if (this._onceDone) {\n if (this._onceError) {\n if (this._isPromise) {\n return Promise.reject(this._onceError) as unknown as R;\n } else {\n throw this._onceError;\n }\n }\n if (this._onceOk) {\n if (this._isPromise) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return Promise.resolve(this._onceValue!) as unknown as R;\n } else {\n return this._onceValue as unknown as R;\n }\n }\n throw new Error(\"ResolveOnce.once impossible\");\n }\n const future = new Future<T>();\n this._onceFutures.push(future);\n if (this._onceFutures.length === 1) {\n const okFn = (value: T) => {\n this._onceValue = value;\n this._onceOk = true;\n this._onceDone = true;\n if (this._isPromise) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._onceFutures.forEach((f) => f.resolve(this._onceValue!));\n }\n this._onceFutures.length = 0;\n };\n const catchFn = (e: Error) => {\n this._onceError = e as Error;\n this._onceOk = false;\n this._onceValue = undefined;\n this._onceDone = true;\n if (this._isPromise) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._onceFutures.forEach((f) => f.reject(this._onceError!));\n }\n this._onceFutures.length = 0;\n };\n try {\n const ret = fn(this.ctx);\n if (typeof (ret as Promise<T>).then === \"function\") {\n this._isPromise = true;\n (ret as Promise<T>).then(okFn).catch(catchFn);\n } else {\n okFn(ret as unknown as T);\n }\n } catch (e) {\n catchFn(e as Error);\n }\n }\n if (this._isPromise) {\n return future.asPromise() as unknown as R;\n } else {\n // abit funky but i don't want to impl the return just once\n return this.once(fn);\n }\n }\n}\n\nexport class Keyed<T extends { reset: () => void }, K = string> {\n private readonly _map = new Map<K, T>();\n\n readonly factory: (key: K) => T;\n constructor(factory: (key: K) => T) {\n this.factory = factory;\n }\n\n async asyncGet(key: () => Promise<K>): Promise<T> {\n return this.get(await key());\n }\n\n get(key: K | (() => K)): T {\n if (typeof key === \"function\") {\n key = (key as () => K)();\n }\n let keyed = this._map.get(key);\n if (!keyed) {\n keyed = this.factory(key);\n this._map.set(key, keyed);\n }\n return keyed;\n }\n\n reset() {\n this._map.forEach((keyed) => keyed.reset());\n this._map.clear();\n }\n}\n\nexport class KeyedResolvOnce<T, K = string> extends Keyed<ResolveOnce<T, K>, K> {\n constructor() {\n super((key) => new ResolveOnce<T, K>(key));\n }\n}\n\nexport class KeyedResolvSeq<T, K = string> extends Keyed<ResolveSeq<T, K>, K> {\n constructor() {\n super((key) => new ResolveSeq<T, K>(key));\n }\n}\n","import { ResolveOnce } from \"./resolve-once\";\n\nexport interface EnvMap {\n get(key: string): string | undefined;\n set(key: string, value?: string): void;\n delete(key: string): void;\n keys(): string[];\n}\nexport interface EnvActions extends EnvMap {\n active(): boolean;\n register(env: Env): Env;\n}\n\nclass NodeEnvActions implements EnvActions {\n readonly #node = globalThis as unknown as { process: { env: Record<string, string> } };\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor, @typescript-eslint/no-unused-vars\n constructor(opts: Partial<EnvFactoryOpts>) {\n // do nothing\n }\n\n register(env: Env): Env {\n return env;\n }\n\n active(): boolean {\n return typeof this.#node === \"object\" && typeof this.#node.process === \"object\" && typeof this.#node.process.env === \"object\";\n }\n readonly _env = this.active() ? this.#node.process.env : {};\n keys(): string[] {\n return Object.keys(this._env);\n }\n get(key: string): string | undefined {\n return this._env[key];\n }\n set(key: string, value?: string): void {\n if (value) {\n this._env[key] = value;\n }\n }\n delete(key: string): void {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._env[key];\n }\n}\n\nclass DenoEnvActions implements EnvActions {\n readonly #deno = globalThis as unknown as { Deno: { env: Map<string, string> } };\n\n get _env(): Map<string, string> {\n return this.#deno.Deno.env;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor, @typescript-eslint/no-unused-vars\n constructor(opts: Partial<EnvFactoryOpts>) {\n // do nothing\n }\n\n register(env: Env): Env {\n return env;\n }\n active(): boolean {\n return typeof this.#deno === \"object\" && typeof this.#deno.Deno === \"object\" && typeof this.#deno.Deno.env === \"object\";\n }\n keys(): string[] {\n return Array.from(this._env.keys());\n }\n get(key: string): string | undefined {\n return this._env.get(key);\n }\n set(key: string, value?: string): void {\n if (value) {\n this._env.set(key, value);\n }\n }\n delete(key: string): void {\n this._env.delete(key);\n }\n}\n\nexport class BrowserEnvActions implements EnvActions {\n readonly env = new Map<string, string>();\n readonly opts: Partial<EnvFactoryOpts>;\n constructor(opts: Partial<EnvFactoryOpts>) {\n this.opts = opts;\n }\n\n get(key: string): string | undefined {\n return this.env.get(key);\n }\n set(key: string, value?: string): void {\n if (value) {\n this.env.set(key, value);\n }\n }\n delete(key: string): void {\n this.env.delete(key);\n }\n keys(): string[] {\n return Array.from(this.env.keys());\n }\n active(): boolean {\n return true; // that should work on every runtime\n }\n\n register(env: Env): Env {\n const sym = Symbol.for(this.opts.symbol || \"CP_ENV\");\n const browser = globalThis as unknown as Record<symbol, Env>;\n browser[sym] = env;\n return env;\n }\n}\n\ninterface EnvFactoryOpts {\n readonly symbol: string; // default \"CP_ENV\" used by BrowserEnvActions\n readonly presetEnv: Map<string, string>;\n}\n\ntype OnSetFn = (key: string, value?: string) => void;\nexport interface OnSetItem {\n readonly filter: Set<string>;\n readonly fn: OnSetFn;\n}\n\nexport interface Env extends EnvMap {\n onSet(fn: OnSetFn, ...filter: string[]): void;\n}\n\nconst _envFactory = new ResolveOnce<Env>();\nexport function envFactory(opts: Partial<Omit<EnvFactoryOpts, \"action\">> = {}): Env {\n return _envFactory.once(() => {\n const found = [new NodeEnvActions(opts), new DenoEnvActions(opts), new BrowserEnvActions(opts)].find((env) => env.active());\n if (!found) {\n throw new Error(\"SysContainer:envFactory: no env available\");\n }\n const ret = new EnvImpl(found, opts);\n found.register(ret);\n return ret;\n });\n}\n\nexport class EnvImpl implements Env {\n readonly _map: EnvMap;\n constructor(map: EnvMap, opts: Partial<EnvFactoryOpts> = {}) {\n this._map = map;\n this._updatePresets(opts.presetEnv);\n }\n _updatePresets(presetEnv?: Map<string, string>): void {\n if (!presetEnv) {\n return;\n }\n for (const [key, value] of presetEnv) {\n this._map.set(key, value);\n }\n }\n _applyOnSet(onSet: OnSetItem[], key?: string, value?: string): void {\n onSet.forEach((item) => {\n let keys: string[] = [];\n if (key) {\n keys = [key];\n } else {\n keys = this._map.keys();\n }\n keys\n .filter((k) => {\n if (item.filter.size === 0) {\n return true;\n }\n if (item.filter.has(k)) {\n return true;\n }\n return false;\n })\n .forEach((k) => {\n let v;\n if (!key && !value) {\n // init\n v = this._map.get(k);\n } else if (key && !value) {\n // del\n v = undefined;\n } else {\n // set\n v = value;\n }\n item.fn(k, v);\n });\n });\n }\n readonly _onSet: OnSetItem[] = [];\n keys(): string[] {\n return this._map.keys();\n }\n // filter is not set all sets passed\n onSet(fn: OnSetFn, ...filter: string[]): void {\n const item: OnSetItem = { filter: new Set(filter), fn };\n this._onSet.push(item);\n this._applyOnSet([item]);\n }\n get(key: string): string | undefined {\n return this._map.get(key);\n }\n set(key: string, value?: string): void {\n if (!value) {\n return;\n }\n this._map.set(key, value);\n this._applyOnSet(this._onSet, key, value);\n }\n delete(key: string): void {\n this._map.delete(key);\n this._applyOnSet(this._onSet, key);\n }\n}\n\n// export const envImpl = new EnvImpl();\n","import { FileService } from \"./file_service\";\nimport { TimeMode, RandomMode, IDMode, SystemService, VoidFunc, SysAbstraction } from \"./sys_abstraction\";\nimport { Time } from \"./time\";\n\nexport class SysTime extends Time {\n Now(): Date {\n return new Date();\n }\n Sleep(duration: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve();\n }, duration);\n });\n }\n}\n\nexport class ConstTime extends Time {\n Now(): Date {\n return new Date(2021, 1, 1, 0, 0, 0, 0);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Sleep(duration: number): Promise<void> {\n return Promise.resolve();\n }\n}\n\nexport class StepTime extends Time {\n _step: Date;\n constructor() {\n super();\n this._step = new ConstTime().Now();\n }\n Now() {\n if (this._step.getTime() === 0) {\n this._step = new ConstTime().Now();\n return this._step;\n }\n this._step = new Date(this._step.getTime() + 1000);\n return this._step;\n }\n Sleep(duration: number): Promise<void> {\n this._step = new Date(this._step.getTime() + duration);\n return Promise.resolve();\n }\n}\n\nexport function TimeFactory(timeMode: TimeMode): Time {\n switch (timeMode) {\n case TimeMode.REAL:\n return new SysTime();\n case TimeMode.CONST:\n return new ConstTime();\n case TimeMode.STEP:\n return new StepTime();\n }\n return new SysTime();\n}\n\nexport class RandomService {\n readonly _mode: RandomMode;\n _step = 0;\n constructor(mode: RandomMode) {\n this._mode = mode;\n }\n Random0ToValue(value: number): number {\n switch (this._mode) {\n case RandomMode.CONST:\n return 0.5 * value;\n case RandomMode.STEP:\n this._step += 0.0001;\n return this._step * value;\n case RandomMode.RANDOM:\n return Math.random() * value;\n default:\n throw new Error(\"Unknown RandomMode\");\n }\n }\n}\n\nexport class IdService {\n readonly _mode: IDMode;\n _step = 0;\n constructor(mode?: IDMode) {\n if (!mode) {\n mode = IDMode.UUID;\n }\n this._mode = mode;\n }\n NextId(): string {\n switch (this._mode) {\n case IDMode.UUID:\n return crypto.randomUUID();\n case IDMode.CONST:\n return \"VeryUniqueID\";\n case IDMode.STEP:\n return `STEPId-${this._step++}`;\n default:\n throw new Error(\"Unknown IDMode\");\n }\n }\n}\n\nexport interface BaseSysAbstractionParams {\n readonly FileSystem: FileService;\n readonly SystemService: SystemService;\n}\n\nexport interface ExitHandler {\n readonly hdl: VoidFunc;\n readonly id: string;\n}\n\nexport interface ExitService {\n injectExitHandlers(hdls: ExitHandler[]): void;\n exit(code: number): void;\n}\n\nconst decoder = new TextDecoder();\nexport class BaseSysAbstraction {\n readonly _time = new SysTime();\n readonly _stdout = new WritableStream({\n write(chunk) {\n return new Promise((resolve) => {\n const decoded = decoder.decode(chunk);\n // eslint-disable-next-line no-console\n console.log(decoded.trimEnd());\n resolve();\n });\n },\n });\n readonly _stderr = new WritableStream({\n write(chunk) {\n return new Promise((resolve) => {\n const decoded = decoder.decode(chunk);\n // eslint-disable-next-line no-console\n console.error(decoded.trimEnd());\n resolve();\n });\n },\n });\n\n readonly _idService = new IdService();\n readonly _randomService = new RandomService(RandomMode.RANDOM);\n readonly _fileSystem: FileService;\n readonly _systemService: SystemService;\n\n constructor(params: BaseSysAbstractionParams) {\n this._fileSystem = params.FileSystem;\n this._systemService = params.SystemService;\n }\n}\n\nexport interface WrapperSysAbstractionParams {\n readonly TimeMode?: TimeMode;\n readonly IdMode?: IDMode;\n readonly Stdout?: WritableStream<Uint8Array>;\n readonly Stderr?: WritableStream<Uint8Array>;\n readonly RandomMode?: RandomMode;\n readonly FileSystem?: FileService;\n readonly SystemService?: SystemService;\n}\n\nexport class WrapperSysAbstraction implements SysAbstraction {\n readonly _time: Time;\n readonly _stdout: WritableStream<Uint8Array>;\n readonly _stderr: WritableStream<Uint8Array>;\n readonly _idService: IdService;\n readonly _randomService: RandomService;\n readonly _fileSystem: FileService;\n readonly _systemService: SystemService;\n constructor(base: BaseSysAbstraction, params?: WrapperSysAbstractionParams) {\n this._time = base._time;\n this._stdout = base._stdout;\n this._stderr = base._stderr;\n this._idService = base._idService;\n this._randomService = base._randomService;\n this._fileSystem = base._fileSystem;\n this._systemService = base._systemService;\n if (params) {\n if (params.TimeMode) {\n this._time = TimeFactory(params.TimeMode);\n }\n if (params.Stdout) {\n this._stdout = params.Stdout;\n }\n if (params.Stderr) {\n this._stderr = params.Stderr;\n }\n if (params.IdMode) {\n this._idService = new IdService(params.IdMode);\n }\n if (params.RandomMode) {\n this._randomService = new RandomService(params.RandomMode);\n }\n if (params.FileSystem) {\n this._fileSystem = params.FileSystem;\n }\n if (params.SystemService) {\n this._systemService = params.SystemService;\n }\n }\n }\n Time(): Time {\n return this._time;\n }\n NextId(): string {\n return this._idService.NextId();\n }\n Random0ToValue(value: number): number {\n return this._randomService.Random0ToValue(value);\n }\n Stdout(): WritableStream {\n return this._stdout;\n }\n Stderr(): WritableStream {\n return this._stderr;\n }\n\n System(): SystemService {\n return this._systemService;\n }\n FileSystem(): FileService {\n return this._fileSystem;\n }\n}\n// export const BaseSysAbstraction = new BaseSysAbstractionImpl()\n"],"mappings":"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","names":["TimeMode","RandomMode","IDMode","TimeUnits"]}
|