topsyde-utils 1.0.150 → 1.0.151

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.
Files changed (74) hide show
  1. package/dist/application.js.map +1 -1
  2. package/dist/client/rxjs/index.js.map +1 -1
  3. package/dist/client/rxjs/rxjs.js.map +1 -1
  4. package/dist/client/rxjs/useRxjs.js.map +1 -1
  5. package/dist/client/vite/plugins/index.js.map +1 -1
  6. package/dist/client/vite/plugins/topsydeUtilsVitePlugin.js.map +1 -1
  7. package/dist/consts.js.map +1 -1
  8. package/dist/enums.js.map +1 -1
  9. package/dist/errors.js.map +1 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/initializable.js.map +1 -1
  12. package/dist/server/bun/index.js.map +1 -1
  13. package/dist/server/bun/router/controller-discovery.js.map +1 -1
  14. package/dist/server/bun/router/index.js.map +1 -1
  15. package/dist/server/bun/router/router.internal.js.map +1 -1
  16. package/dist/server/bun/router/router.js.map +1 -1
  17. package/dist/server/bun/router/routes.js.map +1 -1
  18. package/dist/server/bun/websocket/Channel.js.map +1 -1
  19. package/dist/server/bun/websocket/Client.js.map +1 -1
  20. package/dist/server/bun/websocket/Message.js.map +1 -1
  21. package/dist/server/bun/websocket/Websocket.js.map +1 -1
  22. package/dist/server/bun/websocket/index.js.map +1 -1
  23. package/dist/server/bun/websocket/websocket.enums.js.map +1 -1
  24. package/dist/server/bun/websocket/websocket.guards.js.map +1 -1
  25. package/dist/server/bun/websocket/websocket.types.js.map +1 -1
  26. package/dist/server/controller.js.map +1 -1
  27. package/dist/server/index.js.map +1 -1
  28. package/dist/server/service.js.map +1 -1
  29. package/dist/singleton.js.map +1 -1
  30. package/dist/throwable.js.map +1 -1
  31. package/dist/types.js.map +1 -1
  32. package/dist/utils/Console.js.map +1 -1
  33. package/dist/utils/Guards.js.map +1 -1
  34. package/dist/utils/Lib.js.map +1 -1
  35. package/dist/utils/index.js.map +1 -1
  36. package/package.json +5 -3
  37. package/src/__tests__/app.test.ts +205 -0
  38. package/src/__tests__/singleton.test.ts +402 -0
  39. package/src/__tests__/type-inference.test.ts +60 -0
  40. package/src/application.ts +43 -0
  41. package/src/client/rxjs/index.ts +5 -0
  42. package/src/client/rxjs/rxjs.ts +122 -0
  43. package/src/client/rxjs/useRxjs.ts +111 -0
  44. package/src/client/vite/plugins/index.ts +5 -0
  45. package/src/client/vite/plugins/topsydeUtilsVitePlugin.ts +80 -0
  46. package/src/consts.ts +48 -0
  47. package/src/enums.ts +14 -0
  48. package/src/errors.ts +56 -0
  49. package/src/index.ts +81 -0
  50. package/src/initializable.ts +375 -0
  51. package/src/server/bun/index.ts +6 -0
  52. package/src/server/bun/router/controller-discovery.ts +94 -0
  53. package/src/server/bun/router/index.ts +9 -0
  54. package/src/server/bun/router/router.internal.ts +64 -0
  55. package/src/server/bun/router/router.ts +51 -0
  56. package/src/server/bun/router/routes.ts +7 -0
  57. package/src/server/bun/websocket/Channel.ts +157 -0
  58. package/src/server/bun/websocket/Client.ts +129 -0
  59. package/src/server/bun/websocket/Message.ts +106 -0
  60. package/src/server/bun/websocket/Websocket.ts +221 -0
  61. package/src/server/bun/websocket/index.ts +14 -0
  62. package/src/server/bun/websocket/websocket.enums.ts +22 -0
  63. package/src/server/bun/websocket/websocket.guards.ts +6 -0
  64. package/src/server/bun/websocket/websocket.types.ts +186 -0
  65. package/src/server/controller.ts +121 -0
  66. package/src/server/index.ts +7 -0
  67. package/src/server/service.ts +36 -0
  68. package/src/singleton.ts +28 -0
  69. package/src/throwable.ts +87 -0
  70. package/src/types.ts +10 -0
  71. package/src/utils/Console.ts +85 -0
  72. package/src/utils/Guards.ts +61 -0
  73. package/src/utils/Lib.ts +506 -0
  74. package/src/utils/index.ts +9 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Guards.js","sourceRoot":"","sources":["../../src/utils/Guards.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,OAAO,CAAC;AAExB,MAAM,MAAM;IAIJ,MAAM,CAAC,QAAQ,CAAC,KAAU,EAAE,YAAqB,KAAK,EAAE,WAAW,GAAG,KAAK;QACjF,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,CAAC;IAKM,MAAM,CAAC,QAAQ,CAAC,KAAU,EAAE,YAAqB,KAAK,EAAE,WAAW,GAAG,KAAK;QACjF,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,CAAC;IAIM,MAAM,CAAC,SAAS,CAAC,KAAU,EAAE,WAAW,GAAG,KAAK;QACtD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC;QACtD,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,CAAC;IAIM,MAAM,CAAC,OAAO,CAAI,KAAU,EAAE,WAAW,GAAG,KAAK;QACvD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,CAAC;IAIM,MAAM,CAAC,QAAQ,CAAC,KAAU,EAAE,WAAW,GAAG,KAAK;QACrD,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,CAAC;IAIM,MAAM,CAAC,UAAU,CAAC,KAAU,EAAE,WAAW,GAAG,KAAK;QACvD,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACrC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,KAAU;QAC7B,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAIM,MAAM,CAAC,MAAM,CAAI,GAAQ,EAAE,IAAkB;QACnD,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IACxC,CAAC;CACD;AAED,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Guards.js","sourceRoot":"","sources":["../../src/utils/Guards.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,OAAO,CAAC;AAExB,MAAM,MAAM;IAIJ,MAAM,CAAC,QAAQ,CAAC,KAAU,EAAE,YAAqB,KAAK,EAAE,WAAW,GAAG,KAAK;QACjF,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,CAAC;IAKM,MAAM,CAAC,QAAQ,CAAC,KAAU,EAAE,YAAqB,KAAK,EAAE,WAAW,GAAG,KAAK;QACjF,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,CAAC;IAIM,MAAM,CAAC,SAAS,CAAC,KAAU,EAAE,WAAW,GAAG,KAAK;QACtD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC;QACtD,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,CAAC;IAIM,MAAM,CAAC,OAAO,CAAI,KAAU,EAAE,WAAW,GAAG,KAAK;QACvD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,CAAC;IAIM,MAAM,CAAC,QAAQ,CAAC,KAAU,EAAE,WAAW,GAAG,KAAK;QACrD,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,CAAC;IAIM,MAAM,CAAC,UAAU,CAAC,KAAU,EAAE,WAAW,GAAG,KAAK;QACvD,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACrC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,KAAU;QAC7B,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAIM,MAAM,CAAC,MAAM,CAAI,GAAQ,EAAE,IAAkB;QACnD,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IACxC,CAAC;CACD;AAED,eAAe,MAAM,CAAC","sourcesContent":["import type { NonNullableType } from \"../types\";\nimport Lib from \"./Lib\";\n\nclass Guards {\n\tpublic static IsString(value: any): value is string;\n\tpublic static IsString(value: any, as_typeof: boolean): value is NonNullableType<string>;\n\tpublic static IsString(value: any, as_typeof: boolean, excludeNull: true): value is NonNullableType<string>;\n\tpublic static IsString(value: any, as_typeof: boolean = false, excludeNull = false): value is string | NonNullableType<string> {\n\t\tconst output = Lib.IsString(value, as_typeof);\n\t\treturn excludeNull ? !Guards.IsNil(value) && output : output;\n\t}\n\n\tpublic static IsNumber(value: any): value is number;\n\tpublic static IsNumber(value: any, as_typeof: boolean): value is NonNullableType<number>;\n\tpublic static IsNumber(value: any, as_typeof: boolean, excludeNull: true): value is NonNullableType<number>;\n\tpublic static IsNumber(value: any, as_typeof: boolean = false, excludeNull = false): value is number | NonNullableType<number> {\n\t\tconst output = Lib.IsNumber(value, as_typeof);\n\t\treturn excludeNull ? !Guards.IsNil(value) && output : output;\n\t}\n\n\tpublic static IsBoolean(value: any): value is boolean;\n\tpublic static IsBoolean(value: any, excludeNull: true): value is NonNullableType<boolean>;\n\tpublic static IsBoolean(value: any, excludeNull = false): value is boolean | NonNullableType<boolean> {\n\t\tconst output = Lib.GetType(value, true) === \"boolean\";\n\t\treturn excludeNull ? !Guards.IsNil(value) && output : output;\n\t}\n\n\tpublic static IsArray<T>(value: any): value is T[];\n\tpublic static IsArray<T>(value: any, excludeNull: true): value is NonNullableType<T[]>;\n\tpublic static IsArray<T>(value: any, excludeNull = false): value is T[] | NonNullableType<T[]> {\n\t\tconst output = Lib.IsArray(value);\n\t\treturn excludeNull ? !Guards.IsNil(value) && output : output;\n\t}\n\n\tpublic static IsObject(value: any): value is object;\n\tpublic static IsObject(value: any, excludeNull: true): value is NonNullableType<object>;\n\tpublic static IsObject(value: any, excludeNull = false): value is object | NonNullableType<object> {\n\t\tconst output = Lib.IsObject(value);\n\t\treturn excludeNull ? !Guards.IsNil(value) && output : output;\n\t}\n\n\tpublic static IsFunction(value: any): value is Function;\n\tpublic static IsFunction(value: any, excludeNull: true): value is NonNullableType<Function>;\n\tpublic static IsFunction(value: any, excludeNull = false): value is Function | NonNullableType<Function> {\n\t\tconst output = Lib.IsFunction(value);\n\t\treturn excludeNull ? !Guards.IsNil(value) && output : output;\n\t}\n\n\tpublic static IsNil(value: any): value is null | undefined {\n\t\treturn Lib.IsNil(value);\n\t}\n\n\tpublic static IsType<T>(obj: any): obj is T;\n\tpublic static IsType<T>(obj: any, keys: (keyof T)[]): obj is T;\n\tpublic static IsType<T>(obj: any, keys?: (keyof T)[]): obj is T {\n\t\tif (!keys) return !this.IsNil(obj);\n\t\treturn keys.every((key) => key in obj);\n\t}\n}\n\nexport default Guards;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Lib.js","sourceRoot":"","sources":["../../src/utils/Lib.ts"],"names":[],"mappings":"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"}
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 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,iCAAiC;AAEjC,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,iCAAiC;AAEjC,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,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 './Guards';\nexport * from './Lib';\nexport * from './Console';\nexport { default as Guards } from './Guards';\nexport { default as Lib } from './Lib';\nexport { default as Console } from './Console';\n"]}
package/package.json CHANGED
@@ -1,19 +1,21 @@
1
1
  {
2
2
  "name": "topsyde-utils",
3
- "version": "1.0.150",
3
+ "version": "1.0.151",
4
4
  "description": "A bundle of TypeScript utility classes and functions",
5
+ "type": "module",
5
6
  "main": "dist/index.js",
6
7
  "types": "dist/index.d.ts",
7
8
  "files": [
8
9
  "dist",
9
- "dist/**/*"
10
+ "dist/**/*",
11
+ "src"
10
12
  ],
11
13
  "scripts": {
12
14
  "clean": "rimraf dist",
13
15
  "format": "prettier --cache --write \"**/*.ts\"",
14
16
  "format:generated": "prettier --cache --write \"src/index.ts\"",
15
17
  "generate-indexes": "bash ./scripts/generate-indexes.sh",
16
- "build:ts": "tsc",
18
+ "build:ts": "tsc --sourceMap --inlineSources",
17
19
  "build:types": "tsc --emitDeclarationOnly --declaration --outDir ./dist",
18
20
  "build:prepare": "bun run clean && bun run generate-indexes && bun run format:generated",
19
21
  "build": "bun run build:prepare && bun run build:ts && bun run build:types",
@@ -0,0 +1,205 @@
1
+ import * as app from "../server/bun/websocket";
2
+ import { WebsocketStructuredMessage } from "../server/bun/websocket/websocket.types";
3
+ import Singleton from "../singleton";
4
+ import Channel from "../server/bun/websocket/Channel";
5
+
6
+ describe("Websocket Tests", () => {
7
+ const _Websocket = app.Websocket;
8
+ let server: any;
9
+
10
+ beforeEach(() => {
11
+ // Reset all singleton instances before each test
12
+ Singleton.ResetInstances();
13
+
14
+ // Create a mock server
15
+ server = {
16
+ publish: (channel: string, message: string) => {},
17
+ };
18
+
19
+ // Set up the Websocket instance with the server
20
+ const wsInstance = _Websocket.GetInstance<app.Websocket>();
21
+ wsInstance.set(server);
22
+ });
23
+
24
+ it("should set up the websocket server correctly", () => {
25
+ const wsInstance = _Websocket.GetInstance<app.Websocket>();
26
+ expect(_Websocket.Server()).toBe(server);
27
+ });
28
+
29
+ it("should broadcast messages to channels", () => {
30
+ // Test broadcasting a message
31
+ const message: WebsocketStructuredMessage = {
32
+ type: "test",
33
+ content: "Hello from test",
34
+ };
35
+
36
+ // This should work because the server is set
37
+ _Websocket.Broadcast("global", message);
38
+ // No assertion needed, just checking it doesn't throw
39
+ });
40
+
41
+ it("should handle the case when server is not set", () => {
42
+ // Create a new instance with Singleton.ResetInstance and don't set a server
43
+ const newWs = _Websocket.GetInstance<app.Websocket>();
44
+ (newWs.server as any) = null;
45
+ // This should log a warning but not throw an error
46
+ const message: WebsocketStructuredMessage = {
47
+ type: "test",
48
+ content: "This should warn but not error",
49
+ };
50
+
51
+ // expect newWs.server.publish("global", JSON.stringify(message)); to throw an error
52
+ expect(() => newWs.server.publish("global", JSON.stringify(message))).toThrow();
53
+ });
54
+
55
+ it("should join and leave channels", () => {
56
+ // Create a properly mocked WebSocket client with the required methods
57
+ const mockWs = {
58
+ send: (data: string) => {},
59
+ subscribe: (channel: string) => {},
60
+ unsubscribe: (channel: string) => {},
61
+ data: { id: "test-client" },
62
+ };
63
+
64
+ const mockClient = {
65
+ id: "123",
66
+ ws: mockWs as any,
67
+ name: "test-client",
68
+ };
69
+
70
+ // Join a channel
71
+ _Websocket.Join("global", mockClient);
72
+
73
+ // Leave the channel
74
+ _Websocket.Leave("global", mockClient);
75
+ // No assertion needed, just checking it doesn't throw
76
+ });
77
+
78
+ it("should publish messages to all channels", () => {
79
+ // Test publishing a message to all channels
80
+ const message: WebsocketStructuredMessage = {
81
+ type: "test",
82
+ content: "Broadcast to all channels",
83
+ };
84
+
85
+ _Websocket.BraodcastAll(message);
86
+ // No assertion needed, just checking it doesn't throw
87
+ });
88
+
89
+ it("should verify static method behavior with inheritance", () => {
90
+ // This test specifically checks if static methods are called on the correct class
91
+ // when using inheritance
92
+
93
+ // Create a second derived class to test inheritance behavior
94
+ class AnotherWebsocket extends app.Websocket {}
95
+
96
+ // Get instances of both classes
97
+ const wsInstance1 = _Websocket.GetInstance<app.Websocket>();
98
+ const wsInstance2 = AnotherWebsocket.GetInstance<AnotherWebsocket>();
99
+
100
+ // Each class should have its own singleton instance
101
+ expect(wsInstance1).not.toBe(wsInstance2);
102
+
103
+ // Set up server for both instances
104
+ wsInstance1.set(server);
105
+ wsInstance2.set(server);
106
+
107
+ // Both classes should share the same server instance
108
+ expect(_Websocket.Server()).toBe(server);
109
+ expect(AnotherWebsocket.Server()).toBe(server);
110
+ });
111
+
112
+ it("should test static method calls from derived class instance", () => {
113
+ // This test checks if calling static methods from a derived class instance
114
+ // correctly uses the static methods of the derived class
115
+
116
+ // Create a derived class with a custom static method
117
+ class CustomWebsocket extends app.Websocket {
118
+ public static CustomServer() {
119
+ // This should call the Server() method on CustomWebsocket, not on Websocket
120
+ return this.Server();
121
+ }
122
+
123
+ // Override the Broadcast method to add logging
124
+ public static Broadcast(channel: string, message: WebsocketStructuredMessage) {
125
+ console.log("CustomWebsocket.Broadcast called");
126
+ // Call the parent method
127
+ super.Broadcast(channel, message);
128
+ }
129
+ }
130
+
131
+ // Get an instance of the custom class and set up its server
132
+ const customWs = CustomWebsocket.GetInstance<CustomWebsocket>();
133
+ customWs.set(server);
134
+
135
+ // Both classes should share the same server instance
136
+ expect(_Websocket.Server()).toBe(server);
137
+ expect(CustomWebsocket.Server()).toBe(server);
138
+
139
+ // Test broadcasting a message through the custom class
140
+ const message: WebsocketStructuredMessage = {
141
+ type: "test",
142
+ content: "Hello from custom test",
143
+ };
144
+
145
+ // This should use the overridden Broadcast method
146
+ CustomWebsocket.Broadcast("global", message);
147
+ });
148
+
149
+ it("should simulate the real-world scenario with modules", () => {
150
+ // This test simulates the real-world scenario where a derived class is used in a different module
151
+
152
+ // First, let's create a module-like structure
153
+ const moduleA = {
154
+ // This represents the topsyde-utils module
155
+ Websocket: app.Websocket,
156
+ };
157
+
158
+ // Create a derived class that extends the base Websocket
159
+ class DerivedWebsocket extends moduleA.Websocket {
160
+ protected constructor() {
161
+ super();
162
+ }
163
+ }
164
+
165
+ const moduleB = {
166
+ // This represents the server_rune_matchmaking module
167
+ Websocket: DerivedWebsocket,
168
+ };
169
+
170
+ // Now simulate the app.ts setup
171
+ class TestApp {
172
+ private websocket: app.Websocket;
173
+
174
+ constructor() {
175
+ this.websocket = moduleB.Websocket.GetInstance();
176
+ // Set up the server for this instance
177
+ this.websocket.set(server);
178
+ }
179
+
180
+ setup() {
181
+ return server;
182
+ }
183
+
184
+ broadcast(message: WebsocketStructuredMessage) {
185
+ moduleB.Websocket.Broadcast("global", message);
186
+ }
187
+ }
188
+
189
+ // Create and set up the app
190
+ const testApp = new TestApp();
191
+ testApp.setup();
192
+
193
+ // Test broadcasting a message
194
+ const message: WebsocketStructuredMessage = {
195
+ type: "test",
196
+ content: "Hello from app test",
197
+ };
198
+
199
+ // This should work because the server is set
200
+ testApp.broadcast(message);
201
+
202
+ // Verify that the server is set correctly
203
+ expect(moduleB.Websocket.Server()).toBeDefined();
204
+ });
205
+ });