miqro 7.2.6 → 7.2.8

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 (241) hide show
  1. package/README.md +1 -21
  2. package/build/esm/editor/auth.js +0 -1
  3. package/build/esm/editor/common/constants.js +0 -1
  4. package/build/esm/editor/common/constants.server.js +0 -1
  5. package/build/esm/editor/common/editor-index.d.ts +1 -1
  6. package/build/esm/editor/common/editor-index.js +0 -1
  7. package/build/esm/editor/common/html-encode.js +0 -1
  8. package/build/esm/editor/common/log-socket.js +0 -1
  9. package/build/esm/editor/common/templates.js +0 -1
  10. package/build/esm/editor/components/api-preview.js +0 -1
  11. package/build/esm/editor/components/editor.js +0 -1
  12. package/build/esm/editor/components/file-browser.js +0 -1
  13. package/build/esm/editor/components/file-editor-toolbar.js +0 -1
  14. package/build/esm/editor/components/file-editor.js +0 -1
  15. package/build/esm/editor/components/filter-query.js +0 -1
  16. package/build/esm/editor/components/highlight-text-area.js +0 -1
  17. package/build/esm/editor/components/log-viewer.js +0 -1
  18. package/build/esm/editor/components/new-file.js +0 -1
  19. package/build/esm/editor/components/scroll-query.js +0 -1
  20. package/build/esm/editor/components/start-page.js +0 -1
  21. package/build/esm/editor/http/admin/editor/api/fs/delete.api.js +0 -1
  22. package/build/esm/editor/http/admin/editor/api/fs/read.api.js +0 -1
  23. package/build/esm/editor/http/admin/editor/api/fs/rename.api.js +0 -1
  24. package/build/esm/editor/http/admin/editor/api/fs/scan.api.d.ts +1 -1
  25. package/build/esm/editor/http/admin/editor/api/fs/scan.api.js +0 -1
  26. package/build/esm/editor/http/admin/editor/api/fs/write.api.js +0 -1
  27. package/build/esm/editor/http/admin/editor/api/server/reload.api.js +0 -1
  28. package/build/esm/editor/http/admin/editor/api/server/restart.api.js +0 -1
  29. package/build/esm/editor/http/admin/editor/editor.js +0 -1
  30. package/build/esm/editor/http/admin/editor/index.api.js +2 -2
  31. package/build/esm/editor/server.js +0 -1
  32. package/build/esm/editor/ws.js +3 -3
  33. package/build/esm/src/bin/compile.js +0 -1
  34. package/build/esm/src/bin/doc-md.js +0 -1
  35. package/build/esm/src/bin/generate-doc.js +0 -1
  36. package/build/esm/src/bin/test.js +0 -1
  37. package/build/esm/src/bin/types.js +0 -1
  38. package/build/esm/src/cluster.js +0 -1
  39. package/build/esm/{editor → src}/common/admin-interface.d.ts +2 -2
  40. package/build/esm/{editor → src}/common/admin-interface.js +0 -1
  41. package/build/esm/src/common/arguments.js +0 -1
  42. package/build/esm/src/common/assets.js +2 -3
  43. package/build/esm/src/common/checksum.js +0 -1
  44. package/build/esm/src/common/constants.js +0 -1
  45. package/build/esm/src/common/content-type.js +0 -1
  46. package/build/esm/src/common/esbuild.js +0 -1
  47. package/build/esm/src/common/exit.js +0 -1
  48. package/build/esm/src/common/fs.js +0 -1
  49. package/build/esm/src/common/help.js +0 -1
  50. package/build/esm/src/common/jsx.js +0 -1
  51. package/build/esm/src/common/jwt.js +0 -1
  52. package/build/esm/src/common/paths.js +0 -1
  53. package/build/esm/src/common/watch.js +0 -1
  54. package/build/esm/src/inflate/inflate-sea.js +0 -1
  55. package/build/esm/src/inflate/inflate.js +0 -1
  56. package/build/esm/src/inflate/md.js +0 -1
  57. package/build/esm/src/inflate/setup-auth.js +0 -1
  58. package/build/esm/src/inflate/setup-cors.js +0 -1
  59. package/build/esm/src/inflate/setup-db.js +0 -1
  60. package/build/esm/src/inflate/setup-error.js +0 -1
  61. package/build/esm/src/inflate/setup-http.js +0 -1
  62. package/build/esm/src/inflate/setup-log.js +0 -1
  63. package/build/esm/src/inflate/setup-middleware.js +0 -1
  64. package/build/esm/src/inflate/setup-server-config.js +0 -1
  65. package/build/esm/src/inflate/setup-test.js +0 -1
  66. package/build/esm/src/inflate/setup-ws.js +0 -1
  67. package/build/esm/src/inflate/setup.doc.js +0 -1
  68. package/build/esm/src/inflate/utils/sea-utils.js +0 -1
  69. package/build/esm/src/lib.js +0 -1
  70. package/build/esm/src/main.js +0 -1
  71. package/build/esm/src/services/app.d.ts +1 -1
  72. package/build/esm/src/services/app.js +1 -1
  73. package/build/esm/src/services/editor.d.ts +1 -1
  74. package/build/esm/src/services/editor.js +10 -12
  75. package/build/esm/src/services/hot-reload.js +0 -1
  76. package/build/esm/src/services/migrations.js +0 -1
  77. package/build/esm/src/services/utils/admin-interface.d.ts +1 -1
  78. package/build/esm/src/services/utils/admin-interface.js +0 -1
  79. package/build/esm/src/services/utils/cache.js +0 -1
  80. package/build/esm/src/services/utils/cluster-cache.js +0 -1
  81. package/build/esm/src/services/utils/cluster-ws.js +0 -1
  82. package/build/esm/src/services/utils/db-manager.js +0 -1
  83. package/build/esm/src/services/utils/get-route.js +0 -1
  84. package/build/esm/src/services/utils/jwt.js +0 -1
  85. package/build/esm/src/services/utils/log-transport.js +0 -1
  86. package/build/esm/src/services/utils/log.js +0 -1
  87. package/build/esm/src/services/utils/middleware.js +0 -1
  88. package/build/esm/src/services/utils/server-interface.js +0 -1
  89. package/build/esm/src/services/utils/websocketmanager.d.ts +2 -0
  90. package/build/esm/src/services/utils/websocketmanager.js +8 -2
  91. package/build/esm/src/types.js +0 -1
  92. package/build/lib.cjs +27 -29
  93. package/build/style.css +3 -3
  94. package/editor/auth.ts +1 -1
  95. package/editor/common/editor-index.tsx +1 -1
  96. package/editor/http/admin/editor/api/fs/scan.api.tsx +1 -1
  97. package/editor/http/admin/editor/api/server/reload.api.ts +1 -1
  98. package/editor/http/admin/editor/api/server/restart.api.tsx +1 -1
  99. package/editor/http/admin/editor/index.api.tsx +3 -2
  100. package/editor/server.ts +1 -1
  101. package/editor/ws.ts +5 -3
  102. package/package.json +2 -2
  103. package/build/esm/editor/auth.js.map +0 -1
  104. package/build/esm/editor/common/admin-interface.js.map +0 -1
  105. package/build/esm/editor/common/constants.js.map +0 -1
  106. package/build/esm/editor/common/constants.server.js.map +0 -1
  107. package/build/esm/editor/common/editor-index.js.map +0 -1
  108. package/build/esm/editor/common/html-encode.js.map +0 -1
  109. package/build/esm/editor/common/log-socket.js.map +0 -1
  110. package/build/esm/editor/common/templates.js.map +0 -1
  111. package/build/esm/editor/components/api-preview.js.map +0 -1
  112. package/build/esm/editor/components/editor.js.map +0 -1
  113. package/build/esm/editor/components/file-browser.js.map +0 -1
  114. package/build/esm/editor/components/file-editor-toolbar.js.map +0 -1
  115. package/build/esm/editor/components/file-editor.js.map +0 -1
  116. package/build/esm/editor/components/filter-query.js.map +0 -1
  117. package/build/esm/editor/components/highlight-text-area.js.map +0 -1
  118. package/build/esm/editor/components/log-viewer.js.map +0 -1
  119. package/build/esm/editor/components/new-file.js.map +0 -1
  120. package/build/esm/editor/components/scroll-query.js.map +0 -1
  121. package/build/esm/editor/components/start-page.js.map +0 -1
  122. package/build/esm/editor/http/admin/editor/api/fs/delete.api.js.map +0 -1
  123. package/build/esm/editor/http/admin/editor/api/fs/read.api.js.map +0 -1
  124. package/build/esm/editor/http/admin/editor/api/fs/rename.api.js.map +0 -1
  125. package/build/esm/editor/http/admin/editor/api/fs/scan.api.js.map +0 -1
  126. package/build/esm/editor/http/admin/editor/api/fs/write.api.js.map +0 -1
  127. package/build/esm/editor/http/admin/editor/api/server/reload.api.js.map +0 -1
  128. package/build/esm/editor/http/admin/editor/api/server/restart.api.js.map +0 -1
  129. package/build/esm/editor/http/admin/editor/editor.js.map +0 -1
  130. package/build/esm/editor/http/admin/editor/index.api.js.map +0 -1
  131. package/build/esm/editor/server.js.map +0 -1
  132. package/build/esm/editor/ws.js.map +0 -1
  133. package/build/esm/src/bin/compile.js.map +0 -1
  134. package/build/esm/src/bin/doc-md.js.map +0 -1
  135. package/build/esm/src/bin/generate-doc.js.map +0 -1
  136. package/build/esm/src/bin/test.js.map +0 -1
  137. package/build/esm/src/bin/types.js.map +0 -1
  138. package/build/esm/src/cluster.js.map +0 -1
  139. package/build/esm/src/common/arguments.js.map +0 -1
  140. package/build/esm/src/common/assets.js.map +0 -1
  141. package/build/esm/src/common/checksum.js.map +0 -1
  142. package/build/esm/src/common/constants.js.map +0 -1
  143. package/build/esm/src/common/content-type.js.map +0 -1
  144. package/build/esm/src/common/esbuild.js.map +0 -1
  145. package/build/esm/src/common/exit.js.map +0 -1
  146. package/build/esm/src/common/fs.js.map +0 -1
  147. package/build/esm/src/common/help.js.map +0 -1
  148. package/build/esm/src/common/jsx.js.map +0 -1
  149. package/build/esm/src/common/jwt.js.map +0 -1
  150. package/build/esm/src/common/paths.js.map +0 -1
  151. package/build/esm/src/common/watch.js.map +0 -1
  152. package/build/esm/src/inflate/inflate-sea.js.map +0 -1
  153. package/build/esm/src/inflate/inflate.js.map +0 -1
  154. package/build/esm/src/inflate/md.js.map +0 -1
  155. package/build/esm/src/inflate/setup-auth.js.map +0 -1
  156. package/build/esm/src/inflate/setup-cors.js.map +0 -1
  157. package/build/esm/src/inflate/setup-db.js.map +0 -1
  158. package/build/esm/src/inflate/setup-error.js.map +0 -1
  159. package/build/esm/src/inflate/setup-http.js.map +0 -1
  160. package/build/esm/src/inflate/setup-log.js.map +0 -1
  161. package/build/esm/src/inflate/setup-middleware.js.map +0 -1
  162. package/build/esm/src/inflate/setup-server-config.js.map +0 -1
  163. package/build/esm/src/inflate/setup-test.js.map +0 -1
  164. package/build/esm/src/inflate/setup-ws.js.map +0 -1
  165. package/build/esm/src/inflate/setup.doc.js.map +0 -1
  166. package/build/esm/src/inflate/utils/sea-utils.js.map +0 -1
  167. package/build/esm/src/lib.js.map +0 -1
  168. package/build/esm/src/main.js.map +0 -1
  169. package/build/esm/src/services/app.js.map +0 -1
  170. package/build/esm/src/services/editor.js.map +0 -1
  171. package/build/esm/src/services/hot-reload.js.map +0 -1
  172. package/build/esm/src/services/migrations.js.map +0 -1
  173. package/build/esm/src/services/utils/admin-interface.js.map +0 -1
  174. package/build/esm/src/services/utils/cache.js.map +0 -1
  175. package/build/esm/src/services/utils/cluster-cache.js.map +0 -1
  176. package/build/esm/src/services/utils/cluster-ws.js.map +0 -1
  177. package/build/esm/src/services/utils/db-manager.js.map +0 -1
  178. package/build/esm/src/services/utils/get-route.js.map +0 -1
  179. package/build/esm/src/services/utils/jwt.js.map +0 -1
  180. package/build/esm/src/services/utils/log-transport.js.map +0 -1
  181. package/build/esm/src/services/utils/log.js.map +0 -1
  182. package/build/esm/src/services/utils/middleware.js.map +0 -1
  183. package/build/esm/src/services/utils/server-interface.js.map +0 -1
  184. package/build/esm/src/services/utils/websocketmanager.js.map +0 -1
  185. package/build/esm/src/types.js.map +0 -1
  186. package/build/font.ttf +0 -0
  187. package/editor/common/admin-interface.ts +0 -84
  188. package/src/bin/compile.ts +0 -35
  189. package/src/bin/doc-md.ts +0 -210
  190. package/src/bin/generate-doc.ts +0 -64
  191. package/src/bin/test.ts +0 -93
  192. package/src/bin/types.ts +0 -34
  193. package/src/cluster.ts +0 -27
  194. package/src/common/arguments.ts +0 -853
  195. package/src/common/assets.ts +0 -148
  196. package/src/common/checksum.ts +0 -58
  197. package/src/common/constants.ts +0 -19
  198. package/src/common/content-type.ts +0 -84
  199. package/src/common/esbuild.ts +0 -103
  200. package/src/common/exit.ts +0 -91
  201. package/src/common/fs.ts +0 -82
  202. package/src/common/help.ts +0 -65
  203. package/src/common/jsx.ts +0 -574
  204. package/src/common/jwt.ts +0 -85
  205. package/src/common/paths.ts +0 -107
  206. package/src/common/watch.ts +0 -88
  207. package/src/inflate/inflate-sea.ts +0 -268
  208. package/src/inflate/inflate.ts +0 -105
  209. package/src/inflate/md.ts +0 -25
  210. package/src/inflate/setup-auth.ts +0 -41
  211. package/src/inflate/setup-cors.ts +0 -42
  212. package/src/inflate/setup-db.ts +0 -117
  213. package/src/inflate/setup-error.ts +0 -44
  214. package/src/inflate/setup-http.ts +0 -720
  215. package/src/inflate/setup-log.ts +0 -45
  216. package/src/inflate/setup-middleware.ts +0 -47
  217. package/src/inflate/setup-server-config.ts +0 -48
  218. package/src/inflate/setup-test.ts +0 -23
  219. package/src/inflate/setup-ws.ts +0 -50
  220. package/src/inflate/setup.doc.ts +0 -92
  221. package/src/inflate/utils/sea-utils.ts +0 -14
  222. package/src/lib.ts +0 -35
  223. package/src/main.ts +0 -107
  224. package/src/services/app.ts +0 -750
  225. package/src/services/editor.tsx +0 -101
  226. package/src/services/globals.ts.ignore +0 -186
  227. package/src/services/hot-reload.ts +0 -55
  228. package/src/services/migrations.ts +0 -68
  229. package/src/services/utils/admin-interface.ts +0 -37
  230. package/src/services/utils/cache.ts +0 -88
  231. package/src/services/utils/cluster-cache.ts +0 -255
  232. package/src/services/utils/cluster-ws.ts +0 -202
  233. package/src/services/utils/db-manager.ts +0 -92
  234. package/src/services/utils/get-route.ts +0 -70
  235. package/src/services/utils/jwt.ts +0 -25
  236. package/src/services/utils/log-transport.ts +0 -81
  237. package/src/services/utils/log.ts +0 -92
  238. package/src/services/utils/middleware.ts +0 -10
  239. package/src/services/utils/server-interface.ts +0 -122
  240. package/src/services/utils/websocketmanager.ts +0 -158
  241. package/src/types.ts +0 -287
