yoshiki-okawa / BlazorJSProxy

Dynamic proxy of Microsoft.JSInterop.IJSRuntime which makes defining and invoking JS object much easier
MIT License
2 stars 0 forks source link

code generation covering all webidl #1

Open unicomp21 opened 2 years ago

unicomp21 commented 2 years ago

https://github.com/EbramTawfik/GeckoFX/issues/3

Is it possible to wrap everything?

yoshiki-okawa commented 2 years ago

Possibly. I was looking at typescript instead of WebIDL (e.g. https://github.com/microsoft/TypeScript/blob/main/lib/lib.dom.d.ts) as TS is much closer to C# than WebIDL like https://searchfox.org/mozilla-central/source/dom/webidl/Window.webidl

unicomp21 commented 2 years ago

Isn't the typescrpt generated from webidl? @yoshiki-okawa

unicomp21 commented 2 years ago

Maybe we could use this to generate the c# interop code? Am I looking at this right? https://github.com/jsdom/webidl2js

unicomp21 commented 2 years ago

or this https://github.com/microsoft/TypeScript-DOM-lib-generator

yoshiki-okawa commented 2 years ago

What I mean is that I think it is possible to do code gen based on https://github.com/microsoft/TypeScript/blob/main/lib/lib.dom.d.ts to cover pretty much all WebIDL. lib.dom.d.ts is generated from MDN Web APIs (https://developer.mozilla.org/en-US/docs/Web/API) but pretty much same as WebIDL.

unicomp21 commented 2 years ago

Got it, I understand. But, would this be easier than changing

https://github.com/microsoft/TypeScript-DOM-lib-generator

to generate c# rather than typescript? I think it already iterates the webidl tree? Or is there something else I'm missing?

yoshiki-okawa commented 2 years ago

Either way would work but I think code gen based on lib.dom.d.ts would be easier than understanding and modifying the generator.

unicomp21 commented 2 years ago

@yoshiki-okawa is this more in line w/ your thinking? From what I can tell, dart syntax looks a lot like c#? If I'm not mistaken, this project is generating dart wrappers from typescript typedefinitions?

https://github.com/Blimster/babylon_dart_gen

unicomp21 commented 2 years ago

I'm wondering if there will also be demand in the near future for wrapping c++ w/ c# pinvoke wrappers? When using webassembly? https://emscripten.org/docs/porting/connecting_cpp_and_javascript/WebIDL-Binder.html

(ie kill two birds w/ one stone)

yoshiki-okawa commented 2 years ago

yes babylon_dart_gen is pretty much what's in my mind. regarding c++, if you are talking about c# -> JS -> c++, I cannot see benefit of it.

unicomp21 commented 2 years ago

my thinking was generating c# -> c++ pinvoke wrappers, where the c++ api is described in webidl. but the more I think about it, this sort of thing is probably better filled by something like protobuf.