miolo 2.0.0-beta.4 → 2.0.0-beta.6

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.
@@ -0,0 +1,19 @@
1
+
2
+ import {xeiraBundle} from 'xeira'
3
+ import { cleanFolder } from './util.mjs'
4
+
5
+ export default async function({ appName, entry, dest }) {
6
+ console.log(`[${appName}][prod] Building client from entry ${entry}`)
7
+ cleanFolder(dest)
8
+
9
+ // fs.copyFileSync(proot('./cli/index.html'), proot('./build/cli/index.html'))
10
+ await xeiraBundle({
11
+ source_index: entry,
12
+ target: 'browser',
13
+ bundle_folder: dest,
14
+ bundle_name: appName,
15
+ bundle_extension: 'iife.bundle.min',
16
+ bundler: 'rollup',
17
+ bundle_node_polyfill: true
18
+ })
19
+ }
@@ -0,0 +1,55 @@
1
+
2
+ import path from 'node:path'
3
+ import { readFile, writeFile} from 'node:fs/promises'
4
+ import { build } from 'vite'
5
+ import {xeiraBundle} from 'xeira'
6
+ import { cleanFolder } from './util.mjs'
7
+
8
+ export async function _fixProdBuild(appName, filePath) {
9
+ try {
10
+ const content = await readFile(filePath, 'utf8')
11
+ const newContent = content.replace(
12
+ /var key = crypto\.pseudoRandomBytes\(32\)/g,
13
+ 'var key = crypto.randomBytes(32)'
14
+ )
15
+ await writeFile(filePath, newContent, 'utf8')
16
+ console.log(`[${appName}][prod] Fixed server build (prod)!`)
17
+ } catch (error) {
18
+ console.error(`[${appName}][prod] Error fixing server build (prod): ${error}`)
19
+ }
20
+ }
21
+
22
+ export default async function({ appName, ssrEntry, ssrDest, entry, dest }) {
23
+
24
+ console.log(`[${appName}][prod] Building first the SSR entry ${ssrEntry}`)
25
+ await build({
26
+ build: {
27
+ outDir: path.resolve(process.cwd(), ssrDest),
28
+ ssr: path.resolve(process.cwd(), ssrEntry),
29
+ rollupOptions: {
30
+ // Opciones adicionales de Rollup si las necesitas
31
+ },
32
+ },
33
+ // Otras opciones de Vite si son necesarias
34
+ // root: path.resolve(process.cwd(), 'demo'), // Si tu root del proyecto es /demo
35
+ // plugins: [/* tus plugins */],
36
+ })
37
+
38
+ console.log(`[${appName}][prod] Building server from entry ${entry}`)
39
+ cleanFolder(dest)
40
+
41
+ const serverExt = 'node.bundle.mjs'
42
+ await xeiraBundle({
43
+ source_index: entry,
44
+ target: 'node',
45
+ bundle_folder: dest,
46
+ bundle_name: appName,
47
+ bundle_extension: serverExt,
48
+ bundler: 'rollup',
49
+ bundle_node_polyfill: true,
50
+ })
51
+
52
+ console.log(`[${appName}][prod] Fixing server build (prod)...`)
53
+ const destFile = path.join(process.cwd(), `${dest}/${appName}.${serverExt}`)
54
+ await _fixProdBuild(appName, destFile)
55
+ }
package/bin/dev.mjs ADDED
@@ -0,0 +1,8 @@
1
+ import path from 'node:path'
2
+
3
+ export default async function({ appName, entry, serverName }) {
4
+ console.log(`[${appName}][dev] Running DEV server ${serverName} from entry ${entry}`)
5
+ const srv_module = await import(path.join(process.cwd(), entry))
6
+ const server = srv_module[serverName]
7
+ await server()
8
+ }
package/bin/index.mjs CHANGED
@@ -12,21 +12,21 @@ async function main() {
12
12
 
13
13
  switch (command) {
14
14
  case 'dev':
15
- const devHandler = await import ('./dev.mjs')
15
+ const devHandler = (await import ('./dev.mjs')).default
16
16
  const devEntry = args.entry || './src/server/server-dev.mjs'
17
17
  const devServerName = args['server-name'] || 'miolo_server'
18
18
  await devHandler({ appName, entry: devEntry, serverName: devServerName })
19
19
  break
20
20
 
21
21
  case 'build-client':
22
- const buildClientHandler = await import ('./build-client.mjs')
22
+ const buildClientHandler = (await import ('./build-client.mjs')).default
23
23
  const clientEntry = args.entry || './cli/entry-cli.jsx'
24
24
  const clientDest = args.dest || './dist/cli'
25
25
  await buildClientHandler({ appName, entry: clientEntry, dest: clientDest })
26
26
  break
27
27
 
28
28
  case 'build-server':
29
- const buildServerHandler = await import ('./build-server.mjs')
29
+ const buildServerHandler = (await import ('./build-server.mjs')).default
30
30
  const ssrEntry = args['ssr-entry'] || './server/ssr/entry-server.jsx'
31
31
  const ssrDest = args['ssr-dest'] || './dist/server'
32
32
  const serverEntry = args.entry || './src/server/server-prod.mjs'
@@ -35,18 +35,18 @@ async function main() {
35
35
  break
36
36
 
37
37
  case 'start':
38
- const startHandler = await import ('./start.mjs')
38
+ const startHandler = (await import ('./start.mjs')).default
39
39
  const startDest = args.dest || './dist/server'
40
40
  await startHandler({appName, serverName, dest: startDest})
41
41
  break
42
42
 
43
43
  case 'stop':
44
- const stopHandler = await import ('./stop.mjs')
44
+ const stopHandler = (await import ('./stop.mjs')).default
45
45
  await stopHandler({appName})
46
46
  break
47
47
 
48
48
  case 'restart':
49
- const restartHandler = await import ('./restart.mjs')
49
+ const restartHandler = (await import ('./restart.mjs')).default
50
50
  await restartHandler({appName, serverName})
51
51
  break
52
52
 
@@ -0,0 +1,10 @@
1
+ import start from "./start.mjs"
2
+ import stop from "./stop.mjs"
3
+
4
+ export default async function(appName, dest, serverName) {
5
+ console.log(`[${appName}][prod][stop] Restarting server...`)
6
+
7
+ await stop(appName)
8
+ await start(appName, dest, serverName)
9
+
10
+ }
package/bin/start.mjs ADDED
@@ -0,0 +1,26 @@
1
+ import path from 'node:path'
2
+ import { pidFileCreate } from "./util.mjs"
3
+
4
+ export default async function(appName, dest, serverName) {
5
+ // if (! fs.existsSync(CLI_DEST_MAIN)) {
6
+ // console.error(`[${appName}][prod][start] Cannot start server (prod): CLI bundle does not exist ${CLI_DEST_MAIN}`)
7
+ // return
8
+ // }
9
+ // if (! fs.existsSync(SRV_DEST_MAIN)) {
10
+ // console.error(`[${appName}][prod][start] Cannot start server (prod): SERVER bundle does not exist ${SRV_DEST_MAIN}`)
11
+ // return
12
+ // }
13
+
14
+ console.log(`[${appName}][prod][start] Starting server...`)
15
+
16
+ const serverExt = 'node.bundle.mjs'
17
+ const destFile = path.join(process.cwd(), `${dest}/${appName}.${serverExt}`)
18
+
19
+ const srv_module = await import(destFile)
20
+ const server = srv_module[serverName]
21
+
22
+ const pid = pidFileCreate(appName)
23
+ console.log(`[${appName}][prod][start] Starting server. PID is ${pid}...`)
24
+
25
+ await server()
26
+ }
package/bin/stop.mjs ADDED
@@ -0,0 +1,20 @@
1
+ import { pidFileRead } from "./util.mjs";
2
+
3
+ export default async function(appName) {
4
+ console.log(`[${appName}][prod][stop] Stopping server...`)
5
+
6
+ try {
7
+ const pid = pidFileRead(appName)
8
+ console.log(`[${appName}][prod][stop] Killing current process with PID ${pid}`)
9
+
10
+ process.kill(pid, 'SIGKILL')
11
+
12
+ return 1
13
+ } catch(_) {
14
+ console.log(`[${appName}][prod][stop] No current process to kill`)
15
+ console.error(_)
16
+
17
+ return 0
18
+ }
19
+
20
+ }
package/bin/util.mjs ADDED
@@ -0,0 +1,37 @@
1
+ import {readdirSync, rmSync, writeFileSync, readFileSync} from 'node:fs'
2
+ import { readFile } from 'node:fs/promises'
3
+ import path from 'node:path'
4
+
5
+
6
+ export async function getAppName() {
7
+ try {
8
+ const packageJsonPath = path.join(process.cwd(), 'package.json')
9
+ const content = await readFile(packageJsonPath, 'utf8')
10
+ const packageData = JSON.parse(content)
11
+ return packageData.name
12
+ } catch (error) {
13
+ console.error('[miolo] Error reading package.json:', error)
14
+ return 'miolo'
15
+ }
16
+ }
17
+
18
+ export function cleanFolder(folder) {
19
+ readdirSync(folder).forEach(file => {
20
+ rmSync(`${folder}/${file}`, { recursive: true, force: true });
21
+ })
22
+ }
23
+
24
+
25
+ export function pidFileCreate(appName) {
26
+ const pidFilePath = `/tmp/${appName}.pid`
27
+ writeFileSync(pidFilePath, `${process.pid}`, {encoding:'utf8',flag:'w'})
28
+ return process.pid
29
+ }
30
+
31
+ export function pidFileRead(appName) {
32
+ const pidFilePath = `/tmp/${appName}.pid`
33
+ const pid = readFileSync(pidFilePath, {encoding:'utf8'})
34
+ return pid
35
+ }
36
+
37
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "miolo",
3
- "version": "2.0.0-beta.4",
3
+ "version": "2.0.0-beta.6",
4
4
  "description": "all-in-one koa-based server",
5
5
  "author": "Donato Lorenzo <donato@afialapis.com>",
6
6
  "contributors": [
@@ -33,6 +33,7 @@
33
33
  }
34
34
  },
35
35
  "files": [
36
+ "bin",
36
37
  "src",
37
38
  "logo",
38
39
  "dist"