miqro 6.0.13 → 6.1.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.
- package/README.md +12 -0
- package/build/editor.bundle.js +41 -50413
- package/build/esm/src/cluster.js +0 -1
- package/build/esm/src/common/arguments.d.ts +12 -0
- package/build/esm/src/common/arguments.js +111 -10
- package/build/esm/src/common/assets.js +2 -3
- package/build/esm/src/common/checksum.js +0 -1
- package/build/esm/src/common/constants.d.ts +1 -0
- package/build/esm/src/common/constants.js +2 -3
- package/build/esm/src/common/content-type.js +0 -1
- package/build/esm/src/common/esbuild.js +0 -1
- package/build/esm/src/common/exit.js +0 -1
- package/build/esm/src/common/fs.js +0 -1
- package/build/esm/src/common/help.d.ts +1 -1
- package/build/esm/src/common/help.js +4 -1
- package/build/esm/src/common/jsx.d.ts +8 -1
- package/build/esm/src/common/jsx.js +84 -2
- package/build/esm/src/common/paths.d.ts +4 -0
- package/build/esm/src/common/paths.js +41 -2
- package/build/esm/src/common/watch.js +0 -1
- package/build/esm/src/inflate/inflate-sea.js +27 -16
- package/build/esm/src/inflate/inflate.js +2 -1
- package/build/esm/src/inflate/md.d.ts +1 -0
- package/build/esm/src/inflate/md.js +9 -6
- package/build/esm/src/inflate/setup-auth.js +0 -1
- package/build/esm/src/inflate/setup-cors.js +0 -1
- package/build/esm/src/inflate/setup-db.js +0 -1
- package/build/esm/src/inflate/setup-error.d.ts +3 -0
- package/build/esm/src/inflate/setup-error.js +40 -0
- package/build/esm/src/inflate/setup-http.js +13 -4
- package/build/esm/src/inflate/setup-log.js +0 -1
- package/build/esm/src/inflate/setup-middleware.d.ts +4 -0
- package/build/esm/src/inflate/setup-middleware.js +42 -0
- package/build/esm/src/inflate/setup-server-config.js +0 -1
- package/build/esm/src/inflate/setup-test.js +0 -1
- package/build/esm/src/inflate/setup-ws.js +0 -1
- package/build/esm/src/inflate/setup.doc.d.ts +4 -0
- package/build/esm/src/inflate/setup.doc.js +62 -0
- package/build/esm/src/inflate/utils/sea-utils.js +0 -1
- package/build/esm/src/lib.js +0 -1
- package/build/esm/src/main.js +3 -4
- package/build/esm/src/services/app.d.ts +1 -0
- package/build/esm/src/services/app.js +21 -5
- package/build/esm/src/services/editor.js +0 -1
- package/build/esm/src/services/globals.js +0 -1
- package/build/esm/src/services/hot-reload.js +2 -2
- package/build/esm/src/services/migrations.js +0 -1
- package/build/esm/src/services/utils/admin-interface.js +0 -1
- package/build/esm/src/services/utils/cache.js +0 -1
- package/build/esm/src/services/utils/cluster-cache.js +0 -1
- package/build/esm/src/services/utils/cluster-ws.js +0 -1
- package/build/esm/src/services/utils/db-manager.js +0 -1
- package/build/esm/src/services/utils/get-route.js +0 -1
- package/build/esm/src/services/utils/log-transport.js +0 -1
- package/build/esm/src/services/utils/log.js +2 -2
- package/build/esm/src/services/utils/server-interface.js +0 -1
- package/build/esm/src/services/utils/websocketmanager.js +0 -1
- package/build/esm/src/types.d.ts +16 -1
- package/build/esm/src/types.js +0 -1
- package/build/lib.cjs +895 -326
- package/package.json +4 -2
- package/sea/types.json +1 -1
- package/tsconfig.json +1 -1
- package/bin/miqro +0 -34
- package/build/esm/editor/auth.d.ts +0 -6
- package/build/esm/editor/auth.js +0 -42
- package/build/esm/editor/auth.js.map +0 -1
- package/build/esm/editor/common/admin-interface.d.ts +0 -36
- package/build/esm/editor/common/admin-interface.js +0 -45
- package/build/esm/editor/common/admin-interface.js.map +0 -1
- package/build/esm/editor/common/constants.d.ts +0 -4
- package/build/esm/editor/common/constants.js +0 -21
- package/build/esm/editor/common/constants.js.map +0 -1
- package/build/esm/editor/common/constants.server.d.ts +0 -2
- package/build/esm/editor/common/constants.server.js +0 -5
- package/build/esm/editor/common/constants.server.js.map +0 -1
- package/build/esm/editor/common/editor-index.d.ts +0 -2
- package/build/esm/editor/common/editor-index.js +0 -15
- package/build/esm/editor/common/editor-index.js.map +0 -1
- package/build/esm/editor/common/html-encode.d.ts +0 -1
- package/build/esm/editor/common/html-encode.js +0 -15
- package/build/esm/editor/common/html-encode.js.map +0 -1
- package/build/esm/editor/common/log-socket.d.ts +0 -15
- package/build/esm/editor/common/log-socket.js +0 -71
- package/build/esm/editor/common/log-socket.js.map +0 -1
- package/build/esm/editor/common/templates.d.ts +0 -11
- package/build/esm/editor/common/templates.js +0 -444
- package/build/esm/editor/common/templates.js.map +0 -1
- package/build/esm/editor/components/api-preview.d.ts +0 -11
- package/build/esm/editor/components/api-preview.js +0 -91
- package/build/esm/editor/components/api-preview.js.map +0 -1
- package/build/esm/editor/components/editor.d.ts +0 -16
- package/build/esm/editor/components/editor.js +0 -358
- package/build/esm/editor/components/editor.js.map +0 -1
- package/build/esm/editor/components/file-browser.d.ts +0 -37
- package/build/esm/editor/components/file-browser.js +0 -127
- package/build/esm/editor/components/file-browser.js.map +0 -1
- package/build/esm/editor/components/file-editor-toolbar.d.ts +0 -22
- package/build/esm/editor/components/file-editor-toolbar.js +0 -94
- package/build/esm/editor/components/file-editor-toolbar.js.map +0 -1
- package/build/esm/editor/components/file-editor.d.ts +0 -32
- package/build/esm/editor/components/file-editor.js +0 -60
- package/build/esm/editor/components/file-editor.js.map +0 -1
- package/build/esm/editor/components/filter-query.d.ts +0 -1
- package/build/esm/editor/components/filter-query.js +0 -23
- package/build/esm/editor/components/filter-query.js.map +0 -1
- package/build/esm/editor/components/highlight-text-area.d.ts +0 -11
- package/build/esm/editor/components/highlight-text-area.js +0 -139
- package/build/esm/editor/components/highlight-text-area.js.map +0 -1
- package/build/esm/editor/components/log-viewer.d.ts +0 -6
- package/build/esm/editor/components/log-viewer.js +0 -70
- package/build/esm/editor/components/log-viewer.js.map +0 -1
- package/build/esm/editor/components/new-file.d.ts +0 -10
- package/build/esm/editor/components/new-file.js +0 -118
- package/build/esm/editor/components/new-file.js.map +0 -1
- package/build/esm/editor/components/scroll-query.d.ts +0 -7
- package/build/esm/editor/components/scroll-query.js +0 -22
- package/build/esm/editor/components/scroll-query.js.map +0 -1
- package/build/esm/editor/components/start-page.d.ts +0 -13
- package/build/esm/editor/components/start-page.js +0 -31
- package/build/esm/editor/components/start-page.js.map +0 -1
- package/build/esm/editor/http/admin/editor/api/fs/delete.api.d.ts +0 -3
- package/build/esm/editor/http/admin/editor/api/fs/delete.api.js +0 -30
- package/build/esm/editor/http/admin/editor/api/fs/delete.api.js.map +0 -1
- package/build/esm/editor/http/admin/editor/api/fs/read.api.d.ts +0 -5
- package/build/esm/editor/http/admin/editor/api/fs/read.api.js +0 -50
- package/build/esm/editor/http/admin/editor/api/fs/read.api.js.map +0 -1
- package/build/esm/editor/http/admin/editor/api/fs/rename.api.d.ts +0 -4
- package/build/esm/editor/http/admin/editor/api/fs/rename.api.js +0 -40
- package/build/esm/editor/http/admin/editor/api/fs/rename.api.js.map +0 -1
- package/build/esm/editor/http/admin/editor/api/fs/scan.api.d.ts +0 -26
- package/build/esm/editor/http/admin/editor/api/fs/scan.api.js +0 -150
- package/build/esm/editor/http/admin/editor/api/fs/scan.api.js.map +0 -1
- package/build/esm/editor/http/admin/editor/api/fs/write.api.d.ts +0 -3
- package/build/esm/editor/http/admin/editor/api/fs/write.api.js +0 -39
- package/build/esm/editor/http/admin/editor/api/fs/write.api.js.map +0 -1
- package/build/esm/editor/http/admin/editor/api/server/reload.api.d.ts +0 -10
- package/build/esm/editor/http/admin/editor/api/server/reload.api.js +0 -47
- package/build/esm/editor/http/admin/editor/api/server/reload.api.js.map +0 -1
- package/build/esm/editor/http/admin/editor/api/server/restart.api.d.ts +0 -10
- package/build/esm/editor/http/admin/editor/api/server/restart.api.js +0 -46
- package/build/esm/editor/http/admin/editor/api/server/restart.api.js.map +0 -1
- package/build/esm/editor/http/admin/editor/editor.d.ts +0 -1
- package/build/esm/editor/http/admin/editor/editor.js +0 -8
- package/build/esm/editor/http/admin/editor/editor.js.map +0 -1
- package/build/esm/editor/http/admin/editor/index.api.d.ts +0 -3
- package/build/esm/editor/http/admin/editor/index.api.js +0 -22
- package/build/esm/editor/http/admin/editor/index.api.js.map +0 -1
- package/build/esm/editor/server.d.ts +0 -3
- package/build/esm/editor/server.js +0 -50
- package/build/esm/editor/server.js.map +0 -1
- package/build/esm/editor/ws.d.ts +0 -3
- package/build/esm/editor/ws.js +0 -12
- package/build/esm/editor/ws.js.map +0 -1
- package/build/esm/src/bin/compile.d.ts +0 -3
- package/build/esm/src/bin/compile.js +0 -31
- package/build/esm/src/bin/compile.js.map +0 -1
- package/build/esm/src/bin/doc-md.d.ts +0 -17
- package/build/esm/src/bin/doc-md.js +0 -187
- package/build/esm/src/bin/doc-md.js.map +0 -1
- package/build/esm/src/bin/generate-doc.d.ts +0 -4
- package/build/esm/src/bin/generate-doc.js +0 -49
- package/build/esm/src/bin/generate-doc.js.map +0 -1
- package/build/esm/src/bin/test.d.ts +0 -3
- package/build/esm/src/bin/test.js +0 -68
- package/build/esm/src/bin/test.js.map +0 -1
- package/build/esm/src/bin/types.d.ts +0 -3
- package/build/esm/src/bin/types.js +0 -21
- package/build/esm/src/bin/types.js.map +0 -1
- package/build/esm/src/cluster.js.map +0 -1
- package/build/esm/src/common/arguments.js.map +0 -1
- package/build/esm/src/common/assets.js.map +0 -1
- package/build/esm/src/common/checksum.js.map +0 -1
- package/build/esm/src/common/constants.js.map +0 -1
- package/build/esm/src/common/content-type.js.map +0 -1
- package/build/esm/src/common/esbuild.js.map +0 -1
- package/build/esm/src/common/exit.js.map +0 -1
- package/build/esm/src/common/fs.js.map +0 -1
- package/build/esm/src/common/help.js.map +0 -1
- package/build/esm/src/common/jsx.js.map +0 -1
- package/build/esm/src/common/paths.js.map +0 -1
- package/build/esm/src/common/watch.js.map +0 -1
- package/build/esm/src/inflate/inflate-sea.js.map +0 -1
- package/build/esm/src/inflate/inflate.js.map +0 -1
- package/build/esm/src/inflate/md.js.map +0 -1
- package/build/esm/src/inflate/setup-auth.js.map +0 -1
- package/build/esm/src/inflate/setup-cors.js.map +0 -1
- package/build/esm/src/inflate/setup-db.js.map +0 -1
- package/build/esm/src/inflate/setup-http.js.map +0 -1
- package/build/esm/src/inflate/setup-log.js.map +0 -1
- package/build/esm/src/inflate/setup-server-config.js.map +0 -1
- package/build/esm/src/inflate/setup-test.js.map +0 -1
- package/build/esm/src/inflate/setup-ws.js.map +0 -1
- package/build/esm/src/inflate/utils/sea-utils.js.map +0 -1
- package/build/esm/src/lib.js.map +0 -1
- package/build/esm/src/main.js.map +0 -1
- package/build/esm/src/services/app.js.map +0 -1
- package/build/esm/src/services/editor.js.map +0 -1
- package/build/esm/src/services/globals.js.map +0 -1
- package/build/esm/src/services/hot-reload.js.map +0 -1
- package/build/esm/src/services/migrations.js.map +0 -1
- package/build/esm/src/services/utils/admin-interface.js.map +0 -1
- package/build/esm/src/services/utils/cache.js.map +0 -1
- package/build/esm/src/services/utils/cluster-cache.js.map +0 -1
- package/build/esm/src/services/utils/cluster-ws.js.map +0 -1
- package/build/esm/src/services/utils/db-manager.js.map +0 -1
- package/build/esm/src/services/utils/get-route.js.map +0 -1
- package/build/esm/src/services/utils/log-transport.js.map +0 -1
- package/build/esm/src/services/utils/log.js.map +0 -1
- package/build/esm/src/services/utils/server-interface.js.map +0 -1
- package/build/esm/src/services/utils/websocketmanager.js.map +0 -1
- package/build/esm/src/types.js.map +0 -1
- package/editor/auth.ts +0 -51
- package/editor/common/admin-interface.ts +0 -84
- package/editor/common/constants.server.ts +0 -5
- package/editor/common/constants.ts +0 -21
- package/editor/common/editor-index.tsx +0 -17
- package/editor/common/html-encode.ts +0 -14
- package/editor/common/log-socket.tsx +0 -85
- package/editor/common/templates.ts +0 -448
- package/editor/components/api-preview.tsx +0 -116
- package/editor/components/editor.tsx +0 -486
- package/editor/components/file-browser.tsx +0 -308
- package/editor/components/file-editor-toolbar.tsx +0 -191
- package/editor/components/file-editor.tsx +0 -122
- package/editor/components/filter-query.tsx +0 -22
- package/editor/components/highlight-text-area.tsx +0 -159
- package/editor/components/log-viewer.tsx +0 -110
- package/editor/components/new-file.tsx +0 -169
- package/editor/components/scroll-query.tsx +0 -22
- package/editor/components/start-page.tsx +0 -49
- package/editor/http/admin/editor/api/fs/delete.api.tsx +0 -32
- package/editor/http/admin/editor/api/fs/read.api.tsx +0 -55
- package/editor/http/admin/editor/api/fs/rename.api.tsx +0 -41
- package/editor/http/admin/editor/api/fs/scan.api.tsx +0 -181
- package/editor/http/admin/editor/api/fs/write.api.tsx +0 -41
- package/editor/http/admin/editor/api/server/reload.api.ts +0 -53
- package/editor/http/admin/editor/api/server/restart.api.tsx +0 -52
- package/editor/http/admin/editor/editor.tsx +0 -8
- package/editor/http/admin/editor/index.api.tsx +0 -39
- package/editor/server.ts +0 -57
- package/editor/static/android-chrome-192x192.png +0 -0
- package/editor/static/android-chrome-512x512.png +0 -0
- package/editor/static/apple-touch-icon.png +0 -0
- package/editor/static/editor.bundle.in.mjs +0 -20
- package/editor/static/favicon-16x16.png +0 -0
- package/editor/static/favicon-32x32.png +0 -0
- package/editor/static/favicon.ico +0 -0
- package/editor/static/site.webmanifest +0 -19
- package/editor/ws.ts +0 -15
- package/sea/base64.js +0 -3
- package/sea/compile.sh +0 -127
- package/sea/copy-types.sh +0 -46
- package/sea/editor-assets/editor.bundle.in.mjs +0 -19
- package/sea/generate-global-types-asset-json.js +0 -34
- package/sea/release-tar.sh +0 -5
- package/sea/tsc.sh +0 -1
- package/sea/version.tag.js +0 -11
- package/src/bin/compile.ts +0 -35
- package/src/bin/doc-md.ts +0 -210
- package/src/bin/generate-doc.ts +0 -58
- package/src/bin/test.ts +0 -92
- package/src/bin/types.ts +0 -22
- package/src/cluster.ts +0 -27
- package/src/common/arguments.ts +0 -382
- package/src/common/assets.ts +0 -128
- package/src/common/checksum.ts +0 -58
- package/src/common/constants.ts +0 -18
- package/src/common/content-type.ts +0 -84
- package/src/common/esbuild.ts +0 -94
- package/src/common/exit.ts +0 -91
- package/src/common/fs.ts +0 -17
- package/src/common/help.ts +0 -47
- package/src/common/jsx.ts +0 -426
- package/src/common/paths.ts +0 -117
- package/src/common/watch.ts +0 -85
- package/src/inflate/inflate-sea.ts +0 -194
- package/src/inflate/inflate.ts +0 -96
- package/src/inflate/md.ts +0 -20
- package/src/inflate/setup-auth.ts +0 -40
- package/src/inflate/setup-cors.ts +0 -40
- package/src/inflate/setup-db.ts +0 -113
- package/src/inflate/setup-http.ts +0 -643
- package/src/inflate/setup-log.ts +0 -44
- package/src/inflate/setup-server-config.ts +0 -47
- package/src/inflate/setup-test.ts +0 -23
- package/src/inflate/setup-ws.ts +0 -48
- package/src/inflate/utils/sea-utils.ts +0 -14
- package/src/lib.ts +0 -19
- package/src/main.ts +0 -87
- package/src/services/app.ts +0 -640
- package/src/services/editor.tsx +0 -101
- package/src/services/globals.ts +0 -143
- package/src/services/hot-reload.ts +0 -46
- package/src/services/migrations.ts +0 -66
- package/src/services/utils/admin-interface.ts +0 -37
- package/src/services/utils/cache.ts +0 -88
- package/src/services/utils/cluster-cache.ts +0 -230
- package/src/services/utils/cluster-ws.ts +0 -197
- package/src/services/utils/db-manager.ts +0 -92
- package/src/services/utils/get-route.ts +0 -70
- package/src/services/utils/log-transport.ts +0 -75
- package/src/services/utils/log.ts +0 -91
- package/src/services/utils/server-interface.ts +0 -172
- package/src/services/utils/websocketmanager.ts +0 -149
- package/src/types/@esbuild.d.ts +0 -1
- package/src/types/@miqro/core.d.ts +0 -2
- package/src/types/@miqro/jsx.d.ts +0 -2
- package/src/types/@miqro/parser.d.ts +0 -2
- package/src/types/@miqro/query.d.ts +0 -2
- package/src/types/@miqro/request.d.ts +0 -2
- package/src/types/@miqro/test.d.ts +0 -2
- package/src/types/@miqro.d.ts +0 -1
- package/src/types/@types.d.ts +0 -1
- package/src/types/browser.globals.d.ts +0 -9
- package/src/types/globals.d.ts +0 -2
- package/src/types/jsx.globals.d.ts +0 -37
- package/src/types/miqro.d.ts +0 -111
- package/src/types/postject.d.ts +0 -1
- package/src/types/server.globals.d.ts +0 -72
- package/src/types.ts +0 -204
- /package/{editor/http/admin/editor → build}/font.ttf +0 -0
- /package/{editor/http/admin/editor → build}/style.css +0 -0
package/src/common/esbuild.ts
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { exec } from "node:child_process";
|
|
2
|
-
import { getAsset, initAsset, validateAsset } from "./assets.js";
|
|
3
|
-
import { Logger } from "@miqro/core";
|
|
4
|
-
import { getESBuildBinaryPath } from "./paths.js";
|
|
5
|
-
import { dirname } from "node:path";
|
|
6
|
-
import { calculateChecksumFromBuffer } from "./checksum.js";
|
|
7
|
-
|
|
8
|
-
let esbuildBinaryBuffer = null; // Buffer.from(getAsset("esbuild-binary"));
|
|
9
|
-
let esbuildBinaryChecksumPromise = null; // calculateChecksumFromBuffer(esbuildBinaryBuffer);
|
|
10
|
-
|
|
11
|
-
export async function validateESBuild(logger?: Logger) {
|
|
12
|
-
return validateAsset(logger, getESBuildBinaryPath(), await esbuildBinaryChecksumPromise);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export async function initESBuild(logger: Logger) {
|
|
16
|
-
esbuildBinaryBuffer = esbuildBinaryBuffer ? esbuildBinaryBuffer : Buffer.from(getAsset("esbuild-binary"));
|
|
17
|
-
esbuildBinaryChecksumPromise = esbuildBinaryChecksumPromise ? esbuildBinaryChecksumPromise : calculateChecksumFromBuffer(esbuildBinaryBuffer);
|
|
18
|
-
return initAsset(logger, getESBuildBinaryPath(), esbuildBinaryBuffer, true, esbuildBinaryChecksumPromise, false);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const NODEJS_EXTERNAL = [
|
|
22
|
-
"node:cluster",
|
|
23
|
-
"node:assert",
|
|
24
|
-
"node:util",
|
|
25
|
-
"node:path",
|
|
26
|
-
"node:fs",
|
|
27
|
-
"node:crypto",
|
|
28
|
-
"node:http",
|
|
29
|
-
"node:https",
|
|
30
|
-
"node:os",
|
|
31
|
-
"node:dns",
|
|
32
|
-
"node:string_decoder",
|
|
33
|
-
"node:stream",
|
|
34
|
-
"node:http2",
|
|
35
|
-
"node:net",
|
|
36
|
-
"node:worker_threads",
|
|
37
|
-
"node:process",
|
|
38
|
-
"child_process",
|
|
39
|
-
"node:child_process",
|
|
40
|
-
"core",
|
|
41
|
-
"globals",
|
|
42
|
-
"jsx.globals",
|
|
43
|
-
"server.globals",
|
|
44
|
-
"browser.globals",
|
|
45
|
-
"sqlite3",
|
|
46
|
-
"pg"
|
|
47
|
-
];
|
|
48
|
-
|
|
49
|
-
export async function esBuild(options: {
|
|
50
|
-
platform?: string;
|
|
51
|
-
entryPoints: [string];
|
|
52
|
-
bundle?: boolean;
|
|
53
|
-
jsxFactory?: string;
|
|
54
|
-
jsxFragment?: string;
|
|
55
|
-
minify?: boolean;
|
|
56
|
-
outfile?: string;
|
|
57
|
-
}, logger?: Logger): Promise<{
|
|
58
|
-
outputFiles: {
|
|
59
|
-
path: string;
|
|
60
|
-
contents: any;
|
|
61
|
-
}[]
|
|
62
|
-
}> {
|
|
63
|
-
return new Promise(async (resolve, reject) => {
|
|
64
|
-
try {
|
|
65
|
-
//const logger = getLogger(`${SERVER_IDENTIFIER}_ESBUILD`);
|
|
66
|
-
const valid = await validateESBuild(logger);
|
|
67
|
-
const esBuildCMD = `${getESBuildBinaryPath()} "${options.entryPoints[0]}" ${NODEJS_EXTERNAL.map(e => `--external:${e}`).join(" ")} --loader:.js=jsx --jsx-factory=${options.jsxFactory} --jsx-fragment=${options.jsxFragment} ${options.bundle ? " --bundle" : ""}${options.minify ? " --minify" : ""}${options.outfile ? ` --outfile="${options.outfile}"` : ""}${options.platform ? ` --platform=${options.platform}` : ""}`;
|
|
68
|
-
logger?.trace(esBuildCMD);
|
|
69
|
-
if (!valid) {
|
|
70
|
-
const err = new Error(`esbuild installation at [${getESBuildBinaryPath()}] tampered`);
|
|
71
|
-
reject(err);
|
|
72
|
-
} else {
|
|
73
|
-
exec(esBuildCMD, {
|
|
74
|
-
maxBuffer: 1024 * 1000 * 2000,
|
|
75
|
-
cwd: dirname(options.entryPoints[0])
|
|
76
|
-
}, (err, stdout, _stderr) => {
|
|
77
|
-
if (err) {
|
|
78
|
-
reject(err);
|
|
79
|
-
} else {
|
|
80
|
-
resolve({
|
|
81
|
-
outputFiles: [{
|
|
82
|
-
path: "",
|
|
83
|
-
contents: stdout
|
|
84
|
-
}]
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
} catch (e) {
|
|
90
|
-
logger?.error(e);
|
|
91
|
-
reject(e);
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
}
|
package/src/common/exit.ts
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { existsSync, rmdirSync, unlinkSync } from "node:fs";
|
|
2
|
-
//import { notifiyServerStop, notifiyServerUnLoad } from "../services/server.js";
|
|
3
|
-
import { getESBuildBinaryPath, getJSXJSPath, JSX_TMP_DIR } from "./paths.js";
|
|
4
|
-
import { CLEAR_JSX_CACHE } from "./constants.js";
|
|
5
|
-
import { resolve } from "node:path";
|
|
6
|
-
import { EXIT_CODES } from "./constants.js";
|
|
7
|
-
import { Miqro } from "../services/app.js";
|
|
8
|
-
|
|
9
|
-
function cleanJSX(app: Miqro) {
|
|
10
|
-
app.logger?.trace("trying to clean up esbuild installation at [%s]", getESBuildBinaryPath());
|
|
11
|
-
if (existsSync(getESBuildBinaryPath())) {
|
|
12
|
-
unlinkSync(getESBuildBinaryPath());
|
|
13
|
-
}
|
|
14
|
-
if (CLEAR_JSX_CACHE) {
|
|
15
|
-
app.logger?.trace("trying to clean up jsx.js installation at [%s]", getJSXJSPath());
|
|
16
|
-
if (existsSync(getJSXJSPath())) {
|
|
17
|
-
unlinkSync(getJSXJSPath());
|
|
18
|
-
}
|
|
19
|
-
const buildParendDir = resolve(JSX_TMP_DIR, String(process.pid));
|
|
20
|
-
app.logger?.trace("trying to clean up jsx build/import folders at [%s]", buildParendDir);
|
|
21
|
-
const buildDir = resolve(buildParendDir, "build");
|
|
22
|
-
const importDir = resolve(buildParendDir, "import");
|
|
23
|
-
if (existsSync(buildDir)) {
|
|
24
|
-
rmdirSync(buildDir);
|
|
25
|
-
}
|
|
26
|
-
if (existsSync(importDir)) {
|
|
27
|
-
rmdirSync(importDir);
|
|
28
|
-
}
|
|
29
|
-
if (existsSync(buildParendDir)) {
|
|
30
|
-
rmdirSync(buildParendDir);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export function setupExitHandlers(app: Miqro) {
|
|
36
|
-
let exceptionOccured = false;
|
|
37
|
-
|
|
38
|
-
process.on('uncaughtException', async function (err) {
|
|
39
|
-
app.logger?.error('Caught exception: ' + err);
|
|
40
|
-
app.logger?.error(err);
|
|
41
|
-
exceptionOccured = true;
|
|
42
|
-
/*if (app.server) {
|
|
43
|
-
notifiyServerConfigSync(app, "unload");
|
|
44
|
-
notifiyServerConfigSync(app, "stop");
|
|
45
|
-
app.webSocketManager.disconnectAll();
|
|
46
|
-
app.dbManager.closeAll();
|
|
47
|
-
}*/
|
|
48
|
-
cleanJSX(app);
|
|
49
|
-
if (app.server) {
|
|
50
|
-
app.stop();
|
|
51
|
-
}
|
|
52
|
-
process.exit(EXIT_CODES.ABNORMAL_UNCONTROLLED);
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
process.on('exit', async function (code) {
|
|
56
|
-
if (exceptionOccured) {
|
|
57
|
-
app.logger?.error('Exception occured');
|
|
58
|
-
} else {
|
|
59
|
-
/*if (app.server) {
|
|
60
|
-
notifiyServerConfigSync(app, "unload");
|
|
61
|
-
notifiyServerConfigSync(app, "stop");
|
|
62
|
-
app.webSocketManager.disconnectAll();
|
|
63
|
-
app.dbManager.closeAll();
|
|
64
|
-
}*/
|
|
65
|
-
cleanJSX(app);
|
|
66
|
-
if (app.server) {
|
|
67
|
-
app.stop();
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
process.on("SIGTERM", function () {
|
|
73
|
-
app.logger?.info('SIGTERM received');
|
|
74
|
-
process.exit(EXIT_CODES.ABNORMAL_UNCONTROLLED);
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
process.on('SIGHUP', function () {
|
|
78
|
-
app.logger?.info('SIGHUP received');
|
|
79
|
-
process.exit(EXIT_CODES.ABNORMAL_UNCONTROLLED);
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
/*process.on('SIGKILL', function () {
|
|
83
|
-
server.logger.info('SIGKILL received');
|
|
84
|
-
process.exit(EXIT_CODES.ABNORMAL_UNCONTROLLED);
|
|
85
|
-
});*/
|
|
86
|
-
|
|
87
|
-
process.on('SIGINT', function () {
|
|
88
|
-
app.logger?.info('SIGINT received');
|
|
89
|
-
process.exit(EXIT_CODES.ABNORMAL_UNCONTROLLED);
|
|
90
|
-
});
|
|
91
|
-
}
|
package/src/common/fs.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { basename, extname } from "node:path";
|
|
2
|
-
|
|
3
|
-
export function describeFilePath(filePath: string) {
|
|
4
|
-
const ext = extname(filePath);
|
|
5
|
-
const fileName = basename(filePath);
|
|
6
|
-
const name = fileName.substring(0, fileName.length - ext.length);
|
|
7
|
-
const subExt = extname(name);
|
|
8
|
-
const subName = name.substring(0, name.length - subExt.length);
|
|
9
|
-
return {
|
|
10
|
-
ext,
|
|
11
|
-
fileName,
|
|
12
|
-
name,
|
|
13
|
-
subExt,
|
|
14
|
-
subName,
|
|
15
|
-
filePath
|
|
16
|
-
};
|
|
17
|
-
}
|
package/src/common/help.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
//import { basename } from "node:path";
|
|
2
|
-
|
|
3
|
-
export const BIN_NAME = "miqro"; //,basename(process.argv[0]);
|
|
4
|
-
|
|
5
|
-
export const usage = `usage: ${BIN_NAME} [...FLAGS] --service app/
|
|
6
|
-
|
|
7
|
-
==examples==
|
|
8
|
-
|
|
9
|
-
${BIN_NAME} --watch --service front/
|
|
10
|
-
PORT=8181 ${BIN_NAME} --service api/ --service front/
|
|
11
|
-
${BIN_NAME} --test --service front/
|
|
12
|
-
${BIN_NAME} --inflate --service front/
|
|
13
|
-
${BIN_NAME} --generate-doc --generate-doc-out API.md --service front/
|
|
14
|
-
CLUSTER_COUNT=10 ${BIN_NAME}-cluster --service api/`;
|
|
15
|
-
|
|
16
|
-
export const help = `
|
|
17
|
-
==flags==
|
|
18
|
-
|
|
19
|
-
-v, --version\t\toutputs the version number
|
|
20
|
-
-h, --help\t\toutputs this page.
|
|
21
|
-
--watch\t\t\tuse to enable the hot-reload functionality.
|
|
22
|
-
--test\t\t\trun the tests for a service.
|
|
23
|
-
--migrate-up\t\tmigrations up.
|
|
24
|
-
--migrate-down\t\tmigrations down.
|
|
25
|
-
--inflate\t\tinflates the application.
|
|
26
|
-
--inflate-dir\t\tto set the output directory of the --inflate command. default value is inflated/.
|
|
27
|
-
--editor\t\truns the application with a built-in editor.
|
|
28
|
-
--generate-doc\t\tgenerates a documentation for the api endpoints of the service.
|
|
29
|
-
--generate-doc-out\tthe output file for the generated documentation. default value is API.md.
|
|
30
|
-
--generate-doc-type\tthe format of the generated documentation. it can be JSON or MD. default value is MD.
|
|
31
|
-
--generate-doc-all\toutputs all the server routes in the documentation output.
|
|
32
|
-
--compile\t\tinflates the application and tries to create a NODE SEA binary.
|
|
33
|
-
--inflate-sea\t\tinflates the application with sea compilation scripts.
|
|
34
|
-
--install-tsconfig\tcreates a tsconfig.json configured to use with --install-types.
|
|
35
|
-
--install-types\t\tcreates and updates the .types/ folder use together with --install-tsconfig.
|
|
36
|
-
|
|
37
|
-
==environment variables==
|
|
38
|
-
|
|
39
|
-
PORT\t\t\toverride the default 8080 port.
|
|
40
|
-
LOG_FILE\t\toverride the default ./server.log file
|
|
41
|
-
DB\t\t\tenable the server.db features
|
|
42
|
-
DB_STORAGE\t\toverride the default local db location ./db.sqlite3
|
|
43
|
-
DB_DIALECT\t\toverride the default node:sqlite
|
|
44
|
-
DB_CONNECTION\t\toverride the default connection url
|
|
45
|
-
CLEAR_JSX_CACHE\t\tset to 1 or 0 to enable or disable the clearing of the esbuild cache defaults to 1.
|
|
46
|
-
JSX_TMP\t\t\tset custom location of esbuild builds defaults to /tmp/jsx_tmp.
|
|
47
|
-
`;
|
package/src/common/jsx.ts
DELETED
|
@@ -1,426 +0,0 @@
|
|
|
1
|
-
import { Runtime } from "@miqro/jsx";
|
|
2
|
-
import { createNodeRuntime } from "@miqro/jsx-node";
|
|
3
|
-
import { basename, dirname, relative, resolve } from "node:path";
|
|
4
|
-
import { randomUUID } from "node:crypto";
|
|
5
|
-
import { mkdirSync, rmdirSync, unlinkSync, writeFileSync } from "node:fs";
|
|
6
|
-
import { Request, Response, CORSOptions, Logger, APIRoute } from "@miqro/core";
|
|
7
|
-
import { Parser, Schema } from "@miqro/parser";
|
|
8
|
-
import { APIRouteSchema, SessionHandlerOptionsSchema } from "@miqro/core";
|
|
9
|
-
import { cwd } from "node:process";
|
|
10
|
-
|
|
11
|
-
import { esBuild } from "./esbuild.js";
|
|
12
|
-
import { assertGlobalTampered, browserJSXGlobals } from "../services/globals.js";
|
|
13
|
-
import { APIOptions, ServerConfig, WSConfig, AuthConfig, DBConfig, LogConfig } from "../types.js";
|
|
14
|
-
import { getJSXJSPath, JSX_TMP_DIR } from "./paths.js";
|
|
15
|
-
import { CLEAR_JSX_CACHE } from "./constants.js";
|
|
16
|
-
import { getAsset, initAsset, validateAsset } from "./assets.js";
|
|
17
|
-
import { calculateChecksumFromBuffer } from "./checksum.js";
|
|
18
|
-
import { RouteOptionsSchema } from "@miqro/core/build/types.js";
|
|
19
|
-
import { Migration } from "@miqro/query";
|
|
20
|
-
|
|
21
|
-
let jsxJSBuffer: null | Buffer = null; // Buffer.from(getAsset("jsx.dom.js"));
|
|
22
|
-
let jsxJSBufferChecksumPromise: null | Promise<string> = null; // calculateChecksumFromBuffer(jsxJSBuffer);
|
|
23
|
-
|
|
24
|
-
export async function initJSXJS(logger: Logger) {
|
|
25
|
-
jsxJSBuffer = jsxJSBuffer ? jsxJSBuffer : Buffer.from(getAsset("jsx.dom.js"));
|
|
26
|
-
jsxJSBufferChecksumPromise = jsxJSBufferChecksumPromise ? jsxJSBufferChecksumPromise : calculateChecksumFromBuffer(jsxJSBuffer);
|
|
27
|
-
return initAsset(logger, getJSXJSPath(), jsxJSBuffer, true, jsxJSBufferChecksumPromise, false);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export async function validateJSXJS(logger: Logger) {
|
|
31
|
-
const checksum = await jsxJSBufferChecksumPromise;
|
|
32
|
-
if (!checksum) {
|
|
33
|
-
throw new Error("error calculating checksum");
|
|
34
|
-
}
|
|
35
|
-
return validateAsset(logger, getJSXJSPath(), checksum);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export interface Dict<T> {
|
|
39
|
-
[key: string]: T | Dict<T>;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const parser = new Parser();
|
|
43
|
-
|
|
44
|
-
export interface InflateError {
|
|
45
|
-
filePath: string;
|
|
46
|
-
error: Error;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export interface InflateOptions {
|
|
50
|
-
embemedJSX: boolean;
|
|
51
|
-
minify: boolean;
|
|
52
|
-
useExport: boolean;
|
|
53
|
-
logger?: Logger | Console;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
const DEFAULT_ESOPTION = {
|
|
57
|
-
platform: "neutral",
|
|
58
|
-
bundle: true,
|
|
59
|
-
jsxFactory: "JSX.createElement",
|
|
60
|
-
jsxFragment: "JSX.Fragment"
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
export async function inflateJSX(inFile: string, options: InflateOptions): Promise<string> {
|
|
64
|
-
const tmpBuildDir = resolve(JSX_TMP_DIR, String(process.pid), "build", Date.now() + "-" + randomUUID());
|
|
65
|
-
const inFileTmp = resolve(tmpBuildDir, basename(inFile) + ".mjs");
|
|
66
|
-
const jsxJSPath = getJSXJSPath();//resolve(tmpBuildDir, "jsx.js");
|
|
67
|
-
const logger = options.logger; //getLogger(`${SERVER_IDENTIFIER}_JSX`);
|
|
68
|
-
|
|
69
|
-
try {
|
|
70
|
-
|
|
71
|
-
if (!options.embemedJSX) {
|
|
72
|
-
mkdirSync(tmpBuildDir, {
|
|
73
|
-
recursive: true
|
|
74
|
-
});
|
|
75
|
-
writeFileSync(inFileTmp, browserJSXGlobals(inFile, false, options.useExport));
|
|
76
|
-
//writeFileSync(inFileTmp, browserJSXGlobals(relative(tmpBuildDir, inFile), false));
|
|
77
|
-
logger?.trace("inflating [%s] from [%s]. to change the import folder set JSX_TMP", relative(cwd(), inFile), dirname(relative(JSX_TMP_DIR, inFileTmp)));
|
|
78
|
-
const { outputFiles: [{ contents }] } = await esBuild({
|
|
79
|
-
...DEFAULT_ESOPTION,
|
|
80
|
-
entryPoints: [inFileTmp],
|
|
81
|
-
minify: options.minify
|
|
82
|
-
});
|
|
83
|
-
if (CLEAR_JSX_CACHE) {
|
|
84
|
-
logger?.trace("clearing cache at [%s] to change this behaivor set CLEAR_JSX_CACHE to 0", tmpBuildDir);
|
|
85
|
-
unlinkSync(inFileTmp);
|
|
86
|
-
rmdirSync(tmpBuildDir);
|
|
87
|
-
}
|
|
88
|
-
return contents;
|
|
89
|
-
} else {
|
|
90
|
-
mkdirSync(tmpBuildDir, {
|
|
91
|
-
recursive: true
|
|
92
|
-
});
|
|
93
|
-
//writeFileSync(jsxJSPath, Buffer.from(getAsset("jsx-dom-bundle")));
|
|
94
|
-
writeFileSync(inFileTmp, browserJSXGlobals(inFile, jsxJSPath));
|
|
95
|
-
//writeFileSync(inFileTmp, browserJSXGlobals(relative(tmpBuildDir, inFile), relative(tmpBuildDir, jsxJSPath)));
|
|
96
|
-
logger?.trace("inflating [%s] from [%s] with jsx.js embedded. to change the import folder set JSX_TMP", relative(cwd(), inFile), dirname(relative(JSX_TMP_DIR, inFileTmp)));
|
|
97
|
-
const { outputFiles: [{ contents }] } = await esBuild({
|
|
98
|
-
...DEFAULT_ESOPTION,
|
|
99
|
-
entryPoints: [inFileTmp],
|
|
100
|
-
minify: options.minify
|
|
101
|
-
});
|
|
102
|
-
if (CLEAR_JSX_CACHE) {
|
|
103
|
-
logger?.trace("clearing cache at [%s] to change this behaivor set CLEAR_JSX_CACHE to 0", tmpBuildDir);
|
|
104
|
-
unlinkSync(inFileTmp);
|
|
105
|
-
//unlinkSync(jsxJSPath);
|
|
106
|
-
rmdirSync(tmpBuildDir);
|
|
107
|
-
}
|
|
108
|
-
return contents;
|
|
109
|
-
}
|
|
110
|
-
} catch (e) {
|
|
111
|
-
logger?.error("error with: " + inFile);
|
|
112
|
-
logger?.error(e);
|
|
113
|
-
if (options.embemedJSX) {
|
|
114
|
-
if (CLEAR_JSX_CACHE) {
|
|
115
|
-
logger?.trace("clearing cache at [%s] to change this behaivor set CLEAR_JSX_CACHE to 0", tmpBuildDir);
|
|
116
|
-
unlinkSync(inFileTmp);
|
|
117
|
-
//unlinkSync(jsxJSPath);
|
|
118
|
-
rmdirSync(tmpBuildDir);
|
|
119
|
-
} else {
|
|
120
|
-
//console.error("errors on: " + tmpBuildDir);
|
|
121
|
-
logger?.error("error with: %s", inFileTmp);
|
|
122
|
-
logger?.trace("NOT clearing cache. to change this behaivor set CLEAR_JSX_CACHE to 1", tmpBuildDir);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
throw e;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
export const APIOptionsSchema: Schema<APIOptions> = {
|
|
130
|
-
type: "object?",
|
|
131
|
-
properties: {
|
|
132
|
-
basePath: "string?",
|
|
133
|
-
path: "string?|string[]?",
|
|
134
|
-
method: "string?|string[]?",
|
|
135
|
-
parser: {
|
|
136
|
-
type: "object?",
|
|
137
|
-
properties: {
|
|
138
|
-
parse: "function"
|
|
139
|
-
},
|
|
140
|
-
mode: "add_extra"
|
|
141
|
-
},
|
|
142
|
-
middleware: "function[]!?",
|
|
143
|
-
session: {
|
|
144
|
-
type: "object?|function?",
|
|
145
|
-
properties: SessionHandlerOptionsSchema.properties
|
|
146
|
-
},
|
|
147
|
-
...RouteOptionsSchema.properties
|
|
148
|
-
},
|
|
149
|
-
//mode:"add_extra"
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
export interface HTMLModule {
|
|
153
|
-
default: JSX.Element | ((req: Request | null, res: Response | null) => (Promise<JSX.Element> | JSX.Element));
|
|
154
|
-
apiOptions?: APIOptions;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
export const HTMLModuleSchema: Schema<HTMLModule> = {
|
|
158
|
-
type: "object",
|
|
159
|
-
properties: {
|
|
160
|
-
default: {
|
|
161
|
-
type: "function|object"
|
|
162
|
-
},
|
|
163
|
-
apiOptions: APIOptionsSchema
|
|
164
|
-
},
|
|
165
|
-
//mode:"add_extra"
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
export type JSONModuleValue = string | object;
|
|
169
|
-
|
|
170
|
-
export interface JSONModule {
|
|
171
|
-
default: JSONModuleValue | ((req: Request | null, res: Response | null) => (Promise<JSONModuleValue> | JSONModuleValue));
|
|
172
|
-
apiOptions?: APIOptions;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
export const JSONModuleSchema: Schema<JSONModule> = {
|
|
176
|
-
type: "object",
|
|
177
|
-
properties: {
|
|
178
|
-
default: {
|
|
179
|
-
type: "function|object|string"
|
|
180
|
-
},
|
|
181
|
-
apiOptions: APIOptionsSchema
|
|
182
|
-
},
|
|
183
|
-
//mode:"add_extra"
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
export const MigrationSchema: Schema<Migration> = {
|
|
187
|
-
type: "object",
|
|
188
|
-
properties: {
|
|
189
|
-
up: "function",
|
|
190
|
-
down: "function"
|
|
191
|
-
},
|
|
192
|
-
mode: "add_extra"
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
export const CORSOptionsSchema: Schema<CORSOptions> = {
|
|
196
|
-
type: "object",
|
|
197
|
-
properties: {
|
|
198
|
-
origins: "string[]?|string?",
|
|
199
|
-
validate: "function?",
|
|
200
|
-
methods: "string?",
|
|
201
|
-
preflightContinue: "boolean?"
|
|
202
|
-
},
|
|
203
|
-
//mode:"add_extra"
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
export const WSConfigSchema: Schema<WSConfig> = {
|
|
207
|
-
type: "object",
|
|
208
|
-
properties: {
|
|
209
|
-
path: "string",
|
|
210
|
-
disabled: "boolean?",
|
|
211
|
-
maxConnections: "number?",
|
|
212
|
-
validate: "function?",
|
|
213
|
-
onConnection: "function?",
|
|
214
|
-
onMessage: "function?",
|
|
215
|
-
onDisconnect: "function?"
|
|
216
|
-
},
|
|
217
|
-
//mode:"add_extra"
|
|
218
|
-
};
|
|
219
|
-
|
|
220
|
-
export const DBConfigSchema: Schema<DBConfig> = {
|
|
221
|
-
type: "object",
|
|
222
|
-
properties: {
|
|
223
|
-
url: "string?",
|
|
224
|
-
disabled: "boolean?",
|
|
225
|
-
storage: "string?",
|
|
226
|
-
dialect: "string?",
|
|
227
|
-
name: "string"
|
|
228
|
-
},
|
|
229
|
-
//mode:"add_extra"
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
export const ServerConfigSchema: Schema<ServerConfig> = {
|
|
233
|
-
type: "object",
|
|
234
|
-
properties: {
|
|
235
|
-
preload: "function?",
|
|
236
|
-
unload: "function?",
|
|
237
|
-
stop: "function?",
|
|
238
|
-
start: "function?",
|
|
239
|
-
load: "function?"
|
|
240
|
-
},
|
|
241
|
-
//mode:"add_extra"
|
|
242
|
-
};
|
|
243
|
-
|
|
244
|
-
export const LogConfigSchema: Schema<LogConfig> = {
|
|
245
|
-
type: "object",
|
|
246
|
-
properties: {
|
|
247
|
-
level: {
|
|
248
|
-
type: "enum?",
|
|
249
|
-
enumValues: ["error", "warn", "info", "debug", "trace", "none"]
|
|
250
|
-
},
|
|
251
|
-
replaceConsoleTransport: "boolean?",
|
|
252
|
-
replaceFileTransport: "boolean?",
|
|
253
|
-
write: "function"
|
|
254
|
-
},
|
|
255
|
-
//mode:"add_extra"
|
|
256
|
-
};
|
|
257
|
-
|
|
258
|
-
export const AuthConfigSchema: Schema<AuthConfig> = {
|
|
259
|
-
type: "object",
|
|
260
|
-
properties: {
|
|
261
|
-
...SessionHandlerOptionsSchema.properties
|
|
262
|
-
},
|
|
263
|
-
//mode:"add_extra"
|
|
264
|
-
}
|
|
265
|
-
|
|
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
|
-
}
|
|
275
|
-
|
|
276
|
-
export async function importMigrationModule(inFile: string, logger?: Logger) {
|
|
277
|
-
const module = parser.parse((await importJSXFile(inFile, logger)).default, MigrationSchema, basename(inFile));
|
|
278
|
-
if (module !== undefined) {
|
|
279
|
-
return module;
|
|
280
|
-
} else {
|
|
281
|
-
throw new Error(`error with module [${inFile}] undefined`);
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
export async function importHTMLModule(inFile: string, logger?: Logger) {
|
|
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`);
|
|
289
|
-
if (module !== undefined) {
|
|
290
|
-
return module;
|
|
291
|
-
} else {
|
|
292
|
-
throw new Error(`error with module [${inFile}] undefined`);
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
export async function importJSONModule(inFile: string, logger?: Logger) {
|
|
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`);
|
|
300
|
-
if (module !== undefined) {
|
|
301
|
-
return module;
|
|
302
|
-
} else {
|
|
303
|
-
throw new Error(`error with module [${inFile}] undefined`);
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
export async function importAuthModule(inFile: string, logger?: Logger) {
|
|
308
|
-
const module = parser.parse((await importJSXFile(inFile, logger)).default, AuthConfigSchema, basename(inFile));
|
|
309
|
-
if (module !== undefined) {
|
|
310
|
-
return module;
|
|
311
|
-
} else {
|
|
312
|
-
throw new Error(`error with module [${inFile}] undefined`);
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
export async function importCORSModule(inFile: string, logger?: Logger) {
|
|
317
|
-
const module = parser.parse((await importJSXFile(inFile, logger)).default, CORSOptionsSchema, basename(inFile));
|
|
318
|
-
if (module !== undefined) {
|
|
319
|
-
return module;
|
|
320
|
-
} else {
|
|
321
|
-
throw new Error(`error with module [${inFile}] undefined`);
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
export async function importWSConfigModule(inFile: string, logger?: Logger) {
|
|
326
|
-
const module = parser.parse((await importJSXFile(inFile, logger)).default, WSConfigSchema, basename(inFile));
|
|
327
|
-
if (module !== undefined) {
|
|
328
|
-
return module;
|
|
329
|
-
} else {
|
|
330
|
-
throw new Error(`error with module [${inFile}] undefined`);
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
export async function importDBConfigModule(inFile: string, logger?: Logger) {
|
|
335
|
-
const module = parser.parse((await importJSXFile(inFile, logger)).default, DBConfigSchema, basename(inFile));
|
|
336
|
-
if (module !== undefined) {
|
|
337
|
-
return module;
|
|
338
|
-
} else {
|
|
339
|
-
throw new Error(`error with module [${inFile}] undefined`);
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
export async function importLogConfigModule(inFile: string, logger?: Logger) {
|
|
344
|
-
const module = parser.parse((await importJSXFile(inFile, logger)).default, LogConfigSchema, basename(inFile));
|
|
345
|
-
if (module !== undefined) {
|
|
346
|
-
return module;
|
|
347
|
-
} else {
|
|
348
|
-
throw new Error(`error with module [${inFile}] undefined`);
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
export async function importServerConfigModule(inFile: string, logger?: Logger) {
|
|
353
|
-
const module = parser.parse((await importJSXFile(inFile, logger)).default, ServerConfigSchema, basename(inFile));
|
|
354
|
-
if (module !== undefined) {
|
|
355
|
-
return module;
|
|
356
|
-
} else {
|
|
357
|
-
throw new Error(`error with module [${inFile}] undefined`);
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
export async function importJSXFile(inFile: string, logger?: Logger | Console): Promise<any> {
|
|
362
|
-
const inflatedCode = await inflateJSX(inFile, {
|
|
363
|
-
embemedJSX: false,
|
|
364
|
-
minify: false,
|
|
365
|
-
useExport: true,
|
|
366
|
-
logger
|
|
367
|
-
});
|
|
368
|
-
const tmpBuildDir = resolve(JSX_TMP_DIR, String(process.pid), "import", Date.now() + "-" + randomUUID());
|
|
369
|
-
const inFileTmp = resolve(tmpBuildDir, basename(inFile) + ".mjs");
|
|
370
|
-
//const logger = getLogger(`${SERVER_IDENTIFIER}_JSX`);
|
|
371
|
-
mkdirSync(tmpBuildDir, {
|
|
372
|
-
recursive: true
|
|
373
|
-
});
|
|
374
|
-
try {
|
|
375
|
-
writeFileSync(inFileTmp, inflatedCode);
|
|
376
|
-
assertGlobalTampered();
|
|
377
|
-
logger?.trace("importing [%s] from [%s]. to change the import folder set JSX_TMP", relative(cwd(), inFile), dirname(relative(JSX_TMP_DIR, inFileTmp)));
|
|
378
|
-
logger?.debug("importing [%s]", relative(cwd(), inFile));
|
|
379
|
-
const module = await import(inFileTmp);
|
|
380
|
-
assertGlobalTampered();
|
|
381
|
-
if (CLEAR_JSX_CACHE) {
|
|
382
|
-
logger?.trace("clearing cache at [%s]. to change this behaivor set CLEAR_JSX_CACHE to 0", tmpBuildDir);
|
|
383
|
-
unlinkSync(inFileTmp);
|
|
384
|
-
rmdirSync(tmpBuildDir);
|
|
385
|
-
}
|
|
386
|
-
return module;
|
|
387
|
-
} catch (e) {
|
|
388
|
-
logger?.error(e);
|
|
389
|
-
logger?.error("error with: " + inFile);
|
|
390
|
-
if (CLEAR_JSX_CACHE) {
|
|
391
|
-
logger?.trace("clearing cache at [%s] to change this behaivor set CLEAR_JSX_CACHE to 0", tmpBuildDir);
|
|
392
|
-
unlinkSync(inFileTmp);
|
|
393
|
-
rmdirSync(tmpBuildDir);
|
|
394
|
-
} else {
|
|
395
|
-
//console.error("errors on: " + tmpBuildDir);
|
|
396
|
-
logger?.error("error with: %s", inFileTmp);
|
|
397
|
-
logger?.trace("NOT clearing cache. to change this behaivor set CLEAR_JSX_CACHE to 1", tmpBuildDir);
|
|
398
|
-
}
|
|
399
|
-
throw e;
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
export function jsx2HTML(out: JSX.Element, runtime?: Runtime): string {
|
|
404
|
-
runtime = runtime ? runtime : createNodeRuntime();
|
|
405
|
-
const element = runtime.createElement("root");
|
|
406
|
-
const container = runtime.createContainer(element, {
|
|
407
|
-
shadowInit: false, runtimeOptions: {
|
|
408
|
-
disableEffects: true,
|
|
409
|
-
disableEvents: true,
|
|
410
|
-
disableRefListener: true,
|
|
411
|
-
disableRefresh: true
|
|
412
|
-
}
|
|
413
|
-
});
|
|
414
|
-
container.render(out);
|
|
415
|
-
//console.log("jsx2HTML [%s]", element);
|
|
416
|
-
let HTML = "";
|
|
417
|
-
for (let i = 0; i < element.childNodes.length; i++) {
|
|
418
|
-
const child = element.childNodes[i];
|
|
419
|
-
//console.log("jsx2HTML child [%s]", child);
|
|
420
|
-
//console.log("jsx2HTML child [%s]", (child as any).toString(" ", -1));
|
|
421
|
-
HTML += (child as any).toString(" ", -1);
|
|
422
|
-
}
|
|
423
|
-
container.disconnect();
|
|
424
|
-
//console.log("jsx2HTML [%s]", HTML);
|
|
425
|
-
return HTML;
|
|
426
|
-
}
|