Skip to content

Commit 101c2a0

Browse files
committed
Fix tsc watch restarting when it shouldn't
It seems reaching into lib/vscode for the types caused tsc to establish watches that caused it to restart over and over while vscode was building. The strategy used here is to symlink it instead which is the same thing we do for the proxy agent.
1 parent cbcad39 commit 101c2a0

File tree

9 files changed

+145
-141
lines changed

9 files changed

+145
-141
lines changed

lib/vscode/src/vs/ipc.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../../typings/ipc.d.ts

lib/vscode/src/vs/server/browser/client.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as path from 'vs/base/common/path';
22
import { URI } from 'vs/base/common/uri';
3+
import { Options } from 'vs/ipc';
34
import { localize } from 'vs/nls';
45
import { Extensions, IConfigurationRegistry } from 'vs/platform/configuration/common/configurationRegistry';
56
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
@@ -11,7 +12,6 @@ import { Registry } from 'vs/platform/registry/common/platform';
1112
import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage';
1213
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
1314
import { TelemetryChannelClient } from 'vs/server/common/telemetry';
14-
import { Options } from 'vs/server/ipc.d';
1515
import 'vs/workbench/contrib/localizations/browser/localizations.contribution';
1616
import { LocalizationsService } from 'vs/workbench/services/localizations/electron-sandbox/localizationsService';
1717
import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService';

lib/vscode/src/vs/server/entry.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { field } from '@coder/logger';
22
import { setUnexpectedErrorHandler } from 'vs/base/common/errors';
3-
import { CodeServerMessage, VscodeMessage } from 'vs/server/ipc';
3+
import * as proxyAgent from 'vs/base/node/proxy_agent';
4+
import { CodeServerMessage, VscodeMessage } from 'vs/ipc';
45
import { logger } from 'vs/server/node/logger';
56
import { enableCustomMarketplace } from 'vs/server/node/marketplace';
67
import { Vscode } from 'vs/server/node/server';
7-
import * as proxyAgent from 'vs/base/node/proxy_agent';
88

99
setUnexpectedErrorHandler((error) => logger.warn(error instanceof Error ? error.message : error));
1010
enableCustomMarketplace();

lib/vscode/src/vs/server/ipc.d.ts

-132
This file was deleted.

lib/vscode/src/vs/server/node/server.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { field } from '@coder/logger';
2-
import { release } from 'os';
32
import * as fs from 'fs';
43
import * as net from 'net';
4+
import { release } from 'os';
55
import * as path from 'path';
66
import { Emitter } from 'vs/base/common/event';
77
import { Schemas } from 'vs/base/common/network';
@@ -10,6 +10,7 @@ import { getMachineId } from 'vs/base/node/id';
1010
import { ClientConnectionEvent, IPCServer, IServerChannel, ProxyChannel } from 'vs/base/parts/ipc/common/ipc';
1111
import { LogsDataCleaner } from 'vs/code/electron-browser/sharedProcess/contrib/logsDataCleaner';
1212
import { main } from 'vs/code/node/cliProcessMain';
13+
import { Query, VscodeOptions, WorkbenchOptions } from 'vs/ipc';
1314
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
1415
import { ConfigurationService } from 'vs/platform/configuration/common/configurationService';
1516
import { ExtensionHostDebugBroadcastChannel } from 'vs/platform/debug/common/extensionHostDebugIpc';
@@ -40,14 +41,13 @@ import { IRequestService } from 'vs/platform/request/common/request';
4041
import { RequestChannel } from 'vs/platform/request/common/requestIpc';
4142
import { RequestService } from 'vs/platform/request/node/requestService';
4243
import ErrorTelemetry from 'vs/platform/telemetry/browser/errorTelemetry';
44+
import { resolveCommonProperties } from 'vs/platform/telemetry/common/commonProperties';
4345
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
4446
import { TelemetryLogAppender } from 'vs/platform/telemetry/common/telemetryLogAppender';
4547
import { TelemetryService } from 'vs/platform/telemetry/common/telemetryService';
4648
import { combinedAppender, NullTelemetryService } from 'vs/platform/telemetry/common/telemetryUtils';
4749
import { AppInsightsAppender } from 'vs/platform/telemetry/node/appInsightsAppender';
48-
import { resolveCommonProperties } from 'vs/platform/telemetry/common/commonProperties';
4950
import { TelemetryChannel } from 'vs/server/common/telemetry';
50-
import { Query, VscodeOptions, WorkbenchOptions } from 'vs/server/ipc';
5151
import { ExtensionEnvironmentChannel, FileProviderChannel, TerminalProviderChannel } from 'vs/server/node/channel';
5252
import { Connection, ExtensionHostConnection, ManagementConnection } from 'vs/server/node/connection';
5353
import { TelemetryClient } from 'vs/server/node/insights';

src/node/cli.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { promises as fs } from "fs"
33
import yaml from "js-yaml"
44
import * as os from "os"
55
import * as path from "path"
6-
import { Args as VsArgs } from "../../lib/vscode/src/vs/server/ipc"
6+
import { Args as VsArgs } from "../../typings/ipc"
77
import { canConnect, generateCertificate, generatePassword, humanPath, paths } from "./util"
88

