feat: apply patch after setting up subtree

This commit is contained in:
Joe Previte
2020-12-15 15:53:52 -07:00
parent 41bee49d07
commit 51a2a2ad2d
84 changed files with 3360 additions and 191 deletions

View File

@@ -0,0 +1,47 @@
import { ReadWriteConnection } from '@coder/node-browser';
import { Event } from 'vs/base/common/event';
import { IChannel, IServerChannel } from 'vs/base/parts/ipc/common/ipc';
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
export const INodeProxyService = createDecorator<INodeProxyService>('nodeProxyService');
export interface INodeProxyService extends ReadWriteConnection {
_serviceBrand: any;
send(message: string): void;
onMessage: Event<string>;
onUp: Event<void>;
onClose: Event<void>;
onDown: Event<void>;
}
export class NodeProxyChannel implements IServerChannel {
constructor(private service: INodeProxyService) {}
listen(_: unknown, event: string): Event<any> {
switch (event) {
case 'onMessage': return this.service.onMessage;
}
throw new Error(`Invalid listen ${event}`);
}
async call(_: unknown, command: string, args?: any): Promise<any> {
switch (command) {
case 'send': return this.service.send(args[0]);
}
throw new Error(`Invalid call ${command}`);
}
}
export class NodeProxyChannelClient {
_serviceBrand: any;
public readonly onMessage: Event<string>;
constructor(private readonly channel: IChannel) {
this.onMessage = this.channel.listen<string>('onMessage');
}
public send(data: string): void {
this.channel.call('send', [data]);
}
}

View File

@@ -0,0 +1,65 @@
import { ITelemetryData } from 'vs/base/common/actions';
import { Event } from 'vs/base/common/event';
import { IChannel, IServerChannel } from 'vs/base/parts/ipc/common/ipc';
import { ClassifiedEvent, GDPRClassification, StrictPropertyCheck } from 'vs/platform/telemetry/common/gdprTypings';
import { ITelemetryInfo, ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
export class TelemetryChannel implements IServerChannel {
constructor(private service: ITelemetryService) {}
listen(_: unknown, event: string): Event<any> {
throw new Error(`Invalid listen ${event}`);
}
call(_: unknown, command: string, args?: any): Promise<any> {
switch (command) {
case 'publicLog': return this.service.publicLog(args[0], args[1], args[2]);
case 'publicLog2': return this.service.publicLog2(args[0], args[1], args[2]);
case 'publicLogError': return this.service.publicLogError(args[0], args[1]);
case 'publicLogError2': return this.service.publicLogError2(args[0], args[1]);
case 'setEnabled': return Promise.resolve(this.service.setEnabled(args[0]));
case 'getTelemetryInfo': return this.service.getTelemetryInfo();
case 'setExperimentProperty': return Promise.resolve(this.service.setExperimentProperty(args[0], args[1]));
}
throw new Error(`Invalid call ${command}`);
}
}
export class TelemetryChannelClient implements ITelemetryService {
_serviceBrand: any;
// These don't matter; telemetry is sent to the Node side which decides
// whether to send the telemetry event.
public isOptedIn = true;
public sendErrorTelemetry = true;
constructor(private readonly channel: IChannel) {}
public publicLog(eventName: string, data?: ITelemetryData, anonymizeFilePaths?: boolean): Promise<void> {
return this.channel.call('publicLog', [eventName, data, anonymizeFilePaths]);
}
public publicLog2<E extends ClassifiedEvent<T> = never, T extends GDPRClassification<T> = never>(eventName: string, data?: StrictPropertyCheck<T, E>, anonymizeFilePaths?: boolean): Promise<void> {
return this.channel.call('publicLog2', [eventName, data, anonymizeFilePaths]);
}
public publicLogError(errorEventName: string, data?: ITelemetryData): Promise<void> {
return this.channel.call('publicLogError', [errorEventName, data]);
}
public publicLogError2<E extends ClassifiedEvent<T> = never, T extends GDPRClassification<T> = never>(eventName: string, data?: StrictPropertyCheck<T, E>): Promise<void> {
return this.channel.call('publicLogError2', [eventName, data]);
}
public setEnabled(value: boolean): void {
this.channel.call('setEnable', [value]);
}
public getTelemetryInfo(): Promise<ITelemetryInfo> {
return this.channel.call('getTelemetryInfo');
}
public setExperimentProperty(name: string, value: string): void {
this.channel.call('setExperimentProperty', [name, value]);
}
}