Initial commit

This commit is contained in:
Robin Steinberg 2021-08-24 22:27:20 +02:00
commit 5e13cbee14
6 changed files with 267 additions and 0 deletions

102
.gitignore vendored Normal file
View File

@ -0,0 +1,102 @@
dist/
node_modules/
.node_modules/
built/*
tests/cases/rwc/*
tests/cases/test262/*
tests/cases/perf/*
!tests/cases/webharness/compilerToString.js
test-args.txt
~*.docx
\#*\#
.\#*
tests/baselines/local/*
tests/baselines/local.old/*
tests/services/baselines/local/*
tests/baselines/prototyping/local/*
tests/baselines/rwc/*
tests/baselines/test262/*
tests/baselines/reference/projectOutput/*
tests/baselines/local/projectOutput/*
tests/baselines/reference/testresults.tap
tests/services/baselines/prototyping/local/*
tests/services/browser/typescriptServices.js
src/harness/*.js
src/compiler/diagnosticInformationMap.generated.ts
src/compiler/diagnosticMessages.generated.json
src/parser/diagnosticInformationMap.generated.ts
src/parser/diagnosticMessages.generated.json
rwc-report.html
*.swp
build.json
*.actual
tests/webTestServer.js
tests/webTestServer.js.map
tests/webhost/*.d.ts
tests/webhost/webtsc.js
tests/cases/**/*.js
!tests/cases/docker/*.js/
tests/cases/**/*.js.map
*.config
scripts/eslint/built/
scripts/debug.bat
scripts/run.bat
scripts/word2md.js
scripts/buildProtocol.js
scripts/ior.js
scripts/authors.js
scripts/configurePrerelease.js
scripts/configureLanguageServiceBuild.js
scripts/open-user-pr.js
scripts/open-cherry-pick-pr.js
scripts/processDiagnosticMessages.d.ts
scripts/processDiagnosticMessages.js
scripts/produceLKG.js
scripts/importDefinitelyTypedTests/importDefinitelyTypedTests.js
scripts/generateLocalizedDiagnosticMessages.js
scripts/request-pr-review.js
scripts/*.js.map
scripts/typings/
coverage/
internal/
**/.DS_Store
.settings
**/.vs
**/.vscode/*
!**/.vscode/tasks.json
!**/.vscode/settings.template.json
!**/.vscode/launch.template.json
!**/.vscode/extensions.json
!tests/cases/projects/projectOption/**/node_modules
!tests/cases/projects/NodeModulesSearch/**/*
!tests/baselines/reference/project/nodeModules*/**/*
.idea
yarn.lock
yarn-error.log
.parallelperf.*
tests/cases/user/*/package-lock.json
tests/cases/user/*/node_modules/
tests/cases/user/*/**/*.js
tests/cases/user/*/**/*.js.map
tests/cases/user/*/**/*.d.ts
!tests/cases/user/zone.js/
!tests/cases/user/bignumber.js/
!tests/cases/user/discord.js/
tests/baselines/reference/dt
.failed-tests
TEST-results.xml
package-lock.json
tests/cases/user/npm/npm
tests/cases/user/TypeScript-React-Starter/TypeScript-React-Starter
tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter
tests/cases/user/TypeScript-React-Native-Starter/TypeScript-React-Native-Starter
tests/cases/user/TypeScript-Vue-Starter/TypeScript-Vue-Starter
tests/cases/user/TypeScript-WeChat-Starter/TypeScript-WeChat-Starter
tests/cases/user/create-react-app/create-react-app
tests/cases/user/fp-ts/fp-ts
tests/cases/user/webpack/webpack
tests/cases/user/puppeteer/puppeteer
tests/cases/user/axios-src/axios-src
tests/cases/user/prettier/prettier
.eslintcache

36
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,36 @@
{
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "debug",
"label": "npm debug",
"isBackground": true,
"problemMatcher": [
"$tsc-watch"
]
},
{
"type": "typescript",
"tsconfig": "tsconfig.json",
"option": "watch",
"problemMatcher": [
"$tsc-watch"
],
"group": "build",
"label": "tsc: Watch"
},
{
"type": "typescript",
"tsconfig": "tsconfig.json",
"problemMatcher": [
"$tsc"
],
"group": {
"kind": "build",
"isDefault": true
},
"label": "tsc: Erstellen tsconfig.json"
}
]
}

26
index.html Normal file
View File

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html>
<head>
<title>Canvas Receiver</title>
<script defer type="module" src="dist/app.js"></script>
</head>
<body>
<div id="canvas"></div>
</body>
<style>
body {
margin: 0 0 0 0;
}
#canvas {
height: 100vh;
width: 100vw;
}
#canvas > canvas {
width: 100%;
height: 100%;
}
</style>
</html>

21
package.json Normal file
View File

@ -0,0 +1,21 @@
{
"name": "canvas",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "tsc -p ./",
"watch": "tsc -watch -p ./",
"serve": "serve -l 8082 .",
"debug": "npm-run-all --parallel watch serve",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"@tsconfig/recommended": "^1.0.1",
"npm-run-all": "^4.1.5",
"serve": "^12.0.0",
"typescript": "^4.3.5"
}
}

71
ts/app.ts Normal file
View File

@ -0,0 +1,71 @@
class CanvasReceiverController {
private canvasDiv: HTMLDivElement;
private canvas!: HTMLCanvasElement;
private ctx!: CanvasRenderingContext2D | null;
private ws: WebSocket;
constructor() {
this.canvasDiv = document.querySelector('#canvas') as HTMLDivElement;
this.createCanvas();
this.ws = new WebSocket('ws://localhost:8081', 'json');
this.ws.onmessage = message => this.processMessage(message);
this.ws.onopen = () => this.ws.send("RECEIVER");
}
private createCanvas() {
this.canvas = document.createElement('canvas');
this.canvasDiv.appendChild(this.canvas);
this.canvas.width = this.canvas.offsetWidth;
this.canvas.height = this.canvas.offsetHeight;
this.ctx = this.canvas.getContext('2d');
}
processMessage(message: MessageEvent<any>) {
if (message.data === "CLEAR") {
this.canvasDiv.removeChild(this.canvas);
this.createCanvas();
} else {
this.draw(JSON.parse(message.data));
}
}
draw(path: Coordinates[]) {
if (!this.ctx) {
return;
}
const first = path.shift();
if (!first) {
return;
}
this.ctx.beginPath();
this.ctx.moveTo(first.x, first.y);
for (const cur of path) {
this.ctx.lineTo(cur.x, cur.y);
}
this.ctx.lineWidth = 1;
this.ctx.stroke();
}
}
class Coordinates {
public x: number;
public y: number;
constructor(x: number, y: number) {
this.x = x;
this.y = y;
}
}
const app = new CanvasReceiverController();
export { app };

11
tsconfig.json Normal file
View File

@ -0,0 +1,11 @@
{
"compilerOptions": {
"target": "ES2015",
"module": "ES2015",
"outDir": "dist",
"sourceMap": true
},
"extends": "@tsconfig/recommended/tsconfig.json",
"include": ["ts/**/*"],
"exclude": ["node_modules", "**/*.spec.ts"]
}