https://github.com/ceifa/demoon
Lua + Node = demoon
https://github.com/ceifa/demoon
Last synced: 12 months ago
JSON representation
Lua + Node = demoon
- Host: GitHub
- URL: https://github.com/ceifa/demoon
- Owner: ceifa
- License: mit
- Created: 2021-04-07T14:56:06.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2023-02-21T14:53:06.000Z (over 3 years ago)
- Last Synced: 2025-07-05T09:17:08.239Z (12 months ago)
- Language: JavaScript
- Homepage:
- Size: 24.4 KB
- Stars: 77
- Watchers: 5
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# demoon
You love Lua but the runtime API is very weak and you don't want to handle and learn a lot of different luarock libraries? You came at the right place! This project aims to offer the bests of **Lua** and **NodeJS** together.
> Don't use this in production!
## Usage
You don't need `lua` installed to run demoon, but you need `node` and npm as well, firstly, install demoon globally:
```sh
$: npm i -g demoon
```
Then run it passing your entry lua file:
```sh
$: demoon app.lua
```
## Example
This is a little sample code to demonstrate how demoon is powerful and bridges well with nodeJS:
```lua
-- you can require node modules (package.json/node_modules works as well)
local http = require('http')
-- you can require js modules and lua files
-- require('./myjsmodule.js')
-- require('./myluamodule.lua')
local port = os.getenv('PORT') or 8080
function sleep(ms)
-- you can use and create promises
return Promise.create(function(resolve)
setTimeout(resolve, ms)
end)
end
-- top level await works!
sleep(1000):await()
http.createServer(async(function (req, res)
-- you can await inside async bounded functions
sleep(1000):await()
res:write('Hello World!')
res['end']()
end)):listen(port)
print('Your server is running on port ' .. port .. '!')
```