miqro 7.3.5 → 8.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 (203) hide show
  1. package/README.md +3 -7
  2. package/build/esm/{src/bin → bin}/types.js +1 -2
  3. package/build/esm/{src/common → common}/arguments.d.ts +0 -2
  4. package/build/esm/{src/common → common}/arguments.js +5 -38
  5. package/build/esm/{src/common → common}/assets.js +1 -1
  6. package/build/esm/{src/common → common}/constants.d.ts +11 -0
  7. package/build/esm/{editor/common/templates.js → common/constants.js} +14 -0
  8. package/build/esm/{src/common → common}/esbuild.js +0 -1
  9. package/build/esm/common/help.d.ts +3 -0
  10. package/build/esm/{src/common → common}/help.js +0 -1
  11. package/build/esm/{src/inflate → inflate}/inflate-sea.js +3 -0
  12. package/build/esm/inflate/md.d.ts +1 -0
  13. package/build/esm/inflate/md.js +4 -0
  14. package/build/esm/{src/inflate → inflate}/setup-http.js +2 -3
  15. package/build/esm/{src/main.js → main.js} +0 -1
  16. package/build/esm/{src/services → services}/app.d.ts +0 -1
  17. package/build/esm/{src/services → services}/app.js +1 -53
  18. package/build/esm/{src/services → services}/utils/server-interface.js +18 -3
  19. package/build/esm/{src/services → services}/utils/websocketmanager.d.ts +0 -1
  20. package/build/esm/{src/services → services}/utils/websocketmanager.js +10 -20
  21. package/build/esm/{src/types.d.ts → types.d.ts} +2 -1
  22. package/build/lib.cjs +8297 -11619
  23. package/package.json +11 -23
  24. package/build/editor.bundle.js +0 -12329
  25. package/build/esm/editor/auth.d.ts +0 -6
  26. package/build/esm/editor/auth.js +0 -44
  27. package/build/esm/editor/common/constants.d.ts +0 -4
  28. package/build/esm/editor/common/constants.js +0 -20
  29. package/build/esm/editor/common/constants.server.d.ts +0 -2
  30. package/build/esm/editor/common/constants.server.js +0 -4
  31. package/build/esm/editor/common/editor-index.d.ts +0 -2
  32. package/build/esm/editor/common/editor-index.js +0 -14
  33. package/build/esm/editor/common/html-encode.d.ts +0 -1
  34. package/build/esm/editor/common/html-encode.js +0 -14
  35. package/build/esm/editor/common/log-socket.d.ts +0 -15
  36. package/build/esm/editor/common/log-socket.js +0 -71
  37. package/build/esm/editor/common/templates.d.ts +0 -11
  38. package/build/esm/editor/components/api-preview.d.ts +0 -11
  39. package/build/esm/editor/components/api-preview.js +0 -92
  40. package/build/esm/editor/components/editor.d.ts +0 -16
  41. package/build/esm/editor/components/editor.js +0 -367
  42. package/build/esm/editor/components/file-browser.d.ts +0 -37
  43. package/build/esm/editor/components/file-browser.js +0 -127
  44. package/build/esm/editor/components/file-editor-toolbar.d.ts +0 -22
  45. package/build/esm/editor/components/file-editor-toolbar.js +0 -95
  46. package/build/esm/editor/components/file-editor.d.ts +0 -32
  47. package/build/esm/editor/components/file-editor.js +0 -61
  48. package/build/esm/editor/components/filter-query.d.ts +0 -1
  49. package/build/esm/editor/components/filter-query.js +0 -23
  50. package/build/esm/editor/components/highlight-text-area.d.ts +0 -11
  51. package/build/esm/editor/components/highlight-text-area.js +0 -127
  52. package/build/esm/editor/components/log-viewer.d.ts +0 -6
  53. package/build/esm/editor/components/log-viewer.js +0 -71
  54. package/build/esm/editor/components/new-file.d.ts +0 -10
  55. package/build/esm/editor/components/new-file.js +0 -119
  56. package/build/esm/editor/components/scroll-query.d.ts +0 -7
  57. package/build/esm/editor/components/scroll-query.js +0 -22
  58. package/build/esm/editor/components/start-page.d.ts +0 -13
  59. package/build/esm/editor/components/start-page.js +0 -32
  60. package/build/esm/editor/http/admin/editor/api/fs/delete.api.d.ts +0 -4
  61. package/build/esm/editor/http/admin/editor/api/fs/delete.api.js +0 -30
  62. package/build/esm/editor/http/admin/editor/api/fs/read.api.d.ts +0 -7
  63. package/build/esm/editor/http/admin/editor/api/fs/read.api.js +0 -50
  64. package/build/esm/editor/http/admin/editor/api/fs/rename.api.d.ts +0 -7
  65. package/build/esm/editor/http/admin/editor/api/fs/rename.api.js +0 -40
  66. package/build/esm/editor/http/admin/editor/api/fs/scan.api.d.ts +0 -26
  67. package/build/esm/editor/http/admin/editor/api/fs/scan.api.js +0 -150
  68. package/build/esm/editor/http/admin/editor/api/fs/write.api.d.ts +0 -3
  69. package/build/esm/editor/http/admin/editor/api/fs/write.api.js +0 -39
  70. package/build/esm/editor/http/admin/editor/api/server/reload.api.d.ts +0 -10
  71. package/build/esm/editor/http/admin/editor/api/server/reload.api.js +0 -46
  72. package/build/esm/editor/http/admin/editor/api/server/restart.api.d.ts +0 -10
  73. package/build/esm/editor/http/admin/editor/api/server/restart.api.js +0 -46
  74. package/build/esm/editor/http/admin/editor/editor.d.ts +0 -1
  75. package/build/esm/editor/http/admin/editor/editor.js +0 -8
  76. package/build/esm/editor/http/admin/editor/index.api.d.ts +0 -3
  77. package/build/esm/editor/http/admin/editor/index.api.js +0 -23
  78. package/build/esm/editor/server.d.ts +0 -3
  79. package/build/esm/editor/server.js +0 -49
  80. package/build/esm/editor/ws.d.ts +0 -3
  81. package/build/esm/editor/ws.js +0 -12
  82. package/build/esm/src/common/constants.js +0 -14
  83. package/build/esm/src/common/help.d.ts +0 -3
  84. package/build/esm/src/inflate/md.d.ts +0 -3
  85. package/build/esm/src/inflate/md.js +0 -22
  86. package/build/esm/src/services/editor.d.ts +0 -3
  87. package/build/esm/src/services/editor.js +0 -66
  88. package/build/esm/src/services/utils/admin-interface.d.ts +0 -3
  89. package/build/esm/src/services/utils/admin-interface.js +0 -33
  90. package/build/style.css +0 -620
  91. package/editor/auth.ts +0 -53
  92. package/editor/common/constants.server.ts +0 -5
  93. package/editor/common/constants.ts +0 -21
  94. package/editor/common/editor-index.tsx +0 -17
  95. package/editor/common/html-encode.ts +0 -14
  96. package/editor/common/log-socket.tsx +0 -87
  97. package/editor/common/templates.ts +0 -481
  98. package/editor/components/api-preview.tsx +0 -118
  99. package/editor/components/editor.tsx +0 -496
  100. package/editor/components/file-browser.tsx +0 -311
  101. package/editor/components/file-editor-toolbar.tsx +0 -194
  102. package/editor/components/file-editor.tsx +0 -125
  103. package/editor/components/filter-query.tsx +0 -26
  104. package/editor/components/highlight-text-area.tsx +0 -148
  105. package/editor/components/log-viewer.tsx +0 -113
  106. package/editor/components/new-file.tsx +0 -172
  107. package/editor/components/scroll-query.tsx +0 -25
  108. package/editor/components/start-page.tsx +0 -52
  109. package/editor/http/admin/editor/api/fs/delete.api.tsx +0 -32
  110. package/editor/http/admin/editor/api/fs/read.api.tsx +0 -55
  111. package/editor/http/admin/editor/api/fs/rename.api.tsx +0 -41
  112. package/editor/http/admin/editor/api/fs/scan.api.tsx +0 -181
  113. package/editor/http/admin/editor/api/fs/write.api.tsx +0 -41
  114. package/editor/http/admin/editor/api/server/reload.api.ts +0 -53
  115. package/editor/http/admin/editor/api/server/restart.api.tsx +0 -52
  116. package/editor/http/admin/editor/editor.tsx +0 -10
  117. package/editor/http/admin/editor/index.api.tsx +0 -43
  118. package/editor/server.ts +0 -57
  119. package/editor/ws.ts +0 -17
  120. /package/build/esm/{src/bin → bin}/compile.d.ts +0 -0
  121. /package/build/esm/{src/bin → bin}/compile.js +0 -0
  122. /package/build/esm/{src/bin → bin}/doc-md.d.ts +0 -0
  123. /package/build/esm/{src/bin → bin}/doc-md.js +0 -0
  124. /package/build/esm/{src/bin → bin}/generate-doc.d.ts +0 -0
  125. /package/build/esm/{src/bin → bin}/generate-doc.js +0 -0
  126. /package/build/esm/{src/bin → bin}/test.d.ts +0 -0
  127. /package/build/esm/{src/bin → bin}/test.js +0 -0
  128. /package/build/esm/{src/bin → bin}/types.d.ts +0 -0
  129. /package/build/esm/{src/cluster.d.ts → cluster.d.ts} +0 -0
  130. /package/build/esm/{src/cluster.js → cluster.js} +0 -0
  131. /package/build/esm/{src/common → common}/admin-interface.d.ts +0 -0
  132. /package/build/esm/{src/common → common}/admin-interface.js +0 -0
  133. /package/build/esm/{src/common → common}/assets.d.ts +0 -0
  134. /package/build/esm/{src/common → common}/checksum.d.ts +0 -0
  135. /package/build/esm/{src/common → common}/checksum.js +0 -0
  136. /package/build/esm/{src/common → common}/content-type.d.ts +0 -0
  137. /package/build/esm/{src/common → common}/content-type.js +0 -0
  138. /package/build/esm/{src/common → common}/esbuild.d.ts +0 -0
  139. /package/build/esm/{src/common → common}/exit.d.ts +0 -0
  140. /package/build/esm/{src/common → common}/exit.js +0 -0
  141. /package/build/esm/{src/common → common}/fs.d.ts +0 -0
  142. /package/build/esm/{src/common → common}/fs.js +0 -0
  143. /package/build/esm/{src/common → common}/jsx.d.ts +0 -0
  144. /package/build/esm/{src/common → common}/jsx.js +0 -0
  145. /package/build/esm/{src/common → common}/jwt.d.ts +0 -0
  146. /package/build/esm/{src/common → common}/jwt.js +0 -0
  147. /package/build/esm/{src/common → common}/paths.d.ts +0 -0
  148. /package/build/esm/{src/common → common}/paths.js +0 -0
  149. /package/build/esm/{src/common → common}/watch.d.ts +0 -0
  150. /package/build/esm/{src/common → common}/watch.js +0 -0
  151. /package/build/esm/{src/inflate → inflate}/inflate-sea.d.ts +0 -0
  152. /package/build/esm/{src/inflate → inflate}/inflate.d.ts +0 -0
  153. /package/build/esm/{src/inflate → inflate}/inflate.js +0 -0
  154. /package/build/esm/{src/inflate → inflate}/setup-auth.d.ts +0 -0
  155. /package/build/esm/{src/inflate → inflate}/setup-auth.js +0 -0
  156. /package/build/esm/{src/inflate → inflate}/setup-cors.d.ts +0 -0
  157. /package/build/esm/{src/inflate → inflate}/setup-cors.js +0 -0
  158. /package/build/esm/{src/inflate → inflate}/setup-db.d.ts +0 -0
  159. /package/build/esm/{src/inflate → inflate}/setup-db.js +0 -0
  160. /package/build/esm/{src/inflate → inflate}/setup-error.d.ts +0 -0
  161. /package/build/esm/{src/inflate → inflate}/setup-error.js +0 -0
  162. /package/build/esm/{src/inflate → inflate}/setup-http.d.ts +0 -0
  163. /package/build/esm/{src/inflate → inflate}/setup-log.d.ts +0 -0
  164. /package/build/esm/{src/inflate → inflate}/setup-log.js +0 -0
  165. /package/build/esm/{src/inflate → inflate}/setup-middleware.d.ts +0 -0
  166. /package/build/esm/{src/inflate → inflate}/setup-middleware.js +0 -0
  167. /package/build/esm/{src/inflate → inflate}/setup-server-config.d.ts +0 -0
  168. /package/build/esm/{src/inflate → inflate}/setup-server-config.js +0 -0
  169. /package/build/esm/{src/inflate → inflate}/setup-test.d.ts +0 -0
  170. /package/build/esm/{src/inflate → inflate}/setup-test.js +0 -0
  171. /package/build/esm/{src/inflate → inflate}/setup-ws.d.ts +0 -0
  172. /package/build/esm/{src/inflate → inflate}/setup-ws.js +0 -0
  173. /package/build/esm/{src/inflate → inflate}/setup.doc.d.ts +0 -0
  174. /package/build/esm/{src/inflate → inflate}/setup.doc.js +0 -0
  175. /package/build/esm/{src/inflate → inflate}/utils/sea-utils.d.ts +0 -0
  176. /package/build/esm/{src/inflate → inflate}/utils/sea-utils.js +0 -0
  177. /package/build/esm/{src/lib.d.ts → lib.d.ts} +0 -0
  178. /package/build/esm/{src/lib.js → lib.js} +0 -0
  179. /package/build/esm/{src/main.d.ts → main.d.ts} +0 -0
  180. /package/build/esm/{src/services → services}/hot-reload.d.ts +0 -0
  181. /package/build/esm/{src/services → services}/hot-reload.js +0 -0
  182. /package/build/esm/{src/services → services}/migrations.d.ts +0 -0
  183. /package/build/esm/{src/services → services}/migrations.js +0 -0
  184. /package/build/esm/{src/services → services}/utils/cache.d.ts +0 -0
  185. /package/build/esm/{src/services → services}/utils/cache.js +0 -0
  186. /package/build/esm/{src/services → services}/utils/cluster-cache.d.ts +0 -0
  187. /package/build/esm/{src/services → services}/utils/cluster-cache.js +0 -0
  188. /package/build/esm/{src/services → services}/utils/cluster-ws.d.ts +0 -0
  189. /package/build/esm/{src/services → services}/utils/cluster-ws.js +0 -0
  190. /package/build/esm/{src/services → services}/utils/db-manager.d.ts +0 -0
  191. /package/build/esm/{src/services → services}/utils/db-manager.js +0 -0
  192. /package/build/esm/{src/services → services}/utils/get-route.d.ts +0 -0
  193. /package/build/esm/{src/services → services}/utils/get-route.js +0 -0
  194. /package/build/esm/{src/services → services}/utils/jwt.d.ts +0 -0
  195. /package/build/esm/{src/services → services}/utils/jwt.js +0 -0
  196. /package/build/esm/{src/services → services}/utils/log-transport.d.ts +0 -0
  197. /package/build/esm/{src/services → services}/utils/log-transport.js +0 -0
  198. /package/build/esm/{src/services → services}/utils/log.d.ts +0 -0
  199. /package/build/esm/{src/services → services}/utils/log.js +0 -0
  200. /package/build/esm/{src/services → services}/utils/middleware.d.ts +0 -0
  201. /package/build/esm/{src/services → services}/utils/middleware.js +0 -0
  202. /package/build/esm/{src/services → services}/utils/server-interface.d.ts +0 -0
  203. /package/build/esm/{src/types.js → types.js} +0 -0
