mirror of
https://github.com/coder/code-server.git
synced 2024-11-22 02:44:44 +03:00
fc6064dcd3
* Update Code to 1.94.2 * Convert from yarn to npm This is to match VS Code. We were already partially using npm for the releases so this is some nice alignment. * Update caniuse-lite This was complaining on every unit test. * Update eslint I was having a bunch of dependency conflicts and eslint seemed to be the culprit so I just removed it and set it up again, since it seems things have changed quite a bit. * Update test dependencies I was getting oom when running the unit tests...updating seems to work. * Remove package.json `scripts` property in release The new pre-install script was being included, which is dev-only. This was always the intent; did not realize jq's merge was recursive. * Remove jest and devDependencies in release as well * Update test extension dependencies This appears to be conflicting with the root dependencies. * Fix playwright exec npm does not let you run binaries like yarn does, as far as I know. * Fix import of server-main.js * Fix several tests by waiting for selectors
37 lines
2.1 KiB
Diff
37 lines
2.1 KiB
Diff
Prevent state collisions
|
|
|
|
Previously if you opened different workspaces that had the same filesystem path
|
|
(for example if you have /home/coder on two different machines that are both
|
|
accessed through the same host) they would conflict with each other. This
|
|
ensures that different browser paths will be unique (for example /workspace1 and
|
|
/workspace2).
|
|
|
|
The easiest way to test is to open files in the same workspace using both / and
|
|
/vscode and make sure they are not interacting with each other.
|
|
|
|
Index: code-server/lib/vscode/src/vs/workbench/services/storage/browser/storageService.ts
|
|
===================================================================
|
|
--- code-server.orig/lib/vscode/src/vs/workbench/services/storage/browser/storageService.ts
|
|
+++ code-server/lib/vscode/src/vs/workbench/services/storage/browser/storageService.ts
|
|
@@ -18,6 +18,7 @@ import { AbstractStorageService, isProfi
|
|
import { isUserDataProfile, IUserDataProfile } from '../../../../platform/userDataProfile/common/userDataProfile.js';
|
|
import { IAnyWorkspaceIdentifier } from '../../../../platform/workspace/common/workspace.js';
|
|
import { IUserDataProfileService } from '../../userDataProfile/common/userDataProfile.js';
|
|
+import { hash } from '../../../../base/common/hash.js';
|
|
|
|
export class BrowserStorageService extends AbstractStorageService {
|
|
|
|
@@ -298,7 +299,11 @@ export class IndexedDBStorageDatabase ex
|
|
}
|
|
|
|
static async createWorkspaceStorage(workspaceId: string, logService: ILogService): Promise<IIndexedDBStorageDatabase> {
|
|
- return IndexedDBStorageDatabase.create({ id: workspaceId }, logService);
|
|
+ // Add a unique ID based on the current path for per-workspace databases.
|
|
+ // This prevents workspaces on different machines that share the same domain
|
|
+ // and file path from colliding (since it does not appear IndexedDB can be
|
|
+ // scoped to a path) as long as they are hosted on different paths.
|
|
+ return IndexedDBStorageDatabase.create({ id: workspaceId + '-' + hash(location.pathname.toString().replace(/\/$/, "")).toString(16) }, logService);
|
|
}
|
|
|
|
static async create(options: IndexedDBStorageDatabaseOptions, logService: ILogService): Promise<IIndexedDBStorageDatabase> {
|