miolo 2.1.0-beta.1 → 3.0.0-beta.2

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 (111) hide show
  1. package/bin/.env +107 -0
  2. package/bin/build-client.mjs +12 -11
  3. package/bin/build-server.mjs +7 -17
  4. package/bin/dev.mjs +10 -7
  5. package/bin/dev_start.mjs +11 -0
  6. package/bin/env.mjs +39 -0
  7. package/bin/index.mjs +21 -15
  8. package/bin/prod_start.mjs +9 -0
  9. package/bin/restart.mjs +0 -2
  10. package/bin/start.mjs +2 -12
  11. package/bin/stop.mjs +1 -4
  12. package/bin/util.mjs +11 -11
  13. package/package.json +16 -39
  14. package/src/{server/config → config}/defaults.mjs +107 -69
  15. package/src/{server/middleware → middleware}/ssr/html.mjs +20 -3
  16. package/src/{server/middleware → middleware}/ssr/ssr_render.mjs +2 -2
  17. package/src/{server/middleware → middleware}/vite/devserver.mjs +6 -6
  18. package/src/{server/server-cron.mjs → server-cron.mjs} +0 -2
  19. package/src/{server/server-dev.mjs → server-dev.mjs} +2 -2
  20. package/src/{server/server.mjs → server.mjs} +1 -3
  21. package/README.md +0 -69
  22. package/dist/cli/miolo.cli.mjs +0 -492
  23. package/dist/cli/miolo.cli.mjs.map +0 -1
  24. package/dist/cli/miolo.cli.umd.js +0 -749
  25. package/dist/cli/miolo.cli.umd.js.map +0 -1
  26. package/dist/cli-react/miolo.cli-react.mjs +0 -672
  27. package/dist/cli-react/miolo.cli-react.mjs.map +0 -1
  28. package/dist/cli-react/miolo.cli-react.umd.js +0 -959
  29. package/dist/cli-react/miolo.cli-react.umd.js.map +0 -1
  30. package/dist/server/miolo.server.node.mjs +0 -8050
  31. package/logo/favicon/miolo.ico +0 -0
  32. package/logo/favicon/miolo.png +0 -0
  33. package/logo/favicon/miolo_apple.png +0 -0
  34. package/logo/miolo-logo-name_200.png +0 -0
  35. package/logo/miolo_logo.png +0 -0
  36. package/logo/miolo_name.png +0 -0
  37. package/logo/miolo_sm.png +0 -0
  38. package/src/cli/catcher/index.mjs +0 -75
  39. package/src/cli/fetcher/fetcher.mjs +0 -214
  40. package/src/cli/fetcher/index.mjs +0 -7
  41. package/src/cli/fetcher/utils.mjs +0 -59
  42. package/src/cli/index.mjs +0 -30
  43. package/src/cli/socket/index.mjs +0 -6
  44. package/src/cli-react/AppBrowser.jsx +0 -14
  45. package/src/cli-react/AppServer.jsx +0 -17
  46. package/src/cli-react/context/MioloContext.mjs +0 -5
  47. package/src/cli-react/context/MioloContextProvider.jsx +0 -95
  48. package/src/cli-react/context/useMioloContext.jsx +0 -6
  49. package/src/cli-react/context/withMioloContext.jsx +0 -15
  50. package/src/cli-react/index.mjs +0 -7
  51. package/src/cli-react/ssr/getSsrDataFromContext.mjs +0 -33
  52. package/src/cli-react/ssr/useSsrDataOrReload.mjs +0 -43
  53. package/src/server/static/img/afialapis.ico +0 -0
  54. package/src/server/static/img/miolo.ico +0 -0
  55. package/src/server/static/robots.txt +0 -2
  56. /package/src/{server/config → config}/index.mjs +0 -0
  57. /package/src/{server/engines → engines}/cron/emails.mjs +0 -0
  58. /package/src/{server/engines → engines}/cron/index.mjs +0 -0
  59. /package/src/{server/engines → engines}/cron/init.mjs +0 -0
  60. /package/src/{server/engines → engines}/cron/ipsum.mjs +0 -0
  61. /package/src/{server/engines → engines}/cron/syscheck.mjs +0 -0
  62. /package/src/{server/engines → engines}/emailer/index.mjs +0 -0
  63. /package/src/{server/engines → engines}/emailer/queue.mjs +0 -0
  64. /package/src/{server/engines → engines}/emailer/transporter.mjs +0 -0
  65. /package/src/{server/engines → engines}/geoip/index.mjs +0 -0
  66. /package/src/{server/engines → engines}/http/index.mjs +0 -0
  67. /package/src/{server/engines → engines}/logger/index.mjs +0 -0
  68. /package/src/{server/engines → engines}/logger/logger_mail.mjs +0 -0
  69. /package/src/{server/engines → engines}/logger/reopenTransportOnHupSignal.mjs +0 -0
  70. /package/src/{server/engines → engines}/logger/verify.mjs +0 -0
  71. /package/src/{server/engines → engines}/parser/Parser.mjs +0 -0
  72. /package/src/{server/engines → engines}/parser/index.mjs +0 -0
  73. /package/src/{server/engines → engines}/socket/index.mjs +0 -0
  74. /package/src/{server/index.mjs → index.mjs} +0 -0
  75. /package/src/{server/middleware → middleware}/auth/basic.mjs +0 -0
  76. /package/src/{server/middleware → middleware}/auth/credentials/index.mjs +0 -0
  77. /package/src/{server/middleware → middleware}/auth/credentials/session/index.mjs +0 -0
  78. /package/src/{server/middleware → middleware}/auth/credentials/session/store.mjs +0 -0
  79. /package/src/{server/middleware → middleware}/auth/credentials/session/store_koa_redis.mjs +0 -0
  80. /package/src/{server/middleware → middleware}/auth/custom.mjs +0 -0
  81. /package/src/{server/middleware → middleware}/auth/guest.mjs +0 -0
  82. /package/src/{server/middleware → middleware}/context/cache/index.mjs +0 -0
  83. /package/src/{server/middleware → middleware}/context/cache/options.mjs +0 -0
  84. /package/src/{server/middleware → middleware}/context/db.mjs +0 -0
  85. /package/src/{server/middleware → middleware}/context/index.mjs +0 -0
  86. /package/src/{server/middleware → middleware}/extra.mjs +0 -0
  87. /package/src/{server/middleware → middleware}/http/body.mjs +0 -0
  88. /package/src/{server/middleware → middleware}/http/catcher.mjs +0 -0
  89. /package/src/{server/middleware → middleware}/http/custom_blacklist.mjs +0 -0
  90. /package/src/{server/middleware → middleware}/http/headers.mjs +0 -0
  91. /package/src/{server/middleware → middleware}/http/ratelimit.mjs +0 -0
  92. /package/src/{server/middleware → middleware}/http/request.mjs +0 -0
  93. /package/src/{server/middleware → middleware}/routes/catch_js_error.mjs +0 -0
  94. /package/src/{server/middleware → middleware}/routes/robots.mjs +0 -0
  95. /package/src/{server/middleware → middleware}/routes/router/crud/attachCrudRoutes.mjs +0 -0
  96. /package/src/{server/middleware → middleware}/routes/router/crud/getCrudConfig.mjs +0 -0
  97. /package/src/{server/middleware → middleware}/routes/router/defaults.mjs +0 -0
  98. /package/src/{server/middleware → middleware}/routes/router/index.mjs +0 -0
  99. /package/src/{server/middleware → middleware}/routes/router/queries/attachQueriesRoutes.mjs +0 -0
  100. /package/src/{server/middleware → middleware}/routes/router/queries/getQueriesConfig.mjs +0 -0
  101. /package/src/{server/middleware → middleware}/routes/router/utils.mjs +0 -0
  102. /package/src/{server/middleware → middleware}/ssr/context.mjs +0 -0
  103. /package/src/{server/middleware → middleware}/ssr/fallbackIndex.mjs +0 -0
  104. /package/src/{server/middleware → middleware}/ssr/loader.mjs +0 -0
  105. /package/{dist/static/img → src/middleware/static}/afialapis.ico +0 -0
  106. /package/src/{server/middleware → middleware}/static/index.mjs +0 -0
  107. /package/{dist/static/img → src/middleware/static}/miolo.ico +0 -0
  108. /package/src/{server/middleware → middleware}/vite/watcher.mjs +0 -0
  109. /package/src/{server/middleware/static → static/img}/afialapis.ico +0 -0
  110. /package/src/{server/middleware/static → static/img}/miolo.ico +0 -0
  111. /package/{dist → src}/static/robots.txt +0 -0
