miqro 6.2.13 → 7.0.1

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 (217) hide show
  1. package/README.md +9 -17
  2. package/build/editor.bundle.js +11601 -10129
  3. package/build/esm/src/bin/types.js +10 -5
  4. package/build/esm/src/cluster.js +1 -1
  5. package/build/esm/src/common/arguments.d.ts +2 -1
  6. package/build/esm/src/common/arguments.js +42 -18
  7. package/build/esm/src/common/assets.d.ts +1 -1
  8. package/build/esm/src/common/assets.js +34 -13
  9. package/build/esm/src/common/esbuild.d.ts +4 -1
  10. package/build/esm/src/common/esbuild.js +31 -26
  11. package/build/esm/src/common/exit.js +4 -4
  12. package/build/esm/src/common/help.d.ts +1 -1
  13. package/build/esm/src/common/help.js +2 -2
  14. package/build/esm/src/common/jsx.d.ts +2 -3
  15. package/build/esm/src/common/jsx.js +70 -75
  16. package/build/esm/src/common/paths.d.ts +0 -1
  17. package/build/esm/src/common/paths.js +3 -3
  18. package/build/esm/src/common/watch.d.ts +0 -1
  19. package/build/esm/src/common/watch.js +4 -1
  20. package/build/esm/src/inflate/inflate-sea.js +35 -24
  21. package/build/esm/src/inflate/inflate.js +4 -4
  22. package/build/esm/src/inflate/setup-auth.js +1 -1
  23. package/build/esm/src/inflate/setup-cors.js +1 -1
  24. package/build/esm/src/inflate/setup-db.js +2 -2
  25. package/build/esm/src/inflate/setup-error.js +1 -1
  26. package/build/esm/src/inflate/setup-http.js +16 -16
  27. package/build/esm/src/inflate/setup-log.js +1 -1
  28. package/build/esm/src/inflate/setup-middleware.js +1 -1
  29. package/build/esm/src/inflate/setup-server-config.js +1 -1
  30. package/build/esm/src/inflate/setup-ws.js +1 -1
  31. package/build/esm/src/inflate/setup.doc.d.ts +2 -2
  32. package/build/esm/src/inflate/setup.doc.js +23 -2
  33. package/build/esm/src/inflate/utils/sea-utils.js +2 -2
  34. package/build/esm/src/lib.d.ts +10 -1
  35. package/build/esm/src/lib.js +16 -1
  36. package/build/esm/src/main.js +2 -1
  37. package/build/esm/src/services/app.d.ts +1 -0
  38. package/build/esm/src/services/app.js +4 -5
  39. package/build/esm/src/services/migrations.js +2 -2
  40. package/build/esm/src/services/utils/jwt.d.ts +2 -0
  41. package/build/esm/src/services/utils/jwt.js +23 -0
  42. package/build/esm/src/services/utils/middleware.d.ts +9 -0
  43. package/build/esm/src/services/utils/middleware.js +9 -0
  44. package/build/esm/src/services/utils/server-interface.js +33 -4
  45. package/build/esm/src/types.d.ts +50 -83
  46. package/build/lib.cjs +15694 -15619
  47. package/package.json +6 -8
  48. package/sea/basic-compile.base64.sh +1 -1
  49. package/sea/basic-compile.sh +1 -1
  50. package/sea/install-nodejs.sh +1 -1
  51. package/sea/node.version.tag +1 -1
  52. package/.eslintrc +0 -15
  53. package/build/esm/editor/auth.d.ts +0 -6
  54. package/build/esm/editor/auth.js +0 -41
  55. package/build/esm/editor/common/admin-interface.d.ts +0 -36
  56. package/build/esm/editor/common/admin-interface.js +0 -44
  57. package/build/esm/editor/common/constants.d.ts +0 -4
  58. package/build/esm/editor/common/constants.js +0 -20
  59. package/build/esm/editor/common/constants.server.d.ts +0 -2
  60. package/build/esm/editor/common/constants.server.js +0 -4
  61. package/build/esm/editor/common/editor-index.d.ts +0 -2
  62. package/build/esm/editor/common/editor-index.js +0 -14
  63. package/build/esm/editor/common/html-encode.d.ts +0 -1
  64. package/build/esm/editor/common/html-encode.js +0 -14
  65. package/build/esm/editor/common/log-socket.d.ts +0 -15
  66. package/build/esm/editor/common/log-socket.js +0 -70
  67. package/build/esm/editor/common/templates.d.ts +0 -11
  68. package/build/esm/editor/common/templates.js +0 -477
  69. package/build/esm/editor/components/api-preview.d.ts +0 -11
  70. package/build/esm/editor/components/api-preview.js +0 -90
  71. package/build/esm/editor/components/editor.d.ts +0 -16
  72. package/build/esm/editor/components/editor.js +0 -365
  73. package/build/esm/editor/components/file-browser.d.ts +0 -37
  74. package/build/esm/editor/components/file-browser.js +0 -126
  75. package/build/esm/editor/components/file-editor-toolbar.d.ts +0 -22
  76. package/build/esm/editor/components/file-editor-toolbar.js +0 -93
  77. package/build/esm/editor/components/file-editor.d.ts +0 -32
  78. package/build/esm/editor/components/file-editor.js +0 -59
  79. package/build/esm/editor/components/filter-query.d.ts +0 -1
  80. package/build/esm/editor/components/filter-query.js +0 -22
  81. package/build/esm/editor/components/highlight-text-area.d.ts +0 -11
  82. package/build/esm/editor/components/highlight-text-area.js +0 -125
  83. package/build/esm/editor/components/log-viewer.d.ts +0 -6
  84. package/build/esm/editor/components/log-viewer.js +0 -69
  85. package/build/esm/editor/components/new-file.d.ts +0 -10
  86. package/build/esm/editor/components/new-file.js +0 -117
  87. package/build/esm/editor/components/scroll-query.d.ts +0 -7
  88. package/build/esm/editor/components/scroll-query.js +0 -21
  89. package/build/esm/editor/components/start-page.d.ts +0 -13
  90. package/build/esm/editor/components/start-page.js +0 -30
  91. package/build/esm/editor/http/admin/editor/api/fs/delete.api.d.ts +0 -3
  92. package/build/esm/editor/http/admin/editor/api/fs/delete.api.js +0 -29
  93. package/build/esm/editor/http/admin/editor/api/fs/read.api.d.ts +0 -5
  94. package/build/esm/editor/http/admin/editor/api/fs/read.api.js +0 -49
  95. package/build/esm/editor/http/admin/editor/api/fs/rename.api.d.ts +0 -4
  96. package/build/esm/editor/http/admin/editor/api/fs/rename.api.js +0 -39
  97. package/build/esm/editor/http/admin/editor/api/fs/scan.api.d.ts +0 -26
  98. package/build/esm/editor/http/admin/editor/api/fs/scan.api.js +0 -149
  99. package/build/esm/editor/http/admin/editor/api/fs/write.api.d.ts +0 -3
  100. package/build/esm/editor/http/admin/editor/api/fs/write.api.js +0 -38
  101. package/build/esm/editor/http/admin/editor/api/server/reload.api.d.ts +0 -10
  102. package/build/esm/editor/http/admin/editor/api/server/reload.api.js +0 -46
  103. package/build/esm/editor/http/admin/editor/api/server/restart.api.d.ts +0 -10
  104. package/build/esm/editor/http/admin/editor/api/server/restart.api.js +0 -45
  105. package/build/esm/editor/http/admin/editor/editor.d.ts +0 -1
  106. package/build/esm/editor/http/admin/editor/editor.js +0 -7
  107. package/build/esm/editor/http/admin/editor/index.api.d.ts +0 -3
  108. package/build/esm/editor/http/admin/editor/index.api.js +0 -21
  109. package/build/esm/editor/server.d.ts +0 -3
  110. package/build/esm/editor/server.js +0 -49
  111. package/build/esm/editor/ws.d.ts +0 -3
  112. package/build/esm/editor/ws.js +0 -11
  113. package/build/esm/src/services/globals.d.ts +0 -3
  114. package/build/esm/src/services/globals.js +0 -182
  115. package/build/jsx.dom.js +0 -1587
  116. package/build/postject.base64.cjs +0 -1
  117. package/editor/auth.ts +0 -51
  118. package/editor/common/admin-interface.ts +0 -84
  119. package/editor/common/constants.server.ts +0 -5
  120. package/editor/common/constants.ts +0 -21
  121. package/editor/common/editor-index.tsx +0 -17
  122. package/editor/common/html-encode.ts +0 -14
  123. package/editor/common/log-socket.tsx +0 -85
  124. package/editor/common/templates.ts +0 -481
  125. package/editor/components/api-preview.tsx +0 -116
  126. package/editor/components/editor.tsx +0 -494
  127. package/editor/components/file-browser.tsx +0 -308
  128. package/editor/components/file-editor-toolbar.tsx +0 -191
  129. package/editor/components/file-editor.tsx +0 -122
  130. package/editor/components/filter-query.tsx +0 -22
  131. package/editor/components/highlight-text-area.tsx +0 -145
  132. package/editor/components/log-viewer.tsx +0 -110
  133. package/editor/components/new-file.tsx +0 -169
  134. package/editor/components/scroll-query.tsx +0 -22
  135. package/editor/components/start-page.tsx +0 -49
  136. package/editor/http/admin/editor/api/fs/delete.api.tsx +0 -32
  137. package/editor/http/admin/editor/api/fs/read.api.tsx +0 -55
  138. package/editor/http/admin/editor/api/fs/rename.api.tsx +0 -41
  139. package/editor/http/admin/editor/api/fs/scan.api.tsx +0 -181
  140. package/editor/http/admin/editor/api/fs/write.api.tsx +0 -41
  141. package/editor/http/admin/editor/api/server/reload.api.ts +0 -53
  142. package/editor/http/admin/editor/api/server/restart.api.tsx +0 -52
  143. package/editor/http/admin/editor/editor.tsx +0 -8
  144. package/editor/http/admin/editor/index.api.tsx +0 -39
  145. package/editor/server.ts +0 -57
  146. package/editor/ws.ts +0 -15
  147. package/sea/types.json +0 -1
  148. package/src/bin/compile.ts +0 -35
  149. package/src/bin/doc-md.ts +0 -210
  150. package/src/bin/generate-doc.ts +0 -64
  151. package/src/bin/test.ts +0 -92
  152. package/src/bin/types.ts +0 -29
  153. package/src/cluster.ts +0 -27
  154. package/src/common/arguments.ts +0 -733
  155. package/src/common/assets.ts +0 -128
  156. package/src/common/checksum.ts +0 -58
  157. package/src/common/constants.ts +0 -18
  158. package/src/common/content-type.ts +0 -84
  159. package/src/common/esbuild.ts +0 -94
  160. package/src/common/exit.ts +0 -91
  161. package/src/common/fs.ts +0 -82
  162. package/src/common/help.ts +0 -60
  163. package/src/common/jsx.ts +0 -547
  164. package/src/common/jwt.ts +0 -85
  165. package/src/common/paths.ts +0 -107
  166. package/src/common/watch.ts +0 -85
  167. package/src/inflate/inflate-sea.ts +0 -226
  168. package/src/inflate/inflate.ts +0 -101
  169. package/src/inflate/md.ts +0 -25
  170. package/src/inflate/setup-auth.ts +0 -41
  171. package/src/inflate/setup-cors.ts +0 -41
  172. package/src/inflate/setup-db.ts +0 -117
  173. package/src/inflate/setup-error.ts +0 -44
  174. package/src/inflate/setup-http.ts +0 -704
  175. package/src/inflate/setup-log.ts +0 -45
  176. package/src/inflate/setup-middleware.ts +0 -47
  177. package/src/inflate/setup-server-config.ts +0 -48
  178. package/src/inflate/setup-test.ts +0 -23
  179. package/src/inflate/setup-ws.ts +0 -50
  180. package/src/inflate/setup.doc.ts +0 -68
  181. package/src/inflate/utils/sea-utils.ts +0 -14
  182. package/src/lib.ts +0 -19
  183. package/src/main.ts +0 -100
  184. package/src/services/app.ts +0 -698
  185. package/src/services/editor.tsx +0 -101
  186. package/src/services/globals.ts +0 -186
  187. package/src/services/hot-reload.ts +0 -51
  188. package/src/services/migrations.ts +0 -68
  189. package/src/services/utils/admin-interface.ts +0 -37
  190. package/src/services/utils/cache.ts +0 -88
  191. package/src/services/utils/cluster-cache.ts +0 -230
  192. package/src/services/utils/cluster-ws.ts +0 -202
  193. package/src/services/utils/db-manager.ts +0 -92
  194. package/src/services/utils/get-route.ts +0 -70
  195. package/src/services/utils/log-transport.ts +0 -81
  196. package/src/services/utils/log.ts +0 -92
  197. package/src/services/utils/server-interface.ts +0 -92
  198. package/src/services/utils/websocketmanager.ts +0 -157
  199. package/src/types/@esbuild.d.ts +0 -1
  200. package/src/types/@miqro/core.d.ts +0 -2
  201. package/src/types/@miqro/jsx.d.ts +0 -2
  202. package/src/types/@miqro/parser.d.ts +0 -2
  203. package/src/types/@miqro/query.d.ts +0 -2
  204. package/src/types/@miqro/request.d.ts +0 -2
  205. package/src/types/@miqro/test.d.ts +0 -2
  206. package/src/types/@miqro.d.ts +0 -1
  207. package/src/types/@types.d.ts +0 -1
  208. package/src/types/browser.globals.d.ts +0 -1
  209. package/src/types/cookie.d.ts +0 -2
  210. package/src/types/globals.d.ts +0 -2
  211. package/src/types/jose.d.ts +0 -2
  212. package/src/types/jsx.globals.d.ts +0 -38
  213. package/src/types/miqro.d.ts +0 -228
  214. package/src/types/postject.d.ts +0 -1
  215. package/src/types/server.globals.d.ts +0 -47
  216. package/src/types.ts +0 -304
  217. package/tsconfig.json +0 -35
