miqro 5.0.4 → 6.0.3

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 (353) hide show
  1. package/.eslintrc +15 -0
  2. package/README.md +618 -20
  3. package/build/editor.bundle.js +61154 -0
  4. package/build/esm/editor/auth.d.ts +6 -0
  5. package/build/esm/editor/auth.js +42 -0
  6. package/build/esm/editor/auth.js.map +1 -0
  7. package/build/esm/editor/common/admin-interface.d.ts +36 -0
  8. package/build/esm/editor/common/admin-interface.js +45 -0
  9. package/build/esm/editor/common/admin-interface.js.map +1 -0
  10. package/build/esm/editor/common/constants.d.ts +4 -0
  11. package/build/esm/editor/common/constants.js +21 -0
  12. package/build/esm/editor/common/constants.js.map +1 -0
  13. package/build/esm/editor/common/constants.server.d.ts +2 -0
  14. package/build/esm/editor/common/constants.server.js +5 -0
  15. package/build/esm/editor/common/constants.server.js.map +1 -0
  16. package/build/esm/editor/common/editor-index.d.ts +2 -0
  17. package/build/esm/editor/common/editor-index.js +15 -0
  18. package/build/esm/editor/common/editor-index.js.map +1 -0
  19. package/build/esm/editor/common/html-encode.d.ts +1 -0
  20. package/build/esm/editor/common/html-encode.js +15 -0
  21. package/build/esm/editor/common/html-encode.js.map +1 -0
  22. package/build/esm/editor/common/log-socket.d.ts +13 -0
  23. package/build/esm/editor/common/log-socket.js +68 -0
  24. package/build/esm/editor/common/log-socket.js.map +1 -0
  25. package/build/esm/editor/common/templates.d.ts +11 -0
  26. package/build/esm/editor/common/templates.js +444 -0
  27. package/build/esm/editor/common/templates.js.map +1 -0
  28. package/build/esm/editor/components/api-preview.d.ts +11 -0
  29. package/build/esm/editor/components/api-preview.js +91 -0
  30. package/build/esm/editor/components/api-preview.js.map +1 -0
  31. package/build/esm/editor/components/editor.d.ts +16 -0
  32. package/build/esm/editor/components/editor.js +355 -0
  33. package/build/esm/editor/components/editor.js.map +1 -0
  34. package/build/esm/editor/components/file-browser.d.ts +37 -0
  35. package/build/esm/editor/components/file-browser.js +122 -0
  36. package/build/esm/editor/components/file-browser.js.map +1 -0
  37. package/build/esm/editor/components/file-editor-toolbar.d.ts +22 -0
  38. package/build/esm/editor/components/file-editor-toolbar.js +94 -0
  39. package/build/esm/editor/components/file-editor-toolbar.js.map +1 -0
  40. package/build/esm/editor/components/file-editor.d.ts +32 -0
  41. package/build/esm/editor/components/file-editor.js +60 -0
  42. package/build/esm/editor/components/file-editor.js.map +1 -0
  43. package/build/esm/editor/components/filter-query.d.ts +1 -0
  44. package/build/esm/editor/components/filter-query.js +23 -0
  45. package/build/esm/editor/components/filter-query.js.map +1 -0
  46. package/build/esm/editor/components/highlight-text-area.d.ts +11 -0
  47. package/build/esm/editor/components/highlight-text-area.js +139 -0
  48. package/build/esm/editor/components/highlight-text-area.js.map +1 -0
  49. package/build/esm/editor/components/log-viewer.d.ts +6 -0
  50. package/build/esm/editor/components/log-viewer.js +70 -0
  51. package/build/esm/editor/components/log-viewer.js.map +1 -0
  52. package/build/esm/editor/components/new-file.d.ts +10 -0
  53. package/build/esm/editor/components/new-file.js +118 -0
  54. package/build/esm/editor/components/new-file.js.map +1 -0
  55. package/build/esm/editor/components/scroll-query.d.ts +7 -0
  56. package/build/esm/editor/components/scroll-query.js +22 -0
  57. package/build/esm/editor/components/scroll-query.js.map +1 -0
  58. package/build/esm/editor/components/start-page.d.ts +13 -0
  59. package/build/esm/editor/components/start-page.js +31 -0
  60. package/build/esm/editor/components/start-page.js.map +1 -0
  61. package/build/esm/editor/http/admin/editor/api/fs/delete.api.d.ts +3 -0
  62. package/build/esm/editor/http/admin/editor/api/fs/delete.api.js +30 -0
  63. package/build/esm/editor/http/admin/editor/api/fs/delete.api.js.map +1 -0
  64. package/build/esm/editor/http/admin/editor/api/fs/read.api.d.ts +5 -0
  65. package/build/esm/editor/http/admin/editor/api/fs/read.api.js +50 -0
  66. package/build/esm/editor/http/admin/editor/api/fs/read.api.js.map +1 -0
  67. package/build/esm/editor/http/admin/editor/api/fs/rename.api.d.ts +4 -0
  68. package/build/esm/editor/http/admin/editor/api/fs/rename.api.js +40 -0
  69. package/build/esm/editor/http/admin/editor/api/fs/rename.api.js.map +1 -0
  70. package/build/esm/editor/http/admin/editor/api/fs/scan.api.d.ts +26 -0
  71. package/build/esm/editor/http/admin/editor/api/fs/scan.api.js +150 -0
  72. package/build/esm/editor/http/admin/editor/api/fs/scan.api.js.map +1 -0
  73. package/build/esm/editor/http/admin/editor/api/fs/write.api.d.ts +3 -0
  74. package/build/esm/editor/http/admin/editor/api/fs/write.api.js +39 -0
  75. package/build/esm/editor/http/admin/editor/api/fs/write.api.js.map +1 -0
  76. package/build/esm/editor/http/admin/editor/api/server/reload.api.d.ts +10 -0
  77. package/build/esm/editor/http/admin/editor/api/server/reload.api.js +46 -0
  78. package/build/esm/editor/http/admin/editor/api/server/reload.api.js.map +1 -0
  79. package/build/esm/editor/http/admin/editor/api/server/restart.api.d.ts +10 -0
  80. package/build/esm/editor/http/admin/editor/api/server/restart.api.js +46 -0
  81. package/build/esm/editor/http/admin/editor/api/server/restart.api.js.map +1 -0
  82. package/build/esm/editor/http/admin/editor/editor.js +8 -0
  83. package/build/esm/editor/http/admin/editor/editor.js.map +1 -0
  84. package/build/esm/editor/http/admin/editor/index.api.d.ts +3 -0
  85. package/build/esm/editor/http/admin/editor/index.api.js +22 -0
  86. package/build/esm/editor/http/admin/editor/index.api.js.map +1 -0
  87. package/build/esm/editor/server.d.ts +3 -0
  88. package/build/esm/editor/server.js +50 -0
  89. package/build/esm/editor/server.js.map +1 -0
  90. package/build/esm/editor/ws.d.ts +3 -0
  91. package/build/esm/editor/ws.js +12 -0
  92. package/build/esm/editor/ws.js.map +1 -0
  93. package/build/esm/src/cluster.js +11 -0
  94. package/build/esm/src/cluster.js.map +1 -0
  95. package/build/esm/src/common/arguments.d.ts +22 -0
  96. package/build/esm/src/common/arguments.js +310 -0
  97. package/build/esm/src/common/arguments.js.map +1 -0
  98. package/build/esm/src/common/assets.d.ts +11 -0
  99. package/build/esm/src/common/assets.js +121 -0
  100. package/build/esm/src/common/assets.js.map +1 -0
  101. package/build/esm/src/common/checksum.d.ts +19 -0
  102. package/build/esm/src/common/checksum.js +57 -0
  103. package/build/esm/src/common/checksum.js.map +1 -0
  104. package/build/esm/src/common/constants.d.ts +10 -0
  105. package/build/esm/src/common/constants.js +14 -0
  106. package/build/esm/src/common/constants.js.map +1 -0
  107. package/build/esm/src/common/content-type.d.ts +4 -0
  108. package/build/esm/src/common/content-type.js +82 -0
  109. package/build/esm/src/common/content-type.js.map +1 -0
  110. package/build/esm/src/common/esbuild.d.ts +17 -0
  111. package/build/esm/src/common/esbuild.js +79 -0
  112. package/build/esm/src/common/esbuild.js.map +1 -0
  113. package/build/esm/src/common/exit.d.ts +2 -0
  114. package/build/esm/src/common/exit.js +84 -0
  115. package/build/esm/src/common/exit.js.map +1 -0
  116. package/build/esm/src/common/fs.d.ts +8 -0
  117. package/build/esm/src/common/fs.js +17 -0
  118. package/build/esm/src/common/fs.js.map +1 -0
  119. package/build/esm/src/common/help.d.ts +3 -0
  120. package/build/esm/src/common/help.js +44 -0
  121. package/build/esm/src/common/help.js.map +1 -0
  122. package/build/esm/src/common/jsx.d.ts +52 -0
  123. package/build/esm/src/common/jsx.js +365 -0
  124. package/build/esm/src/common/jsx.js.map +1 -0
  125. package/build/esm/src/common/paths.d.ts +14 -0
  126. package/build/esm/src/common/paths.js +110 -0
  127. package/build/esm/src/common/paths.js.map +1 -0
  128. package/build/esm/src/common/watch.d.ts +3 -0
  129. package/build/esm/src/common/watch.js +74 -0
  130. package/build/esm/src/common/watch.js.map +1 -0
  131. package/build/esm/src/inflate/inflate-sea.d.ts +5 -0
  132. package/build/esm/src/inflate/inflate-sea.js +175 -0
  133. package/build/esm/src/inflate/inflate-sea.js.map +1 -0
  134. package/build/esm/src/inflate/inflate.d.ts +14 -0
  135. package/build/esm/src/inflate/inflate.js +65 -0
  136. package/build/esm/src/inflate/inflate.js.map +1 -0
  137. package/build/esm/src/inflate/md.d.ts +2 -0
  138. package/build/esm/src/inflate/md.js +19 -0
  139. package/build/esm/src/inflate/md.js.map +1 -0
  140. package/build/esm/src/inflate/setup-auth.d.ts +3 -0
  141. package/build/esm/src/inflate/setup-auth.js +38 -0
  142. package/build/esm/src/inflate/setup-auth.js.map +1 -0
  143. package/build/esm/src/inflate/setup-cors.d.ts +3 -0
  144. package/build/esm/src/inflate/setup-cors.js +38 -0
  145. package/build/esm/src/inflate/setup-cors.js.map +1 -0
  146. package/build/esm/src/inflate/setup-db.d.ts +8 -0
  147. package/build/esm/src/inflate/setup-db.js +99 -0
  148. package/build/esm/src/inflate/setup-db.js.map +1 -0
  149. package/build/esm/src/inflate/setup-http.d.ts +37 -0
  150. package/build/esm/src/inflate/setup-http.js +543 -0
  151. package/build/esm/src/inflate/setup-http.js.map +1 -0
  152. package/build/esm/src/inflate/setup-log.d.ts +7 -0
  153. package/build/esm/src/inflate/setup-log.js +37 -0
  154. package/build/esm/src/inflate/setup-log.js.map +1 -0
  155. package/build/esm/src/inflate/setup-server-config.d.ts +7 -0
  156. package/build/esm/src/inflate/setup-server-config.js +37 -0
  157. package/build/esm/src/inflate/setup-server-config.js.map +1 -0
  158. package/build/esm/src/inflate/setup-test.d.ts +2 -0
  159. package/build/esm/src/inflate/setup-test.js +22 -0
  160. package/build/esm/src/inflate/setup-test.js.map +1 -0
  161. package/build/esm/src/inflate/setup-ws.d.ts +4 -0
  162. package/build/esm/src/inflate/setup-ws.js +46 -0
  163. package/build/esm/src/inflate/setup-ws.js.map +1 -0
  164. package/build/esm/src/inflate/utils/sea-utils.d.ts +2 -0
  165. package/build/esm/src/inflate/utils/sea-utils.js +13 -0
  166. package/build/esm/src/inflate/utils/sea-utils.js.map +1 -0
  167. package/build/esm/src/lib.d.ts +13 -0
  168. package/build/esm/src/lib.js +17 -0
  169. package/build/esm/src/lib.js.map +1 -0
  170. package/build/esm/src/main.d.ts +2 -0
  171. package/build/esm/src/main.js +92 -0
  172. package/build/esm/src/main.js.map +1 -0
  173. package/build/esm/src/services/app.d.ts +88 -0
  174. package/build/esm/src/services/app.js +619 -0
  175. package/build/esm/src/services/app.js.map +1 -0
  176. package/build/esm/src/services/editor.d.ts +3 -0
  177. package/build/esm/src/services/editor.js +61 -0
  178. package/build/esm/src/services/editor.js.map +1 -0
  179. package/build/esm/src/services/globals.d.ts +3 -0
  180. package/build/esm/src/services/globals.js +139 -0
  181. package/build/esm/src/services/globals.js.map +1 -0
  182. package/build/esm/src/services/hot-reload.d.ts +1 -0
  183. package/build/esm/src/services/hot-reload.js +45 -0
  184. package/build/esm/src/services/hot-reload.js.map +1 -0
  185. package/build/esm/src/services/migrations.d.ts +4 -0
  186. package/build/esm/src/services/migrations.js +61 -0
  187. package/build/esm/src/services/migrations.js.map +1 -0
  188. package/build/esm/src/services/utils/cache.d.ts +19 -0
  189. package/build/esm/src/services/utils/cache.js +85 -0
  190. package/build/esm/src/services/utils/cache.js.map +1 -0
  191. package/build/esm/src/services/utils/cluster-cache.d.ts +20 -0
  192. package/build/esm/src/services/utils/cluster-cache.js +211 -0
  193. package/build/esm/src/services/utils/cluster-cache.js.map +1 -0
  194. package/build/esm/src/services/utils/cluster-ws.d.ts +24 -0
  195. package/build/esm/src/services/utils/cluster-ws.js +176 -0
  196. package/build/esm/src/services/utils/cluster-ws.js.map +1 -0
  197. package/build/esm/src/services/utils/db-manager.d.ts +20 -0
  198. package/build/esm/src/services/utils/db-manager.js +59 -0
  199. package/build/esm/src/services/utils/db-manager.js.map +1 -0
  200. package/build/esm/src/services/utils/get-route.d.ts +9 -0
  201. package/build/esm/src/services/utils/get-route.js +58 -0
  202. package/build/esm/src/services/utils/get-route.js.map +1 -0
  203. package/build/esm/src/services/utils/log.d.ts +17 -0
  204. package/build/esm/src/services/utils/log.js +74 -0
  205. package/build/esm/src/services/utils/log.js.map +1 -0
  206. package/build/esm/src/services/utils/server-interface.d.ts +41 -0
  207. package/build/esm/src/services/utils/server-interface.js +74 -0
  208. package/build/esm/src/services/utils/server-interface.js.map +1 -0
  209. package/build/esm/src/services/utils/websocketmanager.d.ts +23 -0
  210. package/build/esm/src/services/utils/websocketmanager.js +128 -0
  211. package/build/esm/src/services/utils/websocketmanager.js.map +1 -0
  212. package/build/esm/src/types.d.ts +166 -0
  213. package/build/esm/src/types.js +2 -0
  214. package/build/esm/src/types.js.map +1 -0
  215. package/build/jsx.dom.js +1585 -0
  216. package/build/lib.cjs +14009 -0
  217. package/build/postject.base64.cjs +1 -0
  218. package/editor/auth.ts +51 -0
  219. package/editor/common/admin-interface.ts +84 -0
  220. package/editor/common/constants.server.ts +5 -0
  221. package/editor/common/constants.ts +21 -0
  222. package/editor/common/editor-index.tsx +17 -0
  223. package/editor/common/html-encode.ts +14 -0
  224. package/editor/common/log-socket.tsx +82 -0
  225. package/editor/common/templates.ts +448 -0
  226. package/editor/components/api-preview.tsx +116 -0
  227. package/editor/components/editor.tsx +483 -0
  228. package/editor/components/file-browser.tsx +295 -0
  229. package/editor/components/file-editor-toolbar.tsx +187 -0
  230. package/editor/components/file-editor.tsx +122 -0
  231. package/editor/components/filter-query.tsx +22 -0
  232. package/editor/components/highlight-text-area.tsx +159 -0
  233. package/editor/components/log-viewer.tsx +110 -0
  234. package/editor/components/new-file.tsx +169 -0
  235. package/editor/components/scroll-query.tsx +22 -0
  236. package/editor/components/start-page.tsx +49 -0
  237. package/editor/http/admin/editor/api/fs/delete.api.tsx +32 -0
  238. package/editor/http/admin/editor/api/fs/read.api.tsx +55 -0
  239. package/editor/http/admin/editor/api/fs/rename.api.tsx +41 -0
  240. package/editor/http/admin/editor/api/fs/scan.api.tsx +181 -0
  241. package/editor/http/admin/editor/api/fs/write.api.tsx +41 -0
  242. package/editor/http/admin/editor/api/server/reload.api.ts +52 -0
  243. package/editor/http/admin/editor/api/server/restart.api.tsx +52 -0
  244. package/editor/http/admin/editor/editor.tsx +8 -0
  245. package/editor/http/admin/editor/font.ttf +0 -0
  246. package/editor/http/admin/editor/index.api.tsx +39 -0
  247. package/editor/http/admin/editor/style.css +620 -0
  248. package/editor/server.ts +57 -0
  249. package/editor/static/android-chrome-192x192.png +0 -0
  250. package/editor/static/android-chrome-512x512.png +0 -0
  251. package/editor/static/apple-touch-icon.png +0 -0
  252. package/editor/static/editor.bundle.in.mjs +20 -0
  253. package/editor/static/favicon-16x16.png +0 -0
  254. package/editor/static/favicon-32x32.png +0 -0
  255. package/editor/static/favicon.ico +0 -0
  256. package/editor/static/site.webmanifest +19 -0
  257. package/editor/ws.ts +15 -0
  258. package/package.json +43 -24
  259. package/package.json--OLD +36 -0
  260. package/sea/app.sh +33 -0
  261. package/sea/base64.js +3 -0
  262. package/sea/basic-compile.base64.sh +1 -0
  263. package/sea/basic-compile.sh +73 -0
  264. package/sea/basic-config.json +9 -0
  265. package/sea/compile.sh +124 -0
  266. package/sea/copy-types.sh +46 -0
  267. package/sea/editor-assets/editor.bundle.in.mjs +19 -0
  268. package/sea/esbuild.sh +31 -0
  269. package/sea/generate-global-types-asset-json.js +34 -0
  270. package/sea/install-esbuild.sh +53 -0
  271. package/sea/install-nodejs.sh +49 -0
  272. package/sea/main.sh +34 -0
  273. package/sea/node.sh +33 -0
  274. package/sea/node.version.tag +1 -0
  275. package/sea/precompile.sh +7 -0
  276. package/sea/release-tar.sh +5 -0
  277. package/sea/sign-add.sh +22 -0
  278. package/sea/sign-remove.sh +22 -0
  279. package/sea/tsc.sh +1 -0
  280. package/sea/types.json +1 -0
  281. package/src/cluster.ts +16 -0
  282. package/src/common/arguments.ts +366 -0
  283. package/src/common/assets.ts +124 -0
  284. package/src/common/checksum.ts +58 -0
  285. package/src/common/constants.ts +18 -0
  286. package/src/common/content-type.ts +84 -0
  287. package/src/common/esbuild.ts +94 -0
  288. package/src/common/exit.ts +91 -0
  289. package/src/common/fs.ts +17 -0
  290. package/src/common/help.ts +46 -0
  291. package/src/common/jsx.ts +414 -0
  292. package/src/common/paths.ts +117 -0
  293. package/src/common/watch.ts +80 -0
  294. package/src/inflate/inflate-sea.ts +193 -0
  295. package/src/inflate/inflate.ts +96 -0
  296. package/src/inflate/md.ts +20 -0
  297. package/src/inflate/setup-auth.ts +40 -0
  298. package/src/inflate/setup-cors.ts +40 -0
  299. package/src/inflate/setup-db.ts +113 -0
  300. package/src/inflate/setup-http.ts +643 -0
  301. package/src/inflate/setup-log.ts +44 -0
  302. package/src/inflate/setup-server-config.ts +47 -0
  303. package/src/inflate/setup-test.ts +23 -0
  304. package/src/inflate/setup-ws.ts +48 -0
  305. package/src/inflate/utils/sea-utils.ts +14 -0
  306. package/src/lib.ts +19 -0
  307. package/src/main.ts +87 -0
  308. package/src/services/app.ts +718 -0
  309. package/src/services/editor.tsx +93 -0
  310. package/src/services/globals.ts +143 -0
  311. package/src/services/hot-reload.ts +46 -0
  312. package/src/services/migrations.ts +66 -0
  313. package/src/services/utils/cache.ts +88 -0
  314. package/src/services/utils/cluster-cache.ts +225 -0
  315. package/src/services/utils/cluster-ws.ts +192 -0
  316. package/src/services/utils/db-manager.ts +79 -0
  317. package/src/services/utils/get-route.ts +70 -0
  318. package/src/services/utils/log.ts +91 -0
  319. package/src/services/utils/server-interface.ts +166 -0
  320. package/src/services/utils/websocketmanager.ts +139 -0
  321. package/src/types/@esbuild.d.ts +1 -0
  322. package/src/types/@miqro/core.d.ts +2 -0
  323. package/src/types/@miqro/jsx.d.ts +2 -0
  324. package/src/types/@miqro/parser.d.ts +2 -0
  325. package/src/types/@miqro/query.d.ts +2 -0
  326. package/src/types/@miqro/request.d.ts +2 -0
  327. package/src/types/@miqro/test.d.ts +2 -0
  328. package/src/types/@miqro.d.ts +1 -0
  329. package/src/types/@types.d.ts +1 -0
  330. package/src/types/browser.globals.d.ts +9 -0
  331. package/src/types/globals.d.ts +2 -0
  332. package/src/types/jsx.globals.d.ts +37 -0
  333. package/src/types/miqro.d.ts +109 -0
  334. package/src/types/postject.d.ts +1 -0
  335. package/src/types/server.globals.d.ts +72 -0
  336. package/src/types.ts +199 -0
  337. package/tsconfig.json +35 -0
  338. package/build/cli.js +0 -4
  339. package/build/cmd-map.d.ts +0 -90
  340. package/build/cmd-map.js +0 -460
  341. package/build/index.js +0 -2
  342. package/build/utils/doc/json.d.ts +0 -7
  343. package/build/utils/doc/json.js +0 -12
  344. package/build/utils/doc/md.d.ts +0 -19
  345. package/build/utils/doc/md.js +0 -173
  346. package/build/utils/exec.d.ts +0 -32
  347. package/build/utils/exec.js +0 -102
  348. package/build/utils/templates.d.ts +0 -33
  349. package/build/utils/templates.js +0 -302
  350. package/build/utils/watch.d.ts +0 -1
  351. package/build/utils/watch.js +0 -35
  352. /package/build/{index.d.ts → esm/editor/http/admin/editor/editor.d.ts} +0 -0
  353. /package/build/{cli.d.ts → esm/src/cluster.d.ts} +0 -0
