net-textarea
Version:
A Node.js CLI tool designed for easy text editing over the network. Runs directly with npx, no installation required.
65 lines (64 loc) • 1.76 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const express_1 = __importDefault(require("express"));
const listening_on_1 = require("listening-on");
let app = (0, express_1.default)();
app.use(express_1.default.urlencoded({ extended: false }));
let text = '';
app.post('/', (req, res) => {
text = req.body.text || '';
res.redirect('/');
});
app.get('/text', (req, res) => {
res.end(text);
});
app.get('/', (req, res) => {
res.header('Content-Type', 'text/html');
res.write(/* html */ `
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Clipboard</title>
<style>
body {
margin: 0;
}
#main {
display: flex;
height: calc(100vh - 2rem);
}
textarea {
margin: auto;
width: calc(100% - 2rem);
height: calc(100% - 2rem);
}
</style>
</head>
<body>
<form method="post" action="/">
<div id="main">
<textarea id="text" name="text"></textarea>
</div>
<div style="display: flex">
<div style="margin: auto">
<input type="button" value="Refresh" onclick="location.reload()">
<input type="submit" value="Save" />
</div>
</div>
</form>
<script>
text.value = ${JSON.stringify(text)}
</script>
</body>
</html>`);
res.end();
});
let port = +process.argv[2] || 8123;
app.listen(port, () => {
(0, listening_on_1.print)(port);
});