@@ -1,101 +0,0 @@
1
- import { APIRoute, Handler, HandlerWithOptions, Router, RouterHandlerOptions, SessionHandler } from "@miqro/core";
2
- import { getAsset } from "../common/assets.js";
3
-
4
- import { BASEEDITOR_PATH } from "../../editor/common/constants.js";
5
- import EDITOR_AUTH from "../../editor/auth.js";
6
-
7
- /*import writeAPI from "../../editor/http/admin/editor/api/fs/write.api.js";
8
- import renameAPI from "../../editor/http/admin/editor/api/fs/rename.api.js";
9
- import deleteAPI from "../../editor/http/admin/editor/api/fs/delete.api.js";
10
- import readAPI from "../../editor/http/admin/editor/api/fs/read.api.js";
11
- import scanAPI from "../../editor/http/admin/editor/api/fs/scan.api.js";
12
- import restartAPI from "../../editor/http/admin/editor/api/server/restart.api.js";
13
- import reloadAPI from "../../editor/http/admin/editor/api/server/reload.api.js";*/
14
-
15
- import { AdminRequest, EditorAdminInterface } from "../../editor/common/admin-interface.js";
16
- import { CONTENT_TYPE_MAP } from "../common/content-type.js";
17
-
18
- export async function createEditorRouter(adminInterface: EditorAdminInterface): Promise<Router> {
19
- const router = new Router();
20
- const innerRouter = new Router();
21
-
22
- innerRouter.use(async (req: AdminRequest, res) => {
23
- res.setHeader("x-uuid", req.uuid);
24
- req.editor = adminInterface;
25
- });
26
-
27
- const editorFont = Buffer.from(getAsset("editor-assets/font.ttf"));
28
- const editorJS = Buffer.from(getAsset("editor-assets/editor.bundle.js")).toString().trim();
29
- const editorCSS = Buffer.from(getAsset("editor-assets/style.css")).toString().trim().split("\n").map(l => l.trim()).filter(l => l).join("");
30
-
31
- const writeAPI = (await import("../../editor/http/admin/editor/api/fs/write.api.js")).default;
32
- const renameAPI = (await import("../../editor/http/admin/editor/api/fs/rename.api.js")).default;
33
- const deleteAPI = (await import("../../editor/http/admin/editor/api/fs/delete.api.js")).default;
34
- const readAPI = (await import("../../editor/http/admin/editor/api/fs/read.api.js")).default;
35
- const scanAPI = (await import("../../editor/http/admin/editor/api/fs/scan.api.js")).default;
36
- const restartAPI = (await import("../../editor/http/admin/editor/api/server/restart.api.js")).default;
37
- const reloadAPI = (await import("../../editor/http/admin/editor/api/server/reload.api.js")).default;
38
-
39
- const authHandler = SessionHandler(EDITOR_AUTH);
40
-
41
- const { EditorIndex } = await import("../../editor/common/editor-index.js");
42
-
43
- innerRouter.use(authHandler);
44
-
45
- innerRouter.post(`/api/fs/write`, getHandler(/*authHandler, */writeAPI));
46
-
47
- innerRouter.post(`/api/fs/rename`, getHandler(/*authHandler, */renameAPI));
48
-
49
- innerRouter.post(`/api/fs/read`, getHandler(/*authHandler, */readAPI));
50
-
51
- innerRouter.post(`/api/fs/delete`, getHandler(/*authHandler, */deleteAPI));
52
-
53
- innerRouter.get(`/api/fs/scan`, getHandler(/*authHandler, */scanAPI));
54
-
55
- innerRouter.post(`/api/server/restart`, getHandler(/*authHandler, */restartAPI));
56
-
57
- innerRouter.post(`/api/server/reload`, getHandler(/*authHandler, */reloadAPI));
58
-
59
- innerRouter.get(`/font.ttf`, async (_req, res) => {
60
- return await res.asyncEnd({
61
- status: 200,
62
- headers: {
63
- ["Content-Type"]: CONTENT_TYPE_MAP[".ttf"]
64
- },
65
- body: editorFont
66
- })
67
- });
68
-
69
- innerRouter.get("/", EditorIndex(editorCSS, editorJS, false));
70
-
71
-
72
-
73
- innerRouter.use(async (req: AdminRequest, res) => {
74
- delete req.editor;
75
- });
76
-
77
- router.use(innerRouter, BASEEDITOR_PATH);
78
-
79
- return router;
80
- }
81
-
82
- function getHandlerOptions(router: APIRoute): RouterHandlerOptions {
83
- return {
84
- description: router.description,
85
- //handler: router,
86
- middleware: router.middleware,
87
- request: router.request,
88
- response: router.response,
89
- };
90
- }
91
-
92
- function getHandler(/*auth: Handler, */router: APIRoute): HandlerWithOptions {
93
- /*const ret = new Router();
94
- ret.use(auth);
95
- ret.use(router.handler, undefined, undefined, getHandlerOptions(router));
96
- return ret;*/
97
- return {
98
- ...getHandlerOptions(router),
99
- handler: router.handler as Handler
100
- }
101
- }
@@ -1,186 +0,0 @@
1
- //@ts-ignore
2
- import { ReadBuffer, URLEncodedParser, JSONParser, TextParser, CORS, SessionHandler } from "@miqro/core";
3
- import cluster from "node:cluster";
4
- import { strictEqual } from "node:assert";
5
- import { HTMLEncode } from "@miqro/jsx-node";
6
- import { createElement as realCreateElement, enableDebugLog, useRuntime, Link, Router, usePathname, Fragment, useEffect, useRef, useState, useQuery, useRefresh, useElement, createContext, useContext, Component, Props } from "@miqro/jsx";
7
-
8
- import { jsx2HTML } from "../common/jsx.js";
9
- import { inflateMD2HTML } from "../inflate/md.js";
10
- import { EXIT_CODES } from "../common/constants.js";
11
- import { ClusterCache, LocalCache, ServerGlobal } from "../lib.js";
12
- import { decodeJWT, decodeProtectedHeaderJWT, decryptJWT, encryptJWT, signJWT, verifyJWT } from "../common/jwt.js";
13
- import { createSecretKey } from "node:crypto";
14
- import { Parser } from "@miqro/parser";
15
-
16
- /*const globaljsx: any = Object.freeze({
17
- useContext,
18
- useRuntime,
19
- createContext,
20
- useState,
21
- useEffect,
22
- useQuery,
23
- useRef,
24
- useElement,
25
- useRefresh,
26
- Link,
27
- Router,
28
- usePathname
29
- });*/
30
- const globalJSX: any = Object.freeze({
31
- createElement: (...args: [tag: string | Component | typeof Fragment, attributes: Props | null | undefined, ...children: Array<any>]) => {
32
- const ret = realCreateElement(...args);
33
- ret.toString = () => jsx2HTML(ret)
34
- return ret;
35
- },
36
- Fragment,
37
- enableDebugLog
38
- });
39
- const globaljsx: any = Object.freeze({
40
- useContext,
41
- useRuntime,
42
- createContext,
43
- useState,
44
- useEffect,
45
- useQuery,
46
- useRef,
47
- useElement,
48
- useRefresh,
49
- Link,
50
- Router,
51
- usePathname,
52
- define: function define() {
53
- /*const callSites = getCallSite();
54
- const caller = callSites[2];
55
- if (CLEAR_JSX_CACHE) {
56
- const scriptName = basename(caller.scriptName);
57
- const originalName = scriptName.substring(0, scriptName.length - ".mjs".length);
58
- //server.logger.debug("browser.define not available server side!");
59
- //server.logger.trace("browser.define not available server side! %s", originalName);
60
- } else {
61
- //server.logger.debug("browser.define not available server side!");
62
- //server.logger.trace("browser.define not available server side! %s:%s:%s", caller.scriptName, caller.lineNumber, caller.column);
63
- }*/
64
- }
65
- });
66
- const globalWindow: any = Object.freeze({
67
- addEventListener: function define() {
68
- /*const callSites = getCallSite();
69
- const caller = callSites[2];
70
- if (CLEAR_JSX_CACHE) {
71
- const scriptName = basename(caller.scriptName);
72
- //server.logger.debug("window.addEventListener not available server side!");
73
- server.logger.trace("window.addEventListener not available server side! %s", scriptName.substring(0, scriptName.length - ".mjs".length));
74
- } else {
75
- //server.logger.debug("window.addEventListener not available server side!");
76
- server.logger.trace("window.addEventListener not available server side! %s:%s:%s", caller.scriptName, caller.lineNumber, caller.column);
77
- }*/
78
- }
79
- });
80
- const globalServer: ServerGlobal = Object.freeze<ServerGlobal>({
81
- middleware: Object.freeze({
82
- buffer: ReadBuffer,
83
- url: URLEncodedParser,
84
- json: JSONParser,
85
- text: TextParser,
86
- cors: CORS,
87
- session: SessionHandler
88
- }),
89
- encodeHTML: HTMLEncode,
90
- inflateMDtoHTML: inflateMD2HTML,
91
- createSecretKey,
92
- newParser() {
93
- return new Parser();
94
- },
95
- newClusterCache(name, logger) {
96
- return new ClusterCache(name, logger);
97
- },
98
- newLocalCache(name, logger) {
99
- return new LocalCache(name, logger);
100
- },
101
- getWorkerNumber(): number {
102
- return cluster.isPrimary || process.env["CLUSTER_NODE_NUMBER"] === undefined ? 0 : parseInt(process.env["CLUSTER_NODE_NUMBER"], 10);
103
- },
104
- getWorkerCount(): number {
105
- return cluster.isPrimary || process.env["CLUSTER_NODE_NUMBER"] === undefined || process.env["CLUSTER_COUNT"] === undefined ? 1 : parseInt(process.env["CLUSTER_COUNT"], 10);
106
- },
107
- isPrimaryWorker(): boolean {
108
- return cluster.isPrimary || process.env["CLUSTER_NODE_NUMBER"] === "0";
109
- },
110
- jwt: {
111
- decode(jwt) {
112
- return decodeJWT(jwt);
113
- },
114
- decodeProtectedHeader(token) {
115
- return decodeProtectedHeaderJWT(token);
116
- },
117
- decrypt(jwt, secret, options) {
118
- return decryptJWT(jwt, secret, options);
119
- },
120
- encrypt(payload, secret, options) {
121
- return encryptJWT(payload, secret, options);
122
- },
123
- sign(payload, secret, options) {
124
- return signJWT(payload, secret, options);
125
- },
126
- verify(jwt, secret, options) {
127
- return verifyJWT(jwt, secret, options);
128
- }
129
- }
130
- }) as ServerGlobal;
131
-
132
- export function browserJSXGlobals(inFile: string, jsxPath: string | false = false, useExport = true): string {
133
- const PRE = `import { enableDebugLog, useRuntime, Link, usePathname, createContext, useContext, useElement, useRefresh, useQuery, define, Router, useState, useEffect, useRef, createElement, Fragment } from "${jsxPath}";
134
- globalThis.JSX = Object.freeze({
135
- createElement,
136
- Fragment,
137
- enableDebugLog
138
- });
139
-
140
- globalThis.newParser = () => new Parser();
141
- globalThis.jsx = Object.freeze({
142
- define,
143
- useRuntime,
144
- createContext,
145
- useContext,
146
- useState,
147
- useEffect,
148
- useQuery,
149
- useRef,
150
- useElement,
151
- useRefresh,
152
- usePathname,
153
- Link,
154
- Router
155
- });`;
156
- return `${jsxPath ? PRE : ""}\n${useExport ? `export * from "${inFile}";import * as lib from "${inFile}";export default lib.default;` : `import * as lib from "${inFile}"`}`;
157
- }
158
-
159
- export function initGlobals() {//webSocketManager: WebSocketManager, dbManager: DBManager) {
160
- //const logger = getLogger(SERVER_IDENTIFIER);
161
- globalThis.server = globalServer;
162
- //globalThis.jsx = globaljsx;
163
- /*for (const key of Object.keys(globaljsx)) {
164
- globalThis[key] = globaljsx[key];
165
- }*/
166
- globalThis.JSX = globalJSX;
167
- globalThis.jsx = globaljsx;
168
- globalThis.window = globalWindow;
169
- }
170
-
171
- export function assertGlobalTampered() {
172
- try {
173
- //strictEqual(globalThis.utils, globalUtils, "globalThis.utils tamperered");
174
- strictEqual(globalThis.JSX, globalJSX, "globalThis.JSX tamperered");
175
- //strictEqual(globalThis.jsx, globaljsx, "globalThis.jsx tamperered");
176
- /*for (const key of Object.keys(globaljsx)) {
177
- strictEqual(globalThis[key], globaljsx[key], "globalThis.jsx tamperered");
178
- }*/
179
- strictEqual(globalThis.server, globalServer, "globalThis.server tamperered");
180
- strictEqual(globalThis.jsx, globaljsx, "globalThis.jsx tamperered");
181
- strictEqual(globalThis.window, globalWindow, "globalThis.window tamperered");
182
- } catch (e) {
183
- console.error(e);
184
- process.exit(EXIT_CODES.GLOBALS_ALTERED);
185
- }
186
- }
@@ -1,51 +0,0 @@
1
- //import { checkEnvVariable } from "@miqro/core";
2
-
3
- import { HOT_RELOAD_PATH } from "../common/constants.js";
4
-
5
- export function getHotReloadScript() {
6
- const HOT_RELOAD_JS_SCRIPT = `
7
- // Create WebSocket connection.
8
-
9
- function getSocket() {
10
- return new WebSocket("${HOT_RELOAD_PATH}");
11
- }
12
-
13
- const socket = getSocket();
14
-
15
- let timeout;
16
-
17
- function tryConnection() {
18
- try {
19
- const newSocket = getSocket();
20
- newSocket.addEventListener("open", (event) => {
21
- console.log("reloading");
22
- setTimeout(()=>{
23
- window.location.reload();
24
- }, 500);
25
-
26
- });
27
- newSocket.addEventListener("error", (err) => {
28
- console.error(err);
29
- timeout = setTimeout(tryConnection, 500);
30
- });
31
- } catch (e) {
32
- console.error(e);
33
- timeout = setTimeout(tryConnection, 500);
34
- }
35
- }
36
-
37
- // Connection closed
38
- socket.addEventListener("close", (event) => {
39
- clearTimeout(timeout);
40
- timeout = setTimeout(tryConnection, 500);
41
- });
42
-
43
- socket.addEventListener("error", (err) => {
44
- console.error(err);
45
- });`;
46
- return `<script>${HOT_RELOAD_JS_SCRIPT}</script>`;
47
- }
48
-
49
- /*export function isHotReloadEnabled() {
50
- return checkEnvVariable("HOT_RELOAD", "0") === "1";
51
- }*/
@@ -1,68 +0,0 @@
1
- import { Logger } from "@miqro/core";
2
- import { Database, DatabaseLogger, migration } from "@miqro/query";
3
- import { dirname, extname, relative, resolve } from "node:path";
4
- import { mkdirSync, writeFileSync } from "node:fs";
5
- import { cwd } from "node:process";
6
-
7
- import { getMigrationsPath } from "../common/paths.js";
8
- import { importJSXFile, inflateJSX } from "../common/jsx.js";
9
-
10
- export async function runMigrations(logger: Logger | undefined, db: Database | null, servicePath: string, service: string, inflateDir: string | undefined | false, migrations: string[]) {
11
- const migrationsFolderPath = getMigrationsPath(servicePath);
12
- if (migrationsFolderPath) {
13
- logger?.debug("running migrations from [%s]", service);
14
- if (!db) {
15
- throw new Error("cannot run migrations with the database disabled!");
16
- }
17
- const serviceMigrations = await migration.up.folder(db as any, migrationsFolderPath, logger as DatabaseLogger, (inFile: string) => importJSXFile(inFile, logger));
18
- migrations.push(...serviceMigrations);
19
-
20
- if (inflateDir) {
21
- for (const migration of serviceMigrations) {
22
- const inflatePath = resolve(inflateDir, service, "migration", migration.substring(0, migration.length - extname(migration).length) + ".cjs");
23
- mkdirSync(dirname(inflatePath), {
24
- recursive: true
25
- });
26
- logger?.log("writing [%s]", relative(cwd(), inflatePath));
27
- writeFileSync(inflatePath, await inflateJSX(resolve(migrationsFolderPath, migration), {
28
- embemedJSX: false,
29
- minify: false,
30
- useExport: true,
31
- platform: "node",
32
- logger
33
- }));
34
- }
35
- }
36
- }
37
- return migrations;
38
- }
39
-
40
- export async function runMigrationsDown(logger: Logger | Console | undefined, db: Database | null, servicePath: string, service: string, inflateDir: string | undefined, migrations: string[]) {
41
- const migrationsFolderPath = getMigrationsPath(servicePath)
42
- if (migrationsFolderPath) {
43
- logger?.debug("running migrations from [%s]", service);
44
- if (!db) {
45
- throw new Error("cannot run migrations with the database disabled!");
46
- }
47
- const serviceMigrations = await migration.down.folder(db as any, migrationsFolderPath, logger as DatabaseLogger, (inFile: string) => importJSXFile(inFile, logger));
48
- migrations.push(...serviceMigrations);
49
-
50
- if (inflateDir) {
51
- for (const migration of serviceMigrations) {
52
- const inflatePath = resolve(inflateDir, service, "migration", migration.substring(0, migration.length - extname(migration).length) + ".cjs");
53
- mkdirSync(dirname(inflatePath), {
54
- recursive: true
55
- });
56
- logger?.log("writing [%s]", relative(cwd(), inflatePath));
57
- writeFileSync(inflatePath, await inflateJSX(resolve(migrationsFolderPath, migration), {
58
- embemedJSX: false,
59
- platform: "node",
60
- minify: false,
61
- useExport: true,
62
- logger
63
- }));
64
- }
65
- }
66
- }
67
- return migrations;
68
- }
@@ -1,37 +0,0 @@
1
- import { EditorAdminInterface } from "../../../editor/common/admin-interface.js";
2
- import { MigrationModule } from "../../inflate/setup-db.js";
3
- import { Miqro } from "../app.js";
4
- import { getHotReloadScript } from "../hot-reload.js";
5
- import { ClusterCache } from "./cluster-cache.js";
6
-
7
- export function createAdminInterface(app: Miqro): EditorAdminInterface {
8
- const adminCache = new ClusterCache("EditorCache[" + app.options.name + "]");
9
- return {
10
- getCache: () => adminCache,
11
- stop: () => app.stop(),
12
- restart: () => app.restart(),
13
- reload: () => app.reload(),
14
- getHotReloadHTML: getHotReloadScript,
15
- getMigrations: () => {
16
- if (app.inflated) {
17
- const ret: MigrationModule[] = [];
18
- for (const db of app.inflated.dbList) {
19
- for (const m of db.migrations) {
20
- ret.push(m);
21
- }
22
- }
23
- return ret;
24
- }
25
- return [];
26
- },
27
- getServices: () => {
28
- return app.options.services;
29
- },
30
- getRouteFileMap: () => {
31
- return app.inflated ? app.inflated.fileMap : {};
32
- },
33
- getInflateErrors: () => {
34
- return app.inflated ? app.inflated.errors : [];
35
- }
36
- }
37
- }
@@ -1,88 +0,0 @@
1
- import { Logger } from "@miqro/core";
2
- import { CacheInterface } from "../../types.js";
3
-
4
- export class LocalCache implements CacheInterface {
5
- private localCache = new Map<string, unknown>();
6
-
7
- constructor(public name: string, public logger?: Logger) {
8
- }
9
-
10
- dispose() {
11
-
12
- }
13
-
14
- get<T = any>(key: string): T | undefined {
15
- this.logger?.trace("get(%s)", key);
16
- return this.localCache.get(key) as T;
17
- }
18
- set(key: string, value: unknown): void {
19
- this.localCache.set(key, value);
20
- this.logger?.trace("set(%s, ...)", key);
21
- }
22
- unset(key: string): void {
23
- this.logger?.trace("unset(%s)", key);
24
- this.localCache.delete(key);
25
- }
26
- has(key: string): boolean {
27
- this.logger?.trace("has(%s)", key);
28
- return this.localCache.has(key);
29
- }
30
-
31
- set_add(key: string, value: unknown): void {
32
- this.logger?.trace("set_add(%s)", key);
33
- const list = this.localCache.has(key) ? this.localCache.get(key) : new Set<string>();
34
- if (!(list instanceof Set)) {
35
- throw new Error("cannot apply on non Set");
36
- }
37
- if (!list.has(value)) {
38
- list.add(value);
39
- }
40
- this.localCache.set(key, list);
41
- }
42
- set_delete(key: string, value: unknown): void {
43
- this.logger?.trace("set_delete(%s)", key);
44
- const list = this.localCache.has(key) ? this.localCache.get(key) : new Set<string>();
45
- if (!(list instanceof Set)) {
46
- throw new Error("cannot apply on non Set");
47
- }
48
- if (list.has(value)) {
49
- list.delete(value);
50
- }
51
- this.localCache.set(key, list);
52
- }
53
- set_has(key: string, value: unknown): boolean {
54
- this.logger?.trace("set_has(%s)", key);
55
- const list = this.localCache.has(key) ? this.localCache.get(key) : new Set<string>();
56
- if (!(list instanceof Set)) {
57
- throw new Error("cannot apply on non Set");
58
- }
59
- const ret = list.has(value);
60
- this.localCache.set(key, list);
61
- return ret;
62
- }
63
- set_clear(key: string): void {
64
- this.logger?.trace("set_clear(%s)", key);
65
- const list = this.localCache.has(key) ? this.localCache.get(key) : new Set<string>();
66
- if (!(list instanceof Set)) {
67
- throw new Error("cannot apply on non Set");
68
- }
69
- list.clear();
70
- this.localCache.set(key, list);
71
- }
72
- array_push(key: string, value: unknown): void {
73
- this.logger?.trace("array_push(%s)", key);
74
- const list = this.localCache.has(key) ? this.localCache.get(key) : [];
75
- if (!(list instanceof Array)) {
76
- throw new Error("cannot apply on non Array");
77
- }
78
- list.push(value);
79
- this.localCache.set(key, list);
80
- }
81
- array_clear(key: string): void {
82
- this.logger?.trace("array_clear(%s)", key);
83
- if (this.localCache.has(key) && !(this.localCache.get(key) instanceof Array)) {
84
- throw new Error("cannot apply on non Array");
85
- }
86
- this.localCache.set(key, []);
87
- }
88
- }