topsyde-utils 1.3.1 → 2.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.
- package/dist/index.d.ts +2 -31
- package/dist/index.js +1 -27
- package/dist/index.js.map +1 -1
- package/dist/utils/Lib.d.ts +0 -12
- package/dist/utils/Lib.js +0 -65
- package/dist/utils/Lib.js.map +1 -1
- package/dist/websocket.shared.types.d.ts +25 -0
- package/dist/websocket.shared.types.js +4 -0
- package/dist/websocket.shared.types.js.map +1 -0
- package/package.json +1 -22
- package/src/index.ts +2 -51
- package/src/utils/Lib.ts +0 -77
- package/src/websocket.shared.types.ts +27 -0
- package/dist/application.d.ts +0 -18
- package/dist/application.js +0 -60
- package/dist/application.js.map +0 -1
- package/dist/server/base/base.database.d.ts +0 -10
- package/dist/server/base/base.database.js +0 -23
- package/dist/server/base/base.database.js.map +0 -1
- package/dist/server/base/index.d.ts +0 -2
- package/dist/server/base/index.js +0 -5
- package/dist/server/base/index.js.map +0 -1
- package/dist/server/bun/index.d.ts +0 -3
- package/dist/server/bun/index.js +0 -6
- package/dist/server/bun/index.js.map +0 -1
- package/dist/server/bun/router/controller-discovery.d.ts +0 -13
- package/dist/server/bun/router/controller-discovery.js +0 -83
- package/dist/server/bun/router/controller-discovery.js.map +0 -1
- package/dist/server/bun/router/index.d.ts +0 -6
- package/dist/server/bun/router/index.js +0 -9
- package/dist/server/bun/router/index.js.map +0 -1
- package/dist/server/bun/router/router.d.ts +0 -12
- package/dist/server/bun/router/router.internal.d.ts +0 -15
- package/dist/server/bun/router/router.internal.js +0 -51
- package/dist/server/bun/router/router.internal.js.map +0 -1
- package/dist/server/bun/router/router.js +0 -38
- package/dist/server/bun/router/router.js.map +0 -1
- package/dist/server/bun/router/routes.d.ts +0 -5
- package/dist/server/bun/router/routes.js +0 -2
- package/dist/server/bun/router/routes.js.map +0 -1
- package/dist/server/bun/websocket/Channel.d.ts +0 -68
- package/dist/server/bun/websocket/Channel.js +0 -263
- package/dist/server/bun/websocket/Channel.js.map +0 -1
- package/dist/server/bun/websocket/Client.d.ts +0 -87
- package/dist/server/bun/websocket/Client.js +0 -193
- package/dist/server/bun/websocket/Client.js.map +0 -1
- package/dist/server/bun/websocket/Message.d.ts +0 -10
- package/dist/server/bun/websocket/Message.js +0 -103
- package/dist/server/bun/websocket/Message.js.map +0 -1
- package/dist/server/bun/websocket/Websocket.d.ts +0 -171
- package/dist/server/bun/websocket/Websocket.js +0 -336
- package/dist/server/bun/websocket/Websocket.js.map +0 -1
- package/dist/server/bun/websocket/index.d.ts +0 -11
- package/dist/server/bun/websocket/index.js +0 -14
- package/dist/server/bun/websocket/index.js.map +0 -1
- package/dist/server/bun/websocket/websocket.enums.d.ts +0 -27
- package/dist/server/bun/websocket/websocket.enums.js +0 -31
- package/dist/server/bun/websocket/websocket.enums.js.map +0 -1
- package/dist/server/bun/websocket/websocket.guards.d.ts +0 -3
- package/dist/server/bun/websocket/websocket.guards.js +0 -17
- package/dist/server/bun/websocket/websocket.guards.js.map +0 -1
- package/dist/server/bun/websocket/websocket.types.d.ts +0 -235
- package/dist/server/bun/websocket/websocket.types.js +0 -2
- package/dist/server/bun/websocket/websocket.types.js.map +0 -1
- package/dist/server/controller.d.ts +0 -62
- package/dist/server/controller.js +0 -55
- package/dist/server/controller.js.map +0 -1
- package/dist/server/index.d.ts +0 -4
- package/dist/server/index.js +0 -7
- package/dist/server/index.js.map +0 -1
- package/dist/server/service.d.ts +0 -5
- package/dist/server/service.js +0 -38
- package/dist/server/service.js.map +0 -1
- package/src/application.ts +0 -73
- package/src/server/base/base.database.ts +0 -31
- package/src/server/base/index.ts +0 -5
- package/src/server/bun/index.ts +0 -6
- package/src/server/bun/router/controller-discovery.ts +0 -94
- package/src/server/bun/router/index.ts +0 -9
- package/src/server/bun/router/router.internal.ts +0 -64
- package/src/server/bun/router/router.ts +0 -51
- package/src/server/bun/router/routes.ts +0 -7
- package/src/server/bun/websocket/Channel.ts +0 -310
- package/src/server/bun/websocket/Client.ts +0 -243
- package/src/server/bun/websocket/ISSUES.md +0 -1175
- package/src/server/bun/websocket/Message.ts +0 -120
- package/src/server/bun/websocket/Websocket.ts +0 -402
- package/src/server/bun/websocket/index.ts +0 -14
- package/src/server/bun/websocket/websocket.enums.ts +0 -29
- package/src/server/bun/websocket/websocket.guards.ts +0 -22
- package/src/server/bun/websocket/websocket.types.ts +0 -252
- package/src/server/controller.ts +0 -121
- package/src/server/index.ts +0 -7
- package/src/server/service.ts +0 -36
package/dist/index.d.ts
CHANGED
|
@@ -1,29 +1,15 @@
|
|
|
1
1
|
export * from "./errors";
|
|
2
2
|
export * from "./singleton";
|
|
3
3
|
export * from "./initializable";
|
|
4
|
-
export * from "./application";
|
|
5
4
|
export * from "./consts";
|
|
6
5
|
export * from "./types";
|
|
6
|
+
export * from "./websocket.shared.types";
|
|
7
7
|
export * from "./throwable";
|
|
8
8
|
export * from "./enums";
|
|
9
9
|
export * from "./client/api/base.api";
|
|
10
10
|
export * from "./client/rxjs/useRxjs";
|
|
11
11
|
export * from "./client/vite/plugins/topsydeUtilsVitePlugin";
|
|
12
12
|
export * from "./external/re-exports";
|
|
13
|
-
export * from "./server/controller";
|
|
14
|
-
export * from "./server/service";
|
|
15
|
-
export * from "./server/base/base.database";
|
|
16
|
-
export * from "./server/bun/router/controller-discovery";
|
|
17
|
-
export * from "./server/bun/router/routes";
|
|
18
|
-
export * from "./server/bun/router/router";
|
|
19
|
-
export * from "./server/bun/router/router.internal";
|
|
20
|
-
export * from "./server/bun/websocket/Websocket";
|
|
21
|
-
export * from "./server/bun/websocket/websocket.guards";
|
|
22
|
-
export * from "./server/bun/websocket/Message";
|
|
23
|
-
export * from "./server/bun/websocket/Channel";
|
|
24
|
-
export * from "./server/bun/websocket/Client";
|
|
25
|
-
export * from "./server/bun/websocket/websocket.enums";
|
|
26
|
-
export * from "./server/bun/websocket/websocket.types";
|
|
27
13
|
export * from "./utils/Rxjs";
|
|
28
14
|
export * from "./utils/Lib";
|
|
29
15
|
export * from "./utils/Guards";
|
|
@@ -33,34 +19,19 @@ export * from "./utils/BaseDto";
|
|
|
33
19
|
export * from "./utils/dto_validators/IsNumberOrRangeConstraint";
|
|
34
20
|
export { default as Singleton } from "./singleton";
|
|
35
21
|
export { default as Initializable } from "./initializable";
|
|
36
|
-
export { default as Application } from "./application";
|
|
37
22
|
export { default as Throwable } from "./throwable";
|
|
38
23
|
export { default as BaseAPI } from "./client/api/base.api";
|
|
39
24
|
export { default as TopsydeUtilsVitePlugin } from "./client/vite/plugins/topsydeUtilsVitePlugin";
|
|
40
|
-
export { default as Controller } from "./server/controller";
|
|
41
|
-
export { default as Service } from "./server/service";
|
|
42
|
-
export { default as Database } from "./server/base/base.database";
|
|
43
|
-
export { default as Router } from "./server/bun/router/router";
|
|
44
|
-
export { default as Router_Internal } from "./server/bun/router/router.internal";
|
|
45
|
-
export { default as Websocket } from "./server/bun/websocket/Websocket";
|
|
46
|
-
export { default as Message } from "./server/bun/websocket/Message";
|
|
47
|
-
export { default as Channel } from "./server/bun/websocket/Channel";
|
|
48
|
-
export { default as Client } from "./server/bun/websocket/Client";
|
|
49
25
|
export { default as Lib } from "./utils/Lib";
|
|
50
26
|
export { default as Guards } from "./utils/Guards";
|
|
51
27
|
export { default as BaseEntity } from "./utils/BaseEntity";
|
|
52
28
|
export { default as Console } from "./utils/Console";
|
|
53
29
|
export { ERROR_CODE, HTTP_ERROR_CODE, WS_ERROR_CODE } from "./errors";
|
|
54
30
|
export { InitializableOptions, InitializableEvent } from "./initializable";
|
|
55
|
-
export { RESPONSE_INIT, HEADERS_INIT, RESPONSE_METHOD_OPTIONS } from "./application";
|
|
56
31
|
export { DEFAULT_FALSE_RESPONSE, LOG_COLORS, LOG_ICONS } from "./consts";
|
|
57
32
|
export { ClassConstructor, NonNullableType, ObjectKeys, KVObj, I_ApplicationResponse } from "./types";
|
|
33
|
+
export { WebsocketEntityId, WebsocketEntityName, WebsocketEntityData, WebsocketMessage, WebsocketStructuredMessage } from "./websocket.shared.types";
|
|
58
34
|
export { E_IS, E_ENVIRONMENTS } from "./enums";
|
|
59
35
|
export { RxjsDataType, NamespaceActions, MultiNamespaceActions } from "./client/rxjs/useRxjs";
|
|
60
36
|
export { Expose, ValidationError, IsArray, IsBoolean, IsDate, IsEnum, IsNumber, IsObject, IsOptional, IsString, Validate, IsAlphanumeric, IsBooleanString, IsDateString, IsDecimal, IsDefined, IsNumberString, IsNotEmpty, IsNotEmptyObject, } from "./external/re-exports";
|
|
61
|
-
export { ControllerResponse, ControllerAction, ControllerMap, ControllerOptions } from "./server/controller";
|
|
62
|
-
export { Routes } from "./server/bun/router/routes";
|
|
63
|
-
export { WebsocketConstructorOptions, I_WebsocketConstructor } from "./server/bun/websocket/Websocket";
|
|
64
|
-
export { E_WebsocketMessageType, E_WebsocketMessagePriority, E_ClientState } from "./server/bun/websocket/websocket.enums";
|
|
65
|
-
export { BunWebsocketMessage, WebsocketChannel, WebsocketClients, WebsocketMessageOptions, WebsocketMessage, WebsocketStructuredMessage, WebsocketEntityId, WebsocketEntityName, WebsocketEntityData, I_WebsocketEntity, I_WebsocketClient, I_WebsocketChannelEntity, BroadcastOptions, AddMemberResult, AddMemberOptions, RemoveMemberOptions, I_WebsocketChannel, WebsocketInterfaceHandlers, I_WebsocketInterface, } from "./server/bun/websocket/websocket.types";
|
|
66
37
|
export { E_SUBJET_TYPE, I_RxjsPayload, RxjsNamespaces, AsyncSubject, BehaviorSubject, ReplaySubject, Subject, Subscription } from "./utils/Rxjs";
|
package/dist/index.js
CHANGED
|
@@ -4,29 +4,15 @@
|
|
|
4
4
|
export * from "./errors.js";
|
|
5
5
|
export * from "./singleton.js";
|
|
6
6
|
export * from "./initializable.js";
|
|
7
|
-
export * from "./application.js";
|
|
8
7
|
export * from "./consts.js";
|
|
9
8
|
export * from "./types.js";
|
|
9
|
+
export * from "./websocket.shared.types.js";
|
|
10
10
|
export * from "./throwable.js";
|
|
11
11
|
export * from "./enums.js";
|
|
12
12
|
export * from "./client/api/base.api.js";
|
|
13
13
|
export * from "./client/rxjs/useRxjs.js";
|
|
14
14
|
export * from "./client/vite/plugins/topsydeUtilsVitePlugin.js";
|
|
15
15
|
export * from "./external/re-exports.js";
|
|
16
|
-
export * from "./server/controller.js";
|
|
17
|
-
export * from "./server/service.js";
|
|
18
|
-
export * from "./server/base/base.database.js";
|
|
19
|
-
export * from "./server/bun/router/controller-discovery.js";
|
|
20
|
-
export * from "./server/bun/router/routes.js";
|
|
21
|
-
export * from "./server/bun/router/router.js";
|
|
22
|
-
export * from "./server/bun/router/router.internal.js";
|
|
23
|
-
export * from "./server/bun/websocket/Websocket.js";
|
|
24
|
-
export * from "./server/bun/websocket/websocket.guards.js";
|
|
25
|
-
export * from "./server/bun/websocket/Message.js";
|
|
26
|
-
export * from "./server/bun/websocket/Channel.js";
|
|
27
|
-
export * from "./server/bun/websocket/Client.js";
|
|
28
|
-
export * from "./server/bun/websocket/websocket.enums.js";
|
|
29
|
-
export * from "./server/bun/websocket/websocket.types.js";
|
|
30
16
|
export * from "./utils/Rxjs.js";
|
|
31
17
|
export * from "./utils/Lib.js";
|
|
32
18
|
export * from "./utils/Guards.js";
|
|
@@ -37,29 +23,17 @@ export * from "./utils/dto_validators/IsNumberOrRangeConstraint.js";
|
|
|
37
23
|
// Export default classes
|
|
38
24
|
export { default as Singleton } from "./singleton.js";
|
|
39
25
|
export { default as Initializable } from "./initializable.js";
|
|
40
|
-
export { default as Application } from "./application.js";
|
|
41
26
|
export { default as Throwable } from "./throwable.js";
|
|
42
27
|
export { default as BaseAPI } from "./client/api/base.api.js";
|
|
43
28
|
export { default as TopsydeUtilsVitePlugin } from "./client/vite/plugins/topsydeUtilsVitePlugin.js";
|
|
44
|
-
export { default as Controller } from "./server/controller.js";
|
|
45
|
-
export { default as Service } from "./server/service.js";
|
|
46
|
-
export { default as Database } from "./server/base/base.database.js";
|
|
47
|
-
export { default as Router } from "./server/bun/router/router.js";
|
|
48
|
-
export { default as Router_Internal } from "./server/bun/router/router.internal.js";
|
|
49
|
-
export { default as Websocket } from "./server/bun/websocket/Websocket.js";
|
|
50
|
-
export { default as Message } from "./server/bun/websocket/Message.js";
|
|
51
|
-
export { default as Channel } from "./server/bun/websocket/Channel.js";
|
|
52
|
-
export { default as Client } from "./server/bun/websocket/Client.js";
|
|
53
29
|
export { default as Lib } from "./utils/Lib.js";
|
|
54
30
|
export { default as Guards } from "./utils/Guards.js";
|
|
55
31
|
export { default as BaseEntity } from "./utils/BaseEntity.js";
|
|
56
32
|
export { default as Console } from "./utils/Console.js";
|
|
57
33
|
// Re-export specific items for backward compatibility
|
|
58
34
|
export { ERROR_CODE, HTTP_ERROR_CODE, WS_ERROR_CODE } from "./errors.js";
|
|
59
|
-
export { RESPONSE_INIT, HEADERS_INIT, RESPONSE_METHOD_OPTIONS } from "./application.js";
|
|
60
35
|
export { DEFAULT_FALSE_RESPONSE, LOG_COLORS, LOG_ICONS } from "./consts.js";
|
|
61
36
|
export { E_IS, E_ENVIRONMENTS } from "./enums.js";
|
|
62
37
|
export { Expose, ValidationError, IsArray, IsBoolean, IsDate, IsEnum, IsNumber, IsObject, IsOptional, IsString, Validate, IsAlphanumeric, IsBooleanString, IsDateString, IsDecimal, IsDefined, IsNumberString, IsNotEmpty, IsNotEmptyObject, } from "./external/re-exports.js";
|
|
63
|
-
export { E_WebsocketMessageType, E_WebsocketMessagePriority, E_ClientState } from "./server/bun/websocket/websocket.enums.js";
|
|
64
38
|
export { E_SUBJET_TYPE, AsyncSubject, BehaviorSubject, ReplaySubject, Subject, Subscription } from "./utils/Rxjs.js";
|
|
65
39
|
//# sourceMappingURL=index.js.map
|
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,
|
|
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,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8CAA8C,CAAC;AAC7D,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kDAAkD,CAAC;AAEjE,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,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACjG,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3D,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,sBAAsB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGzE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EACN,MAAM,EACN,eAAe,EACf,OAAO,EACP,SAAS,EACT,MAAM,EACN,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,eAAe,EACf,YAAY,EACZ,SAAS,EACT,SAAS,EACT,cAAc,EACd,UAAU,EACV,gBAAgB,GAChB,MAAM,uBAAuB,CAAC;AAC/B,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 \"./consts\";\nexport * from \"./types\";\nexport * from \"./websocket.shared.types\";\nexport * from \"./throwable\";\nexport * from \"./enums\";\nexport * from \"./client/api/base.api\";\nexport * from \"./client/rxjs/useRxjs\";\nexport * from \"./client/vite/plugins/topsydeUtilsVitePlugin\";\nexport * from \"./external/re-exports\";\nexport * from \"./utils/Rxjs\";\nexport * from \"./utils/Lib\";\nexport * from \"./utils/Guards\";\nexport * from \"./utils/BaseEntity\";\nexport * from \"./utils/Console\";\nexport * from \"./utils/BaseDto\";\nexport * from \"./utils/dto_validators/IsNumberOrRangeConstraint\";\n\n// Export default classes\nexport { default as Singleton } from \"./singleton\";\nexport { default as Initializable } from \"./initializable\";\nexport { default as Throwable } from \"./throwable\";\nexport { default as BaseAPI } from \"./client/api/base.api\";\nexport { default as TopsydeUtilsVitePlugin } from \"./client/vite/plugins/topsydeUtilsVitePlugin\";\nexport { default as Lib } from \"./utils/Lib\";\nexport { default as Guards } from \"./utils/Guards\";\nexport { default as BaseEntity } from \"./utils/BaseEntity\";\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 { DEFAULT_FALSE_RESPONSE, LOG_COLORS, LOG_ICONS } from \"./consts\";\nexport { ClassConstructor, NonNullableType, ObjectKeys, KVObj, I_ApplicationResponse } from \"./types\";\nexport { WebsocketEntityId, WebsocketEntityName, WebsocketEntityData, WebsocketMessage, WebsocketStructuredMessage } from \"./websocket.shared.types\";\nexport { E_IS, E_ENVIRONMENTS } from \"./enums\";\nexport { RxjsDataType, NamespaceActions, MultiNamespaceActions } from \"./client/rxjs/useRxjs\";\nexport {\n\tExpose,\n\tValidationError,\n\tIsArray,\n\tIsBoolean,\n\tIsDate,\n\tIsEnum,\n\tIsNumber,\n\tIsObject,\n\tIsOptional,\n\tIsString,\n\tValidate,\n\tIsAlphanumeric,\n\tIsBooleanString,\n\tIsDateString,\n\tIsDecimal,\n\tIsDefined,\n\tIsNumberString,\n\tIsNotEmpty,\n\tIsNotEmptyObject,\n} from \"./external/re-exports\";\nexport { E_SUBJET_TYPE, I_RxjsPayload, RxjsNamespaces, AsyncSubject, BehaviorSubject, ReplaySubject, Subject, Subscription } from \"./utils/Rxjs\";\n"]}
|
package/dist/utils/Lib.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as fs from "fs";
|
|
2
1
|
declare class Lib {
|
|
3
2
|
private static GetLogSource;
|
|
4
3
|
static Log(...args: any): void;
|
|
@@ -33,16 +32,7 @@ declare class Lib {
|
|
|
33
32
|
static IsRegex(variable: any): boolean;
|
|
34
33
|
static IsBoolean(variable: any): boolean;
|
|
35
34
|
static GetType(value: any, asTypeOf?: boolean): null | string | boolean;
|
|
36
|
-
static GetProjectRoot(startDir?: string, rootReference?: string): string;
|
|
37
35
|
static RunTaskWithTimeout(task: () => Promise<void>, timeout: number): Promise<unknown>;
|
|
38
|
-
static GetFolderPath(folder: string): string;
|
|
39
|
-
static GetFilePath(folder: string, file: string): string;
|
|
40
|
-
static CreateDirectory(folderToCreate: string): Promise<string>;
|
|
41
|
-
static DeleteDirectory(folderToDelete: string): Promise<void>;
|
|
42
|
-
static CreateFile(folderPath: string, filePath: string, content: string): Promise<void>;
|
|
43
|
-
static GetFile(filePathFromRoot: string): fs.ReadStream;
|
|
44
|
-
static GetFilesInDirectory(directoryPath: string): string[];
|
|
45
|
-
static DeleteFile(filePathFromRoot: string): Promise<void>;
|
|
46
36
|
static Timestamp(log?: boolean): string;
|
|
47
37
|
static RemoveWhitespace(value: string): string;
|
|
48
38
|
static msToString(ms: number): string;
|
|
@@ -51,7 +41,6 @@ declare class Lib {
|
|
|
51
41
|
static ToGB(bytes: number, as_KB?: boolean, decimalPlaces?: number): string;
|
|
52
42
|
static RetryHandler<T extends (...args: any[]) => any>(func: T, retries?: number, ...args: Parameters<T>): Promise<ReturnType<T>>;
|
|
53
43
|
static Difference(x: any[], y: any[]): any[];
|
|
54
|
-
static ReadFileContent(filePath: string): Promise<string>;
|
|
55
44
|
static measureExecutionTime<T extends (...args: any[]) => any, U extends ReturnType<T>>(func: T, ...args: Parameters<T>): Promise<{
|
|
56
45
|
result: Awaited<U>;
|
|
57
46
|
time: number | string;
|
|
@@ -67,5 +56,4 @@ export declare class Debug {
|
|
|
67
56
|
static Log(...args: any): void;
|
|
68
57
|
static $Log(...args: any): void;
|
|
69
58
|
static LogObject(object: any, text?: string): void;
|
|
70
|
-
static GetLocalIpAddress(): string;
|
|
71
59
|
}
|
package/dist/utils/Lib.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import * as fs from "fs";
|
|
2
|
-
import * as path from "path";
|
|
3
1
|
import { E_IS } from "../enums.js";
|
|
4
2
|
import Throwable from "../throwable.js";
|
|
5
3
|
class Lib {
|
|
@@ -288,51 +286,9 @@ class Lib {
|
|
|
288
286
|
return "object";
|
|
289
287
|
}
|
|
290
288
|
}
|
|
291
|
-
static GetProjectRoot(startDir = __dirname, rootReference = "package.json") {
|
|
292
|
-
let currentDir = startDir;
|
|
293
|
-
while (!fs.existsSync(path.join(currentDir, rootReference))) {
|
|
294
|
-
const parentDir = path.resolve(currentDir, "..");
|
|
295
|
-
if (parentDir === currentDir) {
|
|
296
|
-
throw new Error("Unable to find project root");
|
|
297
|
-
}
|
|
298
|
-
currentDir = parentDir;
|
|
299
|
-
}
|
|
300
|
-
return currentDir;
|
|
301
|
-
}
|
|
302
289
|
static async RunTaskWithTimeout(task, timeout) {
|
|
303
290
|
return Promise.race([task(), new Promise((_, reject) => setTimeout(() => reject(new Error("Task timed out")), timeout))]);
|
|
304
291
|
}
|
|
305
|
-
static GetFolderPath(folder) {
|
|
306
|
-
return path.join(this.GetProjectRoot(), folder);
|
|
307
|
-
}
|
|
308
|
-
static GetFilePath(folder, file) {
|
|
309
|
-
return path.join(this.GetFolderPath(folder), file);
|
|
310
|
-
}
|
|
311
|
-
static async CreateDirectory(folderToCreate) {
|
|
312
|
-
const directoryPath = Lib.GetFolderPath(folderToCreate);
|
|
313
|
-
await fs.promises.access(directoryPath, fs.constants.F_OK).catch(async () => {
|
|
314
|
-
await fs.promises.mkdir(directoryPath, { recursive: true });
|
|
315
|
-
});
|
|
316
|
-
return directoryPath;
|
|
317
|
-
}
|
|
318
|
-
static async DeleteDirectory(folderToDelete) {
|
|
319
|
-
const directoryPath = path.join(this.GetProjectRoot(), folderToDelete);
|
|
320
|
-
await fs.promises.rm(directoryPath, { recursive: true, force: true });
|
|
321
|
-
}
|
|
322
|
-
static async CreateFile(folderPath, filePath, content) {
|
|
323
|
-
await Lib.CreateDirectory(folderPath);
|
|
324
|
-
const file = Lib.GetFilePath(folderPath, filePath);
|
|
325
|
-
await fs.promises.writeFile(file, content, "utf8");
|
|
326
|
-
}
|
|
327
|
-
static GetFile(filePathFromRoot) {
|
|
328
|
-
return fs.createReadStream(filePathFromRoot);
|
|
329
|
-
}
|
|
330
|
-
static GetFilesInDirectory(directoryPath) {
|
|
331
|
-
return fs.readdirSync(directoryPath);
|
|
332
|
-
}
|
|
333
|
-
static async DeleteFile(filePathFromRoot) {
|
|
334
|
-
await fs.promises.unlink(filePathFromRoot);
|
|
335
|
-
}
|
|
336
292
|
static Timestamp(log = false) {
|
|
337
293
|
const currentTime = new Date().toLocaleTimeString();
|
|
338
294
|
if (log)
|
|
@@ -397,9 +353,6 @@ class Lib {
|
|
|
397
353
|
static Difference(x, y) {
|
|
398
354
|
return x.filter((x) => !y.includes(x));
|
|
399
355
|
}
|
|
400
|
-
static async ReadFileContent(filePath) {
|
|
401
|
-
return fs.promises.readFile(filePath, "utf8");
|
|
402
|
-
}
|
|
403
356
|
static async measureExecutionTime(func, ...args) {
|
|
404
357
|
const start = performance.now();
|
|
405
358
|
const result = await func(...args);
|
|
@@ -449,23 +402,5 @@ export class Debug {
|
|
|
449
402
|
return;
|
|
450
403
|
Lib.LogObject(object, text);
|
|
451
404
|
}
|
|
452
|
-
static GetLocalIpAddress() {
|
|
453
|
-
try {
|
|
454
|
-
const { networkInterfaces } = require("os");
|
|
455
|
-
const nets = networkInterfaces();
|
|
456
|
-
for (const name of Object.keys(nets)) {
|
|
457
|
-
for (const net of nets[name]) {
|
|
458
|
-
// Skip internal and non-IPv4 addresses
|
|
459
|
-
if (!net.internal && net.family === "IPv4") {
|
|
460
|
-
return net.address;
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
return "127.0.0.1"; // Fallback to localhost
|
|
465
|
-
}
|
|
466
|
-
catch (err) {
|
|
467
|
-
return "127.0.0.1"; // Fallback to localhost
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
405
|
}
|
|
471
406
|
//# sourceMappingURL=Lib.js.map
|
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\tprivate static GetLogSource(skipFrames: number = 1) {\n\t\tconst error = new Error();\n\t\t// Use Error.captureStackTrace to exclude this function from the stack\n\t\tError.captureStackTrace(error, Lib.GetLogSource);\n\n\t\tconst stack = error.stack;\n\t\tif (!stack) return \"unknown\";\n\n\t\tconst stackLines = stack.split(\"\\n\");\n\t\t// Skip the calling log method (Log, Warn, etc.) + any additional frames\n\t\tconst callerLine = stackLines[skipFrames + 1];\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(`[${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\tconst fileName = Lib.GetLogSource();\n\t\tconsole.error(`[${timestamp} - ${fileName}] Handled Error: `, ...args);\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.error(`[${timestamp} - ${fileName}]`, ...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\tpublic static FormatNumber(num: number, decimalPlaces?: number, separator: string = \",\"): string {\n\t\tlet [integerPart, decimalPart] = num.toString().split(\".\");\n\n\t\t// Add thousands separators to integer part\n\t\tintegerPart = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator);\n\n\t\t// Handle decimal places\n\t\tif (decimalPlaces !== undefined) {\n\t\t\tconst fixed = num.toFixed(decimalPlaces);\n\t\t\tconst [fixedInteger, fixedDecimal] = fixed.split(\".\");\n\t\t\tintegerPart = fixedInteger.replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator);\n\t\t\treturn fixedDecimal ? `${integerPart}.${fixedDecimal}` : integerPart;\n\t\t}\n\n\t\treturn decimalPart ? `${integerPart}.${decimalPart}` : integerPart;\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 { E_IS } from \"../enums\";\nimport Throwable from \"../throwable\";\n\nclass Lib {\n\tprivate static GetLogSource(skipFrames: number = 1) {\n\t\tconst error = new Error();\n\t\t// Use Error.captureStackTrace to exclude this function from the stack\n\t\tError.captureStackTrace(error, Lib.GetLogSource);\n\n\t\tconst stack = error.stack;\n\t\tif (!stack) return \"unknown\";\n\n\t\tconst stackLines = stack.split(\"\\n\");\n\t\t// Skip the calling log method (Log, Warn, etc.) + any additional frames\n\t\tconst callerLine = stackLines[skipFrames + 1];\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(`[${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\tconst fileName = Lib.GetLogSource();\n\t\tconsole.error(`[${timestamp} - ${fileName}] Handled Error: `, ...args);\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.error(`[${timestamp} - ${fileName}]`, ...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 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 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 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\tpublic static FormatNumber(num: number, decimalPlaces?: number, separator: string = \",\"): string {\n\t\tlet [integerPart, decimalPart] = num.toString().split(\".\");\n\n\t\t// Add thousands separators to integer part\n\t\tintegerPart = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator);\n\n\t\t// Handle decimal places\n\t\tif (decimalPlaces !== undefined) {\n\t\t\tconst fixed = num.toFixed(decimalPlaces);\n\t\t\tconst [fixedInteger, fixedDecimal] = fixed.split(\".\");\n\t\t\tintegerPart = fixedInteger.replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator);\n\t\t\treturn fixedDecimal ? `${integerPart}.${fixedDecimal}` : integerPart;\n\t\t}\n\n\t\treturn decimalPart ? `${integerPart}.${decimalPart}` : integerPart;\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}\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type WebsocketEntityId = string;
|
|
2
|
+
export type WebsocketEntityName = string;
|
|
3
|
+
export type WebsocketEntityData = {
|
|
4
|
+
id: WebsocketEntityId;
|
|
5
|
+
name: WebsocketEntityName;
|
|
6
|
+
};
|
|
7
|
+
export type WebsocketMessage<T extends Record<string, any> = Record<string, any>> = {
|
|
8
|
+
type: string;
|
|
9
|
+
content: T;
|
|
10
|
+
channel?: string;
|
|
11
|
+
timestamp?: string;
|
|
12
|
+
[key: string]: any;
|
|
13
|
+
};
|
|
14
|
+
export type WebsocketStructuredMessage<T extends Record<string, any> = Record<string, any>> = {
|
|
15
|
+
type: string;
|
|
16
|
+
content: T;
|
|
17
|
+
channel?: string;
|
|
18
|
+
timestamp?: string;
|
|
19
|
+
client?: WebsocketEntityData;
|
|
20
|
+
metadata?: Record<string, string>;
|
|
21
|
+
priority?: number;
|
|
22
|
+
expiresAt?: number;
|
|
23
|
+
[key: string]: any;
|
|
24
|
+
};
|
|
25
|
+
export declare function IsWebsocketStructuredMessage(message: any): message is WebsocketStructuredMessage;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.shared.types.js","sourceRoot":"","sources":["../src/websocket.shared.types.ts"],"names":[],"mappings":"AAwBA,MAAM,UAAU,4BAA4B,CAAC,OAAY;IACxD,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,MAAM,IAAI,OAAO,IAAI,SAAS,IAAI,OAAO,CAAC;AACrG,CAAC","sourcesContent":["export type WebsocketEntityId = string;\nexport type WebsocketEntityName = string;\nexport type WebsocketEntityData = { id: WebsocketEntityId; name: WebsocketEntityName };\n\nexport type WebsocketMessage<T extends Record<string, any> = Record<string, any>> = {\n\ttype: string;\n\tcontent: T;\n\tchannel?: string;\n\ttimestamp?: string;\n\t[key: string]: any;\n};\n\nexport type WebsocketStructuredMessage<T extends Record<string, any> = Record<string, any>> = {\n\ttype: string;\n\tcontent: T;\n\tchannel?: string;\n\ttimestamp?: string;\n\tclient?: WebsocketEntityData;\n\tmetadata?: Record<string, string>;\n\tpriority?: number;\n\texpiresAt?: number;\n\t[key: string]: any;\n};\n\nexport function IsWebsocketStructuredMessage(message: any): message is WebsocketStructuredMessage {\n\treturn typeof message === \"object\" && message !== null && \"type\" in message && \"content\" in message;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "topsyde-utils",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "A bundle of TypeScript utility classes and functions",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -48,18 +48,6 @@
|
|
|
48
48
|
"types": "./dist/external/index.d.ts",
|
|
49
49
|
"default": "./dist/external/index.js"
|
|
50
50
|
},
|
|
51
|
-
"./server/base": {
|
|
52
|
-
"types": "./dist/server/base/index.d.ts",
|
|
53
|
-
"default": "./dist/server/base/index.js"
|
|
54
|
-
},
|
|
55
|
-
"./server/bun/router": {
|
|
56
|
-
"types": "./dist/server/bun/router/index.d.ts",
|
|
57
|
-
"default": "./dist/server/bun/router/index.js"
|
|
58
|
-
},
|
|
59
|
-
"./server/bun/websocket": {
|
|
60
|
-
"types": "./dist/server/bun/websocket/index.d.ts",
|
|
61
|
-
"default": "./dist/server/bun/websocket/index.js"
|
|
62
|
-
},
|
|
63
51
|
"./utils/dto_validators": {
|
|
64
52
|
"types": "./dist/utils/dto_validators/index.d.ts",
|
|
65
53
|
"default": "./dist/utils/dto_validators/index.js"
|
|
@@ -79,15 +67,6 @@
|
|
|
79
67
|
"external": [
|
|
80
68
|
"./dist/external/index.d.ts"
|
|
81
69
|
],
|
|
82
|
-
"server/base": [
|
|
83
|
-
"./dist/server/base/index.d.ts"
|
|
84
|
-
],
|
|
85
|
-
"server/bun/router": [
|
|
86
|
-
"./dist/server/bun/router/index.d.ts"
|
|
87
|
-
],
|
|
88
|
-
"server/bun/websocket": [
|
|
89
|
-
"./dist/server/bun/websocket/index.d.ts"
|
|
90
|
-
],
|
|
91
70
|
"utils/dto_validators": [
|
|
92
71
|
"./dist/utils/dto_validators/index.d.ts"
|
|
93
72
|
]
|