Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
zhengyao-lin committed Nov 4, 2019
0 parents commit 81901be
Show file tree
Hide file tree
Showing 15 changed files with 2,193 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"presets": ["@babel/preset-typescript", "@babel/preset-env"],
"plugins": ["@babel/plugin-proposal-class-properties"]
}
108 changes: 108 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# TypeScript v1 declaration files
typings/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache

# Next.js build output
.next

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and *not* Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# build
build/
lib/
16 changes: 16 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
SRC = $(wildcard src/*.ts)
BUILD = $(SRC:src/%.ts=build/%.js)
ENTRYPOINT = build/terminal.js
TARGET = lib/yterm.js

$(TARGET): $(BUILD)
mkdir -p $(@D)
browserify $(ENTRYPOINT) -o $(TARGET)

build/%.js: src/%.ts .babelrc
mkdir -p $(@D)
babel $< -o $@

.PHONY: clean
clean:
rm -rf build $(TARGET)
11 changes: 11 additions & 0 deletions main.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>

<body>
<div id="main"></div>
<script src="lib/yterm.js"></script>
</body>
</html>
32 changes: 32 additions & 0 deletions main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
const pty = require("node-pty");
const ws = require("ws");

const server = new ws.Server({ host: "localhost", port: 3131 });
const processes = new Set();

server.on("connection", ws => {
const proc = pty.spawn("bash");

processes.add(proc);

proc.on("data", data => {
ws.send(data);
});

ws.on("message", msg => {
proc.write(msg);
});

ws.on("close", msg => {
proc.kill();
processes.delete(proc);
});
});

process.on("exit", () => {
console.log("killing all processes");

for (const proc of processes) {
proc.kill();
}
});
Loading

0 comments on commit 81901be

Please sign in to comment.