99
export enum AuthType {

src/node/entry.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { field, logger } from "@coder/logger"
22
import * as cp from "child_process"
33
import http from "http"
44
import * as path from "path"
5-
import { CliMessage, OpenCommandPipeArgs } from "../../lib/vscode/src/vs/server/ipc"
5+
import { CliMessage, OpenCommandPipeArgs } from "../../typings/ipc"
66
import { plural } from "../common/util"
77
import { createApp, ensureAddress } from "./app"
88
import {

src/node/vscode.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { logger } from "@coder/logger"
22
import * as cp from "child_process"
33
import * as net from "net"
44
import * as path from "path"
5-
import * as ipc from "../../lib/vscode/src/vs/server/ipc"
5+
import * as ipc from "../../typings/ipc"
66
import { arrayify, generateUuid } from "../common/util"
77
import { rootPath } from "./constants"
88
import { settings } from "./settings"

typings/ipc.d.ts

+135
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
/**
2+
* External interfaces for integration into code-server over IPC.
3+
* This file exists in two locations:
4+
* - typings/ipc.d.ts
5+
* - lib/vscode/src/typings/ipc.d.ts
6+
* The second is a symlink to the first.
7+
*/
8+
export interface Options {
9+
base: string
10+
disableTelemetry: boolean
11+
disableUpdateCheck: boolean
12+
}
13+
14+
export interface InitMessage {
15+
type: "init"
16+
id: string
17+
options: VscodeOptions
18+
}
19+
20+
export type Query = { [key: string]: string | string[] | undefined | Query | Query[] }
21+
22+
export interface SocketMessage {
23+
type: "socket"
24+
query: Query
25+
permessageDeflate: boolean
26+
}
27+
28+
export interface CliMessage {
29+
type: "cli"
30+
args: Args
31+
}
32+
33+
export interface OpenCommandPipeArgs {
34+
type: "open"
35+
fileURIs?: string[]
36+
folderURIs: string[]
37+
forceNewWindow?: boolean
38+
diffMode?: boolean
39+
addMode?: boolean
40+
gotoLineMode?: boolean
41+
forceReuseWindow?: boolean
42+
waitMarkerFilePath?: string
43+
}
44+
45+
export type CodeServerMessage = InitMessage | SocketMessage | CliMessage
46+
47+
export interface ReadyMessage {
48+
type: "ready"
49+
}
50+
51+
export interface OptionsMessage {
52+
id: string
53+
type: "options"
54+
options: WorkbenchOptions
55+
}
56+
57+
export type VscodeMessage = ReadyMessage | OptionsMessage
58+
59+
export interface StartPath {
60+
url: string
61+
workspace: boolean
62+
}
63+
64+
export interface Args {
65+
"user-data-dir"?: string
66+
67+
"enable-proposed-api"?: string[]
68+
"extensions-dir"?: string
69+
"builtin-extensions-dir"?: string
70+
"extra-extensions-dir"?: string[]
71+
"extra-builtin-extensions-dir"?: string[]
72+
"ignore-last-opened"?: boolean
73+
74+
locale?: string
75+
76+
log?: string
77+
verbose?: boolean
78+
79+
_: string[]
80+
}
81+
82+
export interface VscodeOptions {
83+
readonly args: Args
84+
readonly remoteAuthority: string
85+
readonly startPath?: StartPath
86+
}
87+
88+
export interface VscodeOptionsMessage extends VscodeOptions {
89+
readonly id: string
90+
}
91+
92+
export interface UriComponents {
93+
readonly scheme: string
94+
readonly authority: string
95+
readonly path: string
96+
readonly query: string
97+
readonly fragment: string
98+
}
99+
100+
export interface NLSConfiguration {
101+
locale: string
102+
availableLanguages: {
103+
[key: string]: string
104+
}
105+
pseudo?: boolean
106+
_languagePackSupport?: boolean
107+
}
108+
109+
export interface WorkbenchOptions {
110+
readonly workbenchWebConfiguration: {
111+
readonly remoteAuthority?: string
112+
readonly folderUri?: UriComponents
113+
readonly workspaceUri?: UriComponents
114+
readonly logLevel?: number
115+
readonly workspaceProvider?: {
116+
payload: [["userDataPath", string], ["enableProposedApi", string]]
117+
}
118+
}
119+
readonly remoteUserDataUri: UriComponents
120+
readonly productConfiguration: {
121+
codeServerVersion?: string
122+
readonly extensionsGallery?: {
123+
readonly serviceUrl: string
124+
readonly itemUrl: string
125+
readonly controlUrl: string
126+
readonly recommendationsUrl: string
127+
}
128+
}
129+
readonly nlsConfiguration: NLSConfiguration
130+
readonly commit: string
131+
}
132+
133+
export interface WorkbenchOptionsMessage {
134+
id: string
135+
}

0 commit comments

Comments
 (0)