@@ -1,81 +0,0 @@
1
- import { ConsoleTransport, FileTransport, LoggerTransport, LoggerTransportWriteArgs, LogLevel, WriteArgs } from "@miqro/core";
2
- import { format } from "node:util";
3
- import { LOG_SOCKET_PATH, LOG_WRITE_EVENT } from "../../../editor/common/constants.js";
4
- import { Miqro } from "../app.js";
5
- import { LogConfigMap } from "../../inflate/setup-log.js";
6
- // import { WebSocketManager } from "./websocketmanager.js";
7
- import { LogProviderOptions } from "./log.js";
8
-
9
- export function createLogProviderOptions(app?: {
10
- options?: {
11
- dateTimeFormatOptions?: Intl.DateTimeFormatOptions;
12
- logProviderOptions?: LogProviderOptions;
13
- name?: string;
14
- editor?: boolean;
15
- logFile?: string | boolean;
16
- },
17
- inflated?: {
18
- logConfigMap: LogConfigMap;
19
- }
20
- }) {
21
- const defaultConsole = ConsoleTransport();
22
- //console.log("app.options.logFile [%s]", app.options.logFile);
23
- const defaultFile: LoggerTransport | undefined =
24
- app && app.options && app?.options?.logFile !== true && app?.options?.logFile !== false && String(app?.options?.logFile).toUpperCase() !== "TRUE" && String(app?.options?.logFile).toUpperCase() !== "FALSE" &&
25
- app.options.logFile ? FileTransport(app.options.logFile) :
26
- app && app.options && String(app?.options?.logFile).toUpperCase() === "TRUE" || app?.options?.logFile === true || app?.options?.logFile === undefined ?
27
- FileTransport() :
28
- undefined;
29
- const defaultWrite = async (args: LoggerTransportWriteArgs, level?: LogLevel) => {
30
- try {
31
- // console.dir(app.inflated);
32
- const serviceNamesWithLogConfigReplaceConsole = app?.inflated ?
33
- Object.keys(app?.inflated?.logConfigMap).filter(serviceName => app?.inflated?.logConfigMap[serviceName].replaceConsoleTransport) : [];
34
- const serviceNamesWithLogConfigReplaceFile = app?.inflated ?
35
- Object.keys(app?.inflated?.logConfigMap).filter(serviceName => app?.inflated?.logConfigMap[serviceName].replaceFileTransport) : [];
36
- // console.dir(level);
37
-
38
- // console.dir(app?.inflated?.logConfigMap["m-admin"])
39
- // console.dir(serviceNamesWithLogConfigReplaceConsole.length);
40
- // console.dir(serviceNamesWithLogConfigReplaceFile.length);
41
- await Promise.allSettled((level === undefined ?
42
- [
43
- level === undefined && serviceNamesWithLogConfigReplaceConsole.length === 0 && defaultConsole ?
44
- defaultConsole.write(args) : Promise.resolve(),
45
- level === undefined && serviceNamesWithLogConfigReplaceFile.length === 0 && defaultFile ?
46
- defaultFile.write(args) : Promise.resolve()
47
- ] : []).concat(app && app.inflated && app?.inflated ?
48
- Object.keys(app?.inflated?.logConfigMap).map(serviceName => app?.inflated?.logConfigMap[serviceName]).filter(c => c.level === level).map(c => c.write(args)) : []
49
- ));
50
- } catch (e) {
51
- console.error(e);
52
- }
53
- }
54
- return {
55
- name: app?.options?.name,
56
- formatter: (args: WriteArgs) => {
57
- const params: string[] = args.optionalParams;
58
- return format(
59
- `${new Date().toLocaleDateString(undefined, app?.options?.dateTimeFormatOptions ? app?.options?.dateTimeFormatOptions : {
60
- hour12: false
61
- })} ${new Date().toLocaleTimeString(undefined, app?.options?.dateTimeFormatOptions ? app?.options?.dateTimeFormatOptions : {
62
- hour12: false
63
- })} PID[${process.pid}] ${args.identifier ? `[${args.identifier}] ` : ""}${args.level !== "info" ? (args.level === "error" || args.level === "warn" ? `[${args.level.toUpperCase()}] ` : `[${args.level}] `) : ""}${args.message}`,
64
- ...params)
65
- },
66
- transports: [
67
- ...(([undefined, "error", "warn", "info", "debug", "trace"] as LogLevel[]).map(level => {
68
- return level ? {
69
- level,
70
- write: async (args) => {
71
- await defaultWrite(args, level);
72
- }
73
- } : {
74
- write: async (args) => {
75
- await defaultWrite(args, undefined);
76
- }
77
- }
78
- }))],
79
- ...(app?.options?.logProviderOptions ? app?.options?.logProviderOptions : {})
80
- };
81
- }
@@ -1,92 +0,0 @@
1
- import { ConsoleTransport, getEnvVariable, Logger, LoggerTransport, MinimalLogger, newURL, normalizePath, Request, WriteArgs } from "@miqro/core";
2
- import { format } from "node:util";
3
-
4
- const DEFAULT_ENV_NAME = "LOG_LEVEL";
5
-
6
- export interface LogProviderOptions {
7
- name?: string;
8
- transports: LoggerTransport[];
9
- formatter: (args: WriteArgs) => string;
10
- }
11
-
12
- export const DEFAULT_FORMATTER = ({ identifier, level, message, optionalParams }: WriteArgs) => format(`${new Date().toISOString()} PID[${process.pid}] ` +
13
- `${identifier ? `[${identifier}] ` : ""}` +
14
- `${level !== "info" ? (level === "error" || level === "warn" ? `[${level.toUpperCase()}] ` : `[${level}] `) : ""}` +
15
- `${message}`, ...optionalParams)
16
-
17
- export class LogProvider {
18
-
19
- public options: LogProviderOptions;
20
- public constructor(options?: LogProviderOptions) {
21
- this.options = {
22
- formatter: options && options.formatter ? options.formatter : DEFAULT_FORMATTER,
23
- transports: options && options.transports ? options.transports : [ConsoleTransport()],
24
- name: options?.name
25
- };
26
- this.requestLoggerFactory = this.requestLoggerFactory.bind(this);
27
- }
28
-
29
- public requestLoggerFactory(uuid: string, req: Request): MinimalLogger {
30
- let path = "";
31
- let query = "";
32
- let urlParsingError;
33
- let method = "GET";
34
- let remoteAddress: string | undefined = "";
35
- try {
36
- const url = newURL(req.url ? req.url : "/") as URL;
37
- query = url.searchParams.toString();
38
- path = normalizePath(url.pathname); // normalized path
39
- method = req.method ? req.method.toUpperCase() as string : "GET";
40
- remoteAddress = req.socket.remoteAddress;
41
- } catch (e) {
42
- urlParsingError = e;
43
- }
44
- const pathToEnv = path.replace(/\//ig, "_").replace(/\./ig, "_").replace(/-/ig, "_").toUpperCase();
45
- const WORKER_IDENTIFIER = process.env["CLUSTER_NODE_NUMBER"] ? `WORKER_${process.env["CLUSTER_NODE_NUMBER"]}_` : "";
46
- const identifier = `${pathToEnv === "_" ? "" : `${pathToEnv.substring(1)}`}${pathToEnv.charAt(pathToEnv.length - 1) !== "_" ? "_" : ""}${method.toUpperCase()}`;
47
- const upgrade = req.headers.connection?.indexOf("Upgrade") !== -1;
48
-
49
- const logger = this.getLogger(
50
- `${WORKER_IDENTIFIER}${identifier}`, {
51
- formatter: (args: WriteArgs) => {
52
- args.message = `%s${upgrade ? " UPGRADE" : ""} %s%s [%s] (%s) ${args.message}`;
53
- args.optionalParams = [method, path, query ? `?${query}` : "", uuid, remoteAddress].concat(args.optionalParams);
54
- args.meta.push(req);
55
- args.meta.push(uuid);
56
- return this.options.formatter(args);
57
- }
58
- });
59
-
60
-
61
- if (urlParsingError) {
62
- logger.error(urlParsingError);
63
- }
64
-
65
- return logger;
66
- };
67
-
68
- public getLogger(identifier: string, options?: { level?: any; transports?: any[]; formatter?: any; }): Logger {
69
-
70
- identifier = this.options.name ?
71
- `${this.options.name}${identifier ?
72
- `_${identifier}` : ""}`.toUpperCase() :
73
- identifier ? identifier.toUpperCase() : "";
74
-
75
- const envVarName = `LOG_LEVEL_${identifier}`;
76
- const level = options && options.level ? options.level : getEnvVariable(envVarName) ? getEnvVariable(envVarName) : getEnvVariable(DEFAULT_ENV_NAME, "info");
77
-
78
- const logger = new Logger(identifier, level, {
79
- transports: [],
80
- formatter: options && options.formatter ? options.formatter : this.options.formatter
81
- });
82
- for (const t of this.options.transports) {
83
- logger.addTransport(t);
84
- }
85
- if (options && options.transports) {
86
- for (const t of options.transports) {
87
- logger.addTransport(t);
88
- }
89
- }
90
- return logger;
91
- }
92
- }
@@ -1,10 +0,0 @@
1
- import { CORS, JSONParser, ReadBuffer, SessionHandler, TextParser, URLEncodedParser } from "@miqro/core";
2
-
3
- export const middleware = Object.freeze({
4
- buffer: ReadBuffer,
5
- url: URLEncodedParser,
6
- json: JSONParser,
7
- text: TextParser,
8
- cors: CORS,
9
- session: SessionHandler
10
- });
@@ -1,122 +0,0 @@
1
- import { Logger } from "@miqro/core";
2
- import cluster from "node:cluster";
3
- import { CacheInterface, NamedMigration, ServerInterface } from "../../types.js";
4
- import { DBManager } from "./db-manager.js";
5
- import { Miqro } from "../app.js";
6
- import { WebSocketManager } from "./websocketmanager.js";
7
- import { execSync } from "node:child_process";
8
- import { LogProvider } from "./log.js";
9
- import { HTMLEncode } from "../../../editor/common/html-encode.js";
10
- import { inflateMD2HTML } from "../../inflate/md.js";
11
-
12
- import { Parser } from "@miqro/parser";
13
- import { ClusterCache } from "./cluster-cache.js";
14
- import { LocalCache } from "./cache.js";
15
- import { middleware } from "./middleware.js";
16
- import { jwt } from "./jwt.js";
17
-
18
- // import { initGlobals } from "../globals.js";
19
-
20
- export interface ServerInterfaceImplOptions {
21
- cache: CacheInterface;
22
- localCache: CacheInterface;
23
- dbManager: DBManager;
24
- webSocketManager: WebSocketManager;
25
- logger?: Logger;
26
- app?: Miqro;
27
- port?: string;
28
- loggerProvider?: LogProvider;
29
- }
30
-
31
- export function createServerInterface(options: ServerInterfaceImplOptions): ServerInterface {
32
- // initGlobals();
33
- return Object.freeze<ServerInterface>({
34
- middleware,
35
- encodeHTML: HTMLEncode,
36
- inflateMDtoHTML: inflateMD2HTML,
37
- newParser() {
38
- return new Parser();
39
- },
40
- newClusterCache(name, logger) {
41
- return new ClusterCache(name, logger);
42
- },
43
- newLocalCache(name, logger) {
44
- return new LocalCache(name, logger);
45
- },
46
- getWorkerNumber(): number {
47
- return cluster.isPrimary || process.env["CLUSTER_NODE_NUMBER"] === undefined ? 0 : parseInt(process.env["CLUSTER_NODE_NUMBER"], 10);
48
- },
49
- getWorkerCount(): number {
50
- return cluster.isPrimary || process.env["CLUSTER_NODE_NUMBER"] === undefined || process.env["CLUSTER_COUNT"] === undefined ? 1 : parseInt(process.env["CLUSTER_COUNT"], 10);
51
- },
52
- isPrimaryWorker(): boolean {
53
- return cluster.isPrimary || process.env["CLUSTER_NODE_NUMBER"] === "0";
54
- },
55
- jwt,
56
- cache: options.cache,
57
- localCache: options.localCache,
58
- logger: options.logger,
59
- reload() {
60
- return options?.app?.reload();
61
- },
62
- restart() {
63
- return options?.app?.restart();
64
- },
65
- stop() {
66
- return options?.app?.stop();
67
- },
68
- db: {
69
- get(name) {
70
- return options.dbManager.getDB(name);
71
- },
72
- getMigrations() {
73
- if (options.app?.inflated) {
74
- const ret: NamedMigration[] = [];
75
- for (const d of options.app?.inflated.dbList) {
76
- ret.push(...(d.migrations.map(m => {
77
- return {
78
- name: m.name,
79
- service: m.service,
80
- dbName: m.dbName
81
- }
82
- })));
83
- }
84
- return ret;
85
- }
86
- return [];
87
- },
88
- migrate(migrateOptions) {
89
- return options?.app?.migrate(migrateOptions);
90
- },
91
- },
92
- ws: {
93
- get: (name: string) => {
94
- return options?.webSocketManager?.getWS(name);
95
- },
96
- disconnectAll: (path: string) => {
97
- return options?.webSocketManager?.disconnectAllButLOGSocket();
98
- }
99
- },
100
- openBrowser(path) {
101
- const PORT = options.port;
102
- const URL = `http://localhost${PORT ? `:${PORT}` : ""}${path}`;
103
- const DEFAULT_OPEN = process.platform === "win32" ? "explorer" : process.platform === "darwin" ? "open" : "xdg-open";
104
- const OPEN = options?.app?.options.browser !== undefined && String(options?.app?.options.browser).toUpperCase() !== "TRUE" && String(options?.app?.options.browser).toUpperCase() !== "1" ?
105
- String(options?.app.options.browser).toUpperCase() !== "0" && String(options?.app?.options.browser).toUpperCase() !== "FALSE" && String(options?.app?.options.browser).toUpperCase() !== "NONE" && options?.app?.options.browser ?
106
- options?.app.options.browser : false :
107
- process.env["BROWSER"] ?
108
- process.env["BROWSER"] === "none" ? false : process.env["BROWSER"] : DEFAULT_OPEN;
109
- if (OPEN) {
110
- const openCMD = `${OPEN} "${URL}"`;
111
- options?.logger?.info("opening browser with [%s]", openCMD);
112
- execSync(openCMD);
113
- } else {
114
- options?.logger?.warn("ignoring browser [%s]", OPEN);
115
- }
116
- },
117
- getLogger(identifier, loggerOptions) {
118
- return options?.loggerProvider?.getLogger(identifier, loggerOptions);
119
- }
120
- // ...server
121
- });
122
- }
@@ -1,158 +0,0 @@
1
- import { Logger } from "@miqro/core";
2
- import { LOG_SOCKET_PATH } from "../../../editor/common/constants.js";
3
- import { ClusterWebSocketServer2 } from "./cluster-ws.js";
4
- import { WSConfig } from "../../types.js";
5
- import { LogProvider } from "./log.js";
6
-
7
- export interface WebSocketManagerOptions {
8
- logger?: Logger | Console;
9
- loggerProvider?: LogProvider;
10
- name?: string;
11
- avoidLogSocket?: boolean;
12
- }
13
-
14
- export class WebSocketManager {
15
- public runningGlobalWSMap = new Map<string, ClusterWebSocketServer2>();
16
- public logger?: Logger | Console | null = null;
17
- public name: string;
18
- public avoidLogSocket: boolean;
19
- public loggerProvider: LogProvider;
20
- constructor(options?: WebSocketManagerOptions) {
21
- this.onUpgrade = this.onUpgrade.bind(this);
22
- this.logger = options && options.logger ? options.logger : null;
23
- this.name = options && options.name ? options.name : "WebSocketManager";
24
- this.loggerProvider = options && options.loggerProvider;
25
- this.avoidLogSocket = options && options.avoidLogSocket ? options.avoidLogSocket : false;
26
- }
27
-
28
- public deleteWS(path: string) {
29
- const ws = this.runningGlobalWSMap.get(path);
30
- this.disconnectAllFrom(path);
31
- if (ws)
32
- ws.dispose();
33
- this.runningGlobalWSMap.delete(path);
34
- }
35
-
36
- public deleteAllWS() {
37
- for (const path of this.runningGlobalWSMap.keys()) {
38
- this.deleteWS(path);
39
- }
40
- }
41
-
42
- public getWS(path: string): ClusterWebSocketServer2 | undefined {
43
- return this.runningGlobalWSMap.get(path);
44
- }
45
-
46
- public replaceALLWS(list: WSConfig[]) {
47
- this.deleteAllWS();
48
- for (const wsConfig of list) {
49
- if (!wsConfig.disabled) {
50
- if (this.runningGlobalWSMap.has(wsConfig.path)) {
51
- throw new Error(`ws on path ${wsConfig.path} already setup!`);
52
- }
53
- this.logger?.debug("setting up websocket on [%s]", wsConfig.path);
54
- const identifier = wsConfig.path.replaceAll("/", "_").toUpperCase();
55
- const logger = this.loggerProvider && identifier.length >= 0 ? this.loggerProvider.getLogger(identifier.substring(identifier.charAt(0) === "_" ? 1 : 0)) : this.logger;
56
- const server = new ClusterWebSocketServer2(this.name + wsConfig.path, wsConfig.path, logger, wsConfig);
57
- this.runningGlobalWSMap.set(wsConfig.path, server);
58
- }
59
- }
60
- }
61
-
62
- public replaceALLWSBuLOGSocket(list: WSConfig[]) {
63
- for (const path of this.runningGlobalWSMap.keys()) {
64
- if (path !== LOG_SOCKET_PATH || !this.avoidLogSocket) {
65
- this.deleteWS(path);
66
- }
67
- }
68
- for (const wsConfig of list) {
69
- if (!wsConfig.disabled) {
70
- if (wsConfig.path !== LOG_SOCKET_PATH || !this.avoidLogSocket) {
71
- if (this.runningGlobalWSMap.has(wsConfig.path)) {
72
- throw new Error(`ws on path ${wsConfig.path} already setup!`);
73
- }
74
- this.logger?.debug("setting up websocket on [%s]", wsConfig.path);
75
- const identifier = wsConfig.path.replaceAll("/", "_").toUpperCase();
76
- const logger = this.loggerProvider && identifier.length >= 0 ? this.loggerProvider.getLogger(identifier.substring(identifier.charAt(0) === "_" ? 1 : 0)) : this.logger;
77
- const server = new ClusterWebSocketServer2(this.name + wsConfig.path, wsConfig.path, logger, wsConfig);
78
- this.runningGlobalWSMap.set(wsConfig.path, server);
79
- }
80
- }
81
- }
82
- }
83
-
84
- /*public setupWS(path: string, server: ClusterWebSocketServer2) {
85
- if (this.runningGlobalWSMap.has(path)) {
86
- throw new Error(`ws on path ${path} already setup!`);
87
- }
88
- this.runningGlobalWSMap.set(path, server);
89
- }*/
90
-
91
- public disconnectAllFrom(path: string) {
92
- try {
93
- this.logger?.debug("disconnect all from [%s]", path);
94
- const ws = this.getWS(path);
95
- if (ws) {
96
- const clients = ws.clients.values();
97
- if (clients) {
98
- for (const client of clients) {
99
- try {
100
- client.socket.destroy();
101
- } catch (e2) {
102
- this.logger?.error("error disconnecting web socket client");
103
- this.logger?.error(e2);
104
- }
105
- }
106
- }
107
- //ws.dispose();
108
- }
109
- } catch (e) {
110
- this.logger?.error("error disconnecting web socket clients");
111
- this.logger?.error(e.message);
112
- }
113
- }
114
-
115
- public disconnectAllButLOGSocket() {
116
- try {
117
- for (const wsPath of this.runningGlobalWSMap.keys()) {
118
- if (wsPath !== LOG_SOCKET_PATH || !this.avoidLogSocket) {
119
- this.disconnectAllFrom(wsPath);
120
- }
121
- }
122
- } catch (e) {
123
- this.logger?.error("error disconnecting web socket clients");
124
- this.logger?.error(e.message);
125
- }
126
- }
127
-
128
- public disconnectAll() {
129
- try {
130
- for (const wsPath of this.runningGlobalWSMap.keys()) {
131
- this.disconnectAllFrom(wsPath);
132
- }
133
- } catch (e) {
134
- this.logger?.error("error disconnecting web socket clients");
135
- this.logger?.error(e.message);
136
- }
137
- }
138
-
139
- public onUpgrade(req, socket, head) {
140
- try {
141
- const wsServer = this.getWS(req.path);
142
- if (wsServer) {
143
- return wsServer.onUpgrade(req, socket, head);
144
- } else {
145
- socket.destroy();
146
- }
147
- } catch (e) {
148
- this.logger?.error(e);
149
- }
150
- }
151
- }
152
-
153
- /*export interface WSMapConfig {
154
- [path: string]: {
155
- name: string;
156
- options: WSConfig;
157
- } | undefined;
158
- }*/