miolo 2.0.0-beta.9 → 2.0.0
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/bin/build-client.mjs +5 -3
- package/bin/build-server.mjs +10 -7
- package/bin/create-bin.mjs +38 -0
- package/bin/dev.mjs +74 -5
- package/bin/index.mjs +13 -7
- package/bin/restart.mjs +6 -4
- package/bin/start.mjs +3 -1
- package/bin/stop.mjs +4 -2
- package/dist/cli/miolo.cli.umd.js +238 -465
- package/dist/cli/miolo.cli.umd.js.map +1 -1
- package/dist/cli-react/miolo.cli-react.umd.js +282 -505
- package/dist/cli-react/miolo.cli-react.umd.js.map +1 -1
- package/dist/server/miolo.server.node.mjs +1180 -1190
- package/package.json +18 -31
- package/src/cli/fetcher/utils.mjs +3 -3
- package/src/cli-react/context/MioloContextProvider.jsx +27 -19
- package/src/cli-react/context/MioloContextProvider.mjs +23 -13
- package/src/server/config/defaults.mjs +9 -2
- package/src/server/engines/cron/emails.mjs +2 -2
- package/src/server/engines/cron/index.mjs +16 -16
- package/src/server/engines/cron/init.mjs +4 -4
- package/src/server/engines/cron/ipsum.mjs +1 -1
- package/src/server/engines/cron/syscheck.mjs +1 -1
- package/src/server/index.mjs +2 -0
- package/src/server/middleware/http/custom_blacklist.mjs +2 -1
- package/src/server/middleware/routes/router/crud/attachCrudRoutes.mjs +1 -1
- package/src/server/middleware/routes/router/queries/attachQueriesRoutes.mjs +1 -1
- package/src/server/middleware/vite/devserver.mjs +9 -1
- package/src/server/middleware/vite/watcher.mjs +42 -0
- package/src/server/server-cron.mjs +40 -0
- package/src/server/server-dev.mjs +2 -0
- package/src/server/server.mjs +6 -3
- package/src/cli/fetcher/v1.tar.gz +0 -0
- package/src/cli-react/_jsx.tar.gz +0 -0
- package/src/cli-react/ssr/hooks.tar.gz +0 -0
- package/src/server/middleware/ssr/_old.tar.gz +0 -0
package/bin/build-client.mjs
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
|
|
2
2
|
import {xeiraBundle} from 'xeira'
|
|
3
|
-
import { cleanFolder } from './util.mjs'
|
|
3
|
+
//import { cleanFolder } from './util.mjs'
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
process.env.NODE_ENV = 'production'
|
|
6
|
+
|
|
7
|
+
export default async function(appName, entry, dest) {
|
|
6
8
|
console.log(`[${appName}][prod] Building client from entry ${entry}`)
|
|
7
|
-
cleanFolder(dest)
|
|
9
|
+
//cleanFolder(dest)
|
|
8
10
|
|
|
9
11
|
// fs.copyFileSync(proot('./cli/index.html'), proot('./build/cli/index.html'))
|
|
10
12
|
await xeiraBundle({
|
package/bin/build-server.mjs
CHANGED
|
@@ -3,7 +3,9 @@ import path from 'node:path'
|
|
|
3
3
|
import { readFile, writeFile} from 'node:fs/promises'
|
|
4
4
|
import { build } from 'vite'
|
|
5
5
|
import {xeiraBundle} from 'xeira'
|
|
6
|
-
import { cleanFolder } from './util.mjs'
|
|
6
|
+
//import { cleanFolder } from './util.mjs'
|
|
7
|
+
|
|
8
|
+
process.env.NODE_ENV = 'production'
|
|
7
9
|
|
|
8
10
|
export async function _fixProdBuild(appName, filePath) {
|
|
9
11
|
try {
|
|
@@ -19,8 +21,8 @@ export async function _fixProdBuild(appName, filePath) {
|
|
|
19
21
|
}
|
|
20
22
|
}
|
|
21
23
|
|
|
22
|
-
export default async function(
|
|
23
|
-
cleanFolder(dest)
|
|
24
|
+
export default async function(appName, ssrEntry, ssrDest, entry, dest) {
|
|
25
|
+
//cleanFolder(dest)
|
|
24
26
|
|
|
25
27
|
console.log(`[${appName}][prod] Building first the SSR entry ${ssrEntry}`)
|
|
26
28
|
await build({
|
|
@@ -28,12 +30,13 @@ export default async function({ appName, ssrEntry, ssrDest, entry, dest }) {
|
|
|
28
30
|
outDir: path.resolve(process.cwd(), ssrDest),
|
|
29
31
|
ssr: path.resolve(process.cwd(), ssrEntry),
|
|
30
32
|
rollupOptions: {
|
|
31
|
-
//
|
|
33
|
+
//
|
|
32
34
|
},
|
|
33
35
|
},
|
|
34
|
-
//
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
// server ssr's entry must bundle externals
|
|
37
|
+
ssr: {
|
|
38
|
+
noExternal: true
|
|
39
|
+
}
|
|
37
40
|
})
|
|
38
41
|
|
|
39
42
|
console.log(`[${appName}][prod] Building server from entry ${entry}`)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import {readFileSync, writeFileSync} from 'node:fs'
|
|
2
|
+
import path from 'path'
|
|
3
|
+
import { fileURLToPath } from 'url'
|
|
4
|
+
|
|
5
|
+
const __my_filename = fileURLToPath(import.meta.url)
|
|
6
|
+
const __my_dirname = path.dirname(__my_filename)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
export default async function(appName, dest, serverName) {
|
|
10
|
+
console.log(`[${appName}][prod][create-bin] Creating bin files...`)
|
|
11
|
+
|
|
12
|
+
const readSource = (f) => readFileSync(path.resolve(__my_dirname, f), {encoding:'utf8'})
|
|
13
|
+
const writeDest = (f, content) => writeFileSync(path.join(process.cwd(), dest, f), content, {encoding:'utf8',flag:'w'})
|
|
14
|
+
|
|
15
|
+
const utilContent = readSource('./util.mjs')
|
|
16
|
+
writeDest('util.mjs', utilContent)
|
|
17
|
+
|
|
18
|
+
let startContent = readSource('./start.mjs')
|
|
19
|
+
startContent = startContent.replace('export default async function', 'async function start')
|
|
20
|
+
startContent = startContent.replace('(appName, dest, serverName)', `(appName= '${appName}', dest= '${dest}', serverName= '${serverName}')`)
|
|
21
|
+
startContent+= '\n'
|
|
22
|
+
startContent+= 'start()'
|
|
23
|
+
writeDest('start.mjs', startContent)
|
|
24
|
+
|
|
25
|
+
let stopContent = readSource('./stop.mjs')
|
|
26
|
+
stopContent = stopContent.replace('export default async function', 'async function stop')
|
|
27
|
+
stopContent = stopContent.replace('(appName)', `(appName= '${appName}')`)
|
|
28
|
+
stopContent+= '\n'
|
|
29
|
+
stopContent+= 'stop()'
|
|
30
|
+
writeDest('stop.mjs', stopContent)
|
|
31
|
+
|
|
32
|
+
let restartContent = readSource('./restart.mjs')
|
|
33
|
+
restartContent = restartContent.replace('export default async function', 'async function restart')
|
|
34
|
+
restartContent = restartContent.replace('(appName, dest, serverName)', `(appName= '${appName}', dest= '${dest}', serverName= '${serverName}')`)
|
|
35
|
+
restartContent+= '\n'
|
|
36
|
+
restartContent+= 'restart()'
|
|
37
|
+
writeDest('restart.mjs', restartContent)
|
|
38
|
+
}
|
package/bin/dev.mjs
CHANGED
|
@@ -1,8 +1,77 @@
|
|
|
1
1
|
import path from 'node:path'
|
|
2
|
+
import { fork } from 'node:child_process'
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
process.env.NODE_ENV = 'development'
|
|
5
|
+
|
|
6
|
+
let serverProcess = null
|
|
7
|
+
// let retryCount = 0
|
|
8
|
+
// const maxRetries = 5
|
|
9
|
+
|
|
10
|
+
function _isProcessRunning(pid) {
|
|
11
|
+
try {
|
|
12
|
+
process.kill(pid, 0) // Sending a signal 0 does nothing but checks if the process exists
|
|
13
|
+
return true
|
|
14
|
+
} catch (error) {
|
|
15
|
+
return false
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
async function startDevServerProcess({ appName, entry }) {
|
|
20
|
+
const serverPath = path.join(process.cwd(), entry)
|
|
21
|
+
serverProcess = fork(serverPath)
|
|
22
|
+
|
|
23
|
+
console.log(`[${appName}][dev] Server process started with pid ${serverProcess.pid} from ${process.pid}`)
|
|
24
|
+
|
|
25
|
+
serverProcess.on('exit', (code, args) => {
|
|
26
|
+
console.log(`[${appName}][dev] Server process exited with code ${code} - ${args}`)
|
|
27
|
+
serverProcess = null
|
|
28
|
+
// Puedes implementar lógica de reintento aquí si es necesario
|
|
29
|
+
// if (code !== 0 && retryCount < maxRetries) {
|
|
30
|
+
// retryCount++
|
|
31
|
+
// console.log(`[${serverName}][dev] Attempting to restart server (${retryCount}/${maxRetries})...`)
|
|
32
|
+
// // Espera un breve tiempo antes de intentar reiniciar
|
|
33
|
+
// await new Promise(resolve => setTimeout(resolve, 2000))
|
|
34
|
+
// startDevServerProcess({ entry, serverName })
|
|
35
|
+
// } else if (code !== 0) {
|
|
36
|
+
// console.error(`[${serverName}][dev] Server failed to start after ${maxRetries} retries. Exiting.`)
|
|
37
|
+
// process.exit(1)
|
|
38
|
+
// }
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
serverProcess.on('message', (message) => {
|
|
42
|
+
if (message === 'miolo_restart') {
|
|
43
|
+
console.log(`[${appName}][dev] Received restart signal. Restarting server...`)
|
|
44
|
+
|
|
45
|
+
const pidToKill = serverProcess ? serverProcess.pid : null
|
|
46
|
+
if (pidToKill) {
|
|
47
|
+
console.log(`[${appName}][dev] Killing process with PID: ${pidToKill}`)
|
|
48
|
+
// Clean kill
|
|
49
|
+
process.kill(pidToKill, 'SIGTERM')
|
|
50
|
+
|
|
51
|
+
// Harder if still alive
|
|
52
|
+
setTimeout(() => {
|
|
53
|
+
if (_isProcessRunning(pidToKill)) {
|
|
54
|
+
process.kill(pidToKill, 'SIGKILL')
|
|
55
|
+
}
|
|
56
|
+
}, 2000)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
startDevServerProcess({ appName, entry }) // Inicia un nuevo proceso
|
|
60
|
+
}
|
|
61
|
+
})
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
export default async function(appName, entry, serverName) {
|
|
4
66
|
console.log(`[${appName}][dev] Running DEV server ${serverName} from entry ${entry}`)
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
67
|
+
await startDevServerProcess({ appName, entry })
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
// export default async function({ appName, entry, serverName }) {
|
|
73
|
+
// console.log(`[${appName}][dev] Running DEV server ${serverName} from entry ${entry}`)
|
|
74
|
+
// const srv_module = await import(path.join(process.cwd(), entry))
|
|
75
|
+
// const server = srv_module[serverName]
|
|
76
|
+
// await server()
|
|
77
|
+
// }
|
package/bin/index.mjs
CHANGED
|
@@ -14,15 +14,14 @@ async function main() {
|
|
|
14
14
|
case 'dev':
|
|
15
15
|
const devHandler = (await import ('./dev.mjs')).default
|
|
16
16
|
const devEntry = args.entry || './src/server/server-dev.mjs'
|
|
17
|
-
|
|
18
|
-
await devHandler({ appName, entry: devEntry, serverName: devServerName })
|
|
17
|
+
await devHandler(appName, /*entry*/ devEntry, serverName)
|
|
19
18
|
break
|
|
20
19
|
|
|
21
20
|
case 'build-client':
|
|
22
21
|
const buildClientHandler = (await import ('./build-client.mjs')).default
|
|
23
22
|
const clientEntry = args.entry || './cli/entry-cli.jsx'
|
|
24
23
|
const clientDest = args.dest || './dist/cli'
|
|
25
|
-
await buildClientHandler(
|
|
24
|
+
await buildClientHandler(appName, /*entry*/ clientEntry, /*dest*/ clientDest)
|
|
26
25
|
break
|
|
27
26
|
|
|
28
27
|
case 'build-server':
|
|
@@ -31,23 +30,30 @@ async function main() {
|
|
|
31
30
|
const ssrDest = args['ssr-dest'] || './dist/server'
|
|
32
31
|
const serverEntry = args.entry || './src/server/server-prod.mjs'
|
|
33
32
|
const serverDest = args.dest || './dist/server'
|
|
34
|
-
await buildServerHandler(
|
|
33
|
+
await buildServerHandler(appName, ssrEntry, ssrDest, /*entry*/ serverEntry, /*dest*/ serverDest)
|
|
35
34
|
break
|
|
36
35
|
|
|
37
36
|
case 'start':
|
|
38
37
|
const startHandler = (await import ('./start.mjs')).default
|
|
39
38
|
const startDest = args.dest || './dist/server'
|
|
40
|
-
await startHandler(
|
|
39
|
+
await startHandler(appName, /*dest*/ startDest, serverName)
|
|
41
40
|
break
|
|
42
41
|
|
|
43
42
|
case 'stop':
|
|
44
43
|
const stopHandler = (await import ('./stop.mjs')).default
|
|
45
|
-
await stopHandler(
|
|
44
|
+
await stopHandler(appName)
|
|
46
45
|
break
|
|
47
46
|
|
|
48
47
|
case 'restart':
|
|
49
48
|
const restartHandler = (await import ('./restart.mjs')).default
|
|
50
|
-
|
|
49
|
+
const restartDest = args.dest || './dist/server'
|
|
50
|
+
await restartHandler({appName, /*dest*/ restartDest, serverName})
|
|
51
|
+
break
|
|
52
|
+
|
|
53
|
+
case 'create-bin':
|
|
54
|
+
const createHandler = (await import ('./create-bin.mjs')).default
|
|
55
|
+
const createDest = args.dest || './dist/server'
|
|
56
|
+
await createHandler(appName, /*dest*/ createDest, serverName)
|
|
51
57
|
break
|
|
52
58
|
|
|
53
59
|
default:
|
package/bin/restart.mjs
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import start from "./start.mjs"
|
|
2
2
|
import stop from "./stop.mjs"
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
console.log(`[${appName}][prod][stop] Restarting server...`)
|
|
4
|
+
process.env.NODE_ENV = 'production'
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
export default async function(appName, dest, serverName) {
|
|
7
|
+
console.log(`[${appName}][prod][restart] Restarting server...`)
|
|
8
|
+
|
|
9
|
+
await stop(appName)
|
|
10
|
+
await start(appName, dest, serverName)
|
|
9
11
|
|
|
10
12
|
}
|
package/bin/start.mjs
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import path from 'node:path'
|
|
2
2
|
import { pidFileCreate } from "./util.mjs"
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
process.env.NODE_ENV = 'production'
|
|
5
|
+
|
|
6
|
+
export default async function(appName, dest, serverName) {
|
|
5
7
|
// if (! fs.existsSync(CLI_DEST_MAIN)) {
|
|
6
8
|
// console.error(`[${appName}][prod][start] Cannot start server (prod): CLI bundle does not exist ${CLI_DEST_MAIN}`)
|
|
7
9
|
// return
|
package/bin/stop.mjs
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { pidFileRead } from "./util.mjs"
|
|
1
|
+
import { pidFileRead } from "./util.mjs"
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
process.env.NODE_ENV = 'production'
|
|
4
|
+
|
|
5
|
+
export default async function(appName) {
|
|
4
6
|
console.log(`[${appName}][prod][stop] Stopping server...`)
|
|
5
7
|
|
|
6
8
|
try {
|