package/bin/.env ADDED
@@ -0,0 +1,107 @@
1
+ #
2
+ # General
3
+ #
4
+ MIOLO_NAME=miolo
5
+ MIOLO_CONFIG=./src/server/config.mjs
6
+
7
+ #
8
+ # HTTP
9
+ #
10
+ MIOLO_PORT=8001
11
+ MIOLO_HOSTNAME=localhost
12
+
13
+ MIOLO_HTTP_CORS=simple # true | false | simple. For {options}, use JS
14
+ MIOLO_HTTP_PROXY=true # true | false. For {options}, use JS
15
+
16
+ MIOLO_RATELIMIT_MAX=1000
17
+ MIOLO_RATELIMIT_DURATION=60 * 1000
18
+ #MIOLO_RATELIMIT_WHITELIST_IPS=
19
+ #MIOLO_RATELIMIT_BLACKLIST_IPS=
20
+ MIOLO_REQUEST_LAZY=1 # seconds to consider lazy a request
21
+ MIOLO_REQUEST_SLOW=2 # seconds to consider slow a request
22
+
23
+ MIOLO_GEOIP_ENABLED=false
24
+ MIOLO_GEOIP_DB=/var/lib/GeoIP/GeoLite2-City.mmdb
25
+ MIOLO_GEOIP_LOCAL_IPS=127.0.0.1
26
+
27
+ #
28
+ # Session
29
+ #
30
+ MIOLO_SESSION_SALT=11111111-2222-3333-4444-555555555555
31
+ MIOLO_SESSION_SECRET=secret
32
+ MIOLO_SESSION_MAX_AGE=864000000
33
+ MIOLO_SESSION_SECURE=true
34
+
35
+ #
36
+ # Database
37
+ #
38
+ MIOLO_DB_DIALECT=postgres
39
+ MIOLO_DB_HOST=localhost
40
+ MIOLO_DB_PORT=5432
41
+ MIOLO_DB_DATABASE=my_database
42
+ MIOLO_DB_USER=my_user
43
+ MIOLO_DB_PASSWORD=my_password
44
+ MIOLO_DB_POOL_MAX=5 # Maximum number of connection in pool
45
+ MIOLO_DB_POOL_MIN=0 # Minimum number of connection in pool
46
+ # The maximum time, in milliseconds, that a connection can be idle before being released.
47
+ # Use with combination of evict for proper working,
48
+ # for more details read https://github.com/coopernurse/node-pool/issues/178#issuecomment-327110870,
49
+ MIOLO_DB_POOL_IDLE_TIMEOUT_MS=10000
50
+
51
+
52
+ #
53
+ # Logging
54
+ #
55
+ MIOLO_LOG_LEVEL=verbose
56
+
57
+ MIOLO_LOG_CONSOLE_ENABLED=true
58
+ #MIOLO_LOG_CONSOLE_LEVEL=verbose
59
+
60
+ MIOLO_LOG_FILE_ENABLED=true
61
+ #MIOLO_LOG_FILE_LEVEL=verbose
62
+
63
+ MIOLO_LOG_FILE_PATH=/var/log/afialapis/%MIOLO%.log
64
+ MIOLO_LOG_MAIL_ENABLED=false
65
+ #MIOLO_LOG_MAIL_LEVEL=warn
66
+ MIOLO_LOG_MAIL_FROM=noreply@mail.com
67
+ MIOLO_LOG_MAIL_TO=noreply@mail.com
68
+
69
+ #
70
+ # Mailer
71
+ #
72
+ MIOLO_MAILER_SILENT=true
73
+ MIOLO_MAILER_HOST=mail.com
74
+ MIOLO_MAILER_PORT=25
75
+ MIOLO_MAILER_FROM=noreply@mail.com
76
+ MIOLO_MAILER_TO=noreply@mail.com
77
+
78
+ MIOLO_MAILER_AUTH_METHOD=PLAIN # PLAIN / LOGIN
79
+ # If LOGIN, you need to specify:
80
+ MIOLO_MAILER_SMTP_USER=noreply@mail.com
81
+ MIOLO_MAILER_SMTP_PASS=****
82
+
83
+ #
84
+ # Cache
85
+ #
86
+ MIOLO_CACHE_VERSION=1
87
+ MIOLO_CACHE_CALUSTRA_VERSION=1
88
+ MIOLO_CACHE_CALUSTRA_TTL=86400000
89
+ MIOLO_CACHE_SESSION_VERSION=1
90
+ MIOLO_CACHE_SESSION_TTL=864000000
91
+
92
+ #
93
+ # Others
94
+ #
95
+ MIOLO_DOTENVX_DEBUG=false
96
+
97
+ #
98
+ # Build
99
+ #
100
+ MIOLO_BUILD_HTML_FILE=./src/cli/index.html
101
+ MIOLO_BUILD_CLIENT_ENTRY=./src/cli/entry-cli.jsx
102
+ MIOLO_BUILD_CLIENT_DEST=./dist/cli
103
+ MIOLO_BUILD_SERVER_SSR_ENTRY=./src/server/ssr/entry-server.jsx
104
+ MIOLO_BUILD_SERVER_DEST=./dist/server
105
+ MIOLO_BUNDLE_SUFFIX=iife.bundle.min
106
+ MIOLO_DEV_WATCH_ENABLED=true
107
+ MIOLO_DEV_WATCH_DIRS=./src/server
@@ -1,13 +1,9 @@
1
1
 
