* build: add watch/compile tasks for CLI
I spent time this morning working on the 'developer experience' of the
CLI in vscode, mainly getting the CLI to cross-compile chasing our
initial idea of having it auto-build in a devcontainer.
After some effort and disabling tunnels connections (to avoid having to
pull in OpenSSL which is a huge pain to cross compile), I was able to
get it to cross-compile from Linux to Windows, using the mingw linker.
I could probably figure out how to get macOS working as well with more
effort. However, I'm not a big fan of this, effectively it's one more
'platform' of build we need to support and test.
I think a better approach is downloading the latest compiled CLI from
the update server instead, as needed. That's what this PR does. It just
places the CLI where it _would_ normally get compiled to by cargo; so
far we don't need to do anything special outside of that.
A notice is shown to users if this fallback happens.
* update from review
* untested wip
* cli: fix error starting remote tunnels
Fixes#185585
Output was prefixed which prevented the lines from being split to detect the tunnel status.
* feat: use custom tag instead of custom version for MS electron releases
* chore: bump @vscode/gulp-electron
* chore: move build id to .yarnrc
* chore: rename enableUNCAccessChecks => restrictUNCAccess
* chore: update electron@22.3.11
* chore: add build info to about dialog
* chore: simplify helper function
* chore: remove unused node.js checksums
* chore: bump nodejs internal version
* chore: bump distro
* fix: revert changes to sign.ts
* chore: bump distro
* eng - add `checksum` validation support to `remote`
* eng - wire in more `checksum` support
* eng - renames for remote fetching
* eng - renames for remote fetching
* eng - disable verbose
* eng - always fetch verbose in CI
* eng - 💄
* eng - add checksums for node
* eng - report checksum matches
* eng - fix build
* eng - warn when not being able to check sum
* eng - support checksums for built in extensions
* eng - clear todo
* eng - add nodejs metadata to product.json
* 🆙 version
* 🆙 distro
* update distro
* eng - switch to checksum file
* cleanup alpine
* fix alpine
* fix bug
* eng - fetch all from remote
* eng - 💄
* eng - print checksums
* eng - fix missing import
* 🆙 distro
* undo version change
* Mangle exported functions
For #180461
This prototype tries to mangle exported functions, saving a further 440kb from the bundle size
* Fix missing call
* Also try mangling top level exported consts too
* Fixing errors
* Don't run on build files
* Skip a few more manglings and revert change to namespace
* Skip a few more monaco files
* Also mangle consts that shadow types
This increases savings up to 3325
* Also mangle exported classes
* Skip mangling more localization functions for now
* Opt out pfs
* Update build script
* Run find locations task in parallel
This should speed up compile
* Cleanup before close
* Limit workers to avoid hitting memory limit
* Limit pool size
* Skip one more mangling
* Exclude entrypoints from mangling
* Try to fix web build and clean up code
* Exempt a few more projects
* Exempt another file
* Also exempt html
* Skip mangling ext entrypoints
* Use prefix that can't be confused with rpc calls
* Fix max call stack error
* Switch prefixes
* Don't mangle ambient declarations
* Use correct way of checking modifier flags
* Workaround getCombinedModifierFlags not doing what I'd expect
Maybe needs the checker to be enabled too? Just check parent chain instead for now
* Clean up code and add logic showing how enum mangling could work
* Remove a few more skipMangles
Use entrypoints instead
* Fix entrypoint name
* build: don't apply cli 'patches' for merge check
This also needed modules installed. But with the new toml patches, the 'merge' will never fail outright, so there's no need to do a separate merge check for it imo
* reduce duplication in pipelines, cache node_modules
Currently the Cargo.toml patches are git patches, but these can break
easily when surrounding lines are changed. Instead this lets us make
"Cargo.patch.toml" which gets a structured merge.
It did not normalize to forward slashes, so the empty sourcemap was
created with a source called `foo\\bar.js`. Then the build process was
adding a new source `foo/bar.js` since it didn't see it already in the
sourcemap, but `foo\\bar.js` was later normalized. This normalized
version came first in the mapping, but didn't have any mapped locations,
so breakpoints never got set.