* Experiment with adding ata using `@types` packages shipped in an extension
* Use own file system instead of `https`
* JS/TS type support on web
* Tsconfig needs esModuleInterop not module:nodenext
We actually want webpack to emit commonjs, but need to write ES default
imports to use node-maintainer
* fix package.json indentation
* Adding setting to disable web type acquisition
* Fix merge of yarn lock
* Fixing merge errors
* Fixing errors
* Pick up package externally
* Fixing conflicts
* Bump version
---------
Co-authored-by: Kat Marchán <kzm@zkat.tech>
Co-authored-by: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com>
* eng: add support for snapshot tests
This adds Jest-like support for snapshot testing.
Developers can do something like:
```js
await assertSnapshot(myComplexObject)
```
The first time this is run, the snapshot expectation file is written
to a `__snapshots__` directory beside the test file. Subsequent runs
will compare the object to the snapshot, and fail if it doesn't match.
You can see an example of this in the test for snapshots themselves!
After a successful run, any unused snapshots are cleaned up. On a failed
run, a gitignored `.actual` snapshot file is created beside the
snapshot for easy processing and inspection.
Shortly I will do some integration with the selfhost test extension to
allow developers to easily update snapshots from the vscode UI.
For #189680
cc @ulugbekna @hediet
* fix async stacktraces getting clobbered
* random fixes
* comment out leak detector, for now
* add option to snapshot file extension
- Remove the `prepare` script entirely
- Variables are now populated from the product.json during build. Most
variables are mapped automatically, with some special handling in a
few cases. `build.rs` is now much more self-contained.
- Look for the `product.overrides.json` for vscode developers instead of
looking for a peer `vscode-distro` folder
Fixes#178691
* forwarding: add built-in tunnel forwarding extension
- Support public/private ports, which accounts for most of the work in
the CLI. Previously ports were only privat.
- Make the extension built-in. Ported from the remote-containers
extension with some tweaks for privacy and durability.
- This also removes the opt-in flag, by not reimplementing it 😛
Fixes https://github.com/microsoft/vscode/issues/189677
Fixes https://github.com/microsoft/vscode/issues/189678
* fixup! comments
---------
Co-authored-by: Raymond Zhao <7199958+rzhao271@users.noreply.github.com>
* work in progress make it scrollabel
* adding changes
* adding changes
* cleaning the code
* cleaning the code
* not usnig a vertical scrollbar
* scanning the dom node only on mouse over
* requires tweaking
* now the scrollbar can be used alongside the hovering on the sticky scroll
* setting handle mouse wheel to false in order not to scroll vertically inside of the scrollable element with wheel
* separated the line numbers and the actual line in order to be able to just move one of the scrollbars, the editor one and the line numbers remain the same
* cleanin the code
* we are able to make the full line appear
* the width is correctly updated on the width layout change of the editor
* only rendering when top scroll changed, not when horizontal scroll changed
* using the correct editor layout info, not the one saved in the constructor
* setting the linehtml node style width to 100% so that the whole line is covered, but still not covered after the end of the viewport
* changing the total width after rendering
* placing the color into sticky line number
* removing the direct setting of the colors
* adding the background color inside of sticky line number
* using the view zone in order to increase the scroll width of the editor
* placing the view zone at the very bottom of the file
* limiting the scrollable dom height to the height of the sticky widget lines node inside, so now the sticky widget works as before
* cleaning the code
* cleaning the code
* removing useless variable
* adding 100 pixels in order to see the end of the line
* removing the console logs
* putting back the check to what it was
* using the same string convention
* adding inheritance properties in order for the background color to be propagated
* cleaning the code
* cleaning the code
* using or instead of and in the zone accessos
* cleaning the code
* cleaning the code
* cleaning the CSS
* chaning the order of the CSS properties
* cleaning the code
* Improve rendering
* No need to resize the widget from the outside, the widget resizes itself
* placing the focus method inside of the sticky widget
* céeanig the code
* Minor tweaks
* Also update widget width when the scroll width changes
* Allow overlay widgets to pass in a minimum content width
* Also update the min content width if the position doesn't change
* defining method for mi content width in px
* updating the minimum content width
* adding setting in order to be able to control whether sticky scroll scrolling should be influenced by editor horizontal scrolling
* removing redundant new line
* Fix typo
* Extract code in a function
---------
Co-authored-by: Alexandru Dima <alexdima@microsoft.com>
* Remove vscode-encrypt from node.js side
Now that we've had a version of the product that has done the migration logic, we no longer need vscode-encrypt on the node side.
This removes all references of vscode-encrypt from the node side. I will also remove it from the package.jsons in distro.
* remove machineId
* combinging the setting of max dimensions on the container and on the contents dom node
* adding the css variable in order to be able to specify the max width of the content inside
* cleaning the code
* changing the name of the variable
* cleaning the code
* placing the hover max width variable into the others category of vscode-known-variables json file
* defining a fall back value of 500 pixels
* inlinging the code
---------
Co-authored-by: Alexandru Dima <alexdima@microsoft.com>
* ci: use container only in yarn step
* chore: invalidate cache
* chore: install missing deps for packaging
* chore: remove duplicate package installations
* fix: oss build
* chore: separate deb and rpm package preparation
* chore: mount out folder when packaging
* ci: switch to official docker image
this fixes a rare issue in which the second Generate SBOM
task will fail, so a second attempt at running the pipeline will
fail when publishing the first Publish SBOM task, since it
would already have been published
* Drop support for windows versions prior to windows
10
* Prepare for windows 8 eol
* fix typo
* Revert "Prepare for windows 8 eol"
This reverts commit f65a7107280da4328014d4964ba432f3d7462de0.
* 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.
* Add settings for fixed-width tabs
This is meant at least partially to address #40290 and
is a continuation of the unfinished work from #40750.
* Only apply fixed width when the setting is on
* Implement chrome-like tab width behavior
Tabs shrink uniformly (down to a limit) but stay fixed-width
when the mouse is over the tab bar.
* Rename width setting to max width
* Make the ifs more readable
* Have event handlers only if the option is set
* 🎨
* Handle sizing artifacts present with wrapping tabs
To achieve this, it's best to remove the transition delay.
* Rename setting to apply only for fixed-sized tabs
* Set default fixed max tab width to 160px
* Minor code tweaks from review comments
* formatting
Co-authored-by: Benjamin Pasero <benjamin.pasero@gmail.com>
* Use disposable listeners
* Remove redundant check for last-in-row
* Apply fade gradient from shrink tabSizing to fixed
* Trying to make the code cleaner and understandable
* Remove transition
On advice of @bpasero, removed transition because
the editor doesn't really use transition that much.
* some cleanup
* fix typo
* Simplify workaround for the overflow issue
* 💄
* 💄
* Let the tabs fix their width before closing the editor
* 💄
---------
Co-authored-by: Benjamin Pasero <benjamin.pasero@microsoft.com>
Co-authored-by: Benjamin Pasero <benjamin.pasero@gmail.com>
* innosetup to start/stop tunnel service
* better messages for tunnel still running
* fix error
* more logs
* add '/log'
* update
* fix
* update
* add kill & timeout wait
* stop service in PrepareToInstall
* non-background: check for tunnel mutex when wizard starts
* polish tunnel mutex names, prompt if tunnel is still running
* cli: store cli in user data dir, separate per quality
Fixes#181017
On first run, the `~/.vscode-cli` will be migrated inside the user data dir of the currently running quality.
* use create_dir_all instead
* clippy fixes
* unc - adopt setting and handling of allow list (#5)
* unc - adopt setting and handling of allow list
* unc - set allow list on server too
* unc - pick our patched node.js for now
* bump electron
* unc - ignore sync is not needed with machine scope
* unc - use process set directly
* 🆙 22.5.1
* fix compile
---------
Co-authored-by: Benjamin Pasero <Benjamin.Pasero@microsoft.com>
* Use custom node-gyp
* Avoid using relative cd
* Remove ia32 for Linux
* Bump gulp-atom-electron; unblocks downloading PDBs
* Add native-is-elevated to the scan
* Remove uses of `X-UA-Compatible` meta tag
We no longer support IE
Mainly removing this from the webview html but figured we should remove the other references to it as well
* Update tests
* Fix test
* Simplify distro
Also a ton of drive-by fixing around builds:
- simplified many oneliners
- fixed missing custom npm registry call setups
- remove unnecessary and duplicate work during builds
- many many fixes