miqro 7.2.6 → 7.2.7

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 (286) hide show
  1. package/README.md +1 -21
  2. package/build/esm/src/bin/compile.js +0 -1
  3. package/build/esm/src/bin/doc-md.js +0 -1
  4. package/build/esm/src/bin/generate-doc.js +0 -1
  5. package/build/esm/src/bin/test.js +0 -1
  6. package/build/esm/src/bin/types.js +0 -1
  7. package/build/esm/src/cluster.js +0 -1
  8. package/build/esm/src/common/arguments.js +0 -1
  9. package/build/esm/src/common/assets.js +2 -3
  10. package/build/esm/src/common/checksum.js +0 -1
  11. package/build/esm/src/common/constants.js +0 -1
  12. package/build/esm/src/common/content-type.js +0 -1
  13. package/build/esm/src/common/esbuild.js +0 -1
  14. package/build/esm/src/common/exit.js +0 -1
  15. package/build/esm/src/common/fs.js +0 -1
  16. package/build/esm/src/common/help.js +0 -1
  17. package/build/esm/src/common/jsx.js +0 -1
  18. package/build/esm/src/common/jwt.js +0 -1
  19. package/build/esm/src/common/paths.js +0 -1
  20. package/build/esm/src/common/watch.js +0 -1
  21. package/build/esm/src/inflate/inflate-sea.js +0 -1
  22. package/build/esm/src/inflate/inflate.js +0 -1
  23. package/build/esm/src/inflate/md.js +0 -1
  24. package/build/esm/src/inflate/setup-auth.js +0 -1
  25. package/build/esm/src/inflate/setup-cors.js +0 -1
  26. package/build/esm/src/inflate/setup-db.js +0 -1
  27. package/build/esm/src/inflate/setup-error.js +0 -1
  28. package/build/esm/src/inflate/setup-http.js +0 -1
  29. package/build/esm/src/inflate/setup-log.js +0 -1
  30. package/build/esm/src/inflate/setup-middleware.js +0 -1
  31. package/build/esm/src/inflate/setup-server-config.js +0 -1
  32. package/build/esm/src/inflate/setup-test.js +0 -1
  33. package/build/esm/src/inflate/setup-ws.js +0 -1
  34. package/build/esm/src/inflate/setup.doc.js +0 -1
  35. package/build/esm/src/inflate/utils/sea-utils.js +0 -1
  36. package/build/esm/src/lib.js +0 -1
  37. package/build/esm/src/main.js +0 -1
  38. package/build/esm/src/services/app.js +1 -1
  39. package/build/esm/src/services/editor.js +10 -12
  40. package/build/esm/src/services/hot-reload.js +0 -1
  41. package/build/esm/src/services/migrations.js +0 -1
  42. package/build/esm/src/services/utils/admin-interface.js +0 -1
  43. package/build/esm/src/services/utils/cache.js +0 -1
  44. package/build/esm/src/services/utils/cluster-cache.js +0 -1
  45. package/build/esm/src/services/utils/cluster-ws.js +0 -1
  46. package/build/esm/src/services/utils/db-manager.js +0 -1
  47. package/build/esm/src/services/utils/get-route.js +0 -1
  48. package/build/esm/src/services/utils/jwt.js +0 -1
  49. package/build/esm/src/services/utils/log-transport.js +0 -1
  50. package/build/esm/src/services/utils/log.js +0 -1
  51. package/build/esm/src/services/utils/middleware.js +0 -1
  52. package/build/esm/src/services/utils/server-interface.js +0 -1
  53. package/build/esm/src/services/utils/websocketmanager.d.ts +2 -0
  54. package/build/esm/src/services/utils/websocketmanager.js +8 -2
  55. package/build/esm/src/types.js +0 -1
  56. package/build/lib.cjs +27 -29
  57. package/build/style.css +3 -3
  58. package/package.json +2 -2
  59. package/build/esm/editor/auth.d.ts +0 -6
  60. package/build/esm/editor/auth.js +0 -43
  61. package/build/esm/editor/auth.js.map +0 -1
  62. package/build/esm/editor/common/admin-interface.d.ts +0 -36
  63. package/build/esm/editor/common/admin-interface.js +0 -45
  64. package/build/esm/editor/common/admin-interface.js.map +0 -1
  65. package/build/esm/editor/common/constants.d.ts +0 -4
  66. package/build/esm/editor/common/constants.js +0 -21
  67. package/build/esm/editor/common/constants.js.map +0 -1
  68. package/build/esm/editor/common/constants.server.d.ts +0 -2
  69. package/build/esm/editor/common/constants.server.js +0 -5
  70. package/build/esm/editor/common/constants.server.js.map +0 -1
  71. package/build/esm/editor/common/editor-index.d.ts +0 -2
  72. package/build/esm/editor/common/editor-index.js +0 -15
  73. package/build/esm/editor/common/editor-index.js.map +0 -1
  74. package/build/esm/editor/common/html-encode.d.ts +0 -1
  75. package/build/esm/editor/common/html-encode.js +0 -15
  76. package/build/esm/editor/common/html-encode.js.map +0 -1
  77. package/build/esm/editor/common/log-socket.d.ts +0 -15
  78. package/build/esm/editor/common/log-socket.js +0 -72
  79. package/build/esm/editor/common/log-socket.js.map +0 -1
  80. package/build/esm/editor/common/templates.d.ts +0 -11
  81. package/build/esm/editor/common/templates.js +0 -478
  82. package/build/esm/editor/common/templates.js.map +0 -1
  83. package/build/esm/editor/components/api-preview.d.ts +0 -11
  84. package/build/esm/editor/components/api-preview.js +0 -93
  85. package/build/esm/editor/components/api-preview.js.map +0 -1
  86. package/build/esm/editor/components/editor.d.ts +0 -16
  87. package/build/esm/editor/components/editor.js +0 -368
  88. package/build/esm/editor/components/editor.js.map +0 -1
  89. package/build/esm/editor/components/file-browser.d.ts +0 -37
  90. package/build/esm/editor/components/file-browser.js +0 -128
  91. package/build/esm/editor/components/file-browser.js.map +0 -1
  92. package/build/esm/editor/components/file-editor-toolbar.d.ts +0 -22
  93. package/build/esm/editor/components/file-editor-toolbar.js +0 -96
  94. package/build/esm/editor/components/file-editor-toolbar.js.map +0 -1
  95. package/build/esm/editor/components/file-editor.d.ts +0 -32
  96. package/build/esm/editor/components/file-editor.js +0 -62
  97. package/build/esm/editor/components/file-editor.js.map +0 -1
  98. package/build/esm/editor/components/filter-query.d.ts +0 -1
  99. package/build/esm/editor/components/filter-query.js +0 -24
  100. package/build/esm/editor/components/filter-query.js.map +0 -1
  101. package/build/esm/editor/components/highlight-text-area.d.ts +0 -11
  102. package/build/esm/editor/components/highlight-text-area.js +0 -128
  103. package/build/esm/editor/components/highlight-text-area.js.map +0 -1
  104. package/build/esm/editor/components/log-viewer.d.ts +0 -6
  105. package/build/esm/editor/components/log-viewer.js +0 -72
  106. package/build/esm/editor/components/log-viewer.js.map +0 -1
  107. package/build/esm/editor/components/new-file.d.ts +0 -10
  108. package/build/esm/editor/components/new-file.js +0 -120
  109. package/build/esm/editor/components/new-file.js.map +0 -1
  110. package/build/esm/editor/components/scroll-query.d.ts +0 -7
  111. package/build/esm/editor/components/scroll-query.js +0 -23
  112. package/build/esm/editor/components/scroll-query.js.map +0 -1
  113. package/build/esm/editor/components/start-page.d.ts +0 -13
  114. package/build/esm/editor/components/start-page.js +0 -33
  115. package/build/esm/editor/components/start-page.js.map +0 -1
  116. package/build/esm/editor/http/admin/editor/api/fs/delete.api.d.ts +0 -4
  117. package/build/esm/editor/http/admin/editor/api/fs/delete.api.js +0 -31
  118. package/build/esm/editor/http/admin/editor/api/fs/delete.api.js.map +0 -1
  119. package/build/esm/editor/http/admin/editor/api/fs/read.api.d.ts +0 -7
  120. package/build/esm/editor/http/admin/editor/api/fs/read.api.js +0 -51
  121. package/build/esm/editor/http/admin/editor/api/fs/read.api.js.map +0 -1
  122. package/build/esm/editor/http/admin/editor/api/fs/rename.api.d.ts +0 -7
  123. package/build/esm/editor/http/admin/editor/api/fs/rename.api.js +0 -41
  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.d.ts +0 -26
  126. package/build/esm/editor/http/admin/editor/api/fs/scan.api.js +0 -151
  127. package/build/esm/editor/http/admin/editor/api/fs/scan.api.js.map +0 -1
  128. package/build/esm/editor/http/admin/editor/api/fs/write.api.d.ts +0 -3
  129. package/build/esm/editor/http/admin/editor/api/fs/write.api.js +0 -40
  130. package/build/esm/editor/http/admin/editor/api/fs/write.api.js.map +0 -1
  131. package/build/esm/editor/http/admin/editor/api/server/reload.api.d.ts +0 -10
  132. package/build/esm/editor/http/admin/editor/api/server/reload.api.js +0 -47
  133. package/build/esm/editor/http/admin/editor/api/server/reload.api.js.map +0 -1
  134. package/build/esm/editor/http/admin/editor/api/server/restart.api.d.ts +0 -10
  135. package/build/esm/editor/http/admin/editor/api/server/restart.api.js +0 -47
  136. package/build/esm/editor/http/admin/editor/api/server/restart.api.js.map +0 -1
  137. package/build/esm/editor/http/admin/editor/editor.d.ts +0 -1
  138. package/build/esm/editor/http/admin/editor/editor.js +0 -9
  139. package/build/esm/editor/http/admin/editor/editor.js.map +0 -1
  140. package/build/esm/editor/http/admin/editor/index.api.d.ts +0 -3
  141. package/build/esm/editor/http/admin/editor/index.api.js +0 -23
  142. package/build/esm/editor/http/admin/editor/index.api.js.map +0 -1
  143. package/build/esm/editor/server.d.ts +0 -3
  144. package/build/esm/editor/server.js +0 -50
  145. package/build/esm/editor/server.js.map +0 -1
  146. package/build/esm/editor/ws.d.ts +0 -3
  147. package/build/esm/editor/ws.js +0 -12
  148. package/build/esm/editor/ws.js.map +0 -1
  149. package/build/esm/src/bin/compile.js.map +0 -1
  150. package/build/esm/src/bin/doc-md.js.map +0 -1
  151. package/build/esm/src/bin/generate-doc.js.map +0 -1
  152. package/build/esm/src/bin/test.js.map +0 -1
  153. package/build/esm/src/bin/types.js.map +0 -1
  154. package/build/esm/src/cluster.js.map +0 -1
  155. package/build/esm/src/common/arguments.js.map +0 -1
  156. package/build/esm/src/common/assets.js.map +0 -1
  157. package/build/esm/src/common/checksum.js.map +0 -1
  158. package/build/esm/src/common/constants.js.map +0 -1
  159. package/build/esm/src/common/content-type.js.map +0 -1
  160. package/build/esm/src/common/esbuild.js.map +0 -1
  161. package/build/esm/src/common/exit.js.map +0 -1
  162. package/build/esm/src/common/fs.js.map +0 -1
  163. package/build/esm/src/common/help.js.map +0 -1
  164. package/build/esm/src/common/jsx.js.map +0 -1
  165. package/build/esm/src/common/jwt.js.map +0 -1
  166. package/build/esm/src/common/paths.js.map +0 -1
  167. package/build/esm/src/common/watch.js.map +0 -1
  168. package/build/esm/src/inflate/inflate-sea.js.map +0 -1
  169. package/build/esm/src/inflate/inflate.js.map +0 -1
  170. package/build/esm/src/inflate/md.js.map +0 -1
  171. package/build/esm/src/inflate/setup-auth.js.map +0 -1
  172. package/build/esm/src/inflate/setup-cors.js.map +0 -1
  173. package/build/esm/src/inflate/setup-db.js.map +0 -1
  174. package/build/esm/src/inflate/setup-error.js.map +0 -1
  175. package/build/esm/src/inflate/setup-http.js.map +0 -1
  176. package/build/esm/src/inflate/setup-log.js.map +0 -1
  177. package/build/esm/src/inflate/setup-middleware.js.map +0 -1
  178. package/build/esm/src/inflate/setup-server-config.js.map +0 -1
  179. package/build/esm/src/inflate/setup-test.js.map +0 -1
  180. package/build/esm/src/inflate/setup-ws.js.map +0 -1
  181. package/build/esm/src/inflate/setup.doc.js.map +0 -1
  182. package/build/esm/src/inflate/utils/sea-utils.js.map +0 -1
  183. package/build/esm/src/lib.js.map +0 -1
  184. package/build/esm/src/main.js.map +0 -1
  185. package/build/esm/src/services/app.js.map +0 -1
  186. package/build/esm/src/services/editor.js.map +0 -1
  187. package/build/esm/src/services/hot-reload.js.map +0 -1
  188. package/build/esm/src/services/migrations.js.map +0 -1
  189. package/build/esm/src/services/utils/admin-interface.js.map +0 -1
  190. package/build/esm/src/services/utils/cache.js.map +0 -1
  191. package/build/esm/src/services/utils/cluster-cache.js.map +0 -1
  192. package/build/esm/src/services/utils/cluster-ws.js.map +0 -1
  193. package/build/esm/src/services/utils/db-manager.js.map +0 -1
  194. package/build/esm/src/services/utils/get-route.js.map +0 -1
  195. package/build/esm/src/services/utils/jwt.js.map +0 -1
  196. package/build/esm/src/services/utils/log-transport.js.map +0 -1
  197. package/build/esm/src/services/utils/log.js.map +0 -1
  198. package/build/esm/src/services/utils/middleware.js.map +0 -1
  199. package/build/esm/src/services/utils/server-interface.js.map +0 -1
  200. package/build/esm/src/services/utils/websocketmanager.js.map +0 -1
  201. package/build/esm/src/types.js.map +0 -1
  202. package/build/font.ttf +0 -0
  203. package/editor/auth.ts +0 -52
  204. package/editor/common/admin-interface.ts +0 -84
  205. package/editor/common/constants.server.ts +0 -5
  206. package/editor/common/constants.ts +0 -21
  207. package/editor/common/editor-index.tsx +0 -17
  208. package/editor/common/html-encode.ts +0 -14
  209. package/editor/common/log-socket.tsx +0 -87
  210. package/editor/common/templates.ts +0 -481
  211. package/editor/components/api-preview.tsx +0 -118
  212. package/editor/components/editor.tsx +0 -496
  213. package/editor/components/file-browser.tsx +0 -311
  214. package/editor/components/file-editor-toolbar.tsx +0 -194
  215. package/editor/components/file-editor.tsx +0 -125
  216. package/editor/components/filter-query.tsx +0 -26
  217. package/editor/components/highlight-text-area.tsx +0 -148
  218. package/editor/components/log-viewer.tsx +0 -113
  219. package/editor/components/new-file.tsx +0 -172
  220. package/editor/components/scroll-query.tsx +0 -25
  221. package/editor/components/start-page.tsx +0 -52
  222. package/editor/http/admin/editor/api/fs/delete.api.tsx +0 -32
  223. package/editor/http/admin/editor/api/fs/read.api.tsx +0 -55
  224. package/editor/http/admin/editor/api/fs/rename.api.tsx +0 -41
  225. package/editor/http/admin/editor/api/fs/scan.api.tsx +0 -181
  226. package/editor/http/admin/editor/api/fs/write.api.tsx +0 -41
  227. package/editor/http/admin/editor/api/server/reload.api.ts +0 -53
  228. package/editor/http/admin/editor/api/server/restart.api.tsx +0 -52
  229. package/editor/http/admin/editor/editor.tsx +0 -10
  230. package/editor/http/admin/editor/index.api.tsx +0 -42
  231. package/editor/server.ts +0 -57
  232. package/editor/ws.ts +0 -15
  233. package/src/bin/compile.ts +0 -35
  234. package/src/bin/doc-md.ts +0 -210
  235. package/src/bin/generate-doc.ts +0 -64
  236. package/src/bin/test.ts +0 -93
  237. package/src/bin/types.ts +0 -34
  238. package/src/cluster.ts +0 -27
  239. package/src/common/arguments.ts +0 -853
  240. package/src/common/assets.ts +0 -148
  241. package/src/common/checksum.ts +0 -58
  242. package/src/common/constants.ts +0 -19
  243. package/src/common/content-type.ts +0 -84
  244. package/src/common/esbuild.ts +0 -103
  245. package/src/common/exit.ts +0 -91
  246. package/src/common/fs.ts +0 -82
  247. package/src/common/help.ts +0 -65
  248. package/src/common/jsx.ts +0 -574
  249. package/src/common/jwt.ts +0 -85
  250. package/src/common/paths.ts +0 -107
  251. package/src/common/watch.ts +0 -88
  252. package/src/inflate/inflate-sea.ts +0 -268
  253. package/src/inflate/inflate.ts +0 -105
  254. package/src/inflate/md.ts +0 -25
  255. package/src/inflate/setup-auth.ts +0 -41
  256. package/src/inflate/setup-cors.ts +0 -42
  257. package/src/inflate/setup-db.ts +0 -117
  258. package/src/inflate/setup-error.ts +0 -44
  259. package/src/inflate/setup-http.ts +0 -720
  260. package/src/inflate/setup-log.ts +0 -45
  261. package/src/inflate/setup-middleware.ts +0 -47
  262. package/src/inflate/setup-server-config.ts +0 -48
  263. package/src/inflate/setup-test.ts +0 -23
  264. package/src/inflate/setup-ws.ts +0 -50
  265. package/src/inflate/setup.doc.ts +0 -92
  266. package/src/inflate/utils/sea-utils.ts +0 -14
  267. package/src/lib.ts +0 -35
  268. package/src/main.ts +0 -107
  269. package/src/services/app.ts +0 -750
  270. package/src/services/editor.tsx +0 -101
  271. package/src/services/globals.ts.ignore +0 -186
  272. package/src/services/hot-reload.ts +0 -55
  273. package/src/services/migrations.ts +0 -68
  274. package/src/services/utils/admin-interface.ts +0 -37
  275. package/src/services/utils/cache.ts +0 -88
  276. package/src/services/utils/cluster-cache.ts +0 -255
  277. package/src/services/utils/cluster-ws.ts +0 -202
  278. package/src/services/utils/db-manager.ts +0 -92
  279. package/src/services/utils/get-route.ts +0 -70
  280. package/src/services/utils/jwt.ts +0 -25
  281. package/src/services/utils/log-transport.ts +0 -81
  282. package/src/services/utils/log.ts +0 -92
  283. package/src/services/utils/middleware.ts +0 -10
  284. package/src/services/utils/server-interface.ts +0 -122
  285. package/src/services/utils/websocketmanager.ts +0 -158
  286. package/src/types.ts +0 -287
