mirror of
https://github.com/VSCodium/vscodium.git
synced 2026-04-11 16:27:18 +10:00
fix: don't try to load missing vsda library (#2613)
This commit is contained in:
128
patches/disable-missing-vsda.patch
Normal file
128
patches/disable-missing-vsda.patch
Normal file
@@ -0,0 +1,128 @@
|
||||
diff --git a/src/vs/platform/sign/browser/signService.ts b/src/vs/platform/sign/browser/signService.ts
|
||||
index ec1e11b..8303040 100644
|
||||
--- a/src/vs/platform/sign/browser/signService.ts
|
||||
+++ b/src/vs/platform/sign/browser/signService.ts
|
||||
@@ -5,6 +5,2 @@
|
||||
|
||||
-import { importAMDNodeModule, resolveAmdNodeModulePath } from '../../../amdX.js';
|
||||
-import { WindowIntervalTimer } from '../../../base/browser/dom.js';
|
||||
-import { mainWindow } from '../../../base/browser/window.js';
|
||||
-import { memoize } from '../../../base/common/decorators.js';
|
||||
import { IProductService } from '../../product/common/productService.js';
|
||||
@@ -13,30 +9,4 @@ import { ISignService } from '../common/sign.js';
|
||||
|
||||
-declare module vsdaWeb {
|
||||
- export function sign(salted_message: string): string;
|
||||
-
|
||||
- // eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
- export class validator {
|
||||
- free(): void;
|
||||
- constructor();
|
||||
- createNewMessage(original: string): string;
|
||||
- validate(signed_message: string): 'ok' | 'error';
|
||||
- }
|
||||
-
|
||||
- export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
|
||||
- export function init(module_or_path?: InitInput | Promise<InitInput>): Promise<unknown>;
|
||||
-}
|
||||
-
|
||||
-// Initialized if/when vsda is loaded
|
||||
-declare const vsda_web: {
|
||||
- default: typeof vsdaWeb.init;
|
||||
- sign: typeof vsdaWeb.sign;
|
||||
- validator: typeof vsdaWeb.validator;
|
||||
-};
|
||||
-
|
||||
-const KEY_SIZE = 32;
|
||||
-const IV_SIZE = 16;
|
||||
-const STEP_SIZE = KEY_SIZE + IV_SIZE;
|
||||
-
|
||||
export class SignService extends AbstractSignService implements ISignService {
|
||||
- constructor(@IProductService private readonly productService: IProductService) {
|
||||
+ constructor(@IProductService _productService: IProductService) {
|
||||
super();
|
||||
@@ -44,53 +14,7 @@ export class SignService extends AbstractSignService implements ISignService {
|
||||
protected override getValidator(): Promise<IVsdaValidator> {
|
||||
- return this.vsda().then(vsda => {
|
||||
- const v = new vsda.validator();
|
||||
- return {
|
||||
- createNewMessage: arg => v.createNewMessage(arg),
|
||||
- validate: arg => v.validate(arg),
|
||||
- dispose: () => v.free(),
|
||||
- };
|
||||
- });
|
||||
- }
|
||||
-
|
||||
- protected override signValue(arg: string): Promise<string> {
|
||||
- return this.vsda().then(vsda => vsda.sign(arg));
|
||||
- }
|
||||
-
|
||||
- @memoize
|
||||
- private async vsda(): Promise<typeof vsda_web> {
|
||||
- const checkInterval = new WindowIntervalTimer();
|
||||
- let [wasm] = await Promise.all([
|
||||
- this.getWasmBytes(),
|
||||
- new Promise<void>((resolve, reject) => {
|
||||
- importAMDNodeModule('vsda', 'rust/web/vsda.js').then(() => resolve(), reject);
|
||||
-
|
||||
- // todo@connor4312: there seems to be a bug(?) in vscode-loader with
|
||||
- // require() not resolving in web once the script loads, so check manually
|
||||
- checkInterval.cancelAndSet(() => {
|
||||
- if (typeof vsda_web !== 'undefined') {
|
||||
- resolve();
|
||||
- }
|
||||
- }, 50, mainWindow);
|
||||
- }).finally(() => checkInterval.dispose()),
|
||||
- ]);
|
||||
-
|
||||
- const keyBytes = new TextEncoder().encode(this.productService.serverLicense?.join('\n') || '');
|
||||
- for (let i = 0; i + STEP_SIZE < keyBytes.length; i += STEP_SIZE) {
|
||||
- const key = await crypto.subtle.importKey('raw', keyBytes.slice(i + IV_SIZE, i + IV_SIZE + KEY_SIZE), { name: 'AES-CBC' }, false, ['decrypt']);
|
||||
- wasm = await crypto.subtle.decrypt({ name: 'AES-CBC', iv: keyBytes.slice(i, i + IV_SIZE) }, key, wasm);
|
||||
- }
|
||||
-
|
||||
- await vsda_web.default(wasm);
|
||||
-
|
||||
- return vsda_web;
|
||||
+ throw new Error('error loading vsda');
|
||||
}
|
||||
|
||||
- private async getWasmBytes(): Promise<ArrayBuffer> {
|
||||
- const url = resolveAmdNodeModulePath('vsda', 'rust/web/vsda_bg.wasm');
|
||||
- const response = await fetch(url);
|
||||
- if (!response.ok) {
|
||||
- throw new Error('error loading vsda');
|
||||
- }
|
||||
-
|
||||
- return response.arrayBuffer();
|
||||
+ protected override signValue(_arg: string): Promise<string> {
|
||||
+ throw new Error('error loading vsda');
|
||||
}
|
||||
diff --git a/src/vs/server/node/remoteExtensionHostAgentServer.ts b/src/vs/server/node/remoteExtensionHostAgentServer.ts
|
||||
index e7949d3..2a553cc 100644
|
||||
--- a/src/vs/server/node/remoteExtensionHostAgentServer.ts
|
||||
+++ b/src/vs/server/node/remoteExtensionHostAgentServer.ts
|
||||
@@ -8,3 +8,2 @@ import type * as http from 'http';
|
||||
import * as net from 'net';
|
||||
-import { createRequire } from 'node:module';
|
||||
import { performance } from 'perf_hooks';
|
||||
@@ -41,3 +40,2 @@ import { setupServerServices, SocketServer } from './serverServices.js';
|
||||
import { CacheControl, serveError, serveFile, WebClientServer } from './webClientServer.js';
|
||||
-const require = createRequire(import.meta.url);
|
||||
|
||||
@@ -734,14 +732,3 @@ export async function createServer(address: string | net.AddressInfo | null, arg
|
||||
|
||||
- const vsdaMod = instantiationService.invokeFunction((accessor) => {
|
||||
- const logService = accessor.get(ILogService);
|
||||
- const hasVSDA = fs.existsSync(join(FileAccess.asFileUri('').fsPath, '../node_modules/vsda'));
|
||||
- if (hasVSDA) {
|
||||
- try {
|
||||
- return require('vsda');
|
||||
- } catch (err) {
|
||||
- logService.error(err);
|
||||
- }
|
||||
- }
|
||||
- return null;
|
||||
- });
|
||||
+ const vsdaMod = instantiationService.invokeFunction(() => null);
|
||||
|
||||
Reference in New Issue
Block a user