Skip to content

Commit efabab1

Browse files
committed
web worker still not work
1 parent 13e261b commit efabab1

File tree

7 files changed

+72
-19
lines changed

7 files changed

+72
-19
lines changed

masm-tasm/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,7 @@
483483
"assert": "^2.0.0",
484484
"del": "^7.0.0",
485485
"download": "^8.0.0",
486-
"emulators": "./dev/emulators-v8.3.3-dosasm2.0.tgz",
486+
"emulators": "./dev/emulators-v8.3.3-dosasm2.1.tgz",
487487
"eslint": "^8.20.0",
488488
"glob": "^8.0.3",
489489
"http-proxy-agent": "^7.0.2",

masm-tasm/pnpm-lock.yaml

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

masm-tasm/src/ASM/vscode-dosbox.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* originally from https://github.com/dosasm/vscode-dosbox/blob/main/src/api.ts
44
*/
55

6-
import { CommandInterface, Emulators } from 'emulators';
6+
import { CommandInterface, Emulators } from 'emulators/dist/out/emulators';
77
import * as Jszip from 'jszip';
88
import * as vscode from 'vscode';
99

masm-tasm/src/emulators/jsdos-ci.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as vscode from 'vscode';
22
import * as conf from '../utils/configuration';
3-
import { CommandInterface, utils } from 'emulators';
3+
import { CommandInterface, utils } from 'emulators/dist/out/emulators';
44

55
class JsdosTerminal implements vscode.Pseudoterminal {
66
onDidWrite: vscode.Event<string>;

masm-tasm/src/emulators/jsdos.ts

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,12 @@ import { ExtensionContext, ExtensionMode, Uri } from "vscode";
22
import * as vscode from "vscode"
33
import { ActionContext, AsmResult, ExecAction } from "../ASM/manager";
44
import { DosEmulatorType } from "../utils/configuration";
5-
import { CommandInterface, getEmulators,platform } from "emulators";
5+
import { CommandInterface, getEmulators,platform } from 'emulators/dist/out/emulators';
66
import { manager } from "./jsdos-ci";
77
import { createBundle } from "./bundle";
8-
import { XhrOptions } from "emulators/dist/out/impl/http";
98

10-
platform.current.node_require=function(url:string){
11-
return __non_webpack_require__(url);
12-
};
13-
const request=platform.current.httpRequest
14-
platform.current.httpRequest=function(url:string,options:XhrOptions){
15-
return request(url,options)
16-
}
9+
10+
1711

1812
class JsdosRuntime{
1913
emulators;
@@ -22,7 +16,10 @@ class JsdosRuntime{
2216
this.emulators=getEmulators(pathprefix);
2317
}
2418
async run(FS:Uint8Array){
25-
this.ci=await this.emulators.dosboxDirect(FS,);
19+
this.ci=await this.emulators.dosboxWorker(FS,);
20+
this.ci.events().onMessage((msg,...args)=>{
21+
console.log(msg,args)
22+
})
2623
}
2724
}
2825

masm-tasm/src/extension.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,18 @@ import { localize, loadI18n } from './utils/i18n';
44
import * as lan from './language/main';
55
import * as asm from './ASM/main';
66

7+
import { XhrOptions } from "emulators/dist/out/impl/http";
8+
import { platform } from 'emulators/dist/out/emulators';
9+
10+
const request=platform.current.httpRequest
11+
platform.current.httpRequest=function(url:string,options:XhrOptions){
12+
return request(url,options)
13+
}
14+
15+
platform.current.node_require=function(url:string){
16+
return __non_webpack_require__(url);
17+
};
18+
719
export function activate(context: vscode.ExtensionContext): void {
820

921
loadI18n(context);

masm-tasm/src/web/extension.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,52 @@ import { localize, loadI18n } from '../utils/i18n';
44
import * as lan from '../language/main';
55
import * as asm from './ASM';
66

7+
import { XhrOptions } from "emulators/dist/out/impl/http";
8+
import { platform } from 'emulators/dist/out/emulators';
9+
10+
self.window=self
11+
712
export function activate(context: vscode.ExtensionContext): void {
813

14+
let jsdos=""
15+
if(context.extensionMode==vscode.ExtensionMode.Development){
16+
jsdos="node_modules/emulators/dist/"
17+
}
18+
19+
const request=platform.current.httpRequest
20+
platform.current.httpRequest=async function(url:string,options:XhrOptions){
21+
if(url.endsWith("wasm")){
22+
const uri=vscode.Uri.file(url)
23+
const filename=uri.path.substring(uri.path.lastIndexOf('/'));
24+
const uri2=vscode.Uri.joinPath(context.extensionUri,jsdos,filename)
25+
return await vscode.workspace.fs.readFile(uri2)
26+
}
27+
if(url.endsWith("js")){
28+
const uri=vscode.Uri.file(url)
29+
const filename=uri.path.substring(uri.path.lastIndexOf('/'));
30+
const uri2=vscode.Uri.joinPath(context.extensionUri,jsdos,filename)
31+
const data=await vscode.workspace.fs.readFile(uri2)
32+
const text=new TextDecoder("utf-8").decode(data)
33+
return text
34+
}
35+
return request(url,options)
36+
}
37+
38+
platform.current.createWorker=async function(url: string,onerror:(e:ErrorEvent)=>void,onmessage:(e:MessageEvent)=>void): Promise<Worker>{
39+
const uri=vscode.Uri.file(url)
40+
const filename=uri.path.substring(uri.path.lastIndexOf('/'));
41+
const uri2=vscode.Uri.joinPath(context.extensionUri,jsdos,filename)
42+
const data=await vscode.workspace.fs.readFile(uri2)
43+
44+
const b = new Blob([data])
45+
46+
const localUrl = URL.createObjectURL(b);
47+
const worker = new Worker(localUrl);
48+
worker.onerror=onerror;
49+
worker.onmessage=onmessage
50+
return worker
51+
} as any;
52+
953
loadI18n(context);
1054

1155
//provide programmaic language features like hover,references,outline(symbol)

0 commit comments

Comments
 (0)