miqro 6.0.8 → 6.0.10
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.
- package/build/editor.bundle.js +24 -7
- package/build/esm/editor/common/log-socket.d.ts +3 -1
- package/build/esm/editor/common/log-socket.js +4 -1
- package/build/esm/editor/common/log-socket.js.map +1 -1
- package/build/esm/editor/components/editor.js +4 -1
- package/build/esm/editor/components/editor.js.map +1 -1
- package/build/esm/editor/components/file-browser.js +28 -23
- package/build/esm/editor/components/file-browser.js.map +1 -1
- package/build/esm/editor/components/file-editor-toolbar.js +4 -4
- package/build/esm/editor/components/file-editor-toolbar.js.map +1 -1
- package/build/esm/editor/http/admin/editor/api/server/reload.api.js +2 -1
- package/build/esm/editor/http/admin/editor/api/server/reload.api.js.map +1 -1
- package/build/esm/editor/http/admin/editor/index.api.js +1 -1
- package/build/esm/src/common/arguments.js +12 -7
- package/build/esm/src/common/arguments.js.map +1 -1
- package/build/esm/src/common/assets.d.ts +1 -0
- package/build/esm/src/common/assets.js +1 -1
- package/build/esm/src/common/assets.js.map +1 -1
- package/build/esm/src/common/jsx.d.ts +3 -3
- package/build/esm/src/common/jsx.js +36 -22
- package/build/esm/src/common/jsx.js.map +1 -1
- package/build/esm/src/common/watch.d.ts +3 -1
- package/build/esm/src/common/watch.js +5 -0
- package/build/esm/src/common/watch.js.map +1 -1
- package/build/esm/src/services/app.d.ts +6 -1
- package/build/esm/src/services/app.js +36 -117
- package/build/esm/src/services/app.js.map +1 -1
- package/build/esm/src/services/utils/admin-interface.d.ts +3 -0
- package/build/esm/src/services/utils/admin-interface.js +34 -0
- package/build/esm/src/services/utils/admin-interface.js.map +1 -0
- package/build/esm/src/services/utils/cluster-cache.d.ts +2 -1
- package/build/esm/src/services/utils/cluster-cache.js +5 -1
- package/build/esm/src/services/utils/cluster-cache.js.map +1 -1
- package/build/esm/src/services/utils/cluster-ws.d.ts +1 -0
- package/build/esm/src/services/utils/cluster-ws.js +4 -0
- package/build/esm/src/services/utils/cluster-ws.js.map +1 -1
- package/build/esm/src/services/utils/db-manager.d.ts +1 -0
- package/build/esm/src/services/utils/db-manager.js +12 -0
- package/build/esm/src/services/utils/db-manager.js.map +1 -1
- package/build/esm/src/services/utils/log-transport.d.ts +7 -0
- package/build/esm/src/services/utils/log-transport.js +75 -0
- package/build/esm/src/services/utils/log-transport.js.map +1 -0
- package/build/esm/src/services/utils/websocketmanager.d.ts +1 -0
- package/build/esm/src/services/utils/websocketmanager.js +11 -3
- package/build/esm/src/services/utils/websocketmanager.js.map +1 -1
- package/build/lib.cjs +204 -129
- package/editor/common/log-socket.tsx +4 -1
- package/editor/components/editor.tsx +4 -1
- package/editor/components/file-browser.tsx +48 -35
- package/editor/components/file-editor-toolbar.tsx +4 -0
- package/editor/http/admin/editor/api/server/reload.api.ts +2 -1
- package/editor/http/admin/editor/index.api.tsx +4 -4
- package/package.json +9 -7
- package/sea/compile.sh +8 -5
- package/sea/install-esbuild.sh +1 -1
- package/sea/install-nodejs.sh +1 -1
- package/sea/node.version.tag +1 -1
- package/sea/version.tag.js +11 -0
- package/src/common/arguments.ts +11 -7
- package/src/common/assets.ts +1 -1
- package/src/common/jsx.ts +35 -23
- package/src/common/watch.ts +5 -0
- package/src/services/app.ts +37 -115
- package/src/services/utils/admin-interface.ts +37 -0
- package/src/services/utils/cluster-cache.ts +6 -1
- package/src/services/utils/cluster-ws.ts +6 -1
- package/src/services/utils/db-manager.ts +13 -0
- package/src/services/utils/log-transport.ts +75 -0
- package/src/services/utils/websocketmanager.ts +13 -3
- package/package.json--OLD +0 -36
|
@@ -44,27 +44,33 @@ export function FileBrowser(props: FileBrowserProps) {
|
|
|
44
44
|
ev.preventDefault();
|
|
45
45
|
props.togglePanel("left");
|
|
46
46
|
}}>{"<<"}</button>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
47
|
+
{props.disableLog ? <></> :
|
|
48
|
+
<button
|
|
49
|
+
id="log-btn"
|
|
50
|
+
class="file-editor-button btn"
|
|
51
|
+
style={`width: 30%;${props.disableLog ? "display: none;" : ""}`}
|
|
52
|
+
onclick={ev => {
|
|
53
|
+
ev.preventDefault();
|
|
54
|
+
props.togglePanel("bottom");
|
|
55
|
+
}}>log</button>}
|
|
56
|
+
{props.disableReload ? <></> :
|
|
57
|
+
<button
|
|
58
|
+
id="scan-btn"
|
|
59
|
+
class="file-editor-button btn active"
|
|
60
|
+
style={`width: 30%;${props.disableReload ? "display: none;" : ""}`}
|
|
61
|
+
onclick={ev => {
|
|
62
|
+
ev.preventDefault();
|
|
63
|
+
props.scanFiles();
|
|
64
|
+
}}>scan</button>}
|
|
65
|
+
{props.disableReload ? <></> :
|
|
66
|
+
<button
|
|
67
|
+
id="reload-btn"
|
|
68
|
+
class="file-editor-button btn warning"
|
|
69
|
+
style={`width: 30%;${props.disableReload ? "display: none;" : ""}`}
|
|
70
|
+
onclick={ev => {
|
|
71
|
+
ev.preventDefault();
|
|
72
|
+
props.reloadServer();
|
|
73
|
+
}}>reload</button>}
|
|
68
74
|
</div>
|
|
69
75
|
<div class="row">
|
|
70
76
|
<input
|
|
@@ -79,28 +85,34 @@ export function FileBrowser(props: FileBrowserProps) {
|
|
|
79
85
|
placeholder={"..filter.."} />
|
|
80
86
|
</div>
|
|
81
87
|
<div class="row">
|
|
88
|
+
{props.disablePreview ? <></> :
|
|
89
|
+
<button
|
|
90
|
+
id="preview-btn"
|
|
91
|
+
class="file-editor-button btn"
|
|
92
|
+
style={`width: 30%;${props.disablePreview ? "display: none;" : ""}`}
|
|
93
|
+
onclick={ev => {
|
|
94
|
+
ev.preventDefault();
|
|
95
|
+
props.togglePanel("right");
|
|
96
|
+
}}>preview</button>}
|
|
82
97
|
<button
|
|
83
|
-
|
|
84
|
-
style={`width: 30%;${props.disablePreview ? "display: none;" : ""}`}
|
|
85
|
-
onclick={ev => {
|
|
86
|
-
ev.preventDefault();
|
|
87
|
-
props.togglePanel("right");
|
|
88
|
-
}}>preview</button>
|
|
89
|
-
<button
|
|
98
|
+
id="new-btn"
|
|
90
99
|
class="file-editor-button btn info"
|
|
91
100
|
style="width: 20%;"
|
|
92
101
|
onclick={ev => {
|
|
93
102
|
ev.preventDefault();
|
|
94
103
|
props.showNewFile();
|
|
95
104
|
}}>new</button>
|
|
105
|
+
{props.disableReload ? <></> :
|
|
106
|
+
<button
|
|
107
|
+
id="scan-btn"
|
|
108
|
+
class="file-editor-button btn active"
|
|
109
|
+
style={`width: 30%;${!props.disableReload ? "display: none;" : ""}`}
|
|
110
|
+
onclick={ev => {
|
|
111
|
+
ev.preventDefault();
|
|
112
|
+
props.scanFiles();
|
|
113
|
+
}}>scan</button>}
|
|
96
114
|
<button
|
|
97
|
-
|
|
98
|
-
style={`width: 30%;${!props.disableReload ? "display: none;" : ""}`}
|
|
99
|
-
onclick={ev => {
|
|
100
|
-
ev.preventDefault();
|
|
101
|
-
props.scanFiles();
|
|
102
|
-
}}>scan</button>
|
|
103
|
-
<button
|
|
115
|
+
id="saveall-btn"
|
|
104
116
|
class="file-editor-button btn success"
|
|
105
117
|
style="width: 25%;"
|
|
106
118
|
onclick={ev => {
|
|
@@ -109,6 +121,7 @@ export function FileBrowser(props: FileBrowserProps) {
|
|
|
109
121
|
|
|
110
122
|
}}>save</button>
|
|
111
123
|
<button
|
|
124
|
+
id="closeall-btn"
|
|
112
125
|
class="file-editor-button btn danger"
|
|
113
126
|
style="width: 25%;"
|
|
114
127
|
onclick={ev => {
|
|
@@ -43,6 +43,7 @@ export function FileEditorToolbar(props: FileEditorToolbar) {
|
|
|
43
43
|
props.togglePanel("left");
|
|
44
44
|
}}>{">>"}</button>
|
|
45
45
|
<button
|
|
46
|
+
id="save-btn"
|
|
46
47
|
disabled={!props.changed}
|
|
47
48
|
class={`btn success`}
|
|
48
49
|
onclick={ev => {
|
|
@@ -50,6 +51,7 @@ export function FileEditorToolbar(props: FileEditorToolbar) {
|
|
|
50
51
|
props.saveFile();
|
|
51
52
|
}}>save</button>
|
|
52
53
|
{props.disableReload ? <></> : <button
|
|
54
|
+
id="savereload-btn"
|
|
53
55
|
disabled={!props.changed}
|
|
54
56
|
class={`btn info`}
|
|
55
57
|
style="margin-left: var(--file-browser-separation);"
|
|
@@ -58,6 +60,7 @@ export function FileEditorToolbar(props: FileEditorToolbar) {
|
|
|
58
60
|
props.saveFile(true);
|
|
59
61
|
}}>save/reload</button>}
|
|
60
62
|
<button
|
|
63
|
+
id="revert-btn"
|
|
61
64
|
disabled={!props.changed}
|
|
62
65
|
style="margin-left: var(--file-browser-separation);"
|
|
63
66
|
class={`btn warning`}
|
|
@@ -66,6 +69,7 @@ export function FileEditorToolbar(props: FileEditorToolbar) {
|
|
|
66
69
|
props.revertFile();
|
|
67
70
|
}}>revert</button>
|
|
68
71
|
<button
|
|
72
|
+
id="close-btn"
|
|
69
73
|
class={`btn danger`}
|
|
70
74
|
style="margin-left: var(--file-browser-separation);"
|
|
71
75
|
onclick={ev => {
|
|
@@ -30,11 +30,12 @@ export default {
|
|
|
30
30
|
},
|
|
31
31
|
handler: async (req: AdminRequest, res) => {
|
|
32
32
|
const errors = await req?.editor?.reload();
|
|
33
|
+
const parsedErrors = parseInflateErrors(errors);
|
|
33
34
|
return res.json({
|
|
34
35
|
message: "OK",
|
|
35
36
|
reloadString: req.uuid,
|
|
36
37
|
migrations: req?.editor?.getMigrations().map(m => m.name),
|
|
37
|
-
errors:
|
|
38
|
+
errors: parsedErrors ? parsedErrors : []
|
|
38
39
|
});
|
|
39
40
|
},
|
|
40
41
|
} as APIRoute;
|
|
@@ -22,11 +22,11 @@ export default {
|
|
|
22
22
|
|
|
23
23
|
<script type="module" src="/admin/editor/editor.js" />
|
|
24
24
|
<editor-component
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
disablelog="true"
|
|
26
|
+
disablepreview="true"
|
|
27
|
+
disablereload="true"
|
|
28
28
|
class="main-container"
|
|
29
|
-
|
|
29
|
+
reloadstring={`${req?.uuid}`}
|
|
30
30
|
migrations={`${HTMLEncode(JSON.stringify(migrations))}`}
|
|
31
31
|
services={`${HTMLEncode(JSON.stringify(services))}`}
|
|
32
32
|
errors={`${HTMLEncode(JSON.stringify(errors))}`}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "miqro",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.10",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "build/esm/src/lib.js",
|
|
@@ -8,13 +8,15 @@
|
|
|
8
8
|
"author": "claukers",
|
|
9
9
|
"license": "ISC",
|
|
10
10
|
"scripts": {
|
|
11
|
-
"
|
|
12
|
-
"
|
|
11
|
+
"pretest": "npm run build",
|
|
12
|
+
"test": "BROWSER=none node --enable-source-maps --test test/cases/*.test.js",
|
|
13
|
+
"coverage": "BROWSER=none node --enable-source-maps --experimental-test-coverage --test test/cases/*.test.js",
|
|
13
14
|
"prepare": "npm run build",
|
|
14
15
|
"release:package": "sh sea/release-tar.sh",
|
|
15
16
|
"prerelease:package": "npm run compile",
|
|
16
17
|
"build": "tsc",
|
|
17
|
-
"postbuild": "npm run postbuild:lib && npm run postbuild:postject && npm run postbuild:sh && npm run postbuild:jsxdom && npm run postbuild:editor && npm run postbuild:types",
|
|
18
|
+
"postbuild": "npm run postbuild:lib && npm run postbuild:postject && npm run postbuild:sh && npm run postbuild:jsxdom && npm run postbuild:editor && npm run postbuild:types && npm run postbuild:versiontag",
|
|
19
|
+
"postbuild:versiontag": "node sea/version.tag.js",
|
|
18
20
|
"postbuild:types": "sh sea/copy-types.sh && node sea/generate-global-types-asset-json.js",
|
|
19
21
|
"postbuild:editor": "esbuild --log-level=silent --external:node:process --external:node:path --platform=neutral --bundle --loader:.js=jsx --jsx-factory=jsx.createElement --jsx-fragment=jsx.Fragment sea/editor-assets/editor.bundle.in.mjs --outfile=build/editor.bundle.js",
|
|
20
22
|
"postbuild:jsxdom": "cp node_modules/@miqro/jsx-dom/build/jsx-dom.esm.bundle.js build/jsx.dom.js",
|
|
@@ -35,7 +37,8 @@
|
|
|
35
37
|
"@types/cookie": "^0.6.0",
|
|
36
38
|
"@types/node": "^22.10.2",
|
|
37
39
|
"postject": "1.0.0-alpha.6",
|
|
38
|
-
"typescript": "^5.7.2"
|
|
40
|
+
"typescript": "^5.7.2",
|
|
41
|
+
"highlight.js": "11.11.1"
|
|
39
42
|
},
|
|
40
43
|
"dependencies": {
|
|
41
44
|
"@miqro/core": "^5.0.13",
|
|
@@ -48,8 +51,7 @@
|
|
|
48
51
|
"@miqro/test": "^0.2.9",
|
|
49
52
|
"@miqro/test-http": "^0.1.2",
|
|
50
53
|
"@types/showdown": "2.0.6",
|
|
51
|
-
"esbuild": "0.25.
|
|
52
|
-
"highlight.js": "11.11.1",
|
|
54
|
+
"esbuild": "0.25.4",
|
|
53
55
|
"showdown": "2.1.0"
|
|
54
56
|
}
|
|
55
57
|
}
|
package/sea/compile.sh
CHANGED
|
@@ -14,6 +14,9 @@ TSC_BIN="sh sea/tsc.sh"
|
|
|
14
14
|
sh sea/copy-types.sh
|
|
15
15
|
$NODE_BIN sea/generate-global-types-asset-json.js
|
|
16
16
|
|
|
17
|
+
#version.tag
|
|
18
|
+
$NODE_BIN sea/version.tag.js
|
|
19
|
+
|
|
17
20
|
rm -Rf bin;
|
|
18
21
|
mkdir -p bin/;
|
|
19
22
|
rm -Rf build;
|
|
@@ -23,12 +26,12 @@ mkdir -p build/;
|
|
|
23
26
|
echo $TSC_BIN
|
|
24
27
|
$TSC_BIN
|
|
25
28
|
|
|
26
|
-
CURRENT_GIT_BRANCH=`git rev-parse --abbrev-ref HEAD`
|
|
27
|
-
CURRENT_GIT_SHORT_HASH=`git rev-parse --short HEAD`
|
|
28
|
-
CURRENT_DATE=`date +"%y-%m-%d"`
|
|
29
|
-
VERSION_TAG="${CURRENT_DATE}_${CURRENT_GIT_SHORT_HASH}_${CURRENT_GIT_BRANCH}"
|
|
29
|
+
#CURRENT_GIT_BRANCH=`git rev-parse --abbrev-ref HEAD`
|
|
30
|
+
#CURRENT_GIT_SHORT_HASH=`git rev-parse --short HEAD`
|
|
31
|
+
#CURRENT_DATE=`date +"%y-%m-%d"`
|
|
32
|
+
#VERSION_TAG="${CURRENT_DATE}_${CURRENT_GIT_SHORT_HASH}_${CURRENT_GIT_BRANCH}"
|
|
30
33
|
|
|
31
|
-
echo $VERSION_TAG > sea/version.tag
|
|
34
|
+
#echo $VERSION_TAG > sea/version.tag
|
|
32
35
|
|
|
33
36
|
# jsx.js
|
|
34
37
|
cp node_modules/@miqro/jsx-dom/build/jsx-dom.esm.bundle.js build/jsx.dom.js
|
package/sea/install-esbuild.sh
CHANGED
package/sea/install-nodejs.sh
CHANGED
package/sea/node.version.tag
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
24.0.0
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { resolve, dirname } from "node:path";
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
|
|
5
|
+
export const __package_dirname = import.meta.url ? resolve(dirname(fileURLToPath(import.meta.url))) : null;
|
|
6
|
+
|
|
7
|
+
const version = JSON.parse(readFileSync(resolve(__package_dirname, "../package.json")).toString()).version;
|
|
8
|
+
|
|
9
|
+
console.log("writing [%s] with [%s]", resolve(__package_dirname, "version.tag"), version);
|
|
10
|
+
|
|
11
|
+
writeFileSync(resolve(__package_dirname, "version.tag"), version);
|
package/src/common/arguments.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { checkEnvVariable } from "@miqro/core";
|
|
2
|
-
import { existsSync, statSync } from "node:fs";
|
|
2
|
+
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
3
3
|
import { resolve } from "node:path";
|
|
4
4
|
import { cwd, env, platform, arch } from "node:process";
|
|
5
5
|
|
|
@@ -10,7 +10,7 @@ import { BIN_NAME, help, usage } from "./help.js";
|
|
|
10
10
|
import { TEST_SOCKET } from "./paths.js";
|
|
11
11
|
import { isSea } from "node:sea";
|
|
12
12
|
import cluster from "node:cluster";
|
|
13
|
-
import { getVersion } from "./assets.js";
|
|
13
|
+
import { __package_dirname, getVersion } from "./assets.js";
|
|
14
14
|
|
|
15
15
|
export function getPORT() {
|
|
16
16
|
return checkEnvVariable("PORT", "8080");
|
|
@@ -84,8 +84,12 @@ export function parseArguments(): Arguments {
|
|
|
84
84
|
console.log("version [%s]", VERSION);
|
|
85
85
|
console.log("Node.js version [%s]", NODE_VERSION);
|
|
86
86
|
console.log("esbuild version [%s]", ESBUILD_VERSION);
|
|
87
|
+
console.log("platform [%s-%s]", platform, arch);
|
|
88
|
+
} else {
|
|
89
|
+
const packageJSON = JSON.parse(readFileSync(resolve(__package_dirname, "package.json")).toString());
|
|
90
|
+
const VERSION = packageJSON.version;
|
|
91
|
+
console.log("version [%s]", VERSION);
|
|
87
92
|
}
|
|
88
|
-
console.log("platform [%s-%s]", platform, arch);
|
|
89
93
|
process.exit(EXIT_CODES.NORMAL_EXIT);
|
|
90
94
|
case "-h":
|
|
91
95
|
case "--help":
|
|
@@ -319,22 +323,22 @@ export function parseArguments(): Arguments {
|
|
|
319
323
|
process.exit(EXIT_CODES.BAD_ARGUMENTS);
|
|
320
324
|
}
|
|
321
325
|
|
|
322
|
-
if (flags.test && (flags.editor)) {
|
|
326
|
+
if (flags.test && (flags.hotreload || flags.editor || flags.compile || flags.inflate)) {
|
|
323
327
|
console.error("bad arguments. cannot use --editor with --test");
|
|
324
328
|
process.exit(EXIT_CODES.BAD_ARGUMENTS);
|
|
325
329
|
}
|
|
326
330
|
|
|
327
|
-
if (flags.migrateUp && (flags.editor || flags.compile || flags.test || flags.migrateDown || flags.inflate)) {
|
|
331
|
+
if (flags.migrateUp && (flags.hotreload || flags.editor || flags.compile || flags.test || flags.migrateDown || flags.inflate)) {
|
|
328
332
|
console.error("bad arguments. cannot use with --migrate-up");
|
|
329
333
|
process.exit(EXIT_CODES.BAD_ARGUMENTS);
|
|
330
334
|
}
|
|
331
335
|
|
|
332
|
-
if (flags.migrateDown && (flags.editor || flags.compile || flags.test || flags.migrateUp || flags.inflate)) {
|
|
336
|
+
if (flags.migrateDown && (flags.hotreload || flags.editor || flags.compile || flags.test || flags.migrateUp || flags.inflate)) {
|
|
333
337
|
console.error("bad arguments. cannot use with --migrate-down");
|
|
334
338
|
process.exit(EXIT_CODES.BAD_ARGUMENTS);
|
|
335
339
|
}
|
|
336
340
|
|
|
337
|
-
if (flags.generateDoc && (flags.editor || flags.compile || flags.test || flags.migrateUp || flags.inflate || flags.migrateDown)) {
|
|
341
|
+
if (flags.generateDoc && (flags.hotreload || flags.editor || flags.compile || flags.test || flags.migrateUp || flags.inflate || flags.migrateDown)) {
|
|
338
342
|
console.error("bad arguments. cannot use with --generate-doc");
|
|
339
343
|
process.exit(EXIT_CODES.BAD_ARGUMENTS);
|
|
340
344
|
}
|
package/src/common/assets.ts
CHANGED
|
@@ -10,7 +10,7 @@ import { initESBuild } from "./esbuild.js";
|
|
|
10
10
|
import { initJSXJS } from "./jsx.js";
|
|
11
11
|
//const require = createRequire(import.meta.url);
|
|
12
12
|
|
|
13
|
-
const __package_dirname = import.meta.url ? resolve(dirname(fileURLToPath(import.meta.url)), "..", "..", "..", "..") : null;
|
|
13
|
+
export const __package_dirname = import.meta.url ? resolve(dirname(fileURLToPath(import.meta.url)), "..", "..", "..", "..") : null;
|
|
14
14
|
|
|
15
15
|
const ASSETS_ROUTER = {
|
|
16
16
|
"lib.cjs": "build/lib.cjs",
|
package/src/common/jsx.ts
CHANGED
|
@@ -126,16 +126,6 @@ export async function inflateJSX(inFile: string, options: InflateOptions): Promi
|
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
export async function importAPIRoute(inFile: string, logger?: Logger) {
|
|
130
|
-
const mod = (await importJSXFile(inFile, logger)).default;
|
|
131
|
-
const module = typeof mod === "function" ? { handler: mod } : parser.parse(mod, APIRouteSchema, basename(inFile));
|
|
132
|
-
if (module !== undefined) {
|
|
133
|
-
return module as APIRoute;
|
|
134
|
-
} else {
|
|
135
|
-
throw new Error(`error with module [${inFile}] undefined`);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
129
|
export const APIOptionsSchema: Schema<APIOptions> = {
|
|
140
130
|
type: "object?",
|
|
141
131
|
properties: {
|
|
@@ -155,7 +145,8 @@ export const APIOptionsSchema: Schema<APIOptions> = {
|
|
|
155
145
|
properties: SessionHandlerOptionsSchema.properties
|
|
156
146
|
},
|
|
157
147
|
...RouteOptionsSchema.properties
|
|
158
|
-
}
|
|
148
|
+
},
|
|
149
|
+
//mode:"add_extra"
|
|
159
150
|
};
|
|
160
151
|
|
|
161
152
|
export interface HTMLModule {
|
|
@@ -170,7 +161,8 @@ export const HTMLModuleSchema: Schema<HTMLModule> = {
|
|
|
170
161
|
type: "function|object"
|
|
171
162
|
},
|
|
172
163
|
apiOptions: APIOptionsSchema
|
|
173
|
-
}
|
|
164
|
+
},
|
|
165
|
+
//mode:"add_extra"
|
|
174
166
|
}
|
|
175
167
|
|
|
176
168
|
export type JSONModuleValue = string | object;
|
|
@@ -187,7 +179,8 @@ export const JSONModuleSchema: Schema<JSONModule> = {
|
|
|
187
179
|
type: "function|object|string"
|
|
188
180
|
},
|
|
189
181
|
apiOptions: APIOptionsSchema
|
|
190
|
-
}
|
|
182
|
+
},
|
|
183
|
+
//mode:"add_extra"
|
|
191
184
|
}
|
|
192
185
|
|
|
193
186
|
export const MigrationSchema: Schema<Migration> = {
|
|
@@ -195,7 +188,8 @@ export const MigrationSchema: Schema<Migration> = {
|
|
|
195
188
|
properties: {
|
|
196
189
|
up: "function",
|
|
197
190
|
down: "function"
|
|
198
|
-
}
|
|
191
|
+
},
|
|
192
|
+
mode: "add_extra"
|
|
199
193
|
}
|
|
200
194
|
|
|
201
195
|
export const CORSOptionsSchema: Schema<CORSOptions> = {
|
|
@@ -205,7 +199,8 @@ export const CORSOptionsSchema: Schema<CORSOptions> = {
|
|
|
205
199
|
validate: "function?",
|
|
206
200
|
methods: "string?",
|
|
207
201
|
preflightContinue: "boolean?"
|
|
208
|
-
}
|
|
202
|
+
},
|
|
203
|
+
//mode:"add_extra"
|
|
209
204
|
}
|
|
210
205
|
|
|
211
206
|
export const WSConfigSchema: Schema<WSConfig> = {
|
|
@@ -218,7 +213,8 @@ export const WSConfigSchema: Schema<WSConfig> = {
|
|
|
218
213
|
onConnection: "function?",
|
|
219
214
|
onMessage: "function?",
|
|
220
215
|
onDisconnect: "function?"
|
|
221
|
-
}
|
|
216
|
+
},
|
|
217
|
+
//mode:"add_extra"
|
|
222
218
|
};
|
|
223
219
|
|
|
224
220
|
export const DBConfigSchema: Schema<DBConfig> = {
|
|
@@ -229,7 +225,8 @@ export const DBConfigSchema: Schema<DBConfig> = {
|
|
|
229
225
|
storage: "string?",
|
|
230
226
|
dialect: "string?",
|
|
231
227
|
name: "string"
|
|
232
|
-
}
|
|
228
|
+
},
|
|
229
|
+
//mode:"add_extra"
|
|
233
230
|
}
|
|
234
231
|
|
|
235
232
|
export const ServerConfigSchema: Schema<ServerConfig> = {
|
|
@@ -240,7 +237,8 @@ export const ServerConfigSchema: Schema<ServerConfig> = {
|
|
|
240
237
|
stop: "function?",
|
|
241
238
|
start: "function?",
|
|
242
239
|
load: "function?"
|
|
243
|
-
}
|
|
240
|
+
},
|
|
241
|
+
//mode:"add_extra"
|
|
244
242
|
};
|
|
245
243
|
|
|
246
244
|
export const LogConfigSchema: Schema<LogConfig> = {
|
|
@@ -253,17 +251,27 @@ export const LogConfigSchema: Schema<LogConfig> = {
|
|
|
253
251
|
replaceConsoleTransport: "boolean?",
|
|
254
252
|
replaceFileTransport: "boolean?",
|
|
255
253
|
write: "function"
|
|
256
|
-
}
|
|
254
|
+
},
|
|
255
|
+
//mode:"add_extra"
|
|
257
256
|
};
|
|
258
257
|
|
|
259
258
|
export const AuthConfigSchema: Schema<AuthConfig> = {
|
|
260
259
|
type: "object",
|
|
261
260
|
properties: {
|
|
262
261
|
...SessionHandlerOptionsSchema.properties
|
|
263
|
-
}
|
|
262
|
+
},
|
|
263
|
+
//mode:"add_extra"
|
|
264
264
|
}
|
|
265
265
|
|
|
266
|
-
|
|
266
|
+
export async function importAPIRoute(inFile: string, logger?: Logger) {
|
|
267
|
+
const mod = (await importJSXFile(inFile, logger)).default;
|
|
268
|
+
const module = typeof mod === "function" ? { handler: mod } : parser.parse(mod, APIRouteSchema, basename(inFile));
|
|
269
|
+
if (module !== undefined) {
|
|
270
|
+
return module as APIRoute;
|
|
271
|
+
} else {
|
|
272
|
+
throw new Error(`error with module [${inFile}] undefined`);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
267
275
|
|
|
268
276
|
export async function importMigrationModule(inFile: string, logger?: Logger) {
|
|
269
277
|
const module = parser.parse((await importJSXFile(inFile, logger)).default, MigrationSchema, basename(inFile));
|
|
@@ -275,7 +283,9 @@ export async function importMigrationModule(inFile: string, logger?: Logger) {
|
|
|
275
283
|
}
|
|
276
284
|
|
|
277
285
|
export async function importHTMLModule(inFile: string, logger?: Logger) {
|
|
278
|
-
const module =
|
|
286
|
+
const module = (await importJSXFile(inFile, logger));
|
|
287
|
+
parser.parse(module.default, HTMLModuleSchema.properties.default, `${basename(inFile)}.default`);
|
|
288
|
+
parser.parse(module.apiOptions, APIOptionsSchema, `${basename(inFile)}.apiOptions`);
|
|
279
289
|
if (module !== undefined) {
|
|
280
290
|
return module;
|
|
281
291
|
} else {
|
|
@@ -284,7 +294,9 @@ export async function importHTMLModule(inFile: string, logger?: Logger) {
|
|
|
284
294
|
}
|
|
285
295
|
|
|
286
296
|
export async function importJSONModule(inFile: string, logger?: Logger) {
|
|
287
|
-
const module =
|
|
297
|
+
const module = (await importJSXFile(inFile, logger));
|
|
298
|
+
parser.parse(module.default, JSONModuleSchema.properties.default, `${basename(inFile)}.default`);
|
|
299
|
+
parser.parse(module.apiOptions, APIOptionsSchema, `${basename(inFile)}.apiOptions`);
|
|
288
300
|
if (module !== undefined) {
|
|
289
301
|
return module;
|
|
290
302
|
} else {
|