2
2
  import {xeiraBundle} from 'xeira'
3
- import { cleanFolder, copyFileSync, getAppName, isFileExistingSync } from './util.mjs'
3
+ import { cleanFolder, copyFileSync, isFileExistingSync } from './util.mjs'
4
4
 
5
- process.env.NODE_ENV = 'production'
6
-
7
- const BUNDLE_SUFFIX = 'iife.bundle.min'
8
-
9
- function _addCssLinkToHead(htmlString) {
10
- const linkTag = ` <link href="/dist/cli/${getAppName()}.${BUNDLE_SUFFIX}.css" rel="stylesheet" media="all">`
5
+ function _addCssLinkToHead(appName, htmlString, dest) {
6
+ const linkTag = ` <link href="${dest}/${appName}.${process.env.MIOLO_BUNDLE_SUFFIX}.css" rel="stylesheet" media="all">`
11
7
 
12
8
  // Expresión regular para encontrar la etiqueta </head> de cierre.
13
9
  // Usamos un grupo de captura para mantener el contenido antes de </head>.
@@ -17,11 +13,13 @@ function _addCssLinkToHead(htmlString) {
17
13
  const match = htmlString.match(headCloseTagRegex);
18
14
 
19
15
  if (match) {
16
+ console.log(`[${appName}][prod] adding css link ${linkTag} to <head>`)
17
+
20
18
  // Si se encuentra </head>, inserta la etiqueta <link> justo antes de ella.
21
19
  return htmlString.replace(headCloseTagRegex, `${linkTag}\n$&`);
22
20
  } else {
23
21
  // Si no se encuentra </head>, devuelve el HTML original sin modificar.
24
- console.warn(`[miolo] No se encontró la etiqueta <head> en el HTML proporcionado.`);
22
+ console.warn(`[${appName}][prod] No se encontró la etiqueta <head> en el HTML proporcionado.`);
25
23
  return htmlString;
26
24
  }
27
25
  }
@@ -37,17 +35,20 @@ export default async function(appName, entry, htmlFile, dest) {
37
35
  target: 'browser',
38
36
  bundle_folder: dest,
39
37
  bundle_name: appName,
40
- bundle_extension: BUNDLE_SUFFIX,
38
+ bundle_extension: process.env.MIOLO_BUNDLE_SUFFIX,
41
39
  bundler: 'rollup',
42
40
  bundle_node_polyfill: true
43
41
  })
44
42
 
45
- const destCssFile = `${dest}/${appName}.${BUNDLE_SUFFIX}.css`
43
+ const destCssFile = `${dest}/${appName}.${process.env.MIOLO_BUNDLE_SUFFIX}.css`
46
44
  const destCssFileExists = isFileExistingSync(destCssFile)
47
45
 
46
+ console.log(`[${appName}][prod] destCssFile ${destCssFile} exists?: ${destCssFileExists}`)
47
+
48
+ console.log(`[${appName}][prod] Copying HTML file ${htmlFile} to ${dest}/index.html`)
48
49
  copyFileSync(htmlFile, `${dest}/index.html`, (content) => {
49
50
  if (destCssFileExists) {
50
- content = _addCssLinkToHead(content)
51
+ content = _addCssLinkToHead(appName, content, dest)
51
52
  }
52
53
  return content
53
54
  })
@@ -5,7 +5,7 @@ import { build } from 'vite'
5
5
  import {xeiraBundle} from 'xeira'
6
6
  import { cleanFolder } from './util.mjs'
7
7
 
8
- process.env.NODE_ENV = 'production'
8
+
9
9
 
10
10
  export async function _fixProdBuild(appName, filePath) {
11
11
  try {
@@ -21,7 +21,7 @@ export async function _fixProdBuild(appName, filePath) {
21
21
  }
22
22
  }
23
23
 
24
- export default async function(appName, ssrEntry, ssrDest, entry, dest) {
24
+ export default async function(appName, ssrEntry, ssrDest, dest) {
25
25
  cleanFolder(dest)
26
26
 
27
27
  console.log(`[${appName}][prod] Building first the SSR entry ${ssrEntry}`)
@@ -29,29 +29,19 @@ export default async function(appName, ssrEntry, ssrDest, entry, dest) {
29
29
  build: {
30
30
  outDir: path.resolve(process.cwd(), ssrDest),
31
31
  ssr: path.resolve(process.cwd(), ssrEntry),
32
- rollupOptions: {
33
- /*
34
- external: ['react', 'react-dom'],
35
- output: {
36
- globals: {
37
- react: 'React',
38
- 'react-dom': 'ReactDOM'
39
- }
40
- }
41
- */
42
-
43
- },
32
+ rollupOptions: {},
44
33
  },
45
34
  // server ssr's entry must bundle externals
46
35
  ssr: {
47
36
  noExternal: true
48
37
  }
49
38
  })
50
-
51
- console.log(`[${appName}][prod] Building server from entry ${entry}`)
39
+
40
+
52
41
  const serverExt = 'node.bundle.mjs'
53
42
  await xeiraBundle({
54
- source_index: entry,
43
+ //source_index: 'node_modules/miolo/packages/miolo/bin/prod_start.mjs',
44
+ source_index: '../miolo/bin/prod_start.mjs',
55
45
  target: 'node',
56
46
  bundle_folder: dest,
57
47
  bundle_name: appName,
package/bin/dev.mjs CHANGED
@@ -1,7 +1,10 @@
1
+
1
2
  import path from 'node:path'
3
+ import { fileURLToPath } from 'node:url'
2
4
  import { fork } from 'node:child_process'
3
5
 
4
- process.env.NODE_ENV = 'development'
6
+ const __filename = fileURLToPath(import.meta.url)
7
+ const __dirname = path.dirname(__filename)
5
8
 
6
9
  let serverProcess = null
7
10
  // let retryCount = 0
@@ -16,8 +19,8 @@ function _isProcessRunning(pid) {
16
19
  }
17
20
  }
18
21
 
19
- async function startDevServerProcess({ appName, entry }) {
20
- const serverPath = path.join(process.cwd(), entry)
22
+ async function startDevServerProcess({ appName }) {
23
+ const serverPath = path.join(__dirname, './dev_start.mjs')
21
24
  serverProcess = fork(serverPath)
22
25
 
23
26
  console.log(`[${appName}][dev] Server process started with pid ${serverProcess.pid} from ${process.pid}`)
@@ -56,13 +59,13 @@ async function startDevServerProcess({ appName, entry }) {
56
59
  }, 2000)
57
60
  }
58
61
 
59
- startDevServerProcess({ appName, entry }) // Inicia un nuevo proceso
62
+ startDevServerProcess({ appName }) // Inicia un nuevo proceso
60
63
  }
61
64
  })
62
65
  }
