topsyde-utils 1.0.191 → 1.0.192
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/rxjs/useRxjs.js +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/server/bun/index.js +1 -1
- package/dist/server/bun/router/controller-discovery.js +1 -1
- package/dist/server/bun/router/router.internal.js +1 -1
- package/dist/server/bun/websocket/Channel.js +1 -1
- package/dist/server/bun/websocket/Client.js +1 -1
- package/dist/server/bun/websocket/Websocket.js +1 -1
- package/dist/server/bun/websocket/index.d.ts +4 -4
- package/dist/server/bun/websocket/index.js +4 -4
- package/dist/server/bun/websocket/index.js.map +1 -1
- package/dist/server/controller.js +1 -1
- package/dist/server/service.js +1 -1
- package/dist/throwable.js +1 -1
- package/dist/utils/Lib.d.ts +1 -0
- package/dist/utils/Lib.js +10 -1
- package/dist/utils/Lib.js.map +1 -1
- package/dist/utils/index.d.ts +2 -2
- package/dist/utils/index.js +2 -2
- package/dist/utils/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +6 -6
- package/src/server/bun/websocket/index.ts +4 -4
- package/src/utils/Lib.ts +11 -1
- package/src/utils/index.ts +2 -2
@@ -1,5 +1,5 @@
|
|
1
1
|
import { onBeforeUnmount, onMounted, ref } from "vue";
|
2
|
-
import { Guards, Lib } from "../../utils
|
2
|
+
import { Guards, Lib } from "../../utils.js";
|
3
3
|
import { Rxjs } from "../../utils/Rxjs.js";
|
4
4
|
export const useRxjs = (_namespace, actions, options) => {
|
5
5
|
const subs = ref(new Map());
|
package/dist/index.d.ts
CHANGED
@@ -15,16 +15,16 @@ export * from "./server/bun/router/controller-discovery";
|
|
15
15
|
export * from "./server/bun/router/routes";
|
16
16
|
export * from "./server/bun/router/router";
|
17
17
|
export * from "./server/bun/router/router.internal";
|
18
|
+
export * from "./server/bun/websocket/Websocket";
|
18
19
|
export * from "./server/bun/websocket/websocket.guards";
|
20
|
+
export * from "./server/bun/websocket/Message";
|
21
|
+
export * from "./server/bun/websocket/Channel";
|
19
22
|
export * from "./server/bun/websocket/Client";
|
20
|
-
export * from "./server/bun/websocket/Websocket";
|
21
23
|
export * from "./server/bun/websocket/websocket.enums";
|
22
24
|
export * from "./server/bun/websocket/websocket.types";
|
23
|
-
export * from "./server/bun/websocket/Message";
|
24
|
-
export * from "./server/bun/websocket/Channel";
|
25
25
|
export * from "./utils/Rxjs";
|
26
|
-
export * from "./utils/Guards";
|
27
26
|
export * from "./utils/Lib";
|
27
|
+
export * from "./utils/Guards";
|
28
28
|
export * from "./utils/Console";
|
29
29
|
export { default as Singleton } from "./singleton";
|
30
30
|
export { default as Initializable } from "./initializable";
|
@@ -36,12 +36,12 @@ export { default as Service } from "./server/service";
|
|
36
36
|
export { default as Database } from "./server/base/base.database";
|
37
37
|
export { default as Router } from "./server/bun/router/router";
|
38
38
|
export { default as Router_Internal } from "./server/bun/router/router.internal";
|
39
|
-
export { default as Client } from "./server/bun/websocket/Client";
|
40
39
|
export { default as Websocket } from "./server/bun/websocket/Websocket";
|
41
40
|
export { default as Message } from "./server/bun/websocket/Message";
|
42
41
|
export { default as Channel } from "./server/bun/websocket/Channel";
|
43
|
-
export { default as
|
42
|
+
export { default as Client } from "./server/bun/websocket/Client";
|
44
43
|
export { default as Lib } from "./utils/Lib";
|
44
|
+
export { default as Guards } from "./utils/Guards";
|
45
45
|
export { default as Console } from "./utils/Console";
|
46
46
|
export { ERROR_CODE, HTTP_ERROR_CODE, WS_ERROR_CODE } from "./errors";
|
47
47
|
export { InitializableOptions, InitializableEvent } from "./initializable";
|
package/dist/index.js
CHANGED
@@ -18,16 +18,16 @@ export * from "./server/bun/router/controller-discovery.js";
|
|
18
18
|
export * from "./server/bun/router/routes.js";
|
19
19
|
export * from "./server/bun/router/router.js";
|
20
20
|
export * from "./server/bun/router/router.internal.js";
|
21
|
+
export * from "./server/bun/websocket/Websocket.js";
|
21
22
|
export * from "./server/bun/websocket/websocket.guards.js";
|
23
|
+
export * from "./server/bun/websocket/Message.js";
|
24
|
+
export * from "./server/bun/websocket/Channel.js";
|
22
25
|
export * from "./server/bun/websocket/Client.js";
|
23
|
-
export * from "./server/bun/websocket/Websocket.js";
|
24
26
|
export * from "./server/bun/websocket/websocket.enums.js";
|
25
27
|
export * from "./server/bun/websocket/websocket.types.js";
|
26
|
-
export * from "./server/bun/websocket/Message.js";
|
27
|
-
export * from "./server/bun/websocket/Channel.js";
|
28
28
|
export * from "./utils/Rxjs.js";
|
29
|
-
export * from "./utils/Guards.js";
|
30
29
|
export * from "./utils/Lib.js";
|
30
|
+
export * from "./utils/Guards.js";
|
31
31
|
export * from "./utils/Console.js";
|
32
32
|
// Export default classes
|
33
33
|
export { default as Singleton } from "./singleton.js";
|
@@ -40,12 +40,12 @@ export { default as Service } from "./server/service.js";
|
|
40
40
|
export { default as Database } from "./server/base/base.database.js";
|
41
41
|
export { default as Router } from "./server/bun/router/router.js";
|
42
42
|
export { default as Router_Internal } from "./server/bun/router/router.internal.js";
|
43
|
-
export { default as Client } from "./server/bun/websocket/Client.js";
|
44
43
|
export { default as Websocket } from "./server/bun/websocket/Websocket.js";
|
45
44
|
export { default as Message } from "./server/bun/websocket/Message.js";
|
46
45
|
export { default as Channel } from "./server/bun/websocket/Channel.js";
|
47
|
-
export { default as
|
46
|
+
export { default as Client } from "./server/bun/websocket/Client.js";
|
48
47
|
export { default as Lib } from "./utils/Lib.js";
|
48
|
+
export { default as Guards } from "./utils/Guards.js";
|
49
49
|
export { default as Console } from "./utils/Console.js";
|
50
50
|
// Re-export specific items for backward compatibility
|
51
51
|
export { ERROR_CODE, HTTP_ERROR_CODE, WS_ERROR_CODE } from "./errors.js";
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,iCAAiC;AAEjC,qBAAqB;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC;AACtC,cAAc,8CAA8C,CAAC;AAC7D,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0CAA0C,CAAC;AACzD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,yCAAyC,CAAC;AACxD,cAAc
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,iCAAiC;AAEjC,qBAAqB;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC;AACtC,cAAc,8CAA8C,CAAC;AAC7D,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0CAA0C,CAAC;AACzD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,yCAAyC,CAAC;AACxD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAEhC,yBAAyB;AACzB,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACjG,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAErD,sDAAsD;AACtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEtE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEzE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAK/C,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAmB5G,OAAO,EAAE,aAAa,EAAiC,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-indexes.ts\n// Do not edit this file directly\n\n// Export all modules\nexport * from \"./errors\";\nexport * from \"./singleton\";\nexport * from \"./initializable\";\nexport * from \"./application\";\nexport * from \"./consts\";\nexport * from \"./types\";\nexport * from \"./throwable\";\nexport * from \"./enums\";\nexport * from \"./client/rxjs/useRxjs\";\nexport * from \"./client/vite/plugins/topsydeUtilsVitePlugin\";\nexport * from \"./server/controller\";\nexport * from \"./server/service\";\nexport * from \"./server/base/base.database\";\nexport * from \"./server/bun/router/controller-discovery\";\nexport * from \"./server/bun/router/routes\";\nexport * from \"./server/bun/router/router\";\nexport * from \"./server/bun/router/router.internal\";\nexport * from \"./server/bun/websocket/Websocket\";\nexport * from \"./server/bun/websocket/websocket.guards\";\nexport * from \"./server/bun/websocket/Message\";\nexport * from \"./server/bun/websocket/Channel\";\nexport * from \"./server/bun/websocket/Client\";\nexport * from \"./server/bun/websocket/websocket.enums\";\nexport * from \"./server/bun/websocket/websocket.types\";\nexport * from \"./utils/Rxjs\";\nexport * from \"./utils/Lib\";\nexport * from \"./utils/Guards\";\nexport * from \"./utils/Console\";\n\n// Export default classes\nexport { default as Singleton } from \"./singleton\";\nexport { default as Initializable } from \"./initializable\";\nexport { default as Application } from \"./application\";\nexport { default as Throwable } from \"./throwable\";\nexport { default as TopsydeUtilsVitePlugin } from \"./client/vite/plugins/topsydeUtilsVitePlugin\";\nexport { default as Controller } from \"./server/controller\";\nexport { default as Service } from \"./server/service\";\nexport { default as Database } from \"./server/base/base.database\";\nexport { default as Router } from \"./server/bun/router/router\";\nexport { default as Router_Internal } from \"./server/bun/router/router.internal\";\nexport { default as Websocket } from \"./server/bun/websocket/Websocket\";\nexport { default as Message } from \"./server/bun/websocket/Message\";\nexport { default as Channel } from \"./server/bun/websocket/Channel\";\nexport { default as Client } from \"./server/bun/websocket/Client\";\nexport { default as Lib } from \"./utils/Lib\";\nexport { default as Guards } from \"./utils/Guards\";\nexport { default as Console } from \"./utils/Console\";\n\n// Re-export specific items for backward compatibility\nexport { ERROR_CODE, HTTP_ERROR_CODE, WS_ERROR_CODE } from \"./errors\";\nexport { InitializableOptions, InitializableEvent } from \"./initializable\";\nexport { RESPONSE_INIT, HEADERS_INIT, RESPONSE_METHOD_OPTIONS } from \"./application\";\nexport { DEFAULT_FALSE_RESPONSE, LOG_COLORS, LOG_ICONS } from \"./consts\";\nexport { ClassConstructor, NonNullableType, ObjectKeys, KVObj, I_ApplicationResponse } from \"./types\";\nexport { E_IS, E_ENVIRONMENTS } from \"./enums\";\nexport { RxjsDataType, NamespaceActions, MultiNamespaceActions } from \"./client/rxjs/useRxjs\";\nexport { ControllerResponse, ControllerAction, ControllerMap, ControllerOptions } from \"./server/controller\";\nexport { Routes } from \"./server/bun/router/routes\";\nexport { WebsocketConstructorOptions, I_WebsocketConstructor } from \"./server/bun/websocket/Websocket\";\nexport { E_WebsocketMessageType, E_WebsocketMessagePriority } from \"./server/bun/websocket/websocket.enums\";\nexport {\n\tBunWebsocketMessage,\n\tWebsocketChannel,\n\tWebsocketClients,\n\tWebsocketMessageOptions,\n\tWebsocketMessage,\n\tWebsocketStructuredMessage,\n\tWebsocketEntityId,\n\tWebsocketEntityName,\n\tWebsocketEntityData,\n\tI_WebsocketEntity,\n\tI_WebsocketClient,\n\tI_WebsocketChannelEntity,\n\tBroadcastOptions,\n\tI_WebsocketChannel,\n\tWebsocketInterfaceHandlers,\n\tI_WebsocketInterface,\n} from \"./server/bun/websocket/websocket.types\";\nexport { E_SUBJET_TYPE, I_RxjsPayload, RxjsNamespaces, AsyncSubject, BehaviorSubject, ReplaySubject, Subject, Subscription } from \"./utils/Rxjs\";\n"]}
|
package/dist/server/bun/index.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { join } from 'path';
|
2
2
|
import { readdirSync, statSync } from 'fs';
|
3
|
-
import { Lib } from '../../../utils
|
3
|
+
import { Lib } from '../../../utils.js';
|
4
4
|
const fallbackRoutes = {};
|
5
5
|
/**
|
6
6
|
* Dynamically discovers and loads controllers from the components directory
|
@@ -1,11 +1,11 @@
|
|
1
|
+
export * from './Websocket';
|
1
2
|
export * from './websocket.guards';
|
3
|
+
export * from './Message';
|
4
|
+
export * from './Channel';
|
2
5
|
export * from './Client';
|
3
|
-
export * from './Websocket';
|
4
6
|
export * from './websocket.enums';
|
5
7
|
export * from './websocket.types';
|
6
|
-
export * from './Message';
|
7
|
-
export * from './Channel';
|
8
|
-
export { default as Client } from './Client';
|
9
8
|
export { default as Websocket } from './Websocket';
|
10
9
|
export { default as Message } from './Message';
|
11
10
|
export { default as Channel } from './Channel';
|
11
|
+
export { default as Client } from './Client';
|
@@ -1,14 +1,14 @@
|
|
1
1
|
// This file is auto-generated by scripts/generate-indexes.ts
|
2
2
|
// Do not edit this file directly
|
3
|
+
export * from './Websocket.js';
|
3
4
|
export * from './websocket.guards.js';
|
5
|
+
export * from './Message.js';
|
6
|
+
export * from './Channel.js';
|
4
7
|
export * from './Client.js';
|
5
|
-
export * from './Websocket.js';
|
6
8
|
export * from './websocket.enums.js';
|
7
9
|
export * from './websocket.types.js';
|
8
|
-
export * from './Message.js';
|
9
|
-
export * from './Channel.js';
|
10
|
-
export { default as Client } from './Client.js';
|
11
10
|
export { default as Websocket } from './Websocket.js';
|
12
11
|
export { default as Message } from './Message.js';
|
13
12
|
export { default as Channel } from './Channel.js';
|
13
|
+
export { default as Client } from './Client.js';
|
14
14
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,iCAAiC;AAEjC,cAAc,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/bun/websocket/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,iCAAiC;AAEjC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-indexes.ts\n// Do not edit this file directly\n\nexport * from './Websocket';\nexport * from './websocket.guards';\nexport * from './Message';\nexport * from './Channel';\nexport * from './Client';\nexport * from './websocket.enums';\nexport * from './websocket.types';\nexport { default as Websocket } from './Websocket';\nexport { default as Message } from './Message';\nexport { default as Channel } from './Channel';\nexport { default as Client } from './Client';\n"]}
|
package/dist/server/service.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { ERROR_CODE } from "../errors.js";
|
2
2
|
import Initializable from "../initializable.js";
|
3
|
-
import { Guards } from "../utils
|
3
|
+
import { Guards } from "../utils.js";
|
4
4
|
export default class Service extends Initializable {
|
5
5
|
async validateRequestBody(request, keys) {
|
6
6
|
return await Service.validateRequestBody(request, keys);
|
package/dist/throwable.js
CHANGED
package/dist/utils/Lib.d.ts
CHANGED
package/dist/utils/Lib.js
CHANGED
@@ -3,9 +3,18 @@ import * as path from "path";
|
|
3
3
|
import { E_IS } from "../enums.js";
|
4
4
|
import Throwable from "../throwable.js";
|
5
5
|
class Lib {
|
6
|
+
static GetLogSource() {
|
7
|
+
const stack = new Error().stack;
|
8
|
+
const callerLine = stack?.split("\n")[2];
|
9
|
+
const fileMatch = callerLine?.match(/([^\/\\]+\.(ts|js)):/);
|
10
|
+
const fileName = fileMatch ? fileMatch[1] : "unknown";
|
11
|
+
return fileName;
|
12
|
+
}
|
6
13
|
static Log(...args) {
|
7
14
|
const timestamp = new Date().toLocaleTimeString();
|
8
|
-
|
15
|
+
const fileName = Lib.GetLogSource();
|
16
|
+
console.log("File Name: ", fileName);
|
17
|
+
console.log(`[${timestamp} - ${fileName}]`, ...args);
|
9
18
|
}
|
10
19
|
static LogObject(object, text) {
|
11
20
|
const timestamp = new Date().toLocaleTimeString();
|
package/dist/utils/Lib.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Lib.js","sourceRoot":"","sources":["../../src/utils/Lib.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\nimport { E_IS } from \"../enums\";\nimport Throwable from \"../throwable\";\n\nclass Lib {\n\tpublic static Log(...args: any) {\n\t\tconst timestamp = new Date().toLocaleTimeString();\n\t\tconsole.log(`[${timestamp}]:`, ...args);\n\t}\n\n\tpublic static LogObject(object: any, text?: string) {\n\t\tconst timestamp = new Date().toLocaleTimeString();\n\t\tconsole.log(`[${timestamp}]:`, text ?? \"\", JSON.stringify(object, null, 2));\n\t}\n\n\tpublic static Warn(...args: any) {\n\t\tconst timestamp = new Date().toLocaleTimeString();\n\t\tconsole.error(`[${timestamp}] Handled Error: `, ...args);\n\t}\n\n\tpublic static $Log(...args: any) {\n\t\tconst timestamp = new Date().toLocaleTimeString();\n\t\tconsole.error(`[${timestamp}]`, ...args);\n\t}\n\n\tpublic static secondsToMilliseconds(seconds: number): number {\n\t\treturn seconds * 1000;\n\t}\n\n\tpublic static minutesToMilliseconds(minutes: number): number {\n\t\treturn minutes * 60 * 1000;\n\t}\n\n\tpublic static hoursToMilliseconds(hours: number): number {\n\t\treturn hours * 60 * 60 * 1000;\n\t}\n\n\tpublic static GetTimestamp(milliseconds_ago: number) {\n\t\tconst now = new Date();\n\t\treturn new Date(now.getTime() - milliseconds_ago);\n\t}\n\n\tpublic static GetDateTimestamp(date: string | Date, format = \"DD/MM/YYYY HH:mm\", isUTC = false): number {\n\t\tif (typeof date === \"string\") {\n\t\t\tconst formatParts = format.split(/[-\\/. :]/);\n\t\t\tconst dateParts = date.split(/[-\\/. :]/);\n\n\t\t\tlet day: number | undefined;\n\t\t\tlet month: number | undefined;\n\t\t\tlet year: number | undefined;\n\t\t\tlet hours = 0;\n\t\t\tlet minutes = 0;\n\n\t\t\tformatParts.forEach((part, index) => {\n\t\t\t\tswitch (part) {\n\t\t\t\t\tcase \"DD\":\n\t\t\t\t\tcase \"dd\":\n\t\t\t\t\t\tday = parseInt(dateParts[index], 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"MM\":\n\t\t\t\t\t\tmonth = parseInt(dateParts[index], 10) - 1; // Months are 0-based in JavaScript Date\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"YYYY\":\n\t\t\t\t\tcase \"yyyy\":\n\t\t\t\t\t\tyear = parseInt(dateParts[index], 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"HH\":\n\t\t\t\t\tcase \"hh\":\n\t\t\t\t\t\thours = parseInt(dateParts[index], 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"mm\":\n\t\t\t\t\t\tminutes = parseInt(dateParts[index], 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (day === undefined || month === undefined || year === undefined) {\n\t\t\t\tthrow new Error(\"Invalid date format or date string\");\n\t\t\t}\n\n\t\t\tlet dateObj;\n\t\t\tif (isUTC) {\n\t\t\t\tdateObj = new Date(Date.UTC(year, month, day, hours, minutes));\n\t\t\t} else {\n\t\t\t\tdateObj = new Date(year, month, day, hours, minutes);\n\t\t\t}\n\t\t\treturn dateObj.getTime();\n\t\t} else {\n\t\t\treturn date.getTime();\n\t\t}\n\t}\n\n\tpublic static calculatePercentage(x: number, y: number): number {\n\t\tif (y === 0) {\n\t\t\tthrow new Error(\"The denominator (y) cannot be zero.\");\n\t\t}\n\t\treturn x / y;\n\t}\n\n\tpublic static MYSQLTimestamp(): string {\n\t\tconst now = new Date();\n\t\tconst year = now.getFullYear();\n\t\tconst month = now.getMonth() + 1;\n\t\tconst day = now.getDate();\n\t\tconst hours = now.getHours();\n\t\tconst minutes = now.getMinutes();\n\t\tconst seconds = now.getSeconds();\n\n\t\tconst formattedDate = `${year}-${month.toString().padStart(2, \"0\")}-${day.toString().padStart(2, \"0\")}`;\n\t\tconst formattedTime = `${hours.toString().padStart(2, \"0\")}:${minutes.toString().padStart(2, \"0\")}:${seconds.toString().padStart(2, \"0\")}`;\n\n\t\treturn `${formattedDate} ${formattedTime}`;\n\t}\n\n\tpublic static FormatUnixToDate(unix_time_stamp: number, in_milliseconds = false): Date {\n\t\tconst date = new Date(unix_time_stamp * (in_milliseconds ? 1 : 1000));\n\t\treturn date;\n\t}\n\n\tpublic static FormatDate(date: Date | string, format = \"MM/dd/yyyy\"): string {\n\t\ttry {\n\t\t\tconst leadingZero = (value: number) => (value < 10 ? `0${value}` : `${value}`);\n\t\t\tif (!date) throw new Error(\"Lib.FormatDate() Exception: Date is required\");\n\t\t\tif (typeof date === \"string\") {\n\t\t\t\tdate = new Date(date);\n\t\t\t}\n\t\t\tconst day = leadingZero(date.getDate());\n\t\t\tconst month = leadingZero(date.getMonth() + 1);\n\t\t\tconst year = date.getFullYear();\n\t\t\tconst hours = leadingZero(date.getHours());\n\t\t\tconst minutes = leadingZero(date.getMinutes());\n\t\t\tconst seconds = leadingZero(date.getSeconds());\n\n\t\t\tlet result = format\n\t\t\t\t.replace(/DD|dd/g, day)\n\t\t\t\t.replace(/MM/g, month)\n\t\t\t\t.replace(/yyyy|YYYY/g, year.toString());\n\n\t\t\tif (format.includes(\"HH\")) {\n\t\t\t\tresult = result.replace(/HH/g, hours);\n\t\t\t}\n\t\t\tif (format.toLowerCase().includes(\"mm\")) {\n\t\t\t\tresult = result.replace(/mm/g, minutes);\n\t\t\t}\n\t\t\tif (format.includes(\"ss\")) {\n\t\t\t\tresult = result.replace(/ss/g, seconds);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tthrow e;\n\t\t}\n\t}\n\n\tpublic static DaysBetweenDates(startDate: Date | string | undefined, endDate: Date | string | undefined, format = \"MM/dd/yyyy\"): number {\n\t\tif (startDate === null || startDate === undefined || endDate === null || endDate === undefined) {\n\t\t\tthrow new Error(\"Lib.DaysBetweenDates() Exception: Dates are required\" + startDate + \" \" + endDate);\n\t\t}\n\t\tconst start = new Date(this.FormatDate(startDate, format)).getTime();\n\t\tconst end = new Date(this.FormatDate(endDate, format)).getTime();\n\t\tconst difference = end - start;\n\t\tconst daysPassed = difference / (1000 * 3600 * 24);\n\t\treturn Math.floor(daysPassed);\n\t}\n\n\tpublic static IsPastDate(date: Date | string, format = \"MM/dd/yyyy HH:mm:ss\", debug = false, currentDate?: Date | string): boolean {\n\t\tconst truncateToSecond = (d: Date) => new Date(Math.floor(d.getTime() / 1000) * 1000);\n\n\t\tconst now = truncateToSecond(currentDate ? (typeof currentDate === \"string\" ? new Date(currentDate) : currentDate) : new Date());\n\t\tconst check = truncateToSecond(typeof date === \"string\" ? new Date(date) : date);\n\n\t\tif (debug) {\n\t\t\tDebug.Log(\"Now:\", this.FormatDate(now, format));\n\t\t\tDebug.Log(\"Check:\", this.FormatDate(check, format));\n\t\t}\n\n\t\treturn now.getTime() > check.getTime();\n\t}\n\n\tpublic static IsPastDateFrom(date: Date | string, from: Date | string, format = \"MM/dd/yyyy\"): boolean {\n\t\tconst now = this.FormatDate(from, format);\n\t\tconst check = this.FormatDate(date, format);\n\t\treturn new Date(now).getTime() > new Date(check).getTime();\n\t}\n\n\tpublic static addTimeFromDate(date: Date | string, milliseconds: number): Date {\n\t\tconst dateObj = new Date(typeof date === \"string\" ? new Date(date).getTime() : date.getTime() + milliseconds);\n\t\treturn dateObj;\n\t}\n\n\tpublic static UUID(minLength = 36): string {\n\t\tconst template = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";\n\t\tlet uuid = template.replace(/[xy]/g, function (c) {\n\t\t\tconst r = (Math.random() * 16) | 0,\n\t\t\t\tv = c === \"x\" ? r : (r & 0x3) | 0x8;\n\t\t\treturn v.toString(16);\n\t\t});\n\n\t\t// If the generated UUID is shorter than the minimum length, pad it with additional random characters\n\t\twhile (uuid.length < minLength) {\n\t\t\tuuid += ((Math.random() * 16) | 0).toString(16);\n\t\t}\n\n\t\treturn uuid.substring(0, minLength);\n\t}\n\n\tpublic static Debounce(callback: (...args: any[]) => void, delay = 500): (...args: any[]) => any {\n\t\tlet timeout: Timer;\n\t\treturn (...args: any[]) => {\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = setTimeout(() => {\n\t\t\t\treturn callback(...args);\n\t\t\t}, delay);\n\t\t};\n\t}\n\n\tpublic static IsNil(value: any): boolean {\n\t\treturn value === null || value === undefined;\n\t}\n\n\tpublic static IsPrimitive(value: any): boolean {\n\t\treturn this.IsNumber(value) || this.IsString(value) || this.IsBoolean(value);\n\t}\n\n\tpublic static EmptyObject(value: any): boolean {\n\t\tlet empty_object = true;\n\t\tif (this.GetType(value) !== \"object\") {\n\t\t\tempty_object = false;\n\t\t\treturn empty_object;\n\t\t}\n\t\tif (Object.keys(value).length === 0) {\n\t\t\tempty_object = true;\n\t\t\treturn empty_object;\n\t\t}\n\t\tfor (const k in value) {\n\t\t\tif (!this.IsNil(value[k]) && value[k] !== \"\") {\n\t\t\t\tempty_object = false;\n\t\t\t}\n\t\t}\n\t\treturn empty_object;\n\t}\n\n\tpublic static IsNumpty(value: any, _objectsOnly = false): boolean {\n\t\treturn typeof value === \"number\" ? false : this.IsNil(value) || this.IsEmpty(value, _objectsOnly);\n\t}\n\n\tpublic static IsEmpty(value: any, _objectsOnly = false): boolean {\n\t\treturn (\n\t\t\t(this.GetType(value) === \"array\" && value.length === 0 && !_objectsOnly) ||\n\t\t\t(this.GetType(value) === \"object\" && this.EmptyObject(value)) ||\n\t\t\t(typeof value === \"string\" && value.trim().length === 0)\n\t\t);\n\t}\n\n\tpublic static IsArray(variable: any): boolean {\n\t\treturn this.GetType(variable) === E_IS.ARRAY;\n\t}\n\n\tpublic static IsString(variable: any, as_typeof: boolean = false): boolean {\n\t\treturn this.GetType(variable, as_typeof) === E_IS.STRING;\n\t}\n\n\tpublic static IsNumber(variable: any, as_typeof: boolean = false): boolean {\n\t\treturn this.GetType(variable, as_typeof) === E_IS.NUMBER;\n\t}\n\n\tpublic static IsObject(variable: any): boolean {\n\t\treturn this.GetType(variable) === E_IS.OBJECT;\n\t}\n\n\tpublic static IsFunction(variable: any): boolean {\n\t\treturn this.GetType(variable) === E_IS.FUNCTION;\n\t}\n\n\tpublic static IsRegex(variable: any): boolean {\n\t\treturn this.GetType(variable) === E_IS.REGEX;\n\t}\n\n\tpublic static IsBoolean(variable: any): boolean {\n\t\treturn this.GetType(variable, true) === E_IS.BOOLEAN;\n\t}\n\n\tpublic static GetType(value: any, asTypeOf = false): null | string | boolean {\n\t\tif (asTypeOf) {\n\t\t\treturn typeof value;\n\t\t}\n\t\tif (value === \"0\" || value === \"1\") {\n\t\t\treturn \"number\";\n\t\t}\n\t\tif (value === true) {\n\t\t\treturn true;\n\t\t} else if (value === false) {\n\t\t\treturn false;\n\t\t} else if (value === null || value === undefined) {\n\t\t\treturn null;\n\t\t} else if (Array.isArray(value)) {\n\t\t\treturn \"array\";\n\t\t} else if (value instanceof RegExp) {\n\t\t\treturn \"regex\";\n\t\t} else if (!isNaN(Number(value))) {\n\t\t\treturn \"number\";\n\t\t} else if (typeof value === \"string\") {\n\t\t\treturn \"string\";\n\t\t} else if ({}.toString.call(value) === \"[object Function]\" || typeof value === \"function\") {\n\t\t\treturn \"function\";\n\t\t} else {\n\t\t\treturn \"object\";\n\t\t}\n\t}\n\n\tpublic static GetProjectRoot(startDir: string = __dirname, rootReference = \"package.json\"): string {\n\t\tlet currentDir = startDir;\n\n\t\twhile (!fs.existsSync(path.join(currentDir, rootReference))) {\n\t\t\tconst parentDir = path.resolve(currentDir, \"..\");\n\t\t\tif (parentDir === currentDir) {\n\t\t\t\tthrow new Error(\"Unable to find project root\");\n\t\t\t}\n\t\t\tcurrentDir = parentDir;\n\t\t}\n\n\t\treturn currentDir;\n\t}\n\n\tpublic static async RunTaskWithTimeout(task: () => Promise<void>, timeout: number) {\n\t\treturn Promise.race([task(), new Promise((_, reject) => setTimeout(() => reject(new Error(\"Task timed out\")), timeout))]);\n\t}\n\n\tpublic static GetFolderPath(folder: string): string {\n\t\treturn path.join(this.GetProjectRoot(), folder);\n\t}\n\n\tpublic static GetFilePath(folder: string, file: string): string {\n\t\treturn path.join(this.GetFolderPath(folder), file);\n\t}\n\n\tpublic static async CreateDirectory(folderToCreate: string) {\n\t\tconst directoryPath = Lib.GetFolderPath(folderToCreate);\n\t\tawait fs.promises.access(directoryPath, fs.constants.F_OK).catch(async () => {\n\t\t\tawait fs.promises.mkdir(directoryPath, { recursive: true });\n\t\t});\n\t\treturn directoryPath;\n\t}\n\n\tpublic static async DeleteDirectory(folderToDelete: string) {\n\t\tconst directoryPath = path.join(this.GetProjectRoot(), folderToDelete);\n\t\tawait fs.promises.rm(directoryPath, { recursive: true, force: true });\n\t}\n\n\tpublic static async CreateFile(folderPath: string, filePath: string, content: string) {\n\t\tawait Lib.CreateDirectory(folderPath);\n\t\tconst file = Lib.GetFilePath(folderPath, filePath);\n\t\tawait fs.promises.writeFile(file, content, \"utf8\");\n\t}\n\n\tpublic static GetFile(filePathFromRoot: string) {\n\t\treturn fs.createReadStream(filePathFromRoot);\n\t}\n\n\tpublic static GetFilesInDirectory(directoryPath: string): string[] {\n\t\treturn fs.readdirSync(directoryPath);\n\t}\n\n\tpublic static async DeleteFile(filePathFromRoot: string) {\n\t\tawait fs.promises.unlink(filePathFromRoot);\n\t}\n\n\tpublic static Timestamp(log = false) {\n\t\tconst currentTime = new Date().toLocaleTimeString();\n\t\tif (log) console.log(`[${currentTime}]`);\n\t\treturn currentTime;\n\t}\n\n\tpublic static RemoveWhitespace(value: string): string {\n\t\treturn value.replace(/\\s/g, \"\");\n\t}\n\n\tpublic static msToString(ms: number): string {\n\t\tif (ms === 0) return \"0ms\"; // Handle zero duration case\n\t\tconst seconds = Math.floor(ms / 1000);\n\t\tconst minutes = Math.floor(seconds / 60);\n\t\tconst hours = Math.floor(minutes / 60);\n\t\tlet output = hours > 0 ? `${hours}h ` : \"\";\n\t\toutput += minutes > 0 ? `${minutes % 60}m ` : \"\";\n\t\toutput += seconds % 60 > 0 ? `${seconds % 60}s ` : \"\";\n\t\toutput += ms % 1000 > 0 ? `${(ms % 1000).toFixed(2)}ms` : \"\";\n\t\treturn output.trim();\n\t}\n\n\tpublic static FormatPhone(phone_number: string): string {\n\t\tlet output: string = phone_number;\n\t\t//remove all non-digit characters and whitespaces using regex\n\t\toutput = output.replace(/\\D/g, \"\");\n\t\t//if phone number doesn't start with + add +\n\t\tif (!output.startsWith(\"+\")) {\n\t\t\toutput = `+${output}`;\n\t\t}\n\t\treturn output;\n\t}\n\n\tpublic static ToMB(bytes: number, as_KB = true, decimalPlaces = 2): string {\n\t\tconst kb = bytes / 1024;\n\t\treturn (as_KB ? kb : kb / 1024).toFixed(decimalPlaces);\n\t}\n\n\tpublic static ToGB(bytes: number, as_KB = true, decimalPlaces = 2): string {\n\t\tconst mb = this.ToMB(bytes, as_KB, decimalPlaces);\n\t\treturn (parseInt(mb) / 1024).toFixed(decimalPlaces);\n\t}\n\n\tpublic static async RetryHandler<T extends (...args: any[]) => any>(func: T, retries = 3, ...args: Parameters<T>): Promise<ReturnType<T>> {\n\t\tlet attempts = 0;\n\t\tlet toThrow;\n\n\t\twhile (attempts < retries) {\n\t\t\ttry {\n\t\t\t\treturn await func(...args);\n\t\t\t} catch (e) {\n\t\t\t\tattempts++;\n\t\t\t\ttoThrow = e;\n\t\t\t\tif (attempts <= retries && !Throwable.IsThrowable(e)) {\n\t\t\t\t\tLib.$Log(`Attempt ${attempts} failed. Retrying...(${func.name})`);\n\t\t\t\t\tif (attempts == 1) Lib.Warn(toThrow);\n\t\t\t\t\t// Lib.Warn(toThrow, { hint: `Attempt ${attempts} failed. Retrying...(${func.name})`, data: JSON.stringify(args) });\n\t\t\t\t\t// Wait for 1 second before retrying\n\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, 1000));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow toThrow;\n\t}\n\n\tpublic static Difference(x: any[], y: any[]) {\n\t\treturn x.filter((x) => !y.includes(x));\n\t}\n\n\tpublic static async ReadFileContent(filePath: string): Promise<string> {\n\t\treturn fs.promises.readFile(filePath, \"utf8\");\n\t}\n\n\tpublic static async measureExecutionTime<T extends (...args: any[]) => any, U extends ReturnType<T>>(\n\t\tfunc: T,\n\t\t...args: Parameters<T>\n\t): Promise<{ result: Awaited<U>; time: number | string }> {\n\t\tconst start = performance.now();\n\t\tconst result = await func(...args);\n\t\tconst end = performance.now();\n\t\treturn { result, time: this.msToString(end - start) };\n\t}\n\n\tpublic static ToCamelCase(str: string): string {\n\t\treturn str.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, (word, index) => (index === 0 ? word.toLowerCase() : word.toUpperCase())).replace(/\\s+/g, \"\");\n\t}\n\n\tpublic static ToSnakeCase(str: string): string {\n\t\treturn str.replace(/([a-z])([A-Z])/g, \"$1_$2\").toLowerCase();\n\t}\n\n\tpublic static ToKebebCase(str: string): string {\n\t\treturn str.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n\t}\n\n\tpublic static ToPascalCase(str: string): string {\n\t\treturn str.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, (word, index) => (index === 0 ? word.toUpperCase() : word.toLowerCase())).replace(/\\s+/g, \"\");\n\t}\n}\n\nexport default Lib;\n\nexport class Debug {\n\tpublic static Log(...args: any) {\n\t\tif (process.env.NODE_ENV === \"production\") return;\n\t\tLib.Log(...args);\n\t}\n\n\tpublic static $Log(...args: any) {\n\t\tif (process.env.NODE_ENV === \"production\") return;\n\t\tLib.$Log(...args);\n\t}\n\n\tpublic static LogObject(object: any, text?: string) {\n\t\tif (process.env.NODE_ENV === \"production\") return;\n\t\tLib.LogObject(object, text);\n\t}\n\n\tpublic static GetLocalIpAddress(): string {\n\t\ttry {\n\t\t\tconst { networkInterfaces } = require(\"os\");\n\t\t\tconst nets = networkInterfaces();\n\n\t\t\tfor (const name of Object.keys(nets)) {\n\t\t\t\tfor (const net of nets[name]) {\n\t\t\t\t\t// Skip internal and non-IPv4 addresses\n\t\t\t\t\tif (!net.internal && net.family === \"IPv4\") {\n\t\t\t\t\t\treturn net.address;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn \"127.0.0.1\"; // Fallback to localhost\n\t\t} catch (err) {\n\t\t\treturn \"127.0.0.1\"; // Fallback to localhost\n\t\t}\n\t}\n}\n"]}
|
1
|
+
{"version":3,"file":"Lib.js","sourceRoot":"","sources":["../../src/utils/Lib.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\nimport { E_IS } from \"../enums\";\nimport Throwable from \"../throwable\";\n\nclass Lib {\n\tprivate static GetLogSource() {\n\t\tconst stack = new Error().stack;\n\t\tconst callerLine = stack?.split(\"\\n\")[2];\n\t\tconst fileMatch = callerLine?.match(/([^\\/\\\\]+\\.(ts|js)):/);\n\t\tconst fileName = fileMatch ? fileMatch[1] : \"unknown\";\n\t\treturn fileName;\n\t}\n\n\tpublic static Log(...args: any) {\n\t\tconst timestamp = new Date().toLocaleTimeString();\n\t\tconst fileName = Lib.GetLogSource();\n\t\tconsole.log(\"File Name: \", fileName);\n\t\tconsole.log(`[${timestamp} - ${fileName}]`, ...args);\n\t}\n\n\tpublic static LogObject(object: any, text?: string) {\n\t\tconst timestamp = new Date().toLocaleTimeString();\n\t\tconsole.log(`[${timestamp}]:`, text ?? \"\", JSON.stringify(object, null, 2));\n\t}\n\n\tpublic static Warn(...args: any) {\n\t\tconst timestamp = new Date().toLocaleTimeString();\n\t\tconsole.error(`[${timestamp}] Handled Error: `, ...args);\n\t}\n\n\tpublic static $Log(...args: any) {\n\t\tconst timestamp = new Date().toLocaleTimeString();\n\t\tconsole.error(`[${timestamp}]`, ...args);\n\t}\n\n\tpublic static secondsToMilliseconds(seconds: number): number {\n\t\treturn seconds * 1000;\n\t}\n\n\tpublic static minutesToMilliseconds(minutes: number): number {\n\t\treturn minutes * 60 * 1000;\n\t}\n\n\tpublic static hoursToMilliseconds(hours: number): number {\n\t\treturn hours * 60 * 60 * 1000;\n\t}\n\n\tpublic static GetTimestamp(milliseconds_ago: number) {\n\t\tconst now = new Date();\n\t\treturn new Date(now.getTime() - milliseconds_ago);\n\t}\n\n\tpublic static GetDateTimestamp(date: string | Date, format = \"DD/MM/YYYY HH:mm\", isUTC = false): number {\n\t\tif (typeof date === \"string\") {\n\t\t\tconst formatParts = format.split(/[-\\/. :]/);\n\t\t\tconst dateParts = date.split(/[-\\/. :]/);\n\n\t\t\tlet day: number | undefined;\n\t\t\tlet month: number | undefined;\n\t\t\tlet year: number | undefined;\n\t\t\tlet hours = 0;\n\t\t\tlet minutes = 0;\n\n\t\t\tformatParts.forEach((part, index) => {\n\t\t\t\tswitch (part) {\n\t\t\t\t\tcase \"DD\":\n\t\t\t\t\tcase \"dd\":\n\t\t\t\t\t\tday = parseInt(dateParts[index], 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"MM\":\n\t\t\t\t\t\tmonth = parseInt(dateParts[index], 10) - 1; // Months are 0-based in JavaScript Date\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"YYYY\":\n\t\t\t\t\tcase \"yyyy\":\n\t\t\t\t\t\tyear = parseInt(dateParts[index], 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"HH\":\n\t\t\t\t\tcase \"hh\":\n\t\t\t\t\t\thours = parseInt(dateParts[index], 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"mm\":\n\t\t\t\t\t\tminutes = parseInt(dateParts[index], 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (day === undefined || month === undefined || year === undefined) {\n\t\t\t\tthrow new Error(\"Invalid date format or date string\");\n\t\t\t}\n\n\t\t\tlet dateObj;\n\t\t\tif (isUTC) {\n\t\t\t\tdateObj = new Date(Date.UTC(year, month, day, hours, minutes));\n\t\t\t} else {\n\t\t\t\tdateObj = new Date(year, month, day, hours, minutes);\n\t\t\t}\n\t\t\treturn dateObj.getTime();\n\t\t} else {\n\t\t\treturn date.getTime();\n\t\t}\n\t}\n\n\tpublic static calculatePercentage(x: number, y: number): number {\n\t\tif (y === 0) {\n\t\t\tthrow new Error(\"The denominator (y) cannot be zero.\");\n\t\t}\n\t\treturn x / y;\n\t}\n\n\tpublic static MYSQLTimestamp(): string {\n\t\tconst now = new Date();\n\t\tconst year = now.getFullYear();\n\t\tconst month = now.getMonth() + 1;\n\t\tconst day = now.getDate();\n\t\tconst hours = now.getHours();\n\t\tconst minutes = now.getMinutes();\n\t\tconst seconds = now.getSeconds();\n\n\t\tconst formattedDate = `${year}-${month.toString().padStart(2, \"0\")}-${day.toString().padStart(2, \"0\")}`;\n\t\tconst formattedTime = `${hours.toString().padStart(2, \"0\")}:${minutes.toString().padStart(2, \"0\")}:${seconds.toString().padStart(2, \"0\")}`;\n\n\t\treturn `${formattedDate} ${formattedTime}`;\n\t}\n\n\tpublic static FormatUnixToDate(unix_time_stamp: number, in_milliseconds = false): Date {\n\t\tconst date = new Date(unix_time_stamp * (in_milliseconds ? 1 : 1000));\n\t\treturn date;\n\t}\n\n\tpublic static FormatDate(date: Date | string, format = \"MM/dd/yyyy\"): string {\n\t\ttry {\n\t\t\tconst leadingZero = (value: number) => (value < 10 ? `0${value}` : `${value}`);\n\t\t\tif (!date) throw new Error(\"Lib.FormatDate() Exception: Date is required\");\n\t\t\tif (typeof date === \"string\") {\n\t\t\t\tdate = new Date(date);\n\t\t\t}\n\t\t\tconst day = leadingZero(date.getDate());\n\t\t\tconst month = leadingZero(date.getMonth() + 1);\n\t\t\tconst year = date.getFullYear();\n\t\t\tconst hours = leadingZero(date.getHours());\n\t\t\tconst minutes = leadingZero(date.getMinutes());\n\t\t\tconst seconds = leadingZero(date.getSeconds());\n\n\t\t\tlet result = format\n\t\t\t\t.replace(/DD|dd/g, day)\n\t\t\t\t.replace(/MM/g, month)\n\t\t\t\t.replace(/yyyy|YYYY/g, year.toString());\n\n\t\t\tif (format.includes(\"HH\")) {\n\t\t\t\tresult = result.replace(/HH/g, hours);\n\t\t\t}\n\t\t\tif (format.toLowerCase().includes(\"mm\")) {\n\t\t\t\tresult = result.replace(/mm/g, minutes);\n\t\t\t}\n\t\t\tif (format.includes(\"ss\")) {\n\t\t\t\tresult = result.replace(/ss/g, seconds);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tthrow e;\n\t\t}\n\t}\n\n\tpublic static DaysBetweenDates(startDate: Date | string | undefined, endDate: Date | string | undefined, format = \"MM/dd/yyyy\"): number {\n\t\tif (startDate === null || startDate === undefined || endDate === null || endDate === undefined) {\n\t\t\tthrow new Error(\"Lib.DaysBetweenDates() Exception: Dates are required\" + startDate + \" \" + endDate);\n\t\t}\n\t\tconst start = new Date(this.FormatDate(startDate, format)).getTime();\n\t\tconst end = new Date(this.FormatDate(endDate, format)).getTime();\n\t\tconst difference = end - start;\n\t\tconst daysPassed = difference / (1000 * 3600 * 24);\n\t\treturn Math.floor(daysPassed);\n\t}\n\n\tpublic static IsPastDate(date: Date | string, format = \"MM/dd/yyyy HH:mm:ss\", debug = false, currentDate?: Date | string): boolean {\n\t\tconst truncateToSecond = (d: Date) => new Date(Math.floor(d.getTime() / 1000) * 1000);\n\n\t\tconst now = truncateToSecond(currentDate ? (typeof currentDate === \"string\" ? new Date(currentDate) : currentDate) : new Date());\n\t\tconst check = truncateToSecond(typeof date === \"string\" ? new Date(date) : date);\n\n\t\tif (debug) {\n\t\t\tDebug.Log(\"Now:\", this.FormatDate(now, format));\n\t\t\tDebug.Log(\"Check:\", this.FormatDate(check, format));\n\t\t}\n\n\t\treturn now.getTime() > check.getTime();\n\t}\n\n\tpublic static IsPastDateFrom(date: Date | string, from: Date | string, format = \"MM/dd/yyyy\"): boolean {\n\t\tconst now = this.FormatDate(from, format);\n\t\tconst check = this.FormatDate(date, format);\n\t\treturn new Date(now).getTime() > new Date(check).getTime();\n\t}\n\n\tpublic static addTimeFromDate(date: Date | string, milliseconds: number): Date {\n\t\tconst dateObj = new Date(typeof date === \"string\" ? new Date(date).getTime() : date.getTime() + milliseconds);\n\t\treturn dateObj;\n\t}\n\n\tpublic static UUID(minLength = 36): string {\n\t\tconst template = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";\n\t\tlet uuid = template.replace(/[xy]/g, function (c) {\n\t\t\tconst r = (Math.random() * 16) | 0,\n\t\t\t\tv = c === \"x\" ? r : (r & 0x3) | 0x8;\n\t\t\treturn v.toString(16);\n\t\t});\n\n\t\t// If the generated UUID is shorter than the minimum length, pad it with additional random characters\n\t\twhile (uuid.length < minLength) {\n\t\t\tuuid += ((Math.random() * 16) | 0).toString(16);\n\t\t}\n\n\t\treturn uuid.substring(0, minLength);\n\t}\n\n\tpublic static Debounce(callback: (...args: any[]) => void, delay = 500): (...args: any[]) => any {\n\t\tlet timeout: Timer;\n\t\treturn (...args: any[]) => {\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = setTimeout(() => {\n\t\t\t\treturn callback(...args);\n\t\t\t}, delay);\n\t\t};\n\t}\n\n\tpublic static IsNil(value: any): boolean {\n\t\treturn value === null || value === undefined;\n\t}\n\n\tpublic static IsPrimitive(value: any): boolean {\n\t\treturn this.IsNumber(value) || this.IsString(value) || this.IsBoolean(value);\n\t}\n\n\tpublic static EmptyObject(value: any): boolean {\n\t\tlet empty_object = true;\n\t\tif (this.GetType(value) !== \"object\") {\n\t\t\tempty_object = false;\n\t\t\treturn empty_object;\n\t\t}\n\t\tif (Object.keys(value).length === 0) {\n\t\t\tempty_object = true;\n\t\t\treturn empty_object;\n\t\t}\n\t\tfor (const k in value) {\n\t\t\tif (!this.IsNil(value[k]) && value[k] !== \"\") {\n\t\t\t\tempty_object = false;\n\t\t\t}\n\t\t}\n\t\treturn empty_object;\n\t}\n\n\tpublic static IsNumpty(value: any, _objectsOnly = false): boolean {\n\t\treturn typeof value === \"number\" ? false : this.IsNil(value) || this.IsEmpty(value, _objectsOnly);\n\t}\n\n\tpublic static IsEmpty(value: any, _objectsOnly = false): boolean {\n\t\treturn (\n\t\t\t(this.GetType(value) === \"array\" && value.length === 0 && !_objectsOnly) ||\n\t\t\t(this.GetType(value) === \"object\" && this.EmptyObject(value)) ||\n\t\t\t(typeof value === \"string\" && value.trim().length === 0)\n\t\t);\n\t}\n\n\tpublic static IsArray(variable: any): boolean {\n\t\treturn this.GetType(variable) === E_IS.ARRAY;\n\t}\n\n\tpublic static IsString(variable: any, as_typeof: boolean = false): boolean {\n\t\treturn this.GetType(variable, as_typeof) === E_IS.STRING;\n\t}\n\n\tpublic static IsNumber(variable: any, as_typeof: boolean = false): boolean {\n\t\treturn this.GetType(variable, as_typeof) === E_IS.NUMBER;\n\t}\n\n\tpublic static IsObject(variable: any): boolean {\n\t\treturn this.GetType(variable) === E_IS.OBJECT;\n\t}\n\n\tpublic static IsFunction(variable: any): boolean {\n\t\treturn this.GetType(variable) === E_IS.FUNCTION;\n\t}\n\n\tpublic static IsRegex(variable: any): boolean {\n\t\treturn this.GetType(variable) === E_IS.REGEX;\n\t}\n\n\tpublic static IsBoolean(variable: any): boolean {\n\t\treturn this.GetType(variable, true) === E_IS.BOOLEAN;\n\t}\n\n\tpublic static GetType(value: any, asTypeOf = false): null | string | boolean {\n\t\tif (asTypeOf) {\n\t\t\treturn typeof value;\n\t\t}\n\t\tif (value === \"0\" || value === \"1\") {\n\t\t\treturn \"number\";\n\t\t}\n\t\tif (value === true) {\n\t\t\treturn true;\n\t\t} else if (value === false) {\n\t\t\treturn false;\n\t\t} else if (value === null || value === undefined) {\n\t\t\treturn null;\n\t\t} else if (Array.isArray(value)) {\n\t\t\treturn \"array\";\n\t\t} else if (value instanceof RegExp) {\n\t\t\treturn \"regex\";\n\t\t} else if (!isNaN(Number(value))) {\n\t\t\treturn \"number\";\n\t\t} else if (typeof value === \"string\") {\n\t\t\treturn \"string\";\n\t\t} else if ({}.toString.call(value) === \"[object Function]\" || typeof value === \"function\") {\n\t\t\treturn \"function\";\n\t\t} else {\n\t\t\treturn \"object\";\n\t\t}\n\t}\n\n\tpublic static GetProjectRoot(startDir: string = __dirname, rootReference = \"package.json\"): string {\n\t\tlet currentDir = startDir;\n\n\t\twhile (!fs.existsSync(path.join(currentDir, rootReference))) {\n\t\t\tconst parentDir = path.resolve(currentDir, \"..\");\n\t\t\tif (parentDir === currentDir) {\n\t\t\t\tthrow new Error(\"Unable to find project root\");\n\t\t\t}\n\t\t\tcurrentDir = parentDir;\n\t\t}\n\n\t\treturn currentDir;\n\t}\n\n\tpublic static async RunTaskWithTimeout(task: () => Promise<void>, timeout: number) {\n\t\treturn Promise.race([task(), new Promise((_, reject) => setTimeout(() => reject(new Error(\"Task timed out\")), timeout))]);\n\t}\n\n\tpublic static GetFolderPath(folder: string): string {\n\t\treturn path.join(this.GetProjectRoot(), folder);\n\t}\n\n\tpublic static GetFilePath(folder: string, file: string): string {\n\t\treturn path.join(this.GetFolderPath(folder), file);\n\t}\n\n\tpublic static async CreateDirectory(folderToCreate: string) {\n\t\tconst directoryPath = Lib.GetFolderPath(folderToCreate);\n\t\tawait fs.promises.access(directoryPath, fs.constants.F_OK).catch(async () => {\n\t\t\tawait fs.promises.mkdir(directoryPath, { recursive: true });\n\t\t});\n\t\treturn directoryPath;\n\t}\n\n\tpublic static async DeleteDirectory(folderToDelete: string) {\n\t\tconst directoryPath = path.join(this.GetProjectRoot(), folderToDelete);\n\t\tawait fs.promises.rm(directoryPath, { recursive: true, force: true });\n\t}\n\n\tpublic static async CreateFile(folderPath: string, filePath: string, content: string) {\n\t\tawait Lib.CreateDirectory(folderPath);\n\t\tconst file = Lib.GetFilePath(folderPath, filePath);\n\t\tawait fs.promises.writeFile(file, content, \"utf8\");\n\t}\n\n\tpublic static GetFile(filePathFromRoot: string) {\n\t\treturn fs.createReadStream(filePathFromRoot);\n\t}\n\n\tpublic static GetFilesInDirectory(directoryPath: string): string[] {\n\t\treturn fs.readdirSync(directoryPath);\n\t}\n\n\tpublic static async DeleteFile(filePathFromRoot: string) {\n\t\tawait fs.promises.unlink(filePathFromRoot);\n\t}\n\n\tpublic static Timestamp(log = false) {\n\t\tconst currentTime = new Date().toLocaleTimeString();\n\t\tif (log) console.log(`[${currentTime}]`);\n\t\treturn currentTime;\n\t}\n\n\tpublic static RemoveWhitespace(value: string): string {\n\t\treturn value.replace(/\\s/g, \"\");\n\t}\n\n\tpublic static msToString(ms: number): string {\n\t\tif (ms === 0) return \"0ms\"; // Handle zero duration case\n\t\tconst seconds = Math.floor(ms / 1000);\n\t\tconst minutes = Math.floor(seconds / 60);\n\t\tconst hours = Math.floor(minutes / 60);\n\t\tlet output = hours > 0 ? `${hours}h ` : \"\";\n\t\toutput += minutes > 0 ? `${minutes % 60}m ` : \"\";\n\t\toutput += seconds % 60 > 0 ? `${seconds % 60}s ` : \"\";\n\t\toutput += ms % 1000 > 0 ? `${(ms % 1000).toFixed(2)}ms` : \"\";\n\t\treturn output.trim();\n\t}\n\n\tpublic static FormatPhone(phone_number: string): string {\n\t\tlet output: string = phone_number;\n\t\t//remove all non-digit characters and whitespaces using regex\n\t\toutput = output.replace(/\\D/g, \"\");\n\t\t//if phone number doesn't start with + add +\n\t\tif (!output.startsWith(\"+\")) {\n\t\t\toutput = `+${output}`;\n\t\t}\n\t\treturn output;\n\t}\n\n\tpublic static ToMB(bytes: number, as_KB = true, decimalPlaces = 2): string {\n\t\tconst kb = bytes / 1024;\n\t\treturn (as_KB ? kb : kb / 1024).toFixed(decimalPlaces);\n\t}\n\n\tpublic static ToGB(bytes: number, as_KB = true, decimalPlaces = 2): string {\n\t\tconst mb = this.ToMB(bytes, as_KB, decimalPlaces);\n\t\treturn (parseInt(mb) / 1024).toFixed(decimalPlaces);\n\t}\n\n\tpublic static async RetryHandler<T extends (...args: any[]) => any>(func: T, retries = 3, ...args: Parameters<T>): Promise<ReturnType<T>> {\n\t\tlet attempts = 0;\n\t\tlet toThrow;\n\n\t\twhile (attempts < retries) {\n\t\t\ttry {\n\t\t\t\treturn await func(...args);\n\t\t\t} catch (e) {\n\t\t\t\tattempts++;\n\t\t\t\ttoThrow = e;\n\t\t\t\tif (attempts <= retries && !Throwable.IsThrowable(e)) {\n\t\t\t\t\tLib.$Log(`Attempt ${attempts} failed. Retrying...(${func.name})`);\n\t\t\t\t\tif (attempts == 1) Lib.Warn(toThrow);\n\t\t\t\t\t// Lib.Warn(toThrow, { hint: `Attempt ${attempts} failed. Retrying...(${func.name})`, data: JSON.stringify(args) });\n\t\t\t\t\t// Wait for 1 second before retrying\n\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, 1000));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthrow toThrow;\n\t}\n\n\tpublic static Difference(x: any[], y: any[]) {\n\t\treturn x.filter((x) => !y.includes(x));\n\t}\n\n\tpublic static async ReadFileContent(filePath: string): Promise<string> {\n\t\treturn fs.promises.readFile(filePath, \"utf8\");\n\t}\n\n\tpublic static async measureExecutionTime<T extends (...args: any[]) => any, U extends ReturnType<T>>(\n\t\tfunc: T,\n\t\t...args: Parameters<T>\n\t): Promise<{ result: Awaited<U>; time: number | string }> {\n\t\tconst start = performance.now();\n\t\tconst result = await func(...args);\n\t\tconst end = performance.now();\n\t\treturn { result, time: this.msToString(end - start) };\n\t}\n\n\tpublic static ToCamelCase(str: string): string {\n\t\treturn str.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, (word, index) => (index === 0 ? word.toLowerCase() : word.toUpperCase())).replace(/\\s+/g, \"\");\n\t}\n\n\tpublic static ToSnakeCase(str: string): string {\n\t\treturn str.replace(/([a-z])([A-Z])/g, \"$1_$2\").toLowerCase();\n\t}\n\n\tpublic static ToKebebCase(str: string): string {\n\t\treturn str.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n\t}\n\n\tpublic static ToPascalCase(str: string): string {\n\t\treturn str.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, (word, index) => (index === 0 ? word.toUpperCase() : word.toLowerCase())).replace(/\\s+/g, \"\");\n\t}\n}\n\nexport default Lib;\n\nexport class Debug {\n\tpublic static Log(...args: any) {\n\t\tif (process.env.NODE_ENV === \"production\") return;\n\t\tLib.Log(...args);\n\t}\n\n\tpublic static $Log(...args: any) {\n\t\tif (process.env.NODE_ENV === \"production\") return;\n\t\tLib.$Log(...args);\n\t}\n\n\tpublic static LogObject(object: any, text?: string) {\n\t\tif (process.env.NODE_ENV === \"production\") return;\n\t\tLib.LogObject(object, text);\n\t}\n\n\tpublic static GetLocalIpAddress(): string {\n\t\ttry {\n\t\t\tconst { networkInterfaces } = require(\"os\");\n\t\t\tconst nets = networkInterfaces();\n\n\t\t\tfor (const name of Object.keys(nets)) {\n\t\t\t\tfor (const net of nets[name]) {\n\t\t\t\t\t// Skip internal and non-IPv4 addresses\n\t\t\t\t\tif (!net.internal && net.family === \"IPv4\") {\n\t\t\t\t\t\treturn net.address;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn \"127.0.0.1\"; // Fallback to localhost\n\t\t} catch (err) {\n\t\t\treturn \"127.0.0.1\"; // Fallback to localhost\n\t\t}\n\t}\n}\n"]}
|
package/dist/utils/index.d.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
export * from './Rxjs';
|
2
|
-
export * from './Guards';
|
3
2
|
export * from './Lib';
|
3
|
+
export * from './Guards';
|
4
4
|
export * from './Console';
|
5
|
-
export { default as Guards } from './Guards';
|
6
5
|
export { default as Lib } from './Lib';
|
6
|
+
export { default as Guards } from './Guards';
|
7
7
|
export { default as Console } from './Console';
|
package/dist/utils/index.js
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
// This file is auto-generated by scripts/generate-indexes.ts
|
2
2
|
// Do not edit this file directly
|
3
3
|
export * from './Rxjs.js';
|
4
|
-
export * from './Guards.js';
|
5
4
|
export * from './Lib.js';
|
5
|
+
export * from './Guards.js';
|
6
6
|
export * from './Console.js';
|
7
|
-
export { default as Guards } from './Guards.js';
|
8
7
|
export { default as Lib } from './Lib.js';
|
8
|
+
export { default as Guards } from './Guards.js';
|
9
9
|
export { default as Console } from './Console.js';
|
10
10
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,iCAAiC;AAEjC,cAAc,QAAQ,CAAC;AACvB,cAAc,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,iCAAiC;AAEjC,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-indexes.ts\n// Do not edit this file directly\n\nexport * from './Rxjs';\nexport * from './Lib';\nexport * from './Guards';\nexport * from './Console';\nexport { default as Lib } from './Lib';\nexport { default as Guards } from './Guards';\nexport { default as Console } from './Console';\n"]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "topsyde-utils",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.192",
|
4
4
|
"description": "A bundle of TypeScript utility classes and functions",
|
5
5
|
"type": "module",
|
6
6
|
"main": "dist/index.js",
|
@@ -19,7 +19,7 @@
|
|
19
19
|
"build:types": "tsc --emitDeclarationOnly --declaration --outDir ./dist",
|
20
20
|
"build:prepare": "bun run clean && bun run generate-indexes && bun run format:generated",
|
21
21
|
"build": "bun run build:prepare && bun run build:ts && bun run build:types && bun run build:fix-imports",
|
22
|
-
"build:fix-imports": "bun scripts/
|
22
|
+
"build:fix-imports": "bun scripts/fix-esm-imports.ts",
|
23
23
|
"test": "bun test",
|
24
24
|
"release": "./scripts/release.sh",
|
25
25
|
"deploy": "./scripts/release.sh",
|
package/src/index.ts
CHANGED
@@ -19,16 +19,16 @@ export * from "./server/bun/router/controller-discovery";
|
|
19
19
|
export * from "./server/bun/router/routes";
|
20
20
|
export * from "./server/bun/router/router";
|
21
21
|
export * from "./server/bun/router/router.internal";
|
22
|
+
export * from "./server/bun/websocket/Websocket";
|
22
23
|
export * from "./server/bun/websocket/websocket.guards";
|
24
|
+
export * from "./server/bun/websocket/Message";
|
25
|
+
export * from "./server/bun/websocket/Channel";
|
23
26
|
export * from "./server/bun/websocket/Client";
|
24
|
-
export * from "./server/bun/websocket/Websocket";
|
25
27
|
export * from "./server/bun/websocket/websocket.enums";
|
26
28
|
export * from "./server/bun/websocket/websocket.types";
|
27
|
-
export * from "./server/bun/websocket/Message";
|
28
|
-
export * from "./server/bun/websocket/Channel";
|
29
29
|
export * from "./utils/Rxjs";
|
30
|
-
export * from "./utils/Guards";
|
31
30
|
export * from "./utils/Lib";
|
31
|
+
export * from "./utils/Guards";
|
32
32
|
export * from "./utils/Console";
|
33
33
|
|
34
34
|
// Export default classes
|
@@ -42,12 +42,12 @@ export { default as Service } from "./server/service";
|
|
42
42
|
export { default as Database } from "./server/base/base.database";
|
43
43
|
export { default as Router } from "./server/bun/router/router";
|
44
44
|
export { default as Router_Internal } from "./server/bun/router/router.internal";
|
45
|
-
export { default as Client } from "./server/bun/websocket/Client";
|
46
45
|
export { default as Websocket } from "./server/bun/websocket/Websocket";
|
47
46
|
export { default as Message } from "./server/bun/websocket/Message";
|
48
47
|
export { default as Channel } from "./server/bun/websocket/Channel";
|
49
|
-
export { default as
|
48
|
+
export { default as Client } from "./server/bun/websocket/Client";
|
50
49
|
export { default as Lib } from "./utils/Lib";
|
50
|
+
export { default as Guards } from "./utils/Guards";
|
51
51
|
export { default as Console } from "./utils/Console";
|
52
52
|
|
53
53
|
// Re-export specific items for backward compatibility
|
@@ -1,14 +1,14 @@
|
|
1
1
|
// This file is auto-generated by scripts/generate-indexes.ts
|
2
2
|
// Do not edit this file directly
|
3
3
|
|
4
|
+
export * from './Websocket';
|
4
5
|
export * from './websocket.guards';
|
6
|
+
export * from './Message';
|
7
|
+
export * from './Channel';
|
5
8
|
export * from './Client';
|
6
|
-
export * from './Websocket';
|
7
9
|
export * from './websocket.enums';
|
8
10
|
export * from './websocket.types';
|
9
|
-
export * from './Message';
|
10
|
-
export * from './Channel';
|
11
|
-
export { default as Client } from './Client';
|
12
11
|
export { default as Websocket } from './Websocket';
|
13
12
|
export { default as Message } from './Message';
|
14
13
|
export { default as Channel } from './Channel';
|
14
|
+
export { default as Client } from './Client';
|
package/src/utils/Lib.ts
CHANGED
@@ -4,9 +4,19 @@ import { E_IS } from "../enums";
|
|
4
4
|
import Throwable from "../throwable";
|
5
5
|
|
6
6
|
class Lib {
|
7
|
+
private static GetLogSource() {
|
8
|
+
const stack = new Error().stack;
|
9
|
+
const callerLine = stack?.split("\n")[2];
|
10
|
+
const fileMatch = callerLine?.match(/([^\/\\]+\.(ts|js)):/);
|
11
|
+
const fileName = fileMatch ? fileMatch[1] : "unknown";
|
12
|
+
return fileName;
|
13
|
+
}
|
14
|
+
|
7
15
|
public static Log(...args: any) {
|
8
16
|
const timestamp = new Date().toLocaleTimeString();
|
9
|
-
|
17
|
+
const fileName = Lib.GetLogSource();
|
18
|
+
console.log("File Name: ", fileName);
|
19
|
+
console.log(`[${timestamp} - ${fileName}]`, ...args);
|
10
20
|
}
|
11
21
|
|
12
22
|
public static LogObject(object: any, text?: string) {
|
package/src/utils/index.ts
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
// Do not edit this file directly
|
3
3
|
|
4
4
|
export * from './Rxjs';
|
5
|
-
export * from './Guards';
|
6
5
|
export * from './Lib';
|
6
|
+
export * from './Guards';
|
7
7
|
export * from './Console';
|
8
|
-
export { default as Guards } from './Guards';
|
9
8
|
export { default as Lib } from './Lib';
|
9
|
+
export { default as Guards } from './Guards';
|
10
10
|
export { default as Console } from './Console';
|