miqro 6.3.0 → 7.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/README.md +9 -17
  2. package/build/editor.bundle.js +11601 -10129
  3. package/build/esm/src/bin/types.js +10 -5
  4. package/build/esm/src/cluster.js +1 -1
  5. package/build/esm/src/common/arguments.d.ts +1 -1
  6. package/build/esm/src/common/arguments.js +28 -14
  7. package/build/esm/src/common/assets.d.ts +1 -1
  8. package/build/esm/src/common/assets.js +34 -13
  9. package/build/esm/src/common/esbuild.d.ts +4 -1
  10. package/build/esm/src/common/esbuild.js +31 -26
  11. package/build/esm/src/common/exit.js +4 -4
  12. package/build/esm/src/common/help.d.ts +1 -1
  13. package/build/esm/src/common/help.js +0 -1
  14. package/build/esm/src/common/jsx.d.ts +2 -3
  15. package/build/esm/src/common/jsx.js +70 -75
  16. package/build/esm/src/common/paths.d.ts +0 -1
  17. package/build/esm/src/common/paths.js +3 -3
  18. package/build/esm/src/common/watch.d.ts +0 -1
  19. package/build/esm/src/common/watch.js +1 -1
  20. package/build/esm/src/inflate/inflate-sea.js +35 -24
  21. package/build/esm/src/inflate/inflate.js +4 -4
  22. package/build/esm/src/inflate/setup-auth.js +1 -1
  23. package/build/esm/src/inflate/setup-cors.js +1 -1
  24. package/build/esm/src/inflate/setup-db.js +2 -2
  25. package/build/esm/src/inflate/setup-error.js +1 -1
  26. package/build/esm/src/inflate/setup-http.js +16 -16
  27. package/build/esm/src/inflate/setup-log.js +1 -1
  28. package/build/esm/src/inflate/setup-middleware.js +1 -1
  29. package/build/esm/src/inflate/setup-server-config.js +1 -1
  30. package/build/esm/src/inflate/setup-ws.js +1 -1
  31. package/build/esm/src/inflate/setup.doc.d.ts +2 -2
  32. package/build/esm/src/inflate/setup.doc.js +23 -2
  33. package/build/esm/src/inflate/utils/sea-utils.js +2 -2
  34. package/build/esm/src/lib.d.ts +10 -1
  35. package/build/esm/src/lib.js +16 -1
  36. package/build/esm/src/main.js +1 -1
  37. package/build/esm/src/services/app.js +3 -4
  38. package/build/esm/src/services/migrations.js +2 -2
  39. package/build/esm/src/services/utils/jwt.d.ts +2 -0
  40. package/build/esm/src/services/utils/jwt.js +23 -0
  41. package/build/esm/src/services/utils/middleware.d.ts +9 -0
  42. package/build/esm/src/services/utils/middleware.js +9 -0
  43. package/build/esm/src/services/utils/server-interface.js +33 -4
  44. package/build/esm/src/types.d.ts +50 -83
  45. package/build/lib.cjs +15684 -15612
  46. package/package.json +6 -8
  47. package/sea/basic-compile.base64.sh +1 -1
  48. package/sea/basic-compile.sh +1 -1
  49. package/sea/install-nodejs.sh +1 -1
  50. package/sea/node.version.tag +1 -1
  51. package/.eslintrc +0 -15
  52. package/build/esm/editor/auth.d.ts +0 -6
  53. package/build/esm/editor/auth.js +0 -41
  54. package/build/esm/editor/common/admin-interface.d.ts +0 -36
  55. package/build/esm/editor/common/admin-interface.js +0 -44
  56. package/build/esm/editor/common/constants.d.ts +0 -4
  57. package/build/esm/editor/common/constants.js +0 -20
  58. package/build/esm/editor/common/constants.server.d.ts +0 -2
  59. package/build/esm/editor/common/constants.server.js +0 -4
  60. package/build/esm/editor/common/editor-index.d.ts +0 -2
  61. package/build/esm/editor/common/editor-index.js +0 -14
  62. package/build/esm/editor/common/html-encode.d.ts +0 -1
  63. package/build/esm/editor/common/html-encode.js +0 -14
  64. package/build/esm/editor/common/log-socket.d.ts +0 -15
  65. package/build/esm/editor/common/log-socket.js +0 -70
  66. package/build/esm/editor/common/templates.d.ts +0 -11
  67. package/build/esm/editor/common/templates.js +0 -477
  68. package/build/esm/editor/components/api-preview.d.ts +0 -11
  69. package/build/esm/editor/components/api-preview.js +0 -90
  70. package/build/esm/editor/components/editor.d.ts +0 -16
  71. package/build/esm/editor/components/editor.js +0 -365
  72. package/build/esm/editor/components/file-browser.d.ts +0 -37
  73. package/build/esm/editor/components/file-browser.js +0 -126
  74. package/build/esm/editor/components/file-editor-toolbar.d.ts +0 -22
  75. package/build/esm/editor/components/file-editor-toolbar.js +0 -93
  76. package/build/esm/editor/components/file-editor.d.ts +0 -32
  77. package/build/esm/editor/components/file-editor.js +0 -59
  78. package/build/esm/editor/components/filter-query.d.ts +0 -1
  79. package/build/esm/editor/components/filter-query.js +0 -22
  80. package/build/esm/editor/components/highlight-text-area.d.ts +0 -11
  81. package/build/esm/editor/components/highlight-text-area.js +0 -125
  82. package/build/esm/editor/components/log-viewer.d.ts +0 -6
  83. package/build/esm/editor/components/log-viewer.js +0 -69
  84. package/build/esm/editor/components/new-file.d.ts +0 -10
  85. package/build/esm/editor/components/new-file.js +0 -117
  86. package/build/esm/editor/components/scroll-query.d.ts +0 -7
  87. package/build/esm/editor/components/scroll-query.js +0 -21
  88. package/build/esm/editor/components/start-page.d.ts +0 -13
  89. package/build/esm/editor/components/start-page.js +0 -30
  90. package/build/esm/editor/http/admin/editor/api/fs/delete.api.d.ts +0 -3
  91. package/build/esm/editor/http/admin/editor/api/fs/delete.api.js +0 -29
  92. package/build/esm/editor/http/admin/editor/api/fs/read.api.d.ts +0 -5
  93. package/build/esm/editor/http/admin/editor/api/fs/read.api.js +0 -49
  94. package/build/esm/editor/http/admin/editor/api/fs/rename.api.d.ts +0 -4
  95. package/build/esm/editor/http/admin/editor/api/fs/rename.api.js +0 -39
  96. package/build/esm/editor/http/admin/editor/api/fs/scan.api.d.ts +0 -26
  97. package/build/esm/editor/http/admin/editor/api/fs/scan.api.js +0 -149
  98. package/build/esm/editor/http/admin/editor/api/fs/write.api.d.ts +0 -3
  99. package/build/esm/editor/http/admin/editor/api/fs/write.api.js +0 -38
  100. package/build/esm/editor/http/admin/editor/api/server/reload.api.d.ts +0 -10
  101. package/build/esm/editor/http/admin/editor/api/server/reload.api.js +0 -46
  102. package/build/esm/editor/http/admin/editor/api/server/restart.api.d.ts +0 -10
  103. package/build/esm/editor/http/admin/editor/api/server/restart.api.js +0 -45
  104. package/build/esm/editor/http/admin/editor/editor.d.ts +0 -1
  105. package/build/esm/editor/http/admin/editor/editor.js +0 -7
  106. package/build/esm/editor/http/admin/editor/index.api.d.ts +0 -3
  107. package/build/esm/editor/http/admin/editor/index.api.js +0 -21
  108. package/build/esm/editor/server.d.ts +0 -3
  109. package/build/esm/editor/server.js +0 -49
  110. package/build/esm/editor/ws.d.ts +0 -3
  111. package/build/esm/editor/ws.js +0 -11
  112. package/build/esm/src/services/globals.d.ts +0 -3
  113. package/build/esm/src/services/globals.js +0 -182
  114. package/build/jsx.dom.js +0 -1587
  115. package/build/postject.base64.cjs +0 -1
  116. package/editor/auth.ts +0 -51
  117. package/editor/common/admin-interface.ts +0 -84
  118. package/editor/common/constants.server.ts +0 -5
  119. package/editor/common/constants.ts +0 -21
  120. package/editor/common/editor-index.tsx +0 -17
  121. package/editor/common/html-encode.ts +0 -14
  122. package/editor/common/log-socket.tsx +0 -85
  123. package/editor/common/templates.ts +0 -481
  124. package/editor/components/api-preview.tsx +0 -116
  125. package/editor/components/editor.tsx +0 -494
  126. package/editor/components/file-browser.tsx +0 -308
  127. package/editor/components/file-editor-toolbar.tsx +0 -191
  128. package/editor/components/file-editor.tsx +0 -122
  129. package/editor/components/filter-query.tsx +0 -22
  130. package/editor/components/highlight-text-area.tsx +0 -145
  131. package/editor/components/log-viewer.tsx +0 -110
  132. package/editor/components/new-file.tsx +0 -169
  133. package/editor/components/scroll-query.tsx +0 -22
  134. package/editor/components/start-page.tsx +0 -49
  135. package/editor/http/admin/editor/api/fs/delete.api.tsx +0 -32
  136. package/editor/http/admin/editor/api/fs/read.api.tsx +0 -55
  137. package/editor/http/admin/editor/api/fs/rename.api.tsx +0 -41
  138. package/editor/http/admin/editor/api/fs/scan.api.tsx +0 -181
  139. package/editor/http/admin/editor/api/fs/write.api.tsx +0 -41
  140. package/editor/http/admin/editor/api/server/reload.api.ts +0 -53
  141. package/editor/http/admin/editor/api/server/restart.api.tsx +0 -52
  142. package/editor/http/admin/editor/editor.tsx +0 -8
  143. package/editor/http/admin/editor/index.api.tsx +0 -39
  144. package/editor/server.ts +0 -57
  145. package/editor/ws.ts +0 -15
  146. package/sea/types.json +0 -1
  147. package/src/bin/compile.ts +0 -35
  148. package/src/bin/doc-md.ts +0 -210
  149. package/src/bin/generate-doc.ts +0 -64
  150. package/src/bin/test.ts +0 -92
  151. package/src/bin/types.ts +0 -29
  152. package/src/cluster.ts +0 -27
  153. package/src/common/arguments.ts +0 -745
  154. package/src/common/assets.ts +0 -128
  155. package/src/common/checksum.ts +0 -58
  156. package/src/common/constants.ts +0 -18
  157. package/src/common/content-type.ts +0 -84
  158. package/src/common/esbuild.ts +0 -94
  159. package/src/common/exit.ts +0 -91
  160. package/src/common/fs.ts +0 -82
  161. package/src/common/help.ts +0 -61
  162. package/src/common/jsx.ts +0 -547
  163. package/src/common/jwt.ts +0 -85
  164. package/src/common/paths.ts +0 -107
  165. package/src/common/watch.ts +0 -88
  166. package/src/inflate/inflate-sea.ts +0 -226
  167. package/src/inflate/inflate.ts +0 -101
  168. package/src/inflate/md.ts +0 -25
  169. package/src/inflate/setup-auth.ts +0 -41
  170. package/src/inflate/setup-cors.ts +0 -41
  171. package/src/inflate/setup-db.ts +0 -117
  172. package/src/inflate/setup-error.ts +0 -44
  173. package/src/inflate/setup-http.ts +0 -704
  174. package/src/inflate/setup-log.ts +0 -45
  175. package/src/inflate/setup-middleware.ts +0 -47
  176. package/src/inflate/setup-server-config.ts +0 -48
  177. package/src/inflate/setup-test.ts +0 -23
  178. package/src/inflate/setup-ws.ts +0 -50
  179. package/src/inflate/setup.doc.ts +0 -68
  180. package/src/inflate/utils/sea-utils.ts +0 -14
  181. package/src/lib.ts +0 -19
  182. package/src/main.ts +0 -101
  183. package/src/services/app.ts +0 -699
  184. package/src/services/editor.tsx +0 -101
  185. package/src/services/globals.ts +0 -186
  186. package/src/services/hot-reload.ts +0 -51
  187. package/src/services/migrations.ts +0 -68
  188. package/src/services/utils/admin-interface.ts +0 -37
  189. package/src/services/utils/cache.ts +0 -88
  190. package/src/services/utils/cluster-cache.ts +0 -230
  191. package/src/services/utils/cluster-ws.ts +0 -202
  192. package/src/services/utils/db-manager.ts +0 -92
  193. package/src/services/utils/get-route.ts +0 -70
  194. package/src/services/utils/log-transport.ts +0 -81
  195. package/src/services/utils/log.ts +0 -92
  196. package/src/services/utils/server-interface.ts +0 -92
  197. package/src/services/utils/websocketmanager.ts +0 -157
  198. package/src/types/@esbuild.d.ts +0 -1
  199. package/src/types/@miqro/core.d.ts +0 -2
  200. package/src/types/@miqro/jsx.d.ts +0 -2
  201. package/src/types/@miqro/parser.d.ts +0 -2
  202. package/src/types/@miqro/query.d.ts +0 -2
  203. package/src/types/@miqro/request.d.ts +0 -2
  204. package/src/types/@miqro/test.d.ts +0 -2
  205. package/src/types/@miqro.d.ts +0 -1
  206. package/src/types/@types.d.ts +0 -1
  207. package/src/types/browser.globals.d.ts +0 -1
  208. package/src/types/cookie.d.ts +0 -2
  209. package/src/types/globals.d.ts +0 -2
  210. package/src/types/jose.d.ts +0 -2
  211. package/src/types/jsx.globals.d.ts +0 -38
  212. package/src/types/miqro.d.ts +0 -228
  213. package/src/types/postject.d.ts +0 -1
  214. package/src/types/server.globals.d.ts +0 -47
  215. package/src/types.ts +0 -304
  216. package/tsconfig.json +0 -35