63
66
 
64
67
 
65
- export default async function(appName, entry) {
66
- console.log(`[${appName}][dev] Running DEV server from entry ${entry}`)
67
- await startDevServerProcess({ appName, entry })
68
+ export default async function(appName) {
69
+ console.log(`[${appName}][dev] Running DEV server`)
70
+ await startDevServerProcess({ appName })
68
71
  }
@@ -0,0 +1,11 @@
1
+ import path from 'node:path'
2
+ import {miolo_dev} from '../src/server-dev.mjs'
3
+
4
+ async function _miolo_dev_start_server() {
5
+ const config = await import(path.join(process.cwd(), process.env.MIOLO_CONFIG))
6
+ const app = await miolo_dev(config.default)
7
+ await app.start()
8
+ return app
9
+ }
10
+
11
+ _miolo_dev_start_server()
package/bin/env.mjs ADDED
@@ -0,0 +1,39 @@
1
+ import { config } from '@dotenvx/dotenvx'
2
+ import path from 'path'
3
+ import { fileURLToPath } from 'url'
4
+ import fs from 'fs'
5
+
6
+ function _find_closest_package_json(dir) {
7
+ if (fs.existsSync(path.join(dir, 'package.json'))) {
8
+ return dir
9
+ }
10
+ const parentDir = path.dirname(dir)
11
+ if (parentDir === dir) {
12
+ return null
13
+ }
14
+ return _find_closest_package_json(parentDir)
15
+ }
16
+
17
+
18
+ function _get_miolo_config_path() {
19
+ const __filename = fileURLToPath(import.meta.url)
20
+ const __dirname = path.dirname(__filename)
21
+
22
+ return path.join(__dirname, '.env')
23
+ }
24
+
25
+
26
+ export function init_env_config() {
27
+
28
+ const debug = process.env.DOTENVX_DEBUG === 'true'
29
+
30
+ // miolo defaults
31
+ const libEnvPath = _get_miolo_config_path()
32
+ config({ path: libEnvPath, debug })
33
+
34
+ // proyect config
35
+ const proyEnvPath = _find_closest_package_json(process.cwd())
36
+ if (proyEnvPath) {
37
+ config({ path: path.join(proyEnvPath, '.env'), override: true, debug })
38
+ }
39
+ }
package/bin/index.mjs CHANGED
@@ -1,59 +1,65 @@
1
1
  #!/usr/bin/env node
2
2
  import yargs from 'yargs-parser'
3
- import { getAppName } from './util.mjs'
3
+ import { init_env_config } from './env.mjs'
4
4
 
5
5
  async function main() {
6
6
  const args = yargs(process.argv.slice(2))
7
7
  const command = args._[0]
8
8
 
9
9
  try {
10
- const appName = getAppName()
10
+ init_env_config()
11
+ const appName = process.env.MIOLO_NAME
11
12
  const serverName = args['server-name'] || 'miolo_server'
12
13
 
13
14
  switch (command) {
14
15
  case 'dev':
16
+ process.env.NODE_ENV = 'development'
15
17
  const devHandler = (await import ('./dev.mjs')).default
16
- const devEntry = args.entry || './src/server/server-dev.mjs'
17
- await devHandler(appName, /*entry*/ devEntry)
18
+ await devHandler(appName)
18
19
  break
19
20
 
20
21
  case 'build-client':
22
+ process.env.NODE_ENV = 'production'
21
23
  const buildClientHandler = (await import ('./build-client.mjs')).default
22
- const clientEntry = args.entry || './cli/entry-cli.jsx'
23
- const htmlFile = args['html-file'] || './cli/index.html'
24
- const clientDest = args.dest || './dist/cli'
24
+ const clientEntry = args.entry || process.env.MIOLO_BUILD_CLIENT_ENTRY
25
+ const htmlFile = args['html-file'] || process.env.MIOLO_BUILD_HTML_FILE
26
+ const clientDest = args.dest || process.env.MIOLO_BUILD_CLIENT_DEST
25
27
  await buildClientHandler(appName, /*entry*/ clientEntry, htmlFile, /*dest*/ clientDest)
26
28
  break
27
29
 
28
30
  case 'build-server':
31
+ process.env.NODE_ENV = 'production'
29
32
  const buildServerHandler = (await import ('./build-server.mjs')).default
30
- const ssrEntry = args['ssr-entry'] || './server/ssr/entry-server.jsx'
31
- const ssrDest = args['ssr-dest'] || './dist/server'
32
- const serverEntry = args.entry || './src/server/server-prod.mjs'
33
- const serverDest = args.dest || './dist/server'
34
- await buildServerHandler(appName, ssrEntry, ssrDest, /*entry*/ serverEntry, /*dest*/ serverDest)
33
+ const ssrEntry = args['ssr-entry'] || process.env.MIOLO_BUILD_SERVER_SSR_ENTRY
34
+ const ssrDest = args['ssr-dest'] || process.env.MIOLO_BUILD_SERVER_DEST
35
+ const serverDest = args.dest || process.env.MIOLO_BUILD_SERVER_DEST
36
+ await buildServerHandler(appName, ssrEntry, ssrDest, /*dest*/ serverDest)
35
37
  break
36
38
 
37
39
  case 'start':
40
+ process.env.NODE_ENV = 'production'
38
41
  const startHandler = (await import ('./start.mjs')).default
39
- const startDest = args.dest || './dist/server'
42
+ const startDest = args.dest || process.env.MIOLO_BUILD_SERVER_DEST
40
43
  await startHandler(appName, /*dest*/ startDest, serverName)
41
44
  break
42
45
 
43
46
  case 'stop':
47
+ process.env.NODE_ENV = 'production'
44
48
  const stopHandler = (await import ('./stop.mjs')).default
45
49
  await stopHandler(appName)
46
50
  break
47
51
 
48
52
  case 'restart':
53
+ process.env.NODE_ENV = 'production'
49
54
  const restartHandler = (await import ('./restart.mjs')).default
50
- const restartDest = args.dest || './dist/server'
55
+ const restartDest = args.dest || process.env.MIOLO_BUILD_SERVER_DEST
51
56
  await restartHandler({appName, /*dest*/ restartDest, serverName})
52
57
  break
53
58
 
54
59
  case 'create-bin':
60
+ process.env.NODE_ENV = 'production'
55
61
  const createHandler = (await import ('./create-bin.mjs')).default
56
- const createDest = args.dest || './dist/server'
62
+ const createDest = args.dest || process.env.MIOLO_BUILD_SERVER_DEST
57
63
  await createHandler(appName, /*dest*/ createDest, serverName)
58
64
  break
59
65
 
@@ -0,0 +1,9 @@
1
+ import path from 'node:path'
2
+ import {miolo} from '../src/server.mjs'
3
+
4
+ export default async function _miolo_prod_start_server() {
5
+ const config = await import(path.join(process.cwd(), process.env.MIOLO_CONFIG))
6
+ const app = await miolo(config.default)
7
+ await app.start()
8
+ return app
9
+ }
package/bin/restart.mjs CHANGED
@@ -1,8 +1,6 @@
1
1
  import start from "./start.mjs"
2
2
  import stop from "./stop.mjs"
3
3
 
4
- process.env.NODE_ENV = 'production'
5
-
6
4
  export default async function(appName, dest, serverName) {
7
5
  console.log(`[${appName}][prod][restart] Restarting server...`)
8
6
 
package/bin/start.mjs CHANGED
@@ -1,25 +1,15 @@
1
1
  import path from 'node:path'
2
2
  import { pidFileCreate } from "./util.mjs"
3
3
 
4
- process.env.NODE_ENV = 'production'
5
-
6
4
  export default async function(appName, dest, serverName) {
7
- // if (! fs.existsSync(CLI_DEST_MAIN)) {
8
- // console.error(`[${appName}][prod][start] Cannot start server (prod): CLI bundle does not exist ${CLI_DEST_MAIN}`)
9
- // return
10
- // }
11
- // if (! fs.existsSync(SRV_DEST_MAIN)) {
12
- // console.error(`[${appName}][prod][start] Cannot start server (prod): SERVER bundle does not exist ${SRV_DEST_MAIN}`)
13
- // return
14
- // }
15
-
16
5
  console.log(`[${appName}][prod][start] Starting server...`)
17
6
 
18
7
  const serverExt = 'node.bundle.mjs'
19
8
  const destFile = path.join(process.cwd(), `${dest}/${appName}.${serverExt}`)
20
9
 
21
10
  const srv_module = await import(destFile)
22
- const server = srv_module[serverName]
11
+ //const server = srv_module[serverName]
12
+ const server = srv_module.default
23
13
 
24
14
  const pid = pidFileCreate(appName)
25
15
  console.log(`[${appName}][prod][start] Starting server. PID is ${pid}...`)
package/bin/stop.mjs CHANGED
@@ -1,7 +1,5 @@
1
1
  import { pidFileRead } from "./util.mjs"
2
2
 
3
- process.env.NODE_ENV = 'production'
4
-
5
3
  export default async function(appName) {
6
4
  console.log(`[${appName}][prod][stop] Stopping server...`)
7
5
 
@@ -17,6 +15,5 @@ export default async function(appName) {
17
15
  console.error(_)
18
16
 
19
17
  return 0
20
- }
21
-
18
+ }
22
19
  }
package/bin/util.mjs CHANGED
@@ -2,17 +2,17 @@ import {readdirSync, rmSync, writeFileSync, readFileSync} from 'node:fs'
2
2
  import path from 'node:path'
3
3
 
4
4
 
5
- export function getAppName() {
6
- try {
7
- const packageJsonPath = path.join(process.cwd(), 'package.json')
8
- const content = readFileSync(packageJsonPath, 'utf8')
9
- const packageData = JSON.parse(content)
10
- return packageData.name
11
- } catch (error) {
12
- console.error('[miolo] Error reading package.json:', error)
13
- return 'miolo'
14
- }
15
- }
5
+ // export function getAppName() {
6
+ // try {
7
+ // const packageJsonPath = path.join(process.cwd(), 'package.json')
8
+ // const content = readFileSync(packageJsonPath, 'utf8')
9
+ // const packageData = JSON.parse(content)
10
+ // return packageData.name
11
+ // } catch (error) {
12
+ // console.error('[miolo] Error reading package.json:', error)
13
+ // return 'miolo'
14
+ // }
15
+ // }
16
16
 
17
17
  export function cleanFolder(folder) {
18
18
  readdirSync(folder).forEach(file => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "miolo",
3
- "version": "2.1.0-beta.1",
3
+ "version": "3.0.0-beta.2",
4
4
  "description": "all-in-one koa-based server",
5
5
  "author": "Donato Lorenzo <donato@afialapis.com>",
6
6
  "contributors": [
@@ -21,49 +21,29 @@
21
21
  "type": "module",
22
22
  "exports": {
23
23
  "./server": {
24
- "node": "./src/server/index.mjs",
25
- "import": "./src/server/index.mjs",
26
- "default": "./dist/server/miolo.server.node.mjs"
24
+ "node": "./src/index.mjs",
25
+ "import": "./src/index.mjs",
26
+ "default": "./dist/miolo.node.mjs"
27
27
  },
28
28
  "./server-dev": {
29
- "default": "./src/server/server-dev.mjs"
30
- },
31
- "./cli": {
32
- "node": "./src/cli/index.mjs",
33
- "import": "./dist/cli/miolo.cli.mjs",
34
- "default": "./dist/cli/miolo.cli.umd.js"
35
- },
36
- "./cli-react": {
37
- "node": "./src/cli-react/index.mjs",
38
- "import": "./dist/cli-react/miolo.cli-react.mjs",
39
- "default": "./dist/cli-react/miolo.cli-react.umd.js"
29
+ "default": "./src/server-dev.mjs"
40
30
  }
41
31
  },
42
32
  "files": [
43
33
  "bin",
44
- "src",
45
- "logo",
46
- "dist"
34
+ "src"
47
35
  ],
48
36
  "scripts": {
49
- "reset": "rm -fr node_modules package-lock.json npm-lock.yaml && npm i",
50
- "cli-clean": "rm -fr ./dist/cli/* ",
51
- "cli-bundle": "npx xeira bundle --target=browser --source_index=./src/cli/index.mjs --bundle_folder=./dist/cli --bundle_name=miolo.cli --bundle_node_polyfill=true --bundle_extension=umd,mjs",
52
- "cli-dist": "npm run cli-clean && npm run cli-bundle",
53
- "cli-react-clean": "rm -fr ./dist/cli-react/*",
54
- "cli-react-bundle": "npx xeira bundle --target=browser --source_index=./src/cli-react/index.mjs --bundle_folder=./dist/cli-react --bundle_name=miolo.cli-react --bundle_node_polyfill=true --bundle_extension=umd,mjs",
55
- "cli-react-dist": "npm run cli-react-clean && npm run cli-react-bundle",
56
- "server-clean": "rm -fr ./dist/server/*",
57
- "server-bundle": "npx xeira bundle --target=node --source_index=./src/server/index.mjs --bundle_folder=./dist/server --bundle_name=miolo.server --bundle_extension=node.mjs",
58
- "server-dist": "npm run server-clean && npm run server-bundle",
59
- "dist": "npm run cli-dist && npm run cli-react-dist && npm run server-dist",
60
- "site": "npx xeira site",
37
+ "reset": "rm -fr package-lock.json npm-lock.yaml dist/* && npm i",
38
+ "clean": "rm -fr ./dist/*",
39
+ "bundle": "npx xeira bundle --target=node --source_index=./src/index.mjs --bundle_folder=./dist --bundle_name=miolo --bundle_extension=node.mjs",
40
+ "dist": "npm run clean && npm run bundle",
61
41
  "test": "npx xeira test --files=./test/index.mjs",
62
- "pre-publish": "npm run dist && npm run site"
42
+ "publish": "npm publish"
63
43
  },
64
44
  "dependencies": {
65
45
  "@babel/plugin-proposal-decorators": "^7.28.0",
66
- "@dotenvx/dotenvx": "^1.47.5",
46
+ "@dotenvx/dotenvx": "^1.47.6",
67
47
  "@koa/bodyparser": "^6.0.0",
68
48
  "@koa/cors": "^5.0.0",
69
49
  "@koa/router": "^13.1.1",
@@ -96,19 +76,16 @@
96
76
  "vite": "^7.0.4",
97
77
  "winston": "^3.17.0",
98
78
  "winston-daily-rotate-file": "^5.0.0",
99
- "xeira": "^1.2.2",
100
79
  "yargs-parser": "^22.0.0"
101
80
  },
102
- "peerDependencies": {
103
- "react": "^18.3.1",
104
- "react-dom": "^18.3.1"
105
- },
106
81
  "devDependencies": {
107
- "node-fetch": "^3.3.2"
82
+ "esbuild": "^0.25.6",
83
+ "node-fetch": "^3.3.2",
84
+ "xeira": "^1.2.3"
108
85
  },
109
86
  "eslintConfig": {
110
87
  "extends": [
111
- "./node_modules/xeira/configs/eslint.react.cjs"
88
+ "../../node_modules/xeira/configs/eslint.react.cjs"
112
89
  ]
113
90
  }
114
91
  }