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,181 +0,0 @@
1
- import { APIRoute } 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: [server.middleware.json()],
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 } 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: [server.middleware.json()],
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 } 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: [server.middleware.json()],
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,8 +0,0 @@
1
- //import "../../../../.types/browser.globals";
2
- import { Editor } from "../../../components/editor.js";
3
-
4
- window.addEventListener("load", async (event) => {
5
- jsx.define("editor-component", Editor, {
6
- shadowInit: false
7
- });
8
- });
@@ -1,39 +0,0 @@
1
- import { APIRoute, Response } from "@miqro/core";
2
- import { scanDir } from "./api/fs/scan.api.js";
3
- import { HTMLEncode } from "../../../common/html-encode.js";
4
- import { AdminRequest } from "../../../common/admin-interface.js";
5
-
6
- export default {
7
- description: "ADMIN EDITOR GUI",
8
- path: "/",
9
- method: "GET",
10
- handler: async (req: AdminRequest, res: Response) => {
11
- const admin = req.editor;
12
- const errors = admin ? admin.getInflateErrors() : [];
13
- const files = scanDir(req);
14
- const migrations = admin ? admin.getMigrations().map(m => m.name) : [];
15
- const services = admin ? admin.getServices() : ["."];
16
-
17
- return res.html("<!DOCTYPE html>" + String(<html>
18
- <head>
19
- <link rel="stylesheet" href="/admin/editor/style.css" />
20
- </head>
21
- <body>
22
-
23
- <script type="module" src="/admin/editor/editor.js" />
24
- <editor-component
25
- disablelog="true"
26
- disablepreview="true"
27
- disablereload="true"
28
- class="main-container"
29
- reloadstring={`${req?.uuid}`}
30
- migrations={`${HTMLEncode(JSON.stringify(migrations))}`}
31
- services={`${HTMLEncode(JSON.stringify(services))}`}
32
- errors={`${HTMLEncode(JSON.stringify(errors))}`}
33
- files={`${HTMLEncode(JSON.stringify(files))}`}>
34
- <noscript>Enable JavaScript</noscript>
35
- </editor-component>
36
- </body></html>)
37
- );
38
- }
39
- } 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 ? true : false;
14
- },
15
- } as WSConfig;