@@ -1,17 +0,0 @@
1
- import { scanDir } from "../http/admin/editor/api/fs/scan.api.js";
2
- import { parseInflateErrors } from "../http/admin/editor/api/server/restart.api.js";
3
- import { AdminRequest } from "../../src/common/admin-interface.js";
4
- import { HTMLEncode } from "./html-encode.js";
5
-
6
- export function EditorIndex(editorCSS: string, editorJS: string, enableHotReload: boolean) {
7
- return async function editorIndex(req: AdminRequest, res) {
8
- const admin = req.editor;
9
-
10
- const errors = parseInflateErrors(admin ? admin.getInflateErrors() : []);
11
- const files = scanDir(req);
12
- const migrations = admin ? admin.getMigrations().map(m => m.name) : [];
13
- const services = admin ? admin.getServices() : ["."];
14
- const hotReload = enableHotReload ? (admin ? admin.getHotReloadHTML() : "") : "";
15
- res.html(`<!DOCTYPE html><html><body><style>${editorCSS}</style><script type="module">${editorJS}</script><editor-component class="main-container" reloadstring="${req.uuid}" migrations="${HTMLEncode(JSON.stringify(migrations))}" services="${HTMLEncode(JSON.stringify(services))}" errors="${HTMLEncode(JSON.stringify(errors))}" files="${HTMLEncode(JSON.stringify(files))}"><noscript>Enable JavaScript</noscript></editor-component>${hotReload}</body></html>`)
16
- }
17
- }
@@ -1,14 +0,0 @@
1
- export function HTMLEncode(str: string): string {
2
- let i = str.length;
3
- const aRet: string[] = [];
4
-
5
- while (i--) {
6
- const iC = str[i].charCodeAt(0);
7
- if (iC < 65 || iC > 127 || (iC > 90 && iC < 97)) {
8
- aRet[i] = '&#' + iC + ';';
9
- } else {
10
- aRet[i] = str[i];
11
- }
12
- }
13
- return aRet.join('');
14
- }
@@ -1,87 +0,0 @@
1
- import * as jsx from "@miqro/jsx";
2
-
3
- interface LogLine { out: string; identifier: string; level: "error" | "warn" | "debug" | "trace" | "info" }
4
-
5
- export interface LogSocket {
6
- lines: LogLine[];
7
- clearLog: () => void;
8
- getMaxlogsize: () => number | "unlimited";
9
- setMaxLogSize: (val: number | "unlimited") => void;
10
- }
11
-
12
- export function useLogSocket(options: { disableLog?: boolean; }): LogSocket {
13
-
14
- const [_, setmaxLogSize, getMaxlogsize] = jsx.useState<number | "unlimited">(1000000);
15
-
16
- const [__, setlines, getLines] = jsx.useState<LogLine[]>([]);
17
- const refresh = jsx.useRefresh();
18
-
19
- jsx.useEffect(() => {
20
-
21
- let timeout;
22
-
23
- function setupSocket() {
24
- try {
25
- if (options.disableLog) {
26
- return;
27
- }
28
- console.log("setting up log socket");
29
- const socket = new WebSocket("/admin/socket");
30
- socket.addEventListener("error", (err) => {
31
- console.error(err);
32
- clearTimeout(timeout);
33
- timeout = setTimeout(() => {
34
- setupSocket();
35
- }, 1000);
36
- });
37
- socket.addEventListener("open", () => {
38
- console.log("log socket open");
39
- clearTimeout(timeout);
40
- socket.addEventListener("message", (msg) => {
41
- const lines = getLines();
42
- const data = JSON.parse(msg.data);
43
- //console.log(data.out);
44
- const maxLogSize = getMaxlogsize();
45
- if (maxLogSize !== "unlimited" && lines.length >= maxLogSize) {
46
- lines.splice(0, (lines.length - maxLogSize) + 1);
47
- }
48
- lines.push(data);
49
- setlines(lines);
50
- refresh();
51
- });
52
- });
53
- socket.addEventListener("close", () => {
54
- console.log("log socket close");
55
- clearTimeout(timeout);
56
- timeout = setTimeout(() => {
57
- setupSocket();
58
- }, 1000);
59
- });
60
- } catch (e) {
61
- console.error(e);
62
- clearTimeout(timeout);
63
- timeout = setTimeout(() => {
64
- setupSocket();
65
- }, 1000);
66
- }
67
- }
68
-
69
- setupSocket();
70
- }, []);
71
-
72
- return {
73
- lines: getLines(),
74
- clearLog: () => {
75
- setlines([]);
76
- },
77
- getMaxlogsize,
78
- setMaxLogSize: (newValue: number | "unlimited") => {
79
- if (newValue === "unlimited") {
80
- setmaxLogSize(newValue);
81
- } else {
82
- setmaxLogSize(newValue);
83
- }
84
-
85
- }
86
- }
87
- }
@@ -1,481 +0,0 @@
1
- export const TEMPLATES: {
2
- [name: string]: {
3
- displayName: string;
4
- template?: ((filename: string, httpPath: string) => string);
5
- httpSufix?: string;
6
- sufix?: string;
7
- prefix?: string;
8
- language: string;
9
- filename?: string;
10
- }
11
- } = {
12
- EMPTY: {
13
- displayName: "empty file",
14
- //template: () => "",
15
- sufix: "",
16
- language: "text",
17
- prefix: ""
18
- },
19
- JSON: {
20
- displayName: "a .json.ts file",
21
- template: () => `import { ServerRequest, ServerResponse } from "miqro";
22
-
23
- export default async (req: ServerRequest | null, res: ServerResponse | null) => {
24
- return {
25
- count: 1
26
- }
27
- }`,
28
- sufix: ".json.ts",
29
- language: "typescript",
30
- prefix: ""
31
- },
32
- API: {
33
- prefix: "http",
34
- sufix: ".api.ts",
35
- displayName: ".api.ts file",
36
- language: "typescript",
37
- template: () => `import { ServerRequest, ServerResponse, APIRoute } from "miqro";
38
-
39
- export default {
40
- path: "/health",
41
- description: "checks the health of the service",
42
- method: "GET",
43
- //middleware: [server.middleware.json()],
44
- request: {
45
- /*body: {
46
- someAttr: "string",
47
- optionalArray: "number[]?"
48
- }*/
49
- },
50
- response: {
51
- status: [200, 400],
52
- body: {
53
- status: {
54
- type: "enum",
55
- enumValues: ["OK", "NOK"]
56
- },
57
- message: "string?"
58
- }
59
- },
60
- handler: async (req: ServerRequest, res: ServerResponse) => {
61
- try {
62
- const [{ c }] = await req?.server?.db?.get("MyDB")?.query("SELECT 1+1 as c") as [{ c: number }];
63
- const statusText = String(c) === "2" ? "OK" : "NOK";
64
- return {
65
- status: statusText === "OK" ? 200 : 400,
66
- body: {
67
- status: statusText
68
- }
69
- }
70
- } catch (e) {
71
- req.logger.error(e);
72
- return {
73
- status: 400,
74
- body: {
75
- status: "NOK",
76
- message: e.message
77
- }
78
- };
79
- }
80
- }
81
- } as APIRoute`
82
- },
83
- MIGRATION: {
84
- prefix: "migration",
85
- sufix: ".ts",
86
- displayName: "migration file",
87
- language: "typescript",
88
- template: () => `import { Migration } from "miqro";
89
-
90
- export default {
91
- up: async (db, logger) => {
92
- await db.createTable("mytable", {
93
- id: {
94
- type: "bigint",
95
- autoIncrement: true,
96
- primaryKey: true
97
- },
98
- name: {
99
- type: "string"
100
- }
101
- }).yield(logger);
102
- },
103
- down: async (db, logger) => {
104
- await db.dropTable("mytable").yield(logger);
105
- }
106
- } as Migration;`
107
- },
108
- TEST: {
109
- prefix: "test",
110
- sufix: ".test.tsx",
111
- displayName: "a test file",
112
- language: "typescript",
113
- template: () => `import JSX from "@miqro/jsx";
114
- import { strictEqual } from "node:assert";
115
-
116
- describe("test group", () => {
117
- it("sample test1", async () => {
118
- const response = await test.request({
119
- url: "/index.html"
120
- });
121
- strictEqual(response.status, 200);
122
- });
123
-
124
- it("sample test2", async () => {
125
- await test.jsx.test(async (container, root, runtime) => {
126
- function SomeComponent() {
127
- return <p id="test-id">HelloWorld</p>
128
- }
129
- container.render(<SomeComponent />);
130
- strictEqual(runtime.getElementById("test-id")?.textContent, "HelloWorld");
131
- });
132
- });
133
- });
134
- `
135
- },
136
- HTMLTSX: {
137
- prefix: "http",
138
- sufix: ".html.tsx",
139
- displayName: ".html.tsx file",
140
- language: "typescript",
141
- template: () => `import JSX from "@miqro/jsx";
142
- import { ServerRequest, ServerResponse, APIOptions } from "miqro";
143
-
144
- /*export const apiOptions: APIOptions = {
145
- path: ["/", "/index.html"],
146
- method: ["GET"]
147
- };*/
148
-
149
- export default async (req: ServerRequest | null, res: ServerResponse | null) => {
150
- return <html>
151
- <head></head>
152
- <body>
153
- <h1>hello world!</h1>
154
- </body>
155
- </html>;
156
- }`
157
- },
158
- AUTHCONFIG: {
159
- prefix: "",
160
- sufix: ".ts",
161
- filename: "auth",
162
- displayName: "auth.ts file",
163
- language: "typescript",
164
- template: () => `import { AuthConfig } from "miqro";
165
-
166
- export default {
167
- //path: ["/api/"], //optionaly specify a custom path list
168
- /*options: {
169
- tokenLocation: "free",// "query"//"cookie" //"header"
170
- tokenLocationName: "x-auth"
171
- },*/
172
- authService: {
173
- verify: async ({ token, req, res }) => {
174
- // TODO Implement logic
175
- return null;
176
- /*return {
177
- username: "username",
178
- groups: ["someapi"],
179
- account: "account",
180
- token: ""
181
- };*/
182
- }
183
- }
184
- } as AuthConfig;
185
- `
186
- },
187
- DOCCONFIG: {
188
- prefix: "",
189
- sufix: ".ts",
190
- filename: "doc",
191
- displayName: "doc.ts file",
192
- language: "typescript",
193
- template: () => `import { DocConfig } from "miqro";
194
-
195
- export default {
196
- // auto publish API documentation
197
- publish: {
198
- "/api/doc.html": {
199
- type: "HTML", // can be "MD" | "JSON" | "HTML"
200
- //all: true, // enable to show .html and other static resources
201
- }
202
- }
203
- } as DocConfig;`
204
- },
205
- WSCONFIG: {
206
- prefix: "",
207
- sufix: ".ts",
208
- filename: "ws",
209
- displayName: "ws.ts file",
210
- language: "typescript",
211
- template: () => `import { WSConfig } from "miqro";
212
-
213
- export default {
214
- path: "/socket",
215
- //disabled: true,
216
- //maxConnections: 100,
217
- /*onConnection(req) {
218
-
219
- },*/
220
- /*onDisconnect: (req) => {
221
-
222
- },*/
223
- /*onError: (req, error) => {
224
-
225
- },*/
226
- /*onMessage: (req, data) => {
227
-
228
- },*/
229
- validate(req) {
230
- // TODO implement logic
231
- return false;
232
- },
233
- } as WSConfig;
234
- `
235
- },
236
- SERVERCONFIG: {
237
- prefix: "",
238
- sufix: ".ts",
239
- filename: "server",
240
- displayName: "server.ts file",
241
- language: "typescript",
242
- template: () => `import { ServerConfig } from "miqro";
243
-
244
- export default {
245
- preload: async (server) => {
246
- server.logger.info("server preload");
247
- /* uncomment code below to migrate-up the database "MyDB" before loading */
248
- /*if (server?.isPrimaryWorker()) {
249
- await server.db.migrate({ direction: "up", dbName: "MyDB" });
250
- }*/
251
- },
252
- load: async (server) => {
253
- server.logger.info("server loaded");
254
- },
255
- start: async (server) => {
256
- server.logger.info("server started");
257
- if (server.isPrimaryWorker()) {
258
- try {
259
- server.openBrowser("/index.html");
260
- } catch (e) {
261
- server.logger.error(e.message);
262
- }
263
- }
264
- },
265
- unload: (server) => {
266
- server.logger.info("server unload");
267
- },
268
- stop: (server) => {
269
- server.logger.info("server stop");
270
- }
271
- } as ServerConfig;
272
- `},
273
- TSCONFIGJSON: {
274
- prefix: "",
275
- sufix: ".json",
276
- filename: "tsconfig",
277
- displayName: "tsconfig.json file",
278
- language: "json",
279
- template: () => `{
280
- "compilerOptions": {
281
- "target": "es2022",
282
- "noEmit": true,
283
- "module": "NodeNext",
284
- "moduleResolution": "nodenext",
285
- "lib": ["es2021", "dom"],
286
- "jsx": "react",
287
- "jsxFactory": "JSX.createElement",
288
- "jsxFragmentFactory": "JSX.Fragment"
289
- }
290
- }
291
- `},
292
- MIQROJSON: {
293
- prefix: "",
294
- sufix: ".json",
295
- filename: "miqro",
296
- displayName: "miqro.json file",
297
- language: "json",
298
- template: () => `{
299
- "services": ["src/"],
300
- "inflateDir": "build/",
301
- "name": "server",
302
- "browser": true,
303
- "logFile": false,
304
- "port": "3000"
305
- }
306
- `},
307
- MINIFIEDJSX: {
308
- prefix: "http",
309
- sufix: ".min.tsx",
310
- displayName: "min.tsx file",
311
- language: "typescript",
312
- template: () => `import JSX from "@miqro/jsx";
313
- import { define } from "@miqro/jsx-dom";
314
-
315
- export function MyComponent() {
316
- return <p>HelloWorld</p>
317
- }
318
- window.addEventListener("load", (event) => {
319
- define("my-tag", MyComponent, {
320
- shadowInit: false,
321
- observedAttributes: []
322
- });
323
- });
324
- `},
325
- JSX: {
326
- prefix: "http",
327
- sufix: ".tsx",
328
- displayName: ".tsx file",
329
- language: "typescript",
330
- template: () => `import JSX from "@miqro/jsx";
331
- import { define } from "@miqro/jsx-dom";
332
-
333
- export function MyComponent() {
334
- return <p>HelloWorld</p>
335
- }
336
- window.addEventListener("load", (event) => {
337
- define("my-tag", MyComponent, {
338
- shadowInit: false,
339
- observedAttributes: []
340
- });
341
- });
342
- `},
343
- /*SSRTSX: {
344
- prefix: "http",
345
- sufix: ".tsx",
346
- displayName: "an ssr component example using webcomponents",
347
- language: "typescript",
348
- httpSufix: ".js",
349
- template: (_filename: string, httpPath: string) => `import { } from "miqro";
350
-
351
- // TODO change this accordingly
352
- const TAG = "my-tag";
353
-
354
- function MyComponent(props, children) {
355
- const [count, setcount] = jsx.useState(0);
356
- jsx.useEffect(()=>{
357
- const timeout = setTimeout(()=>{
358
- setcount(count+1);
359
- }, 1000);
360
- return ()=>{
361
- clearTimeout(timeout);
362
- }
363
- });
364
- return <p>Count: {count}</p>
365
- }
366
-
367
- window.addEventListener("load", (event) => {
368
- jsx.define(TAG, MyComponent, {
369
- shadowInit: false,
370
- observedAttributes: []
371
- });
372
- });
373
-
374
- export function SSRComponent(props, children) {
375
- return JSX.createElement(
376
- JSX.Fragment, null,
377
- JSX.createElement(TAG, props,
378
- JSX.createElement(MyComponent, props, ...children)
379
- ),
380
- JSX.createElement("script", { type: "module", src: "/${httpPath}" })
381
- );
382
- }
383
- `
384
- },
385
- SSRMINTSX: {
386
- prefix: "http",
387
- sufix: ".min.tsx",
388
- displayName: "a minified ssr component example using webcomponents",
389
- language: "typescript",
390
- httpSufix: ".min.js",
391
- template: (filename: string, httpPath: string) => `import { } from "miqro";
392
-
393
- // TODO change this accordingly
394
- const TAG = "my-tag";
395
-
396
- function MyComponent(props, children) {
397
- const [count, setcount] = jsx.useState(0);
398
- jsx.useEffect(()=>{
399
- const timeout = setTimeout(()=>{
400
- setcount(count+1);
401
- }, 1000);
402
- return ()=>{
403
- clearTimeout(timeout);
404
- }
405
- });
406
- return <p>Count: {count}</p>
407
- }
408
-
409
- window.addEventListener("load", (event) => {
410
- jsx.define(TAG, MyComponent, {
411
- shadowInit: false,
412
- observedAttributes: []
413
- });
414
- });
415
-
416
- export function SSRComponent(props, children) {
417
- return JSX.createElement(
418
- JSX.Fragment, null,
419
- JSX.createElement(TAG, props,
420
- JSX.createElement(MyComponent, props, ...children)
421
- ),
422
- JSX.createElement("script", { type: "module", src: "/${httpPath}" })
423
- );
424
- }
425
- `
426
- },*/
427
- JS: {
428
- prefix: "http",
429
- sufix: ".js",
430
- displayName: ".js file",
431
- language: "typescript",
432
- template: () => `window.addEventListener("load", (event) => {
433
-
434
- });
435
- `},
436
- CSS: {
437
- prefix: "http",
438
- sufix: ".css",
439
- displayName: ".css file",
440
- language: "css",
441
- template: () => `* {
442
- font-family: "Menlo" !important;
443
- font-size: 11px;
444
- }
445
- `
446
- },
447
- DBCONFIG: {
448
- prefix: "",
449
- filename: "db",
450
- sufix: ".ts",
451
- displayName: "db.ts file",
452
- language: "typescript",
453
- template: () => `import { DBConfig } from "miqro";
454
-
455
- export default {
456
- //dialect: "node:sqlite"
457
- //storage: "./db.sqlite3"
458
- //url: "..."
459
- //disabled: false,
460
- name: "MyDB"
461
- } as DBConfig`
462
- },
463
- CORS: {
464
- prefix: "",
465
- filename: "cors",
466
- sufix: ".ts",
467
- displayName: "cors.ts file",
468
- language: "typescript",
469
- template: () => `import { CORSConfig } from "miqro";
470
-
471
- export default {
472
- origins: "*",
473
- /*validate: (origin: string, origins: string | string[]) => {
474
- return false
475
- },
476
- methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
477
- preflightContinue: false*/
478
- } as CORSConfig;
479
- `
480
- }
481
- }