When building a Lime application in debug mode on Windows, the console
subsystem is used and Windows looks for a 'main' function. However, the
Main.cpp file used when linking statically always defines a 'WinMain'
function regardless of whether the application is being built in debug
mode.
This commit adds an additional check in the Main.cpp that defines a
'main' function instead of 'WinMain' when building in debug mode.
Windows headers define RemoveDirectory as RemoveDirectoryA.
system/FileWatcher.h needs to be included after any headers that might include windows headers.
This value doesn't actually contain default values, but instead helps
verify that the correct fields are present and have the correct types.
It also doesn't need to show up in code completion.
There's no need to have three separate files containing a single static
variable each. Ideally, the `Data` types should include the variable,
which can be accomplished using abstracts.
`from Dynamic` is required in Haxe 3 and simplifies things in Haxe 4.
-lib hxnodejs is no longer included in the compilation of ApplicationMain (but it is still included for compilation of ElectronSetup, of course). hxnodejs was removed from ApplicationMain because it forces some require() calls to be included in the generated .js, which would require disabling certain Electron security features to work properly in newer versions of Electron than we targeted previously. Electron's documentation recommends not to do that.
To use Node.js APIs, you need to run them in more secure contexts, while communicating over IPC with a "preload script" from the "renderer" process. In Lime/OpenFL, this would require a custom ElectronSetup template override, but that shouldn't be all that surprising. See: https://www.electronjs.org/docs/latest/tutorial/process-model for more details on the Electron side.