@@ -1,745 +0,0 @@
1
- import { checkEnvVariable } from "@miqro/core";
2
- import { cp, existsSync, readFileSync, statSync } from "node:fs";
3
- import { basename, dirname, join, relative, resolve } from "node:path";
4
- import { cwd, env, platform, arch } from "node:process";
5
-
6
- import { EXIT_CODES } from "./constants.js";
7
- import { tmpdir } from "node:os";
8
- import { randomUUID } from "node:crypto";
9
- import { BIN_NAME, help, usage } from "./help.js";
10
- import { getMiqroJSONPath, TEST_SOCKET } from "./paths.js";
11
- import { isSea } from "node:sea";
12
- import cluster from "node:cluster";
13
- import { __package_dirname, getVersion } from "./assets.js";
14
- import { Parser, Schema } from "@miqro/parser";
15
- import { ServerOptions } from "node:https";
16
-
17
- const parser = new Parser();
18
-
19
- interface MiqroJSON {
20
- services?: string[];
21
- port?: string | number;
22
- inflateDir?: string;
23
- name?: string;
24
- browser?: string | boolean;
25
- logFile?: string | boolean;
26
- editor?: boolean;
27
- https?: boolean;
28
- serverOptions?: ServerOptions;
29
- httpsRedirect?: number;
30
- inflateParallel?: number;
31
- }
32
-
33
- const MiqroJSONSchema: Schema<MiqroJSON> = {
34
- type: "object",
35
- properties: {
36
- name: "string?",
37
- services: "string[]?",
38
- port: "number?|string?",
39
- inflateDir: "string?",
40
- browser: "boolean?|string?",
41
- logFile: "boolean?|string?",
42
- editor: "boolean?",
43
- https: "boolean?",
44
- serverOptions: "any?",
45
- httpsRedirect: "number?",
46
- inflateParallel: "number?"
47
- }
48
- }
49
-
50
- export function importMiqroJSON(inFile: string) {
51
- const mod = JSON.parse(readFileSync(inFile).toString());
52
- const module = parser.parse(mod, MiqroJSONSchema, basename(inFile));
53
- if (module !== undefined) {
54
- return module as MiqroJSON;
55
- } else {
56
- throw new Error(`error loading [${inFile}] undefined`);
57
- }
58
- }
59
-
60
- export function getPORT() {
61
- return checkEnvVariable("PORT", "8080");
62
- }
63
-
64
- export interface Arguments {
65
- name?: string;
66
- browser?: string | boolean;
67
- logFile?: string | boolean;
68
- installTypes: boolean;
69
- installMiqroJSON: boolean;
70
- installTSConfig: boolean;
71
- test: boolean;
72
- port: string;
73
- inflate: boolean;
74
- generateDoc: boolean;
75
- generateDocOut: string;
76
- miqroJSONPath: string | false;
77
- disableMiqroJSON: boolean;
78
- generateDocAll: boolean;
79
- generateDocType: "JSON" | "MD";
80
- migrateUp: boolean;
81
- migrateDown: boolean;
82
- compile: boolean;
83
- inflateSEA: boolean;
84
- inflateDir: string;
85
- services: string[];
86
- editor: boolean;
87
- hotreload: boolean;
88
- watch: boolean;
89
- https: boolean;
90
- serverOptions: ServerOptions;
91
- httpsRedirect?: number;
92
- inflateParallel?: number;
93
- }
94
-
95
- /**
96
- * parse process.argv arguments
97
- */
98
- export function parseArguments(): Arguments {
99
- //env["LOG_FILE"] = env["LOG_FILE"] ? env["LOG_FILE"] : "./server.log";
100
-
101
-
102
- const args = cluster.isPrimary ? process.argv.slice(2, process.argv.length) : process.argv.slice(3, process.argv.length);
103
- const flags: {
104
- inflateParallel: number | null;
105
- httpsRedirect: number | null;
106
- https: boolean | null;
107
- serverOptions: ServerOptions;
108
- logFile: string | boolean | null;
109
- browser: string | boolean | null;
110
- name: string | null;
111
- installTypes: boolean | null;
112
- installMiqroJSON: boolean | null;
113
- installTSConfig: boolean | null;
114
- inflate: boolean | null;
115
- port: string | null;
116
- generateDoc: boolean | null;
117
- generateDocAll: boolean | null;
118
- miqroJSONPath: string | null;
119
- disableMiqroJSON: boolean | null;
120
- generateDocOut?: string | null;
121
- generateDocType?: string | null;
122
- test: boolean;
123
- migrateUp: boolean | null;
124
- migrateDown: boolean | null;
125
- compile: boolean | null;
126
- inflateSEA: boolean | null;
127
- editor: boolean | null;
128
- inflateDir?: string | null;
129
- hotreload?: boolean | null;
130
- watch?: boolean | null;
131
- } = {
132
- inflateParallel: null,
133
- httpsRedirect: null,
134
- https: null,
135
- serverOptions: {},
136
- name: null,
137
- browser: null,
138
- logFile: null,
139
- hotreload: null,
140
- watch: null,
141
- miqroJSONPath: null,
142
- installMiqroJSON: null,
143
- disableMiqroJSON: null,
144
- installTypes: null,
145
- port: null,
146
- installTSConfig: null,
147
- migrateUp: null,
148
- migrateDown: null,
149
- inflateSEA: null,
150
- compile: null,
151
- test: null,
152
- inflate: null,
153
- generateDoc: null,
154
- generateDocAll: null,
155
- generateDocOut: null,
156
- generateDocType: null,
157
- editor: null,
158
- inflateDir: null
159
- };
160
- const services: string[] = [];
161
-
162
- for (let i = 0; i < args.length; i++) {
163
- const argument = args[i];
164
- switch (argument) {
165
- case "-v":
166
- case "--version":
167
- const { VERSION, NODE_VERSION, ESBUILD_VERSION } = getVersion();
168
- if (isSea()) {
169
- console.log("version [%s]", VERSION);
170
- console.log("Node.js version [%s]", NODE_VERSION);
171
- console.log("esbuild version [%s]", ESBUILD_VERSION);
172
- console.log("platform [%s-%s]", platform, arch);
173
- } else {
174
- const packageJSON = JSON.parse(readFileSync(resolve(__package_dirname, "package.json")).toString());
175
- const VERSION = packageJSON.version;
176
- console.log("version [%s]", VERSION);
177
- }
178
- process.exit(EXIT_CODES.NORMAL_EXIT);
179
- case "-h":
180
- case "--help":
181
- console.log(usage);
182
- console.log(help);
183
- process.exit(EXIT_CODES.NORMAL_EXIT);
184
- case "--disable-miqrojson":
185
- if (flags.disableMiqroJSON !== null || flags.miqroJSONPath !== null) {
186
- console.error("bad arguments.");
187
- console.error(usage);
188
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
189
- }
190
- flags.disableMiqroJSON = true;
191
- continue;
192
- case "--config":
193
- if (flags.miqroJSONPath !== null || flags.disableMiqroJSON !== null) {
194
- console.error("bad arguments.");
195
- console.error(usage);
196
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
197
- }
198
- if (typeof args[i + 1] !== "string") {
199
- console.error("bad arguments. --config must be a string.");
200
- console.error(usage);
201
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
202
- } else {
203
- const cPath = String(args[i + 1]) as any;
204
- flags.miqroJSONPath = cPath;
205
- }
206
- i++;
207
- continue;
208
- case "--install-tsconfig":
209
- if (flags.inflate !== null || flags.installTSConfig !== null) {
210
- console.error("bad arguments.");
211
- console.error(usage);
212
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
213
- }
214
- flags.installTSConfig = true;
215
- continue;
216
- case "--watch":
217
- if (flags.watch !== null) {
218
- console.error("bad arguments.");
219
- console.error(usage);
220
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
221
- }
222
- flags.watch = true;
223
- continue;
224
- case "--hot-reload":
225
- if (flags.hotreload !== null) {
226
- console.error("bad arguments.");
227
- console.error(usage);
228
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
229
- }
230
- flags.hotreload = true;
231
- continue;
232
- case "--https":
233
- if (flags.https !== null) {
234
- console.error("bad arguments.");
235
- console.error(usage);
236
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
237
- }
238
- flags.https = true;
239
- continue;
240
- case "--https-redirect":
241
- if (flags.httpsRedirect !== null) {
242
- console.error("bad arguments.");
243
- console.error(usage);
244
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
245
- }
246
- const httpsRedirectPort = parseInt(String(args[i + 1]) as any, 10);
247
- if (isNaN(httpsRedirectPort)) {
248
- console.error("bad arguments. --https-redirect must be a number.");
249
- console.error(usage);
250
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
251
- }
252
- flags.httpsRedirect = httpsRedirectPort;
253
- i++;
254
- continue;
255
- case "--https-cert":
256
- if (flags.serverOptions.cert) {
257
- console.error("bad arguments.");
258
- console.error(usage);
259
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
260
- }
261
- const httpsCertPath = args[i + 1] as any;
262
- if (typeof httpsCertPath !== "string") {
263
- console.error("bad arguments. --https-cert must be a string.");
264
- console.error(usage);
265
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
266
- }
267
- flags.serverOptions.cert = readFileSync(httpsCertPath);
268
- i++;
269
- continue;
270
- case "--https-key":
271
- if (flags.serverOptions.key) {
272
- console.error("bad arguments.");
273
- console.error(usage);
274
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
275
- }
276
- const httpsKeyPath = args[i + 1] as any;
277
- if (typeof httpsKeyPath !== "string") {
278
- console.error("bad arguments. --https-key must be a string.");
279
- console.error(usage);
280
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
281
- }
282
- flags.serverOptions.key = readFileSync(httpsKeyPath);
283
- i++;
284
- continue;
285
- case "--port":
286
- if (flags.port !== null) {
287
- console.error("bad arguments.");
288
- console.error(usage);
289
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
290
- }
291
- if (typeof args[i + 1] !== "string") {
292
- console.error("bad arguments. --port must be a string.");
293
- console.error(usage);
294
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
295
- } else {
296
- const cPort = String(args[i + 1]) as any;
297
- flags.port = cPort;
298
- }
299
- i++;
300
- continue;
301
- case "--name":
302
- if (flags.name !== null) {
303
- console.error("bad arguments.");
304
- console.error(usage);
305
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
306
- }
307
- if (typeof args[i + 1] !== "string") {
308
- console.error("bad arguments. --port must be a string.");
309
- console.error(usage);
310
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
311
- } else {
312
- const cName = String(args[i + 1]).toUpperCase() as any;
313
- flags.name = cName;
314
- }
315
-
316
- i++;
317
- continue;
318
- case "--log-file":
319
- if (flags.logFile !== null) {
320
- console.error("bad arguments.");
321
- console.error(usage);
322
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
323
- }
324
-
325
- if (typeof args[i + 1] !== "string") {
326
- console.error("bad arguments. --port must be a string.");
327
- console.error(usage);
328
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
329
- } else {
330
- const cLofFile = String(args[i + 1]) as any;
331
- flags.logFile = cLofFile;
332
- }
333
- i++;
334
- continue;
335
- case "--browser":
336
- if (flags.browser !== null) {
337
- console.error("bad arguments.");
338
- console.error(usage);
339
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
340
- }
341
-
342
- if (typeof args[i + 1] !== "string") {
343
- console.error("bad arguments. --port must be a string.");
344
- console.error(usage);
345
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
346
- } else {
347
- const cBrowser = String(args[i + 1]) as any;
348
- flags.browser = cBrowser;
349
- }
350
- i++;
351
- continue;
352
- case "--generate-doc":
353
- if (flags.generateDoc !== null) {
354
- console.error("bad arguments.");
355
- console.error(usage);
356
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
357
- }
358
- flags.generateDoc = true;
359
- continue;
360
- case "--generate-doc-all":
361
- if (flags.generateDocAll !== null) {
362
- console.error("bad arguments.");
363
- console.error(usage);
364
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
365
- }
366
- flags.generateDocAll = true;
367
- continue;
368
- case "--generate-doc-out":
369
- if (flags.generateDocOut !== null) {
370
- console.error("bad arguments. --generate-doc-out already set.");
371
- console.error(usage);
372
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
373
- }
374
- flags.generateDocOut = args[i + 1];
375
- if (typeof flags.generateDocOut !== "string") {
376
- console.error("bad arguments. --generate-doc-out missing value.");
377
- console.error(usage);
378
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
379
- }
380
- i++;
381
- continue;
382
- case "--generate-doc-type":
383
- if (flags.generateDocType !== null) {
384
- console.error("bad arguments. --generate-doc-type already set.");
385
- console.error(usage);
386
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
387
- }
388
- const gDt = String(args[i + 1]).toUpperCase() as any;
389
- if (typeof gDt !== "string" || (gDt !== "JSON" && gDt !== "MD")) {
390
- console.error("bad arguments. --generate-doc-type can be json or md.");
391
- console.error(usage);
392
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
393
- }
394
- flags.generateDocType = gDt;
395
- i++;
396
- continue;
397
- case "--compile":
398
- if (flags.compile !== null) {
399
- if (flags.inflateDir === null) {
400
- flags.inflateDir = resolve(tmpdir(), `${BIN_NAME}-compile`, randomUUID());
401
- }
402
- console.error("bad arguments. --compile already set");
403
- console.error(usage);
404
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
405
- }
406
- flags.compile = true;
407
- flags.inflateSEA = true;
408
- flags.inflate = true;
409
- continue;
410
- case "--install-types":
411
- if (flags.inflate !== null || flags.installTypes !== null) {
412
- console.error("bad arguments.");
413
- console.error(usage);
414
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
415
- }
416
- flags.installTypes = true;
417
- continue;
418
- case "--editor":
419
- if (flags.editor !== null) {
420
- console.error("bad arguments.");
421
- console.error(usage);
422
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
423
- }
424
- flags.editor = true;
425
- continue;
426
- case "--install-miqrojson":
427
- if (flags.installMiqroJSON !== null) {
428
- console.error("bad arguments. --install-miqrojson already set.");
429
- console.error(usage);
430
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
431
- }
432
- flags.installMiqroJSON = true;
433
- continue;
434
- case "--inflate-sea":
435
- if (flags.inflateSEA !== null) {
436
- console.error("bad arguments. --inflate-sea already set.");
437
- console.error(usage);
438
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
439
- }
440
- flags.inflateSEA = true;
441
- continue;
442
- case "--migrate-up":
443
- if (flags.migrateUp !== null) {
444
- console.error("bad arguments.");
445
- console.error(usage);
446
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
447
- }
448
- flags.migrateUp = true;
449
- continue;
450
- case "--migrate-down":
451
- if (flags.migrateDown !== null) {
452
- console.error("bad arguments.");
453
- console.error(usage);
454
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
455
- }
456
- flags.migrateDown = true;
457
- continue;
458
- case "--inflate":
459
- if (flags.inflate !== null) {
460
- console.error("bad arguments.");
461
- console.error(usage);
462
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
463
- }
464
- flags.inflate = true;
465
- continue;
466
- case "--test":
467
- if (flags.test !== null) {
468
- console.error("bad arguments.");
469
- console.error(usage);
470
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
471
- }
472
- env["BROWSER"] = env["BROWSER"] ? env["BROWSER"] : "none";
473
- env["PORT"] = TEST_SOCKET;
474
- flags.test = true;
475
- continue;
476
- case "--service":
477
- if (args[i + 1] === undefined) {
478
- console.error("bad arguments. service directory not provided.");
479
- console.error(usage);
480
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
481
- }
482
- services.push(args[i + 1]);
483
- i++;
484
- continue;
485
- case "--inflate-parallel":
486
- if (args[i + 1] === undefined) {
487
- console.error("bad arguments. service directory not provided.");
488
- console.error(usage);
489
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
490
- }
491
- if (typeof args[i + 1] !== "string") {
492
- console.error("bad arguments. --inflate-parallel must be a number.");
493
- console.error(usage);
494
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
495
- } else {
496
- const cParallel = parseInt(String(args[i + 1]), 10);
497
- if (isNaN(cParallel)) {
498
- console.error("bad arguments. --inflate-parallel must be a number.");
499
- console.error(usage);
500
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
501
- }
502
- flags.inflateParallel = cParallel;
503
- }
504
- i++;
505
- continue;
506
- case "--inflate-dir":
507
- if (flags.inflateDir !== null && flags.compile === null) {
508
- console.error("bad arguments. --inflate-dir already set.");
509
- console.error(usage);
510
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
511
- }
512
- flags.inflateDir = args[i + 1];
513
- if (typeof flags.inflateDir !== "string") {
514
- console.error("bad arguments. inflate directory not provided.");
515
- console.error(usage);
516
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
517
- }
518
- i++;
519
- continue;
520
- default:
521
- //console.error("IGNORING bad arguments. [%s]", argument);
522
- //continue;
523
- console.error("bad argument. [%s]", argument);
524
- console.error(usage);
525
- console.log(help);
526
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
527
- /*flags.inflate = flags.inflate ? flags.inflate : false;
528
- flags.editor = flags.editor ? flags.editor : false;
529
- flags.inflateDir = flags.inflateDir ? flags.inflateDir : undefined;
530
- services.push(argument);
531
- continue;*/
532
- }
533
- }
534
-
535
- flags.inflate = flags.inflate ? flags.inflate : false;
536
-
537
- flags.test = flags.test ? flags.test : false;
538
- flags.inflateDir = flags.inflateDir ? flags.inflateDir : undefined;
539
-
540
- const miqroJSONPath = !flags.disableMiqroJSON ? flags.miqroJSONPath ? resolve(flags.miqroJSONPath) : getMiqroJSONPath() : false;
541
- const miqroRC = miqroJSONPath ? importMiqroJSON(miqroJSONPath) : {};
542
-
543
- //console.dir(miqroRC.serverOptions);
544
-
545
- // try to load .miqrorc
546
- if (!flags.disableMiqroJSON && miqroJSONPath) {
547
- if (services.length === 0) {
548
- if (miqroRC.services) {
549
- for (const service of miqroRC.services) {
550
- services.push(join(relative(cwd(), dirname(miqroJSONPath)), service));
551
- }
552
- }
553
- }
554
- if (flags.https === null) {
555
- if (miqroRC.https) {
556
- flags.https = miqroRC.https;
557
- }
558
- }
559
- if (flags.httpsRedirect === null) {
560
- if (miqroRC.httpsRedirect && flags.https) {
561
- /*console.log("reading key from " + String(miqroRC.serverOptions?.key));
562
- flags.serverOptions.key = readFileSync(String(miqroRC.serverOptions?.key));*/
563
- flags.httpsRedirect = miqroRC.httpsRedirect;
564
- }
565
- }
566
- if (!flags.serverOptions.key) {
567
- if (miqroRC.serverOptions?.key) {
568
- /*console.log("reading key from " + String(miqroRC.serverOptions?.key));
569
- flags.serverOptions.key = readFileSync(String(miqroRC.serverOptions?.key));*/
570
- flags.serverOptions.key = miqroRC.serverOptions?.key;
571
- }
572
- }
573
-
574
- if (!flags.serverOptions.cert) {
575
- if (miqroRC.serverOptions?.cert) {
576
- /*console.log("reading cert from " + String(miqroRC.serverOptions?.cert));
577
- flags.serverOptions.cert = readFileSync(String(miqroRC.serverOptions?.cert));*/
578
- flags.serverOptions.cert = miqroRC.serverOptions?.cert;
579
- }
580
- }
581
- if (flags.port === null) {
582
- if (miqroRC.port) {
583
- flags.port = String(miqroRC.port);
584
- }
585
- }
586
- if (!flags.inflateDir && flags.inflate) {
587
- if (miqroRC.inflateDir) {
588
- flags.inflateDir = miqroRC.inflateDir;
589
- }
590
- }
591
- if (flags.name === null) {
592
- if (miqroRC.name) {
593
- flags.name = miqroRC.name;
594
- }
595
- }
596
- if (flags.logFile === null) {
597
- if (miqroRC.logFile !== undefined) {
598
- flags.logFile = miqroRC.logFile;
599
- }
600
- }
601
- if (flags.browser === null) {
602
- if (miqroRC.browser !== undefined) {
603
- flags.browser = miqroRC.browser;
604
- }
605
- }
606
- if (flags.editor === null) {
607
- if (miqroRC.editor !== undefined) {
608
- flags.editor = miqroRC.editor;
609
- }
610
- }
611
-
612
- if (flags.inflateParallel === null) {
613
- if (miqroRC.inflateParallel !== undefined) {
614
- flags.inflateParallel = miqroRC.inflateParallel;
615
- }
616
- }
617
- }
618
-
619
- flags.editor = flags.editor ? flags.editor : false;
620
-
621
- if (services.length === 0 && (!flags.installTSConfig && !flags.installTypes && !flags.installMiqroJSON)) {
622
- flags.inflateDir = flags.inflateDir ? flags.inflateDir : undefined;
623
- console.error(`bad arguments. missing --service argument`);
624
- console.error(usage);
625
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
626
- }
627
-
628
- const notDirServices = services.filter(service => existsSync(resolve(process.cwd(), service)) && !statSync(resolve(process.cwd(), service)).isDirectory());
629
-
630
- if (notDirServices.length > 0) {
631
- console.error(`bad arguments. [${notDirServices.join(",")}] are not directories.`);
632
- console.error(usage);
633
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
634
- }
635
-
636
- if (flags.inflateDir && existsSync(resolve(cwd(), flags.inflateDir)) && !statSync(resolve(cwd(), flags.inflateDir)).isDirectory()) {
637
- console.error("bad arguments. inflate directory not a directory.");
638
- console.error(usage);
639
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
640
- }
641
-
642
- if (!flags.inflate && flags.inflateDir) {
643
- console.error("bad arguments. to use --inflate-dir you must use --inflate.");
644
- console.error(usage);
645
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
646
- }
647
-
648
- if (flags.inflate === null || flags.inflateDir === null) {
649
- console.error("for ts");
650
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
651
- }
652
-
653
- if (flags.inflate && flags.editor) {
654
- console.error("bad arguments. cannot use --inflate with --editor");
655
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
656
- }
657
-
658
- if (flags.inflate && (flags.installTypes || flags.installTSConfig || flags.installMiqroJSON)) {
659
- console.error("bad arguments. cannot use --inflate with --install-types, --install-tsconfig or --install-miqrojson");
660
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
661
- }
662
-
663
- if (flags.inflateSEA && !flags.inflate) {
664
- console.error("bad arguments. cannot use --inflate-sea without --inflate");
665
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
666
- }
667
-
668
- if (flags.editor && (flags.installTypes || flags.installTSConfig || flags.installMiqroJSON)) {
669
- console.error("bad arguments. cannot use --editor with--install-types, --install-tsconfig or --install-miqrojson");
670
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
671
- }
672
-
673
- if (flags.test && (flags.watch || flags.hotreload || flags.editor || flags.compile || flags.inflate)) {
674
- console.error("bad arguments. cannot use --editor with --test");
675
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
676
- }
677
-
678
- if (flags.migrateUp && (flags.watch || flags.hotreload || flags.editor || flags.compile || flags.test || flags.migrateDown || flags.inflate)) {
679
- console.error("bad arguments. cannot use with --migrate-up");
680
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
681
- }
682
-
683
- if (flags.migrateDown && (flags.watch || flags.hotreload || flags.editor || flags.compile || flags.test || flags.migrateUp || flags.inflate)) {
684
- console.error("bad arguments. cannot use with --migrate-down");
685
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
686
- }
687
-
688
- if (flags.generateDoc && (flags.watch || flags.hotreload || flags.editor || flags.compile || flags.test || flags.migrateUp || flags.inflate || flags.migrateDown)) {
689
- console.error("bad arguments. cannot use with --generate-doc");
690
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
691
- }
692
-
693
- if ((flags.generateDocAll || flags.generateDocOut || flags.generateDocType) && !flags.generateDoc) {
694
- console.error("bad arguments. cannot use without --generate-doc");
695
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
696
- }
697
-
698
- const generateDocType = flags.generateDocType ? flags.generateDocType as any : "MD";
699
-
700
- if (flags.https && (!flags.serverOptions.key)) {
701
- console.error("bad arguments. cannot use --https without --https-key. or set values in miqro.json file.");
702
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
703
- }
704
-
705
- if (flags.https && (!flags.serverOptions.cert)) {
706
- console.error("bad arguments. cannot use --https without --https-cert. or set values in miqro.json file.");
707
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
708
- }
709
-
710
- if (flags.httpsRedirect && !flags.https) {
711
- console.error("bad arguments. cannot use --https-redirect without --https. or set values in miqro.json file.");
712
- process.exit(EXIT_CODES.BAD_ARGUMENTS);
713
- }
714
-
715
- return {
716
- inflateParallel: flags.inflateParallel ? flags.inflateParallel : undefined,
717
- name: flags.name ? flags.name : undefined,
718
- browser: flags.browser !== null ? flags.browser : undefined,
719
- logFile: flags.logFile !== null ? flags.logFile : undefined,
720
- generateDocAll: flags.generateDocAll ? true : false,
721
- hotreload: flags.hotreload ? true : false,
722
- watch: flags.watch ? true : false,
723
- disableMiqroJSON: flags.disableMiqroJSON !== null ? flags.disableMiqroJSON : false,
724
- miqroJSONPath: miqroJSONPath ? miqroJSONPath : false,
725
- installTypes: flags.installTypes ? true : false,
726
- installMiqroJSON: flags.installMiqroJSON ? true : false,
727
- installTSConfig: flags.installTSConfig ? true : false,
728
- inflate: flags.inflate,
729
- port: flags.port ? flags.port : getPORT(),
730
- migrateUp: flags.migrateUp ? true : false,
731
- migrateDown: flags.migrateDown ? true : false,
732
- test: flags.test ? true : false,
733
- compile: flags.compile,
734
- inflateSEA: flags.inflateSEA ? true : false,
735
- inflateDir: flags.inflateDir ? resolve(process.cwd(), flags.inflateDir) : resolve(process.cwd(), "inflated"),
736
- generateDoc: flags.generateDoc = flags.generateDoc ? flags.generateDoc : false,
737
- generateDocOut: flags.generateDocOut ? resolve(process.cwd(), flags.generateDocOut) : generateDocType === "MD" ? resolve(process.cwd(), "API.md") : resolve(process.cwd(), "API.json"),
738
- generateDocType,
739
- services,
740
- editor: flags.editor ? true : false,
741
- https: flags.https ? true : false,
742
- httpsRedirect: flags.httpsRedirect ? flags.httpsRedirect : undefined,
743
- serverOptions: flags.serverOptions
744
- }
745
- }