@@ -0,0 +1,211 @@
1
+ const ClusterCacheType = "$$$$$$$$$$$ClusterCacheType$$$$$$$$$$$";
2
+ export class ClusterCache {
3
+ name;
4
+ logger;
5
+ localCache = new Map();
6
+ //private logger: Logger;
7
+ listener;
8
+ constructor(name, logger) {
9
+ this.name = name;
10
+ this.logger = logger;
11
+ this.listener = async (data) => {
12
+ try {
13
+ const msg = data;
14
+ //console.dir(msg);
15
+ if (msg &&
16
+ msg.key &&
17
+ msg.action &&
18
+ msg.type === ClusterCacheType &&
19
+ msg.fromPID !== process.pid,
20
+ (msg.action === "set_add" || msg.action === "set" || msg.action === "unset" || msg.action === "set_delete" || msg.action === "array_push") &&
21
+ msg.target === this.name) {
22
+ this.logger?.debug("remote cluster cache message from [%s] [%s] [%s] [%s]", msg.fromPID, msg.target, msg.action, msg.key);
23
+ switch (msg.action) {
24
+ case "unset":
25
+ this.localCache.delete(msg.key);
26
+ break;
27
+ case "set":
28
+ this.localCache.set(msg.key, msg.value);
29
+ break;
30
+ case "set_add": {
31
+ //this.localCache.set(msg.key, msg.value);
32
+ const list = this.localCache.has(msg.key) ? this.localCache.get(msg.key) : new Set();
33
+ if (!(list instanceof Set)) {
34
+ throw new Error("cannot apply push on non array");
35
+ }
36
+ if (list.has(msg.value)) {
37
+ list.add(msg.value);
38
+ }
39
+ this.localCache.set(msg.key, list);
40
+ break;
41
+ }
42
+ case "set_delete": {
43
+ //this.localCache.set(msg.key, msg.value);
44
+ const list = this.localCache.has(msg.key) ? this.localCache.get(msg.key) : new Set();
45
+ if (!(list instanceof Set)) {
46
+ throw new Error("cannot apply push on non array");
47
+ }
48
+ if (list.has(msg.value)) {
49
+ list.delete(msg.value);
50
+ }
51
+ this.localCache.set(msg.key, list);
52
+ break;
53
+ }
54
+ case "array_push": {
55
+ //this.localCache.set(msg.key, msg.value);
56
+ const list = this.localCache.has(msg.key) ? this.localCache.get(msg.key) : [];
57
+ if (!(list instanceof Array)) {
58
+ throw new Error("cannot apply push on non array");
59
+ }
60
+ list.push(msg.value);
61
+ this.localCache.set(msg.key, list);
62
+ break;
63
+ }
64
+ }
65
+ }
66
+ }
67
+ catch (e) {
68
+ this.logger?.error(e);
69
+ }
70
+ };
71
+ if (process.send) {
72
+ process.on("message", this.listener);
73
+ }
74
+ }
75
+ dispose() {
76
+ process.removeListener("message", this.listener);
77
+ }
78
+ get(key) {
79
+ this.logger?.trace("get(%s)", key);
80
+ return this.localCache.get(key);
81
+ }
82
+ set(key, value) {
83
+ this.localCache.set(key, value);
84
+ this.logger?.trace("set(%s, ...)", key);
85
+ if (process.send) {
86
+ setTimeout(() => {
87
+ process.send({
88
+ type: ClusterCacheType,
89
+ action: "set",
90
+ target: this.name,
91
+ fromPID: process.pid,
92
+ key,
93
+ value
94
+ });
95
+ }, 10);
96
+ }
97
+ }
98
+ unset(key) {
99
+ this.logger?.trace("unset(%s)", key);
100
+ this.localCache.delete(key);
101
+ if (process.send) {
102
+ setTimeout(() => {
103
+ process.send({
104
+ type: ClusterCacheType,
105
+ target: this.name,
106
+ action: "unset",
107
+ fromPID: process.pid,
108
+ key
109
+ });
110
+ }, 10);
111
+ }
112
+ }
113
+ has(key) {
114
+ this.logger?.trace("has(%s)", key);
115
+ return this.localCache.has(key);
116
+ }
117
+ set_add(key, value) {
118
+ this.logger?.trace("push(%s)", key);
119
+ const list = this.localCache.has(key) ? this.localCache.get(key) : new Set();
120
+ if (!(list instanceof Set)) {
121
+ throw new Error("cannot apply on non Set");
122
+ }
123
+ if (list.has(value)) {
124
+ list.add(value);
125
+ }
126
+ this.localCache.set(key, list);
127
+ if (process.send) {
128
+ setTimeout(() => {
129
+ process.send({
130
+ type: ClusterCacheType,
131
+ target: this.name,
132
+ action: "set_add",
133
+ fromPID: process.pid,
134
+ key,
135
+ value
136
+ });
137
+ }, 10);
138
+ }
139
+ }
140
+ set_delete(key, value) {
141
+ this.logger?.trace("delete(%s)", key);
142
+ const list = this.localCache.has(key) ? this.localCache.get(key) : new Set();
143
+ if (!(list instanceof Set)) {
144
+ throw new Error("cannot apply on non Set");
145
+ }
146
+ if (list.has(value)) {
147
+ list.delete(value);
148
+ }
149
+ this.localCache.set(key, list);
150
+ if (process.send) {
151
+ setTimeout(() => {
152
+ process.send({
153
+ type: ClusterCacheType,
154
+ target: this.name,
155
+ action: "set_delete",
156
+ fromPID: process.pid,
157
+ key,
158
+ value
159
+ });
160
+ }, 10);
161
+ }
162
+ }
163
+ set_has(key, value) {
164
+ this.logger?.trace("set_has(%s)", key);
165
+ const list = this.localCache.has(key) ? this.localCache.get(key) : new Set();
166
+ if (!(list instanceof Set)) {
167
+ throw new Error("cannot apply on non Set");
168
+ }
169
+ const ret = list.has(value);
170
+ this.localCache.set(key, list);
171
+ return ret;
172
+ }
173
+ set_clear(key) {
174
+ this.logger?.trace("set_clear(%s)", key);
175
+ const list = this.localCache.has(key) ? this.localCache.get(key) : new Set();
176
+ if (!(list instanceof Set)) {
177
+ throw new Error("cannot apply on non Set");
178
+ }
179
+ list.clear();
180
+ this.localCache.set(key, list);
181
+ }
182
+ array_push(key, value) {
183
+ this.logger?.trace("array_push(%s)", key);
184
+ const list = this.localCache.has(key) ? this.localCache.get(key) : [];
185
+ if (!(list instanceof Array)) {
186
+ throw new Error("cannot apply on non Array");
187
+ }
188
+ list.push(value);
189
+ this.localCache.set(key, list);
190
+ if (process.send) {
191
+ setTimeout(() => {
192
+ process.send({
193
+ type: ClusterCacheType,
194
+ target: this.name,
195
+ action: "array_push",
196
+ fromPID: process.pid,
197
+ key,
198
+ value
199
+ });
200
+ }, 10);
201
+ }
202
+ }
203
+ array_clear(key) {
204
+ this.logger?.trace("array_clear(%s)", key);
205
+ if (this.localCache.has(key) && !(this.localCache.get(key) instanceof Array)) {
206
+ throw new Error("cannot apply on non Array");
207
+ }
208
+ this.localCache.set(key, []);
209
+ }
210
+ }
211
+ //# sourceMappingURL=cluster-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster-cache.js","sourceRoot":"","sources":["../../../../../src/services/utils/cluster-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { WebSocketServer, WebSocketServerOptions } from "@miqro/core";
2
+ import { Serializable } from "node:child_process";
3
+ declare const ClusterWebSocketServer2MessageType = "$$$$ClusterWebSocketServer2Message$$$$$";
4
+ export interface ClusterWebSocketServer2Message {
5
+ type: typeof ClusterWebSocketServer2MessageType;
6
+ target: string;
7
+ action: "connection" | "disconnection" | "sendMessage" | "error" | "sync";
8
+ clientUUID?: string;
9
+ errorMessage?: string;
10
+ fromUUID?: string;
11
+ fromPID: string;
12
+ payload?: Serializable;
13
+ }
14
+ export declare class ClusterWebSocketServer2 extends WebSocketServer {
15
+ protected name: string;
16
+ remoteClients: Set<string>;
17
+ listener: (data: any) => Promise<void>;
18
+ constructor(name: string, options: WebSocketServerOptions);
19
+ dispose(): void;
20
+ broadcast(payload: string, fromUUID?: string): Promise<void>;
21
+ writeTo(clientUUID: string, payload: string): Promise<void>;
22
+ isUUIDValid(uuid: string): boolean;
23
+ }
24
+ export {};
@@ -0,0 +1,176 @@
1
+ import { WebSocketServer } from "@miqro/core";
2
+ const ClusterWebSocketServer2MessageType = "$$$$ClusterWebSocketServer2Message$$$$$";
3
+ export class ClusterWebSocketServer2 extends WebSocketServer {
4
+ name;
5
+ remoteClients = new Set();
6
+ listener;
7
+ constructor(name, options) {
8
+ super({
9
+ ...options,
10
+ validate: (req) => {
11
+ if (this.options.maxConnections !== undefined &&
12
+ this.clients.size + this.remoteClients.size >= this.options.maxConnections) {
13
+ return false;
14
+ }
15
+ else {
16
+ return options.validate ? options.validate(req) : true;
17
+ }
18
+ },
19
+ onError: (req, error) => {
20
+ if (process.send) {
21
+ process.send({
22
+ type: ClusterWebSocketServer2MessageType,
23
+ action: "error",
24
+ target: this.name,
25
+ clientUUID: req.uuid,
26
+ fromPID: String(process.pid),
27
+ errorMessage: error.message
28
+ });
29
+ }
30
+ if (options.onError) {
31
+ options.onError(req, error);
32
+ }
33
+ },
34
+ onConnection: (req) => {
35
+ if (process.send) {
36
+ process.send({
37
+ type: ClusterWebSocketServer2MessageType,
38
+ action: "connection",
39
+ target: this.name,
40
+ fromPID: String(process.pid),
41
+ clientUUID: req.uuid
42
+ });
43
+ }
44
+ if (options.onConnection) {
45
+ options.onConnection(req);
46
+ }
47
+ },
48
+ onDisconnect: (req) => {
49
+ if (process.send) {
50
+ process.send({
51
+ type: ClusterWebSocketServer2MessageType,
52
+ action: "disconnection",
53
+ target: this.name,
54
+ fromPID: String(process.pid),
55
+ clientUUID: req.uuid
56
+ });
57
+ }
58
+ if (options.onDisconnect) {
59
+ options.onDisconnect(req);
60
+ }
61
+ }
62
+ });
63
+ this.name = name;
64
+ this.listener = async (data) => {
65
+ try {
66
+ const msg = data;
67
+ if (msg &&
68
+ msg.type === ClusterWebSocketServer2MessageType &&
69
+ msg.target === this.name &&
70
+ msg.action) {
71
+ // receive message from cluster workers
72
+ //console.dir(data);
73
+ //this.logger?.debug("remote web socket server message from [%s] [%s] [%s]", msg.fromPID, msg.target, msg.action);
74
+ switch (msg.action) {
75
+ case "sync":
76
+ if (process.send) {
77
+ for (const clientUUID of this.clients.keys()) {
78
+ process.send({
79
+ type: ClusterWebSocketServer2MessageType,
80
+ action: "connection",
81
+ target: this.name,
82
+ fromPID: String(process.pid),
83
+ clientUUID
84
+ });
85
+ }
86
+ }
87
+ break;
88
+ case "connection":
89
+ if (!msg.clientUUID) {
90
+ throw new Error(`action [${msg.action}] without clientUUID`);
91
+ }
92
+ if (!this.remoteClients.has(msg.clientUUID)) {
93
+ this.remoteClients.add(msg.clientUUID);
94
+ }
95
+ break;
96
+ case "disconnection":
97
+ if (!msg.clientUUID) {
98
+ throw new Error(`action [${msg.action}] without clientUUID`);
99
+ }
100
+ if (this.remoteClients.has(msg.clientUUID)) {
101
+ this.remoteClients.delete(msg.clientUUID);
102
+ }
103
+ break;
104
+ case "sendMessage": {
105
+ const payload = String(msg.payload);
106
+ if (!msg.clientUUID) {
107
+ // broadcast to local clients
108
+ await super.broadcast(payload, msg.fromUUID);
109
+ }
110
+ else if (this.isConnected(msg.clientUUID)) {
111
+ // write if local client
112
+ await super.writeTo(msg.clientUUID, payload);
113
+ }
114
+ break;
115
+ }
116
+ default:
117
+ throw new Error(`action [${msg.action}] not supported`);
118
+ }
119
+ }
120
+ }
121
+ catch (e) {
122
+ console.error(e);
123
+ }
124
+ };
125
+ if (process.send) {
126
+ process.on("message", this.listener);
127
+ process.send({
128
+ type: ClusterWebSocketServer2MessageType,
129
+ action: "sync",
130
+ fromPID: String(process.pid),
131
+ target: this.name
132
+ });
133
+ }
134
+ }
135
+ dispose() {
136
+ process.removeListener("message", this.listener);
137
+ }
138
+ async broadcast(payload, fromUUID) {
139
+ if (process.send) {
140
+ process.send({
141
+ type: ClusterWebSocketServer2MessageType,
142
+ action: "sendMessage",
143
+ payload,
144
+ target: this.name,
145
+ fromPID: String(process.pid),
146
+ fromUUID
147
+ });
148
+ }
149
+ return super.broadcast(payload, fromUUID);
150
+ }
151
+ async writeTo(clientUUID, payload) {
152
+ if (this.remoteClients.has(clientUUID)) {
153
+ // write to remote client via IPC
154
+ if (process.send) {
155
+ process.send({
156
+ type: ClusterWebSocketServer2MessageType,
157
+ action: "sendMessage",
158
+ clientUUID,
159
+ target: this.name,
160
+ fromPID: String(process.pid),
161
+ payload
162
+ });
163
+ return;
164
+ }
165
+ }
166
+ // due to the implementation of isUUIDValid depends on this.remoteClients to be sync there can be two clients registered with the same UUID in the cluster
167
+ if (this.clients.has(clientUUID)) {
168
+ // write to local client
169
+ return super.writeTo(clientUUID, payload);
170
+ }
171
+ }
172
+ isUUIDValid(uuid) {
173
+ return !this.clients.has(uuid) && !this.remoteClients.has(uuid);
174
+ }
175
+ }
176
+ //# sourceMappingURL=cluster-ws.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster-ws.js","sourceRoot":"","sources":["../../../../../src/services/utils/cluster-ws.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Database } from "@miqro/query";
2
+ import { DBConfig } from "../../types.js";
3
+ import { LogProvider } from "./log.js";
4
+ import { Logger } from "@miqro/core";
5
+ export declare class DBManager {
6
+ private map;
7
+ options: {
8
+ loggerProvider?: LogProvider;
9
+ logger?: Logger;
10
+ };
11
+ constructor(options?: {
12
+ loggerProvider?: LogProvider;
13
+ logger?: Logger;
14
+ });
15
+ setupDB(config: DBConfig): Promise<Database>;
16
+ closeAll(): Promise<void>;
17
+ deleteAll(): Promise<void>;
18
+ getDB(name: string): Database | null;
19
+ setDB(name: string, db: Database): void;
20
+ }
@@ -0,0 +1,59 @@
1
+ import cluster from "node:cluster";
2
+ import { Database } from "@miqro/query";
3
+ export class DBManager {
4
+ map = new Map();
5
+ options;
6
+ constructor(options) {
7
+ this.options = options ? options : {};
8
+ }
9
+ async setupDB(config) {
10
+ if (this.getDB(config.name)) {
11
+ throw new Error("cannot override db");
12
+ }
13
+ if (!config.disabled) {
14
+ const DB_IDENTIFIER = cluster.isPrimary ? "DATABASE" : process.env["CLUSTER_NODE_NUMBER"] ? `WORKER_${process.env["CLUSTER_NODE_NUMBER"]}_DATABASE` : "WORKER_DATABASE";
15
+ this.options?.logger?.debug("setting up db connection [%s]", config.name);
16
+ this.options?.logger?.trace("creating db connection [%s]", config.name);
17
+ const db = new Database({
18
+ dialect: config.dialect ? config.dialect : "node:sqlite",
19
+ storage: config.storage ? config.storage : "./db.sqlite3",
20
+ connectionString: config.url,
21
+ logger: this.options?.loggerProvider?.getLogger(`${DB_IDENTIFIER}_${config.name}`)
22
+ });
23
+ this.options?.logger?.trace("connecting db connection [%s]", config.name);
24
+ await db.connect();
25
+ this.options?.logger?.trace("db connection [%s] connected", config.name);
26
+ /*if (config.name && config.name !== name) {
27
+ this.setDB(config.name, db);
28
+ }*/
29
+ this.setDB(config.name, db);
30
+ return db;
31
+ }
32
+ }
33
+ async closeAll() {
34
+ this.options?.logger?.debug("closing all db connections");
35
+ for (const name of this.map.keys()) {
36
+ const db = this.map.get(name);
37
+ if (db && db.status === "connected") {
38
+ this.options?.logger?.debug("disconnecting db connection [%s]", name);
39
+ await db.disconnect();
40
+ }
41
+ }
42
+ }
43
+ async deleteAll() {
44
+ await this.closeAll();
45
+ this.options?.logger?.debug("clear all db connections");
46
+ this.map.clear();
47
+ }
48
+ getDB(name) {
49
+ const db = this.map.get(name);
50
+ return db ? db : null;
51
+ }
52
+ setDB(name, db) {
53
+ if (this.getDB(name)) {
54
+ throw new Error("cannot override db connection [" + name + "]");
55
+ }
56
+ this.map.set(name, db);
57
+ }
58
+ }
59
+ //# sourceMappingURL=db-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-manager.js","sourceRoot":"","sources":["../../../../../src/services/utils/db-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { APIRoute, RouterHandlerOptions } from "@miqro/core";
2
+ export interface RouterUseCall {
3
+ path?: string;
4
+ method?: string;
5
+ inflatePath: string;
6
+ defaultInflatePath: string;
7
+ options?: RouterHandlerOptions;
8
+ }
9
+ export declare function getRoutes(prePath: string, defaultPath: string, apiOptions?: Partial<APIRoute>): RouterUseCall[];
@@ -0,0 +1,58 @@
1
+ import { normalizePath } from "@miqro/core";
2
+ import { join } from "node:path";
3
+ export function getRoutes(prePath, defaultPath, apiOptions) {
4
+ const ret = [];
5
+ const path = apiOptions && apiOptions.path ? apiOptions.path : defaultPath;
6
+ const defaultInflatePath = join(prePath, defaultPath);
7
+ const method = apiOptions && apiOptions.method ? apiOptions.method : "GET";
8
+ const methods = method instanceof Array ? method : [method];
9
+ const paths = path instanceof Array ? path : [path];
10
+ if (apiOptions && apiOptions.path === null) {
11
+ for (const m of methods) {
12
+ ret.push({
13
+ options: {
14
+ apiName: apiOptions?.apiName,
15
+ description: apiOptions?.description,
16
+ identifier: apiOptions?.identifier,
17
+ middleware: apiOptions?.middleware,
18
+ name: apiOptions?.name,
19
+ parser: apiOptions?.parser,
20
+ policy: apiOptions?.policy,
21
+ request: apiOptions?.request,
22
+ response: apiOptions?.response,
23
+ session: apiOptions?.session
24
+ },
25
+ inflatePath: defaultInflatePath,
26
+ defaultInflatePath,
27
+ method: m.toLocaleLowerCase() !== "use" ? m.toUpperCase() : undefined,
28
+ path: undefined
29
+ });
30
+ }
31
+ }
32
+ else {
33
+ for (const p of paths) {
34
+ for (const m of methods) {
35
+ ret.push({
36
+ options: {
37
+ apiName: apiOptions?.apiName,
38
+ description: apiOptions?.description,
39
+ identifier: apiOptions?.identifier,
40
+ middleware: apiOptions?.middleware,
41
+ name: apiOptions?.name,
42
+ parser: apiOptions?.parser,
43
+ policy: apiOptions?.policy,
44
+ request: apiOptions?.request,
45
+ response: apiOptions?.response,
46
+ session: apiOptions?.session
47
+ },
48
+ inflatePath: p !== "/" ? join(prePath, p) : defaultInflatePath,
49
+ defaultInflatePath,
50
+ method: m.toLocaleLowerCase() !== "use" ? m.toUpperCase() : undefined,
51
+ path: normalizePath(join(prePath, p))
52
+ });
53
+ }
54
+ }
55
+ }
56
+ return ret;
57
+ }
58
+ //# sourceMappingURL=get-route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-route.js","sourceRoot":"","sources":["../../../../../src/services/utils/get-route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,aAAa,EAAwB,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAUjC,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,WAAmB,EAAE,UAA8B;IAC5F,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;IAC3E,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAE3E,MAAM,OAAO,GAAG,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEpD,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE;oBACP,OAAO,EAAE,UAAU,EAAE,OAAO;oBAC5B,WAAW,EAAE,UAAU,EAAE,WAAW;oBACpC,UAAU,EAAE,UAAU,EAAE,UAAU;oBAClC,UAAU,EAAE,UAAU,EAAE,UAAU;oBAClC,IAAI,EAAE,UAAU,EAAE,IAAI;oBACtB,MAAM,EAAE,UAAU,EAAE,MAAM;oBAC1B,MAAM,EAAE,UAAU,EAAE,MAAM;oBAC1B,OAAO,EAAE,UAAU,EAAE,OAAO;oBAC5B,QAAQ,EAAE,UAAU,EAAE,QAAQ;oBAC9B,OAAO,EAAE,UAAU,EAAE,OAAO;iBAC7B;gBACD,WAAW,EAAE,kBAAkB;gBAC/B,kBAAkB;gBAClB,MAAM,EAAE,CAAC,CAAC,iBAAiB,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;gBACrE,IAAI,EAAE,SAAS;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC;oBACP,OAAO,EAAE;wBACP,OAAO,EAAE,UAAU,EAAE,OAAO;wBAC5B,WAAW,EAAE,UAAU,EAAE,WAAW;wBACpC,UAAU,EAAE,UAAU,EAAE,UAAU;wBAClC,UAAU,EAAE,UAAU,EAAE,UAAU;wBAClC,IAAI,EAAE,UAAU,EAAE,IAAI;wBACtB,MAAM,EAAE,UAAU,EAAE,MAAM;wBAC1B,MAAM,EAAE,UAAU,EAAE,MAAM;wBAC1B,OAAO,EAAE,UAAU,EAAE,OAAO;wBAC5B,QAAQ,EAAE,UAAU,EAAE,QAAQ;wBAC9B,OAAO,EAAE,UAAU,EAAE,OAAO;qBAC7B;oBACD,WAAW,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB;oBAC9D,kBAAkB;oBAClB,MAAM,EAAE,CAAC,CAAC,iBAAiB,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;oBACrE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;iBACtC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAID,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { Logger, LoggerTransport, MinimalLogger, Request, WriteArgs } from "@miqro/core";
2
+ export interface LogProviderOptions {
3
+ name?: string;
4
+ transports: LoggerTransport[];
5
+ formatter: (args: WriteArgs) => string;
6
+ }
7
+ export declare const DEFAULT_FORMATTER: ({ identifier, level, message, optionalParams }: WriteArgs) => string;
8
+ export declare class LogProvider {
9
+ options: LogProviderOptions;
10
+ constructor(options?: LogProviderOptions);
11
+ requestLoggerFactory(uuid: string, req: Request): MinimalLogger;
12
+ getLogger(identifier: string, options?: {
13
+ level?: any;
14
+ transports?: any[];
15
+ formatter?: any;
16
+ }): Logger;
17
+ }