@@ -1,181 +0,0 @@
1
- import { APIRoute, JSONParser } from "@miqro/core";
2
- import { existsSync, readdirSync, statSync } from "node:fs";
3
- import { basename, dirname, extname, join, relative, resolve, sep } from "node:path";
4
- import { BASE_PATH } from "../../../../../common/constants.server.js";
5
- import { AdminRequest } from "../../../../../common/admin-interface.js";
6
-
7
- export interface ScannedFile {
8
- filePath: string;
9
- ext: string;
10
- fileName: string;
11
- name: string;
12
- subExt: string;
13
- subName: string;
14
- language: string;
15
- previewPath?: string;
16
- dirs: string[];
17
- apiPreview?: {
18
- path: string;
19
- method: string;
20
- }[];
21
- }
22
-
23
- export default {
24
- method: "GET",
25
- path: "/scan",
26
- description: "admin editor file scan endpoint",
27
- middleware: [JSONParser()],
28
- request: {
29
- body: false
30
- },
31
- response: {
32
- status: [200, 400]
33
- },
34
- handler: async (req: AdminRequest, res) => {
35
- const admin = req.editor;
36
- const services = admin ? admin.getServices() : ["."];
37
- return res.json({
38
- files: scanDir(req),
39
- services
40
- });
41
- },
42
- } as APIRoute;
43
-
44
- export function scanDir(req: AdminRequest, basePath: string = BASE_PATH, ret: ScannedFile[] = []): ScannedFile[] {
45
- const admin = req.editor;
46
- const services = admin ? admin.getServices() : ["."];
47
- services.forEach(service => {
48
- scanDirInternal(req, resolve(basePath, service), ret);
49
- });
50
- return ret;
51
- }
52
-
53
- function scanDirInternal(req, path: string = BASE_PATH, ret: ScannedFile[] = []): ScannedFile[] {
54
- if (!existsSync(path)) {
55
- return ret;
56
- }
57
- const files = readdirSync(path);
58
- for (const file of files) {
59
- if (shouldIgnoreFile(file)) {
60
- continue;
61
- }
62
- const filePath = resolve(path, file);
63
- if (statSync(filePath).isDirectory()) {
64
- scanDirInternal(req, filePath, ret);
65
- continue;
66
- } else {
67
- const ext = extname(filePath);
68
- const fileName = basename(filePath);
69
- const name = fileName.substring(0, fileName.length - ext.length);
70
- const subExt = extname(name);
71
- const subName = name.substring(0, name.length - subExt.length);
72
-
73
- ret.push({
74
- dirs: getFileDirs(relative(BASE_PATH, filePath)),
75
- language: getLanguage(filePath),
76
- filePath: relative(BASE_PATH, filePath),
77
- ext,
78
- fileName,
79
- name,
80
- subExt,
81
- subName,
82
- previewPath: getPreview(req, filePath),
83
- apiPreview: getAPIPreview(req, filePath)
84
- });
85
- }
86
- }
87
- return ret;
88
- }
89
-
90
- function shouldIgnoreFile(file) {
91
- return file === ".git" || file === ".types" || file === ".DS_Store" || file === "node_modules";
92
- }
93
-
94
- function getFileDirs(filePath: string): string[] {
95
- const dirs: string[] = [];
96
- let dir = dirname(filePath);
97
- while (dir !== sep && dir !== "" && dir !== "." && dir !== BASE_PATH) {
98
-
99
- dirs.push(dir);
100
- dir = dirname(dir);
101
-
102
- }
103
- return dirs.reverse().map(d => basename(d));
104
-
105
- }
106
-
107
- export function getLanguage(filePath: string): string {
108
- const ext = extname(filePath);
109
- const fileName = basename(filePath);
110
- switch (ext.toLocaleLowerCase()) {
111
- case ".py":
112
- return "python";
113
- case ".sh":
114
- return "bash";
115
- case ".webmanifest":
116
- case ".json":
117
- return "json";
118
- case ".xml":
119
- return "xml";
120
- case ".jsx":
121
- case ".js":
122
- return "javascript";
123
- case ".tsx":
124
- case ".ts":
125
- case "d.ts":
126
- return "typescript";
127
- case ".htm":
128
- case ".html":
129
- return "html";
130
- case ".scss":
131
- case ".css":
132
- return "css";
133
- case ".md":
134
- return "markdown";
135
- case ".c":
136
- return "c";
137
- case ".h":
138
- case ".cpp":
139
- return "cpp";
140
- case ".yml":
141
- case ".yaml":
142
- return "yaml";
143
- case ".txt":
144
- case ".log":
145
- return "text";
146
- default:
147
- switch (fileName) {
148
- case "dockerfile":
149
- return "dockerfile";
150
- case ".gitignore":
151
- return "text";
152
- }
153
- return "text";
154
- }
155
- }
156
-
157
- export function getPreview(req: AdminRequest, filePath: string): undefined | string {
158
- const admin = req.editor;
159
- const inflateData = admin ? admin.getRouteFileMap()[filePath] : undefined;
160
- if (inflateData) {
161
- return inflateData.previewMethod === "html" ? inflateData.routes[0].path : undefined;
162
- }
163
- return undefined;
164
- }
165
-
166
- export function getAPIPreview(req, filePath: string): undefined | {
167
- path: string;
168
- method: string;
169
- }[] {
170
- const admin = req.editor;
171
- const inflateData = admin ? admin.getRouteFileMap()[filePath] : undefined;
172
- if (inflateData) {
173
- return inflateData.previewMethod === "api" ? inflateData.routes.map(r => {
174
- return {
175
- path: r.path,
176
- method: r.method ? r.method : "GET"
177
- };
178
- }) : undefined;
179
- }
180
- return undefined;
181
- }
@@ -1,41 +0,0 @@
1
- import { APIRoute, JSONParser } from "@miqro/core";
2
- import { existsSync, mkdirSync, writeFileSync } from "node:fs";
3
- import { getPath } from "./read.api.js";
4
- import { dirname } from "node:path";
5
-
6
- export default {
7
- middleware: [JSONParser()],
8
- method: "POST",
9
- path: "/write",
10
- description: "admin editor file write endpoint",
11
- request: {
12
- body: {
13
- path: "string",
14
- contents: "string",
15
- override: "boolean?"
16
- }
17
- },
18
- response: {
19
- status: [200, 400],
20
- body: {
21
- message: "string"
22
- }
23
- },
24
- handler: async (req, res) => {
25
- const { path, contents, override } = req.body;
26
- await writeFile(path, contents, override);
27
- return res.json({
28
- message: "OK"
29
- });
30
- }
31
- } as APIRoute;
32
-
33
- async function writeFile(path: string, contents: string, override?: boolean) {
34
- if (existsSync(getPath(path)) && !override) {
35
- throw new Error("file already exists!");
36
- }
37
- mkdirSync(dirname(getPath(path)), {
38
- recursive: true
39
- });
40
- writeFileSync(getPath(path), contents);
41
- }
@@ -1,53 +0,0 @@
1
- import { APIRoute } from "@miqro/core";
2
- import { relative } from "node:path";
3
- import { BASE_PATH } from "../../../../../common/constants.server.js";
4
- import { AdminRequest } from "../../../../../common/admin-interface.js";
5
-
6
- export default {
7
- method: "POST",
8
- path: "/reload",
9
- description: "admin editor server reload endpoint. reloads the server without closing the port",
10
- middleware: [],
11
- request: {
12
- body: false
13
- },
14
- response: {
15
- status: [200, 400],
16
- body: {
17
- message: "string",
18
- reloadString: "string",
19
- migrations: "string[]",
20
- errors: {
21
- allowNull: true,
22
- type: "array",
23
- arrayType: "object",
24
- properties: {
25
- filePath: "string",
26
- error: "string"
27
- }
28
- }
29
- }
30
- },
31
- handler: async (req: AdminRequest, res) => {
32
- const errors = await req?.editor?.reload();
33
- const parsedErrors = parseInflateErrors(errors);
34
- return res.json({
35
- message: "OK",
36
- reloadString: req.uuid,
37
- migrations: req?.editor?.getMigrations().map(m => m.name),
38
- errors: parsedErrors ? parsedErrors : []
39
- });
40
- },
41
- } as APIRoute;
42
-
43
- export function parseInflateErrors(errors: {
44
- filePath: string;
45
- error: Error;
46
- }[] | null) {
47
- return errors?.map(error => {
48
- return {
49
- filePath: relative(BASE_PATH, error.filePath),
50
- error: error.error.message
51
- }
52
- });
53
- }
@@ -1,52 +0,0 @@
1
- import { APIRoute, JSONParser } from "@miqro/core";
2
- import { relative } from "node:path";
3
- import { BASE_PATH } from "../../../../../common/constants.server.js";
4
- import { AdminRequest } from "../../../../../common/admin-interface.js";
5
-
6
- export default {
7
- method: "POST",
8
- path: "/restart",
9
- description: "admin editor server restart endpoint",
10
- middleware: [JSONParser()],
11
- request: {
12
- body: false
13
- },
14
- response: {
15
- status: [200, 400],
16
- body: {
17
- message: "string",
18
- reloadString: "string",
19
- migrations: "string[]",
20
- errors: {
21
- allowNull: true,
22
- type: "array",
23
- arrayType: "object",
24
- properties: {
25
- filePath: "string",
26
- error: "string"
27
- }
28
- }
29
- }
30
- },
31
- handler: async (req: AdminRequest, res) => {
32
- const errors = await req?.editor?.restart();
33
- return res.json({
34
- message: "OK",
35
- reloadString: req.uuid,
36
- migrations: req?.editor?.getMigrations().map(m => m.name),
37
- errors: parseInflateErrors(errors)
38
- });
39
- },
40
- } as APIRoute;
41
-
42
- export function parseInflateErrors(errors: {
43
- filePath: string;
44
- error: Error;
45
- }[] | null) {
46
- return errors?.map(error => {
47
- return {
48
- filePath: relative(BASE_PATH, error.filePath),
49
- error: error.error.message
50
- }
51
- });
52
- }
@@ -1,10 +0,0 @@
1
- import { define } from "@miqro/jsx-dom";
2
-
3
- //import "../../../../.types/browser.globals";
4
- import { Editor } from "../../../components/editor.js";
5
-
6
- window.addEventListener("load", async (event) => {
7
- define("editor-component", Editor, {
8
- shadowInit: false
9
- });
10
- });
@@ -1,42 +0,0 @@
1
- import * as jsx from "@miqro/jsx";
2
- import JSX from "@miqro/jsx";
3
-
4
- import { APIRoute, Response } from "@miqro/core";
5
- import { scanDir } from "./api/fs/scan.api.js";
6
- import { HTMLEncode } from "../../../common/html-encode.js";
7
- import { AdminRequest } from "../../../common/admin-interface.js";
8
-
9
- export default {
10
- description: "ADMIN EDITOR GUI",
11
- path: "/",
12
- method: "GET",
13
- handler: async (req: AdminRequest, res: Response) => {
14
- const admin = req.editor;
15
- const errors = admin ? admin.getInflateErrors() : [];
16
- const files = scanDir(req);
17
- const migrations = admin ? admin.getMigrations().map(m => m.name) : [];
18
- const services = admin ? admin.getServices() : ["."];
19
-
20
- return res.html("<!DOCTYPE html>" + String(<html>
21
- <head>
22
- <link rel="stylesheet" href="/admin/editor/style.css" />
23
- </head>
24
- <body>
25
-
26
- <script type="module" src="/admin/editor/editor.js" />
27
- <editor-component
28
- disablelog="true"
29
- disablepreview="true"
30
- disablereload="true"
31
- class="main-container"
32
- reloadstring={`${req?.uuid}`}
33
- migrations={`${HTMLEncode(JSON.stringify(migrations))}`}
34
- services={`${HTMLEncode(JSON.stringify(services))}`}
35
- errors={`${HTMLEncode(JSON.stringify(errors))}`}
36
- files={`${HTMLEncode(JSON.stringify(files))}`}>
37
- <noscript>Enable JavaScript</noscript>
38
- </editor-component>
39
- </body></html>)
40
- );
41
- }
42
- } as APIRoute;
package/editor/server.ts DELETED
@@ -1,57 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
- import { ServerConfig, ServerInterface } from "../src/types.js";
3
- import { BASEEDITOR_PATH } from "./common/constants.js";
4
- import { existsSync, readFileSync } from "node:fs";
5
- import { relative, resolve } from "node:path";
6
- import { ADMIN_EDITOR_AUTH_KEY, ADMIN_EDITOR_AUTH_QUERY } from "./auth.js";
7
- import { EditorAdminInterface } from "./common/admin-interface.js";
8
- //import { getEditorAdmin } from "./common/admin-interface.js";
9
-
10
- const ADMIN_EDITOR_BROWSER_OPEN_KEY = "ADMIN_EDITOR_BROWSER_OPEN_KEY$$";
11
-
12
- export default {
13
- preload: (serverInterface: ServerInterface, adminInterface: EditorAdminInterface) => {
14
- //console.dir(server);
15
- if (serverInterface?.isPrimaryWorker()) {
16
- const cache = (adminInterface ? adminInterface.getCache() : serverInterface.cache);
17
- if (!cache.has(ADMIN_EDITOR_AUTH_KEY)) {
18
- const adminKEYPath = resolve(".admin_key");
19
- if (existsSync(adminKEYPath)) {
20
- serverInterface.logger.warn("loading static ADMIN_KEY from [%s]", relative(process.cwd(), adminKEYPath));
21
- cache.set(ADMIN_EDITOR_AUTH_KEY, readFileSync(adminKEYPath).toString().trim());
22
- } else {
23
- cache.set(ADMIN_EDITOR_AUTH_KEY, randomUUID());
24
- }
25
- }
26
- }
27
- },
28
- start: (serverInterface: ServerInterface, adminInterface: EditorAdminInterface) => {
29
- //console.dir(server);
30
- const cache = (adminInterface ? adminInterface.getCache() : serverInterface.cache);
31
- if (!cache.has(ADMIN_EDITOR_BROWSER_OPEN_KEY)) {
32
-
33
- const KEY = cache.get(ADMIN_EDITOR_AUTH_KEY);
34
-
35
- const adminPath = `${BASEEDITOR_PATH}?${ADMIN_EDITOR_AUTH_QUERY}=${KEY}`;
36
-
37
- if (serverInterface?.isPrimaryWorker()) {
38
- serverInterface.logger.log("\n\n\tADMIN_EDITOR\n\n\t%s\n\n", adminPath);
39
- }
40
-
41
- //const DEFAULT_OPEN = process.platform === "win32" ? "explorer" : process.platform === "darwin" ? "open" : "xdg-open";
42
-
43
- //const OPEN = process.env["BROWSER"] ? process.env["BROWSER"] === "none" ? false : process.env["BROWSER"] : DEFAULT_OPEN;
44
-
45
- if (serverInterface.isPrimaryWorker()) {
46
- cache.set(ADMIN_EDITOR_BROWSER_OPEN_KEY, true);
47
- try {
48
- serverInterface.openBrowser(`${BASEEDITOR_PATH}?${ADMIN_EDITOR_AUTH_QUERY}=${KEY}`);
49
- //serverInterface.logger.log(`${OPEN} "${adminPath}"`);
50
- //execSync(`${OPEN} "${adminPath}"`);
51
- } catch (e) {
52
- serverInterface.logger.error(e.message);
53
- }
54
- }
55
- }
56
- }
57
- } as ServerConfig;
package/editor/ws.ts DELETED
@@ -1,15 +0,0 @@
1
- import { WSConfig } from "../src/types.js";
2
- import { LOG_SOCKET_PATH } from "./common/constants.js";
3
- import { AdminRequest } from "./common/admin-interface.js";
4
-
5
- export default {
6
- path: LOG_SOCKET_PATH,
7
- validate(req: AdminRequest) {
8
- const admin = req.editor;
9
- const cache = (admin ? admin.getCache() : req.server.cache);
10
-
11
- const KEY = cache.get("AUTH_KEY");
12
- const cookieToken = req.cookies["auth"];
13
- return cookieToken && KEY && cookieToken === KEY ? true : false;
14
- },
15
- } as WSConfig;
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { spawn } from "node:child_process";
4
- import { Arguments } from "../common/arguments.js";
5
- import { EXIT_CODES } from "../common/constants.js";
6
-
7
- export async function compileSH(args: Arguments) {
8
- return new Promise<void>((resolve, reject) => {
9
- try {
10
- process.chdir(args.inflateDir);
11
- const proc = spawn(`sh`, ["./compile.sh"]);
12
-
13
- proc.stdout.on('data', (data) => {
14
- console.log(`${data}`);
15
- });
16
-
17
- proc.stderr.on('data', (data) => {
18
- console.log(`${data}`);
19
- });
20
-
21
- proc.on('close', (code) => {
22
- console.log(`compilation exited with code ${code}`);
23
-
24
- if (code !== 0) {
25
- process.exit(code);
26
- } else {
27
- process.exit(EXIT_CODES.NORMAL_EXIT);
28
- }
29
- resolve();
30
- });
31
- } catch (e) {
32
- reject(e);
33
- }
34
- });
35
- }