Skip to content
This repository was archived by the owner on May 17, 2024. It is now read-only.

Commit fb13e0d

Browse files
committed
fix(serve): use xterm from unpkg instead of node_modules
1 parent 871edf4 commit fb13e0d

File tree

5 files changed

+91
-41
lines changed

5 files changed

+91
-41
lines changed

package-lock.json

Lines changed: 43 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"test": "jest",
1313
"cover": "jest --collectCoverage",
1414
"build": "npm run build:dist && npm run build:bins",
15-
"build:dist": "tsc",
15+
"build:dist": "tsc && cp -TRv src/static/ dist/static/",
1616
"build:bins": "tar czf node_modules.tar.gz node_modules/better-sqlite3 node_modules/integer node_modules/node-pty && pkg --target=node10 --out-path=build .",
1717
"contributors:add": "all-contributors add",
1818
"docs": "markdown-toc -i --maxdepth=4 README.md && typedoc --readme README.md --mode file --out ./docs ./src",
@@ -67,21 +67,22 @@
6767
"del": "^3.0.0",
6868
"ellipsize": "^0.1.0",
6969
"express": "^4.16.4",
70+
"express-async-handler": "^1.1.4",
7071
"express-ws": "^4.0.0",
7172
"glob": "^7.1.3",
7273
"js-yaml": "^3.12.1",
7374
"mkdirp": "^0.5.1",
7475
"node-pty": "^0.8.0",
76+
"remove": "^0.1.5",
7577
"sprintf-js": "^1.1.2",
7678
"tar": "^4.4.8",
7779
"tmp": "0.0.33",
78-
"xterm": "^3.10.1",
7980
"yargs": "^12.0.5"
8081
},
8182
"pkg": {
8283
"assets": [
8384
"./envs/**/*",
84-
"./static/**/*",
85+
"./dist/static/**/*",
8586
"./node_modules.tar.gz"
8687
]
8788
}

src/serve.ts

Lines changed: 38 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -9,34 +9,46 @@ const app = express()
99
const expressWs = require('express-ws')(app)
1010

1111
// Serve static assets from ./static
12-
app.use(express.static(path.join(path.dirname(__dirname), 'static')))
12+
app.use(express.static(path.join(__dirname, 'static')))
1313

1414
// Instantiate shell and set up data handlers
15-
expressWs.app.ws('/shell', async (ws: any, req: any) => {
16-
// Create streams that pipe between the Websocket and
17-
// the pseudo terminal
18-
19-
// A pseudo stdin that receives data from the Websocket
20-
const stdin = new stream.PassThrough()
21-
ws.on('message', (msg: any) => {
22-
stdin.write(msg)
23-
})
24-
25-
// A pseudo stdout that writes data to the Websocket
26-
const stdout = new stream.Writable({
27-
write (chunk: Buffer, encoding: any, callback: any) {
28-
ws.send(chunk)
29-
callback()
30-
}
31-
})
32-
33-
let env = new Environment('multi-mega')
34-
35-
const sessionParameters = new SessionParameters()
36-
sessionParameters.platform = Platform.DOCKER
37-
sessionParameters.stdin = stdin
38-
sessionParameters.stdout = stdout
39-
await env.enter(sessionParameters)
15+
expressWs.app.ws('/shell', async (ws: any, req: express.Request) => {
16+
try {
17+
// Create streams that pipe between the Websocket and
18+
// the pseudo terminal
19+
20+
// A pseudo stdin that receives data from the Websocket
21+
const stdin = new stream.PassThrough()
22+
ws.on('message', (msg: any) => {
23+
stdin.write(msg)
24+
})
25+
26+
// A pseudo stdout that writes data to the Websocket
27+
const stdout = new stream.Writable({
28+
write (chunk: Buffer, encoding: any, callback: any) {
29+
ws.send(chunk)
30+
callback()
31+
}
32+
})
33+
34+
let env = new Environment('multi-mega')
35+
36+
const sessionParameters = new SessionParameters()
37+
sessionParameters.platform = Platform.DOCKER
38+
sessionParameters.stdin = stdin
39+
sessionParameters.stdout = stdout
40+
await env.enter(sessionParameters)
41+
} catch (error) {
42+
console.error(error)
43+
}
44+
})
45+
46+
// Error handling middleware
47+
app.use((error: Error, req: express.Request, res: express.Response, next: any) => {
48+
console.error(error.stack)
49+
res.status(500)
50+
res.render('error', { error })
51+
next(error)
4052
})
4153

4254
app.listen(3000)

src/static/index.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
<html>
33
<head>
44
<title>Nixter</title>
5-
<link rel="stylesheet" href="/node_modules/xterm/dist/xterm.css" />
6-
<link rel="stylesheet" href="/node_modules/xterm/dist/addons/fullscreen/fullscreen.css" />
75
<script src="https://cdnjs.cloudflare.com/ajax/libs/es6-promise/4.1.1/es6-promise.auto.min.js"></script>
86
<script src="https://cdnjs.cloudflare.com/ajax/libs/fetch/1.0.0/fetch.min.js"></script>
9-
<script src="/node_modules/xterm/dist/xterm.js"></script>
10-
<script src="/node_modules/xterm/dist/addons/fit/fit.js"></script>
11-
<script src="/node_modules/xterm/dist/addons/attach/attach.js"></script>
12-
<script src="/node_modules/xterm/dist/addons/winptyCompat/winptyCompat.js"></script>
7+
<script src="https://unpkg.com/xterm@3.10.1/dist/xterm.js"></script>
8+
<script src="https://unpkg.com/xterm@3.10.1/dist/addons/fit/fit.js"></script>
9+
<script src="https://unpkg.com/xterm@3.10.1/dist/addons/attach/attach.js"></script>
10+
<script src="https://unpkg.com/xterm@3.10.1/dist/addons/winptyCompat/winptyCompat.js"></script>
11+
<link rel="stylesheet" href="https://unpkg.com/xterm@3.10.1/dist/xterm.css" />
12+
<link rel="stylesheet" href="https://unpkg.com/xterm@3.10.1/dist/addons/fullscreen/fullscreen.css" />
1313
</head>
1414
<body>
1515
<div id="terminal" style="position:absolute; width:100%; height:100%; padding: 0.5em; background: black">

src/static/node_modules

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)