@araminix/lib 0.0.0-stage → 1.0.0

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.
@@ -0,0 +1,89 @@
1
+ import type { Connection } from './connection.js';
2
+ import { NewStreamType } from './messages.js';
3
+ import { Result } from './utils/result.js';
4
+ export declare enum StreamErr {
5
+ Dead = "Dead",
6
+ Concurrent = "Concurrent",
7
+ Timeout = "Timeout"
8
+ }
9
+ export declare enum InitStreamErr {
10
+ Dead = "Dead",
11
+ Lost = "Lost"
12
+ }
13
+ export declare enum StreamCloseCodes {
14
+ Normal = "Normal",
15
+ Lost = "Lost",
16
+ NotFound = "NotFound",
17
+ Duplicate = "Duplicate",
18
+ Error = "Error"
19
+ }
20
+ export declare class Stream<TArgs = unknown, TDataIn = unknown, TDataOut = unknown> {
21
+ private controller;
22
+ constructor(controller: StreamController<TArgs, TDataIn, TDataOut>);
23
+ get active(): boolean;
24
+ waitClose(): Promise<StreamCloseCodes>;
25
+ get closeCode(): StreamCloseCodes | undefined;
26
+ get id(): string;
27
+ get args(): Readonly<TArgs>;
28
+ read<T = TDataIn>(hp?: number): Promise<Result<T, StreamErr>>;
29
+ write<T = TDataOut>(data: T): Promise<Result<void, StreamErr>>;
30
+ closeOk(): void;
31
+ closeErr(): void;
32
+ }
33
+ export declare abstract class StreamController<TArgs = unknown, TDataIn = unknown, TDataOut = unknown> {
34
+ protected connection: Connection;
35
+ stream: Stream<TArgs, TDataIn, TDataOut>;
36
+ protected initiated: boolean;
37
+ private _hp?;
38
+ private _weak;
39
+ protected abstract hp: number;
40
+ protected abstract weak: boolean;
41
+ private incomingData;
42
+ private outgoingData;
43
+ dead: boolean;
44
+ closedCode: StreamCloseCodes | undefined;
45
+ private readResolve?;
46
+ private writeResolve?;
47
+ private readHp?;
48
+ readonly closePromise: Promise<StreamCloseCodes>;
49
+ private closeResolve;
50
+ constructor(connection: Connection);
51
+ abstract get id(): string;
52
+ abstract get args(): TArgs;
53
+ protected restoreHp(): void;
54
+ close(code: StreamCloseCodes): void;
55
+ write<T = TDataOut>(data: T): Promise<Result<void, StreamErr>>;
56
+ read<T = TDataIn>(hp: number): Promise<Result<T, StreamErr>>;
57
+ onClose(code: StreamCloseCodes): void;
58
+ onData<T = TDataIn>(data: T): void;
59
+ onPong(): void;
60
+ onPing(): void;
61
+ _tic(): void;
62
+ protected tic(): void;
63
+ private destroy;
64
+ protected onDestroy(): void;
65
+ }
66
+ export declare class IncomingStreamController<TArgs = unknown, TDataIn = unknown, TDataOut = unknown> extends StreamController<TArgs, TDataIn, TDataOut> {
67
+ message: NewStreamType;
68
+ protected hp: number;
69
+ protected weak: boolean;
70
+ constructor(connection: Connection, message: NewStreamType);
71
+ get args(): TArgs;
72
+ get id(): string;
73
+ }
74
+ export declare class OutgoingStreamController<TArgs = unknown, TDataIn = unknown, TDataOut = unknown> extends StreamController<TArgs, TDataIn, TDataOut> {
75
+ private readonly name;
76
+ readonly args: TArgs;
77
+ protected hp: number;
78
+ protected weak: boolean;
79
+ readonly id: string;
80
+ private initResolve?;
81
+ private initSend;
82
+ constructor(connection: Connection, name: string, args: TArgs);
83
+ initiate(): Promise<Result<Stream<TArgs, TDataIn, TDataOut>, InitStreamErr>>;
84
+ private tryInitiate;
85
+ onAcceptStream(): void;
86
+ protected onDestroy(): void;
87
+ protected tic(): void;
88
+ }
89
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,254 @@
1
+ import { uuid } from './utils/index.js';
2
+ import { deal, Err, Ok } from './utils/result.js';
3
+ export var StreamErr;
4
+ (function (StreamErr) {
5
+ StreamErr["Dead"] = "Dead";
6
+ StreamErr["Concurrent"] = "Concurrent";
7
+ StreamErr["Timeout"] = "Timeout";
8
+ })(StreamErr || (StreamErr = {}));
9
+ export var InitStreamErr;
10
+ (function (InitStreamErr) {
11
+ InitStreamErr["Dead"] = "Dead";
12
+ InitStreamErr["Lost"] = "Lost";
13
+ })(InitStreamErr || (InitStreamErr = {}));
14
+ export var StreamCloseCodes;
15
+ (function (StreamCloseCodes) {
16
+ StreamCloseCodes["Normal"] = "Normal";
17
+ StreamCloseCodes["Lost"] = "Lost";
18
+ StreamCloseCodes["NotFound"] = "NotFound";
19
+ StreamCloseCodes["Duplicate"] = "Duplicate";
20
+ StreamCloseCodes["Error"] = "Error";
21
+ })(StreamCloseCodes || (StreamCloseCodes = {}));
22
+ export class Stream {
23
+ controller;
24
+ constructor(controller) {
25
+ this.controller = controller;
26
+ }
27
+ get active() {
28
+ return !this.controller.dead;
29
+ }
30
+ waitClose() {
31
+ return this.controller.closePromise;
32
+ }
33
+ get closeCode() {
34
+ return this.controller.closedCode;
35
+ }
36
+ get id() {
37
+ return this.controller.id;
38
+ }
39
+ get args() {
40
+ return Object.freeze(this.controller.args);
41
+ }
42
+ read(hp = 30) {
43
+ return this.controller.read(hp);
44
+ }
45
+ async write(data) {
46
+ return this.controller.write(data);
47
+ }
48
+ closeOk() {
49
+ this.controller.close(StreamCloseCodes.Normal);
50
+ }
51
+ closeErr() {
52
+ this.controller.close(StreamCloseCodes.Error);
53
+ }
54
+ }
55
+ export class StreamController {
56
+ connection;
57
+ stream = new Stream(this);
58
+ initiated = false;
59
+ _hp;
60
+ _weak = false;
61
+ incomingData = undefined;
62
+ outgoingData = undefined;
63
+ dead = false;
64
+ closedCode = undefined;
65
+ readResolve;
66
+ writeResolve;
67
+ readHp;
68
+ closePromise;
69
+ closeResolve;
70
+ constructor(connection) {
71
+ this.connection = connection;
72
+ [this.closePromise, this.closeResolve] = deal();
73
+ }
74
+ restoreHp() {
75
+ this._weak = false;
76
+ this._hp = this.hp;
77
+ }
78
+ close(code) {
79
+ this.closedCode = code;
80
+ this.connection.writeClose(this.id, code);
81
+ this.destroy();
82
+ }
83
+ write(data) {
84
+ const [promise, resolve] = deal();
85
+ if (this.dead) {
86
+ resolve(new Err(StreamErr.Dead));
87
+ return promise;
88
+ }
89
+ if (this.writeResolve) {
90
+ this.writeResolve(new Err(StreamErr.Concurrent));
91
+ this.outgoingData = undefined;
92
+ }
93
+ const result = this.connection.writeData(this.id, data);
94
+ if (result.isOk()) {
95
+ resolve(new Ok(undefined));
96
+ return promise;
97
+ }
98
+ this.writeResolve = resolve;
99
+ this.outgoingData = data;
100
+ return promise;
101
+ }
102
+ read(hp) {
103
+ this.readHp = hp;
104
+ const [promise, resolve] = deal();
105
+ if (this.dead) {
106
+ resolve(new Err(StreamErr.Dead));
107
+ return promise;
108
+ }
109
+ if (this.incomingData !== undefined) {
110
+ resolve(new Ok(this.incomingData));
111
+ this.incomingData = undefined;
112
+ return promise;
113
+ }
114
+ if (this.readResolve) {
115
+ this.readResolve(new Err(StreamErr.Concurrent));
116
+ }
117
+ this.readResolve = resolve;
118
+ return promise;
119
+ }
120
+ onClose(code) {
121
+ this.closedCode = code;
122
+ this.destroy();
123
+ }
124
+ onData(data) {
125
+ this.restoreHp();
126
+ if (this.readResolve) {
127
+ this.readResolve(new Ok(data));
128
+ this.readResolve = undefined;
129
+ return;
130
+ }
131
+ this.incomingData = data;
132
+ }
133
+ onPong() {
134
+ this.restoreHp();
135
+ }
136
+ onPing() {
137
+ this.restoreHp();
138
+ this.connection.writePong(this.id);
139
+ }
140
+ _tic() {
141
+ if (this._hp === undefined) {
142
+ this._hp = this.hp;
143
+ }
144
+ this._hp--;
145
+ if (this._hp === 0 && (this.weak || this._weak)) {
146
+ this.closedCode = StreamCloseCodes.Lost;
147
+ this.destroy();
148
+ return;
149
+ }
150
+ if (this._hp === 0 && !this._weak) {
151
+ this._weak = true;
152
+ this._hp = this.hp;
153
+ }
154
+ if (this._weak && !this.weak && this._hp % 2 === 0) {
155
+ this.connection.writePing(this.id);
156
+ }
157
+ if (this.readResolve && this.readHp !== undefined) {
158
+ this.readHp--;
159
+ if (this.readHp === 0) {
160
+ this.readResolve(new Err(StreamErr.Timeout));
161
+ this.readResolve = undefined;
162
+ }
163
+ }
164
+ if (!this._weak && this.writeResolve) {
165
+ const result = this.connection.writeData(this.id, this.outgoingData);
166
+ if (result.isOk()) {
167
+ this.writeResolve(new Ok(undefined));
168
+ this.outgoingData = undefined;
169
+ }
170
+ }
171
+ if (!this.weak) {
172
+ this.tic();
173
+ }
174
+ }
175
+ tic() { }
176
+ destroy() {
177
+ this.dead = true;
178
+ if (this.readResolve) {
179
+ this.readResolve(new Err(StreamErr.Dead));
180
+ this.readResolve = undefined;
181
+ }
182
+ if (this.writeResolve) {
183
+ this.writeResolve(new Err(StreamErr.Dead));
184
+ this.writeResolve = undefined;
185
+ this.outgoingData = undefined;
186
+ }
187
+ this.connection.removeStream(this.id);
188
+ this.onDestroy();
189
+ if (this.closedCode) {
190
+ this.closeResolve(this.closedCode);
191
+ }
192
+ }
193
+ onDestroy() { }
194
+ }
195
+ export class IncomingStreamController extends StreamController {
196
+ message;
197
+ hp = 10;
198
+ weak = false;
199
+ constructor(connection, message) {
200
+ super(connection);
201
+ this.message = message;
202
+ }
203
+ get args() {
204
+ return this.message.args;
205
+ }
206
+ get id() {
207
+ return this.message.id;
208
+ }
209
+ }
210
+ export class OutgoingStreamController extends StreamController {
211
+ name;
212
+ args;
213
+ hp = 20;
214
+ weak = true;
215
+ id = uuid();
216
+ initResolve;
217
+ initSend = false;
218
+ constructor(connection, name, args) {
219
+ super(connection);
220
+ this.name = name;
221
+ this.args = args;
222
+ }
223
+ initiate() {
224
+ const [promise, resolve] = deal();
225
+ this.initResolve = resolve;
226
+ this.tryInitiate();
227
+ return promise;
228
+ }
229
+ tryInitiate() {
230
+ if (!this.initSend) {
231
+ const result = this.connection.writeNewStream(this.id, this.name, this.args);
232
+ if (result.isOk()) {
233
+ this.initSend = true;
234
+ }
235
+ }
236
+ }
237
+ onAcceptStream() {
238
+ if (this.initResolve) {
239
+ this.restoreHp();
240
+ this.initResolve(new Ok(this.stream));
241
+ this.initResolve = undefined;
242
+ }
243
+ }
244
+ onDestroy() {
245
+ if (this.initResolve) {
246
+ this.initResolve(new Err(InitStreamErr.Dead));
247
+ this.initResolve = undefined;
248
+ }
249
+ }
250
+ tic() {
251
+ this.tryInitiate();
252
+ }
253
+ }
254
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import * as t from 'io-ts';
2
+ import { deal, Err, err, Ok, ok, R, Result } from './result.js';
3
+ export * from './logger.js';
4
+ export * from './result.js';
5
+ export { t, Result, Ok, Err, ok, err, R, deal };
6
+ export declare enum LoopResult {
7
+ Cont = 0,
8
+ Stop = 1
9
+ }
10
+ export type Defined<T> = T extends undefined ? never : T;
11
+ export declare function uuid(): string;
12
+ export declare function sleep(ms: number): Promise<void>;
13
+ export declare function loop(fun: () => Promise<LoopResult>): void;
14
+ export declare function once(fun: () => Promise<void> | void): void;
15
+ export declare function wrap<OkType, ErrType = Error>(exe: Promise<OkType> | (() => Promise<OkType>)): Promise<Result<OkType, ErrType>>;
16
+ export declare function wrapSync<OkType, ErrType = Error>(exe: () => OkType): Result<OkType, ErrType>;
17
+ export declare function trimSlash(str: string): string;
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEhE,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AAEhD,oBAAY,UAAU;IAClB,IAAI,IAAI;IACR,IAAI,IAAI;CACX;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AAEzD,wBAAgB,IAAI,IAAI,MAAM,CAE7B;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAMzD;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAE1D;AAED,wBAAsB,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CASpI;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM5F;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAS7C"}
@@ -0,0 +1,56 @@
1
+ import * as t from 'io-ts';
2
+ import { deal, Err, err, Ok, ok } from './result.js';
3
+ export * from './logger.js';
4
+ export * from './result.js';
5
+ export { t, Ok, Err, ok, err, deal };
6
+ export var LoopResult;
7
+ (function (LoopResult) {
8
+ LoopResult[LoopResult["Cont"] = 0] = "Cont";
9
+ LoopResult[LoopResult["Stop"] = 1] = "Stop";
10
+ })(LoopResult || (LoopResult = {}));
11
+ export function uuid() {
12
+ return crypto.randomUUID();
13
+ }
14
+ export function sleep(ms) {
15
+ return new Promise((resolve) => setTimeout(resolve, ms));
16
+ }
17
+ export function loop(fun) {
18
+ fun().then((result) => {
19
+ if (result === LoopResult.Cont) {
20
+ loop(fun);
21
+ }
22
+ });
23
+ }
24
+ export function once(fun) {
25
+ fun();
26
+ }
27
+ export async function wrap(exe) {
28
+ try {
29
+ if (exe instanceof Promise) {
30
+ return new Ok(await exe);
31
+ }
32
+ return new Ok(await exe());
33
+ }
34
+ catch (e) {
35
+ return new Err(e);
36
+ }
37
+ }
38
+ export function wrapSync(exe) {
39
+ try {
40
+ return new Ok(exe());
41
+ }
42
+ catch (e) {
43
+ return new Err(e);
44
+ }
45
+ }
46
+ export function trimSlash(str) {
47
+ let newStr = str;
48
+ if (newStr.startsWith('/')) {
49
+ newStr = newStr.slice(1);
50
+ }
51
+ if (newStr.endsWith('/')) {
52
+ newStr = newStr.slice(0, -1);
53
+ }
54
+ return newStr;
55
+ }
56
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAa,MAAM,aAAa,CAAC;AAEhE,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,CAAC,EAAU,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAK,IAAI,EAAE,CAAC;AAEhD,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,2CAAQ,CAAA;IACR,2CAAQ,CAAA;AACZ,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAID,MAAM,UAAU,IAAI;IAChB,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAU;IAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,GAA8B;IAC/C,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QAClB,IAAI,MAAM,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,GAA+B;IAChD,GAAG,EAAE,CAAC;AACV,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAA0B,GAA8C;IAC9F,IAAI,CAAC;QACD,IAAI,GAAG,YAAY,OAAO,EAAE,CAAC;YACzB,OAAO,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,IAAI,GAAG,CAAC,CAAY,CAAC,CAAC;IACjC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,QAAQ,CAA0B,GAAiB;IAC/D,IAAI,CAAC;QACD,OAAO,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,IAAI,GAAG,CAAC,CAAY,CAAC,CAAC;IACjC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW;IACjC,IAAI,MAAM,GAAG,GAAG,CAAC;IACjB,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -0,0 +1,38 @@
1
+ export declare enum LOG_LEVEL {
2
+ TRACE = "trace",
3
+ INFO = "info",
4
+ DEBUG = "debug",
5
+ WARN = "warn",
6
+ ERROR = "error"
7
+ }
8
+ export interface StoreOptions {
9
+ directory: string;
10
+ level: LOG_LEVEL;
11
+ }
12
+ export interface LoggerConfig {
13
+ level: LOG_LEVEL;
14
+ showStackTrace: boolean;
15
+ showTimestamp: boolean;
16
+ format: 'json' | 'text';
17
+ storeOptions?: StoreOptions | null;
18
+ prefix?: string | null;
19
+ }
20
+ export declare class Logger {
21
+ private logPriority;
22
+ private config;
23
+ constructor(options?: LoggerConfig);
24
+ configure(options: Partial<LoggerConfig>): void;
25
+ private log;
26
+ static getTimestamp(): string;
27
+ static getTodaysDate(): string;
28
+ private getLogFilePath;
29
+ initStore(options: StoreOptions): void;
30
+ setLevel(level: LOG_LEVEL): void;
31
+ error<T extends unknown[]>(...args: T): void;
32
+ warn<T extends unknown[]>(...args: T): void;
33
+ info<T extends unknown[]>(...args: T): void;
34
+ trace<T extends unknown[]>(...args: T): void;
35
+ debug<T extends unknown[]>(...args: T): void;
36
+ }
37
+ export declare const logger: Logger;
38
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAQA,oBAAY,SAAS;IACjB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;CAClB;AAkBD,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAWD,qBAAa,MAAM;IACf,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAgC;IAE9C,YAAY,OAAO,GAAE,YAA6B,EAGjD;IAED,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAK9C;IAED,OAAO,CAAC,GAAG;IAqCX,MAAM,CAAC,YAAY,IAAI,MAAM,CAE5B;IAED,MAAM,CAAC,aAAa,IAAI,MAAM,CAE7B;IAED,OAAO,CAAC,cAAc;IAStB,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAOrC;IAED,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAE/B;IAED,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAE3C;IAED,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAE1C;IAED,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAE1C;IAED,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAE3C;IAED,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAE3C;CACJ;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Logger module for handling application logging with different levels and formats
3
+ * @module logger
4
+ */
5
+ import fs from 'fs';
6
+ import gach, { COLOR_NAMES } from 'gach';
7
+ import path from 'path';
8
+ export var LOG_LEVEL;
9
+ (function (LOG_LEVEL) {
10
+ LOG_LEVEL["TRACE"] = "trace";
11
+ LOG_LEVEL["INFO"] = "info";
12
+ LOG_LEVEL["DEBUG"] = "debug";
13
+ LOG_LEVEL["WARN"] = "warn";
14
+ LOG_LEVEL["ERROR"] = "error";
15
+ })(LOG_LEVEL || (LOG_LEVEL = {}));
16
+ const LOG_PRIORITY = {
17
+ [LOG_LEVEL.TRACE]: 0,
18
+ [LOG_LEVEL.INFO]: 1,
19
+ [LOG_LEVEL.DEBUG]: 2,
20
+ [LOG_LEVEL.WARN]: 3,
21
+ [LOG_LEVEL.ERROR]: 4,
22
+ };
23
+ const LOG_COLORS = {
24
+ [LOG_LEVEL.TRACE]: COLOR_NAMES.LIGHT_MAGENTA,
25
+ [LOG_LEVEL.INFO]: COLOR_NAMES.CYAN,
26
+ [LOG_LEVEL.DEBUG]: COLOR_NAMES.BLUE,
27
+ [LOG_LEVEL.WARN]: COLOR_NAMES.YELLOW,
28
+ [LOG_LEVEL.ERROR]: COLOR_NAMES.RED,
29
+ };
30
+ const DEFAULT_CONFIG = {
31
+ level: LOG_LEVEL.DEBUG,
32
+ showStackTrace: true,
33
+ showTimestamp: true,
34
+ format: 'text',
35
+ storeOptions: null,
36
+ prefix: null,
37
+ };
38
+ export class Logger {
39
+ logPriority;
40
+ config = DEFAULT_CONFIG;
41
+ constructor(options = DEFAULT_CONFIG) {
42
+ this.configure(options);
43
+ this.logPriority = LOG_PRIORITY[options.level];
44
+ }
45
+ configure(options) {
46
+ this.config = { ...this.config, ...options };
47
+ if (options.level) {
48
+ this.logPriority = LOG_PRIORITY[options.level];
49
+ }
50
+ }
51
+ log(level, args) {
52
+ const timestamp = Logger.getTimestamp();
53
+ const prefix = this.config.prefix ? ` [${this.config.prefix}]` : '';
54
+ if (LOG_PRIORITY[level] >= this.logPriority) {
55
+ const consoleFn = level === LOG_LEVEL.ERROR || level === LOG_LEVEL.WARN ? console.error : console.log;
56
+ if (this.config.format === 'json') {
57
+ const logObject = {
58
+ ...(this.config.showTimestamp && { timestamp }),
59
+ level: level.toUpperCase(),
60
+ prefix,
61
+ message: args
62
+ .map((arg) => {
63
+ try {
64
+ return typeof arg === 'object' ? JSON.stringify(arg) : String(arg);
65
+ }
66
+ catch {
67
+ return '[Unserializable Object]';
68
+ }
69
+ })
70
+ .join(' '),
71
+ };
72
+ consoleFn(JSON.stringify(logObject));
73
+ }
74
+ else {
75
+ const coloredLevel = gach.default(`[${level.toUpperCase()}]`).color(LOG_COLORS[level]).text;
76
+ const coloredTime = this.config.showTimestamp ? gach.default(`[${timestamp}]`).color('blue').text + ' ' : '';
77
+ consoleFn(`${coloredTime}${coloredLevel}${prefix}`, ...args);
78
+ }
79
+ }
80
+ if (this.config.storeOptions && LOG_PRIORITY[level] >= LOG_PRIORITY[this.config.storeOptions.level]) {
81
+ const formattedArgs = args.map((arg) => (typeof arg === 'object' ? JSON.stringify(arg) : String(arg))).join(' ');
82
+ const logMessage = `[${timestamp}] [${level.toUpperCase()}] ${formattedArgs}`;
83
+ const filePath = this.getLogFilePath(level);
84
+ fs.appendFileSync(filePath, logMessage + '\n');
85
+ }
86
+ }
87
+ static getTimestamp() {
88
+ return new Date().toISOString().replace('T', ' - ').replace('Z', '');
89
+ }
90
+ static getTodaysDate() {
91
+ return new Date().toISOString().split('T')[0];
92
+ }
93
+ getLogFilePath(level) {
94
+ if (!this.config.storeOptions) {
95
+ throw new Error('Log directory is not initialized. Call initStore first.');
96
+ }
97
+ const date = Logger.getTodaysDate();
98
+ const fileName = level === LOG_LEVEL.ERROR ? `folkrum-errors-${date}.log` : `folkrum-logs-${date}.log`;
99
+ return path.join(this.config.storeOptions.directory, fileName);
100
+ }
101
+ initStore(options) {
102
+ const { directory, level } = options;
103
+ const absolutePath = path.resolve(directory);
104
+ if (!fs.existsSync(absolutePath)) {
105
+ fs.mkdirSync(absolutePath, { recursive: true });
106
+ }
107
+ this.config.storeOptions = { directory: absolutePath, level };
108
+ }
109
+ setLevel(level) {
110
+ this.logPriority = LOG_PRIORITY[level];
111
+ }
112
+ error(...args) {
113
+ this.log(LOG_LEVEL.ERROR, args);
114
+ }
115
+ warn(...args) {
116
+ this.log(LOG_LEVEL.WARN, args);
117
+ }
118
+ info(...args) {
119
+ this.log(LOG_LEVEL.INFO, args);
120
+ }
121
+ trace(...args) {
122
+ this.log(LOG_LEVEL.TRACE, args);
123
+ }
124
+ debug(...args) {
125
+ this.log(LOG_LEVEL.DEBUG, args);
126
+ }
127
+ }
128
+ export const logger = new Logger();
129
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export type Result<T, E> = Ok<T> | Err<E, T>;
2
+ export type R = Result<void, void>;
3
+ export declare function ok(): Ok<void>;
4
+ export declare function err(): Err<void, void>;
5
+ export declare class Ok<T> {
6
+ readonly v: T;
7
+ constructor(v: T);
8
+ isOk(): this is Ok<T>;
9
+ isErr(): this is Err<never, T>;
10
+ unwrap(): T;
11
+ serialize(): {
12
+ ok: true;
13
+ v: T;
14
+ };
15
+ }
16
+ export declare class Err<E = void, T = void> {
17
+ readonly e: E;
18
+ constructor(e: E);
19
+ isOk(): this is Ok<never>;
20
+ isErr(): this is Err<E, never>;
21
+ unwrap(): T;
22
+ serialize(): {
23
+ ok: false;
24
+ e: E;
25
+ };
26
+ }
27
+ export type Deal<T> = [promise: Promise<T>, resolve: (value: T) => R];
28
+ export declare function deal<T>(): Deal<T>;
29
+ //# sourceMappingURL=result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../../src/utils/result.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,MAAM,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAEnC,wBAAgB,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAE7B;AAED,wBAAgB,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAErC;AAED,qBAAa,EAAE,CAAC,CAAC;IACb,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAEd,YAAY,CAAC,EAAE,CAAC,EAEf;IAED,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAEpB;IAED,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAE7B;IAED,MAAM,IAAI,CAAC,CAEV;IAED,SAAS,IAAI;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,CAAC,EAAE,CAAC,CAAA;KAAE,CAK9B;CACJ;AAED,qBAAa,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI;IAC/B,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAEd,YAAY,CAAC,EAAE,CAAC,EAEf;IAED,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,KAAK,CAAC,CAExB;IAED,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAE7B;IAED,MAAM,IAAI,CAAC,CAEV;IAED,SAAS,IAAI;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,CAAC,EAAE,CAAC,CAAA;KAAE,CAK/B;CACJ;AAED,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAEtE,wBAAgB,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAcjC"}