Initial commit
This commit is contained in:
		
							
								
								
									
										102
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal 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
 | 
			
		||||
							
								
								
									
										25
									
								
								.vscode/tasks.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								.vscode/tasks.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
{
 | 
			
		||||
	"version": "2.0.0",
 | 
			
		||||
	"tasks": [
 | 
			
		||||
		{
 | 
			
		||||
			"type": "typescript",
 | 
			
		||||
			"tsconfig": "tsconfig.json",
 | 
			
		||||
			"problemMatcher": [
 | 
			
		||||
				"$tsc"
 | 
			
		||||
			],
 | 
			
		||||
			"group": {
 | 
			
		||||
				"kind": "build",
 | 
			
		||||
				"isDefault": true
 | 
			
		||||
			},
 | 
			
		||||
			"label": "tsc: Erstellen – tsconfig.json"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"type": "npm",
 | 
			
		||||
			"script": "build",
 | 
			
		||||
			"group": "build",
 | 
			
		||||
			"problemMatcher": [],
 | 
			
		||||
			"label": "npm: build",
 | 
			
		||||
			"detail": "tsc -p ./"
 | 
			
		||||
		}
 | 
			
		||||
	]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
{
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "build": "npm install && tsc -p ./"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@tsconfig/node16": "^1.0.2",
 | 
			
		||||
    "@types/node": "^16.7.1",
 | 
			
		||||
    "@types/ws": "^7.4.7",
 | 
			
		||||
    "typescript": "^4.3.5"
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "ws": "^8.2.0"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										71
									
								
								src/app.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								src/app.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
			
		||||
import WebSocket from 'ws';
 | 
			
		||||
 | 
			
		||||
const wss = new WebSocket.Server({ port: 8081 });
 | 
			
		||||
const receivers: WebSocket[] = [];
 | 
			
		||||
let sender: WebSocket | null = null;
 | 
			
		||||
 | 
			
		||||
const paths = [] as string[];
 | 
			
		||||
 | 
			
		||||
wss.on('connection', ws => {
 | 
			
		||||
    console.log('CONNECTION incoming');
 | 
			
		||||
    ws.once('message', message => {
 | 
			
		||||
        const str = message.toString();
 | 
			
		||||
        switch (str) {
 | 
			
		||||
            case 'SENDER':
 | 
			
		||||
                setSender(ws);
 | 
			
		||||
                break;
 | 
			
		||||
            case 'RECEIVER':
 | 
			
		||||
                addReceiver(ws)
 | 
			
		||||
                break;
 | 
			
		||||
            default:
 | 
			
		||||
                paths.push(str);
 | 
			
		||||
                break;
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
console.log('READY');
 | 
			
		||||
 | 
			
		||||
function addReceiver(ws: WebSocket) {
 | 
			
		||||
    console.log('RECEIVER registered');
 | 
			
		||||
    for (const path of paths) {
 | 
			
		||||
        ws.send(path);
 | 
			
		||||
    }
 | 
			
		||||
    receivers.push(ws);
 | 
			
		||||
 | 
			
		||||
    ws.onclose = () => {
 | 
			
		||||
        // Remove receiver when connection closes
 | 
			
		||||
        for (const [i, recv] of receivers.entries()) {
 | 
			
		||||
            if (ws === recv) {
 | 
			
		||||
                receivers.splice(i, 1);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function setSender(ws: WebSocket) {
 | 
			
		||||
    console.log('SENDER is being registered')
 | 
			
		||||
    if (sender) {
 | 
			
		||||
        console.log('Removing current sender...')
 | 
			
		||||
        sender.close();
 | 
			
		||||
        clearPaths();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    sender = ws;
 | 
			
		||||
    ws.on('message', msg => processMessage(msg));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function processMessage(message: WebSocket.Data) {
 | 
			
		||||
    const path = message.toString();
 | 
			
		||||
    console.log('PATH RECEIVED: ' + path);
 | 
			
		||||
    paths.push(path);
 | 
			
		||||
 | 
			
		||||
    console.log('SENDING to ' + receivers.length, 'clients');
 | 
			
		||||
    receivers.forEach(r => r.send(path));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function clearPaths() {
 | 
			
		||||
    paths.splice(0, paths.length);
 | 
			
		||||
    receivers.forEach(r => r.send("CLEAR"));
 | 
			
		||||
    console.log('Paths have been cleared');
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								tsconfig.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
{
 | 
			
		||||
    "extends": "@tsconfig/node16/tsconfig.json",
 | 
			
		||||
    "compilerOptions": {
 | 
			
		||||
      "sourceMap": true,
 | 
			
		||||
      "outDir": "dist",
 | 
			
		||||
      "moduleResolution": "node"
 | 
			
		||||
    },
 | 
			
		||||
    "include": ["src/**/*"],
 | 
			
		||||
    "exclude": ["node_modules", "**/*.spec.ts"]
 | 
			
		||||
  }
 | 
			
		||||
		Reference in New Issue
	
	Block a user