@theia/dev-container 1.76.0-next.7 → 1.77.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/electron-browser/container-connection-contribution.d.ts +2 -0
- package/lib/electron-browser/container-connection-contribution.d.ts.map +1 -1
- package/lib/electron-browser/container-connection-contribution.js +12 -1
- package/lib/electron-browser/container-connection-contribution.js.map +1 -1
- package/lib/electron-browser/container-output-provider.d.ts +5 -0
- package/lib/electron-browser/container-output-provider.d.ts.map +1 -1
- package/lib/electron-browser/container-output-provider.js +11 -0
- package/lib/electron-browser/container-output-provider.js.map +1 -1
- package/lib/electron-browser/dev-container-attach-screen.d.ts +52 -0
- package/lib/electron-browser/dev-container-attach-screen.d.ts.map +1 -0
- package/lib/electron-browser/dev-container-attach-screen.js +142 -0
- package/lib/electron-browser/dev-container-attach-screen.js.map +1 -0
- package/lib/electron-browser/dev-container-attach-screen.spec.d.ts +2 -0
- package/lib/electron-browser/dev-container-attach-screen.spec.d.ts.map +1 -0
- package/lib/electron-browser/dev-container-attach-screen.spec.js +51 -0
- package/lib/electron-browser/dev-container-attach-screen.spec.js.map +1 -0
- package/lib/electron-browser/dev-container-frontend-module.d.ts +1 -0
- package/lib/electron-browser/dev-container-frontend-module.d.ts.map +1 -1
- package/lib/electron-browser/dev-container-frontend-module.js +3 -0
- package/lib/electron-browser/dev-container-frontend-module.js.map +1 -1
- package/lib/electron-browser/dev-container-startup-contribution.d.ts +31 -1
- package/lib/electron-browser/dev-container-startup-contribution.d.ts.map +1 -1
- package/lib/electron-browser/dev-container-startup-contribution.js +114 -9
- package/lib/electron-browser/dev-container-startup-contribution.js.map +1 -1
- package/lib/electron-browser/dev-container-startup-contribution.spec.d.ts +2 -0
- package/lib/electron-browser/dev-container-startup-contribution.spec.d.ts.map +1 -0
- package/lib/electron-browser/dev-container-startup-contribution.spec.js +199 -0
- package/lib/electron-browser/dev-container-startup-contribution.spec.js.map +1 -0
- package/lib/electron-common/container-output-provider.d.ts +6 -0
- package/lib/electron-common/container-output-provider.d.ts.map +1 -1
- package/lib/electron-common/remote-container-connection-provider.d.ts +10 -0
- package/lib/electron-common/remote-container-connection-provider.d.ts.map +1 -1
- package/lib/electron-main/dev-container-claim-contribution.d.ts +13 -0
- package/lib/electron-main/dev-container-claim-contribution.d.ts.map +1 -0
- package/lib/electron-main/dev-container-claim-contribution.js +38 -0
- package/lib/electron-main/dev-container-claim-contribution.js.map +1 -0
- package/lib/electron-main/dev-container-electron-main-module.d.ts +4 -0
- package/lib/electron-main/dev-container-electron-main-module.d.ts.map +1 -0
- package/lib/electron-main/dev-container-electron-main-module.js +25 -0
- package/lib/electron-main/dev-container-electron-main-module.js.map +1 -0
- package/lib/electron-node/remote-container-connection-provider.d.ts +1 -1
- package/lib/electron-node/remote-container-connection-provider.d.ts.map +1 -1
- package/lib/electron-node/remote-container-connection-provider.js +10 -5
- package/lib/electron-node/remote-container-connection-provider.js.map +1 -1
- package/package.json +9 -8
- package/src/electron-browser/container-connection-contribution.ts +11 -1
- package/src/electron-browser/container-output-provider.ts +11 -0
- package/src/electron-browser/dev-container-attach-screen.spec.ts +60 -0
- package/src/electron-browser/dev-container-attach-screen.tsx +180 -0
- package/src/electron-browser/dev-container-frontend-module.ts +3 -0
- package/src/electron-browser/dev-container-startup-contribution.spec.ts +245 -0
- package/src/electron-browser/dev-container-startup-contribution.ts +113 -15
- package/src/electron-browser/style/dev-container-attach-screen.css +75 -0
- package/src/electron-common/container-output-provider.ts +6 -0
- package/src/electron-common/remote-container-connection-provider.ts +10 -0
- package/src/electron-main/dev-container-claim-contribution.ts +34 -0
- package/src/electron-main/dev-container-electron-main-module.ts +24 -0
- package/src/electron-node/remote-container-connection-provider.ts +10 -5
|
@@ -21,22 +21,65 @@ const inversify_1 = require("@theia/core/shared/inversify");
|
|
|
21
21
|
const remote_container_connection_provider_1 = require("../electron-common/remote-container-connection-provider");
|
|
22
22
|
const remote_registry_contribution_1 = require("@theia/remote/lib/electron-browser/remote-registry-contribution");
|
|
23
23
|
const core_1 = require("@theia/core");
|
|
24
|
+
const launch_arguments_1 = require("@theia/core/lib/common/launch-arguments");
|
|
25
|
+
const window_launch_args_1 = require("@theia/core/lib/browser/window/window-launch-args");
|
|
24
26
|
const remote_preferences_1 = require("@theia/remote/lib/electron-common/remote-preferences");
|
|
27
|
+
const container_output_provider_1 = require("./container-output-provider");
|
|
28
|
+
const dev_container_attach_screen_1 = require("./dev-container-attach-screen");
|
|
29
|
+
const remote_cli_args_collector_1 = require("@theia/remote/lib/electron-browser/remote-cli-args-collector");
|
|
25
30
|
let DevContainerStartupContribution = class DevContainerStartupContribution extends remote_registry_contribution_1.AbstractRemoteRegistryContribution {
|
|
26
31
|
registerRemoteCommands() {
|
|
27
32
|
// no commands to register — this contribution only handles startup
|
|
28
33
|
}
|
|
29
34
|
onStart() {
|
|
35
|
+
// For a CLI-driven attach the window is opened empty and reloads into the container once the
|
|
36
|
+
// attach completes. Show the "attaching" screen from the first paint so the user never
|
|
37
|
+
// interacts with the transient local window, before the (possibly RPC-bound) container id is
|
|
38
|
+
// even resolved.
|
|
39
|
+
if (this.isAttachPending()) {
|
|
40
|
+
this.attachScreen.showAttaching();
|
|
41
|
+
}
|
|
30
42
|
this.handleStartupAttach();
|
|
31
43
|
}
|
|
32
44
|
async handleStartupAttach() {
|
|
45
|
+
let args;
|
|
33
46
|
try {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
47
|
+
args = await this.resolveAttachArgs();
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
// A rejection here (e.g. failing to redeem the launch args or reach the backend) must not
|
|
51
|
+
// escape as an unhandled rejection and leave the attach screen stuck on "Preparing to attach".
|
|
52
|
+
this.logger.error('CLI: Failed to resolve attach arguments during startup:', e);
|
|
53
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
54
|
+
if (this.isAttachPending()) {
|
|
55
|
+
this.attachScreen.reportError(message, {
|
|
56
|
+
retry: () => this.handleStartupAttach(),
|
|
57
|
+
close: () => this.disposeAttachScreen()
|
|
58
|
+
});
|
|
37
59
|
}
|
|
38
|
-
|
|
60
|
+
else {
|
|
61
|
+
// No attach screen is up, so fall back to a notification.
|
|
62
|
+
this.disposeAttachScreen();
|
|
63
|
+
this.messageService.error(core_1.nls.localize('theia/remote/dev-container/cliAttachError', 'Failed to attach to container: {0}', message));
|
|
64
|
+
}
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (!args) {
|
|
68
|
+
// Not attaching after all (e.g. a second-instance window without --attach-container):
|
|
69
|
+
// make sure a preliminary screen is not left up.
|
|
70
|
+
this.disposeAttachScreen();
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
await this.runStartupAttach(args);
|
|
74
|
+
}
|
|
75
|
+
async runStartupAttach(args) {
|
|
76
|
+
const { containerId, scanForDevJson } = args;
|
|
77
|
+
this.attachScreen.showAttaching(containerId);
|
|
78
|
+
// Surface the backend's live status messages (RemoteStatusReport) on the attach screen.
|
|
79
|
+
const statusSubscription = this.containerOutputProvider.onDidReportStatus(message => this.attachScreen.reportStage(message));
|
|
80
|
+
try {
|
|
39
81
|
this.logger.info(`CLI: --attach-container ${containerId}, initiating attach from frontend...`);
|
|
82
|
+
this.attachScreen.reportStage(core_1.nls.localize('theia/remote/dev-container/attachScreen/locating', 'Locating container {0}...', containerId));
|
|
40
83
|
const containers = await this.connectionProvider.listRunningContainers();
|
|
41
84
|
// Match by ID prefix (either direction — user may pass a short prefix or a full 64-char ID
|
|
42
85
|
// while listRunningContainers returns 12-char truncated IDs) or exact name.
|
|
@@ -46,29 +89,75 @@ let DevContainerStartupContribution = class DevContainerStartupContribution exte
|
|
|
46
89
|
}
|
|
47
90
|
const target = matches[0];
|
|
48
91
|
if (!target) {
|
|
49
|
-
|
|
50
|
-
this.logger.error(`CLI: ${msg}`);
|
|
51
|
-
this.messageService.error(msg);
|
|
52
|
-
return;
|
|
92
|
+
throw new Error(core_1.nls.localize('theia/remote/dev-container/cliContainerNotFound', 'Container "{0}" not found or not running.', containerId));
|
|
53
93
|
}
|
|
94
|
+
this.attachScreen.reportStage(core_1.nls.localize('theia/remote/dev-container/attachScreen/preparingWorkspace', 'Preparing workspace...'));
|
|
54
95
|
const candidates = await this.connectionProvider.getWorkspaceCandidates(target.id);
|
|
55
96
|
const workspacePath = candidates.length > 0 ? candidates[0].path : '/';
|
|
56
97
|
const devcontainerFile = scanForDevJson
|
|
57
98
|
? await this.connectionProvider.scanForDevContainerConfig(target.id, workspacePath)
|
|
58
99
|
: undefined;
|
|
100
|
+
this.attachScreen.reportStage(core_1.nls.localize('theia/remote/dev-container/attachScreen/starting', 'Starting the application inside the container...'));
|
|
59
101
|
const result = await this.connectionProvider.attachToContainer({
|
|
60
102
|
containerId: target.id,
|
|
61
103
|
workspacePath,
|
|
62
104
|
devcontainerFile,
|
|
63
105
|
nodeDownloadTemplate: this.remotePreferences['remote.nodeDownloadTemplate'],
|
|
106
|
+
additionalArgs: await this.remoteCliArgsCollector.collect(),
|
|
64
107
|
});
|
|
65
108
|
this.logger.info(`CLI: startup attach ready, proxy on port ${result.port}, workspace: ${result.workspacePath}`);
|
|
109
|
+
// Reloads the window into the container; the attach screen is torn down by the navigation.
|
|
66
110
|
this.openRemote(result.port, false, result.workspacePath);
|
|
67
111
|
}
|
|
68
112
|
catch (e) {
|
|
69
113
|
this.logger.error('CLI: Failed to attach to container during startup:', e);
|
|
70
|
-
|
|
114
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
115
|
+
this.attachScreen.reportError(message, {
|
|
116
|
+
retry: () => this.runStartupAttach(args),
|
|
117
|
+
close: () => this.attachScreen.dispose()
|
|
118
|
+
});
|
|
71
119
|
}
|
|
120
|
+
finally {
|
|
121
|
+
statusSubscription.dispose();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Whether this window was opened for a CLI-driven attach. Decided from the window's own launch
|
|
126
|
+
* options, which are available synchronously from the first paint, rather than from a flag in
|
|
127
|
+
* the URL: only `@theia/dev-container` knows what `--attach-container` means.
|
|
128
|
+
*/
|
|
129
|
+
isAttachPending() {
|
|
130
|
+
const args = this.launchArgs.getLaunchArgs();
|
|
131
|
+
return args !== undefined && launch_arguments_1.LaunchArguments.lastValue(args, 'attach-container') !== undefined;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Disposes the attach screen, but only when it is actually on screen. The screen is a singleton,
|
|
135
|
+
* so disposing it on the many windows that never attach would leave a disposed widget behind
|
|
136
|
+
* that a later {@link DevContainerAttachScreen.showAttaching} could no longer attach.
|
|
137
|
+
*/
|
|
138
|
+
disposeAttachScreen() {
|
|
139
|
+
if (this.attachScreen.isAttached) {
|
|
140
|
+
this.attachScreen.dispose();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Resolves the container to attach to on startup.
|
|
145
|
+
*
|
|
146
|
+
* A forwarded (second-instance) launch carries its CLI options, provided by the trusted main
|
|
147
|
+
* process. For such windows those options are the only source, because the shared backend still
|
|
148
|
+
* reflects the original cold-start launch and cannot distinguish between windows. A cold-start
|
|
149
|
+
* window has no forwarded options and reads them from the backend instead.
|
|
150
|
+
*/
|
|
151
|
+
async resolveAttachArgs() {
|
|
152
|
+
const forwarded = this.launchArgs.getLaunchArgs();
|
|
153
|
+
if (forwarded !== undefined) {
|
|
154
|
+
const containerId = launch_arguments_1.LaunchArguments.lastValue(forwarded, 'attach-container');
|
|
155
|
+
if (!containerId) {
|
|
156
|
+
return undefined;
|
|
157
|
+
}
|
|
158
|
+
return { containerId, scanForDevJson: !launch_arguments_1.LaunchArguments.isNegated(forwarded, 'dev-json') };
|
|
159
|
+
}
|
|
160
|
+
return this.connectionProvider.getAttachContainerArgs();
|
|
72
161
|
}
|
|
73
162
|
};
|
|
74
163
|
exports.DevContainerStartupContribution = DevContainerStartupContribution;
|
|
@@ -89,6 +178,22 @@ tslib_1.__decorate([
|
|
|
89
178
|
(0, inversify_1.inject)(remote_preferences_1.RemotePreferences),
|
|
90
179
|
tslib_1.__metadata("design:type", Object)
|
|
91
180
|
], DevContainerStartupContribution.prototype, "remotePreferences", void 0);
|
|
181
|
+
tslib_1.__decorate([
|
|
182
|
+
(0, inversify_1.inject)(remote_cli_args_collector_1.RemoteCliArgsCollector),
|
|
183
|
+
tslib_1.__metadata("design:type", remote_cli_args_collector_1.RemoteCliArgsCollector)
|
|
184
|
+
], DevContainerStartupContribution.prototype, "remoteCliArgsCollector", void 0);
|
|
185
|
+
tslib_1.__decorate([
|
|
186
|
+
(0, inversify_1.inject)(container_output_provider_1.ContainerOutputProvider),
|
|
187
|
+
tslib_1.__metadata("design:type", container_output_provider_1.ContainerOutputProvider)
|
|
188
|
+
], DevContainerStartupContribution.prototype, "containerOutputProvider", void 0);
|
|
189
|
+
tslib_1.__decorate([
|
|
190
|
+
(0, inversify_1.inject)(dev_container_attach_screen_1.DevContainerAttachScreen),
|
|
191
|
+
tslib_1.__metadata("design:type", dev_container_attach_screen_1.DevContainerAttachScreen)
|
|
192
|
+
], DevContainerStartupContribution.prototype, "attachScreen", void 0);
|
|
193
|
+
tslib_1.__decorate([
|
|
194
|
+
(0, inversify_1.inject)(window_launch_args_1.WindowLaunchArgs),
|
|
195
|
+
tslib_1.__metadata("design:type", Object)
|
|
196
|
+
], DevContainerStartupContribution.prototype, "launchArgs", void 0);
|
|
92
197
|
exports.DevContainerStartupContribution = DevContainerStartupContribution = tslib_1.__decorate([
|
|
93
198
|
(0, inversify_1.injectable)()
|
|
94
199
|
], DevContainerStartupContribution);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-container-startup-contribution.js","sourceRoot":"","sources":["../../src/electron-browser/dev-container-startup-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAAyE;AAEzE,
|
|
1
|
+
{"version":3,"file":"dev-container-startup-contribution.js","sourceRoot":"","sources":["../../src/electron-browser/dev-container-startup-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-container-startup-contribution.spec.d.ts","sourceRoot":"","sources":["../../src/electron-browser/dev-container-startup-contribution.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource GmbH and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const jsdom_1 = require("@theia/core/lib/browser/test/jsdom");
|
|
19
|
+
let disableJSDOM = (0, jsdom_1.enableJSDOM)();
|
|
20
|
+
const chai_1 = require("chai");
|
|
21
|
+
const launchArgs = (values) => ({ values, negated: [] });
|
|
22
|
+
const dev_container_startup_contribution_1 = require("./dev-container-startup-contribution");
|
|
23
|
+
disableJSDOM();
|
|
24
|
+
class TestDevContainerStartupContribution extends dev_container_startup_contribution_1.DevContainerStartupContribution {
|
|
25
|
+
constructor() {
|
|
26
|
+
super(...arguments);
|
|
27
|
+
this.backendCalls = 0;
|
|
28
|
+
}
|
|
29
|
+
resolve() {
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
31
|
+
this.launchArgs = { getLaunchArgs: () => this.forwardedArgs };
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
33
|
+
this.connectionProvider = {
|
|
34
|
+
getAttachContainerArgs: async () => {
|
|
35
|
+
this.backendCalls++;
|
|
36
|
+
return this.backendArgs;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
return this.resolveAttachArgs();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
describe('DevContainerStartupContribution#resolveAttachArgs', () => {
|
|
43
|
+
before(() => disableJSDOM = (0, jsdom_1.enableJSDOM)());
|
|
44
|
+
after(() => disableJSDOM());
|
|
45
|
+
let contribution;
|
|
46
|
+
beforeEach(() => {
|
|
47
|
+
contribution = new TestDevContainerStartupContribution();
|
|
48
|
+
});
|
|
49
|
+
it('reads the container from the backend on a cold-start window (no forwarded options)', async () => {
|
|
50
|
+
contribution.forwardedArgs = undefined;
|
|
51
|
+
contribution.backendArgs = { containerId: 'A', scanForDevJson: true };
|
|
52
|
+
const result = await contribution.resolve();
|
|
53
|
+
(0, chai_1.expect)(result).to.deep.equal({ containerId: 'A', scanForDevJson: true });
|
|
54
|
+
(0, chai_1.expect)(contribution.backendCalls).to.equal(1);
|
|
55
|
+
});
|
|
56
|
+
it('reads the container from the forwarded options on a second-instance window', async () => {
|
|
57
|
+
contribution.forwardedArgs = launchArgs({ 'attach-container': ['B'] });
|
|
58
|
+
contribution.backendArgs = { containerId: 'A', scanForDevJson: true };
|
|
59
|
+
const result = await contribution.resolve();
|
|
60
|
+
(0, chai_1.expect)(result).to.deep.equal({ containerId: 'B', scanForDevJson: true });
|
|
61
|
+
// The stale backend value (from the first launch) must not be consulted.
|
|
62
|
+
(0, chai_1.expect)(contribution.backendCalls).to.equal(0);
|
|
63
|
+
});
|
|
64
|
+
it('honors --no-dev-json in the forwarded options', async () => {
|
|
65
|
+
contribution.forwardedArgs = { values: { 'attach-container': ['B'] }, negated: ['dev-json'] };
|
|
66
|
+
const result = await contribution.resolve();
|
|
67
|
+
(0, chai_1.expect)(result).to.deep.equal({ containerId: 'B', scanForDevJson: false });
|
|
68
|
+
});
|
|
69
|
+
it('does not attach for a second-instance window without --attach-container', async () => {
|
|
70
|
+
contribution.forwardedArgs = launchArgs({ 'session-preference': ['foo=1'] });
|
|
71
|
+
contribution.backendArgs = { containerId: 'A', scanForDevJson: true };
|
|
72
|
+
const result = await contribution.resolve();
|
|
73
|
+
(0, chai_1.expect)(result).to.be.undefined;
|
|
74
|
+
(0, chai_1.expect)(contribution.backendCalls).to.equal(0);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
class AttachHarness extends dev_container_startup_contribution_1.DevContainerStartupContribution {
|
|
78
|
+
constructor() {
|
|
79
|
+
super(...arguments);
|
|
80
|
+
this.stages = [];
|
|
81
|
+
this.errors = [];
|
|
82
|
+
this.disposeCount = 0;
|
|
83
|
+
this.showCount = 0;
|
|
84
|
+
this.openRemoteCalls = [];
|
|
85
|
+
}
|
|
86
|
+
setup(opts) {
|
|
87
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
88
|
+
this.logger = { info: () => { }, warn: () => { }, error: () => { } };
|
|
89
|
+
this.attachScreen = {
|
|
90
|
+
showAttaching: () => { this.showCount++; },
|
|
91
|
+
reportStage: (message) => this.stages.push(message),
|
|
92
|
+
reportError: (message, actions) => this.errors.push({ message, actions }),
|
|
93
|
+
dispose: () => { this.disposeCount++; }
|
|
94
|
+
};
|
|
95
|
+
this.containerOutputProvider = {
|
|
96
|
+
onDidReportStatus: (cb) => {
|
|
97
|
+
this.statusListener = cb;
|
|
98
|
+
return { dispose: () => { this.statusListener = undefined; } };
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
this.remotePreferences = {};
|
|
102
|
+
this.remoteCliArgsCollector = { collect: async () => [] };
|
|
103
|
+
this.connectionProvider = {
|
|
104
|
+
listRunningContainers: async () => opts.containers ?? [],
|
|
105
|
+
getWorkspaceCandidates: async () => [],
|
|
106
|
+
scanForDevContainerConfig: async () => undefined,
|
|
107
|
+
attachToContainer: async () => {
|
|
108
|
+
if (opts.statusDuringAttach) {
|
|
109
|
+
this.statusListener?.(opts.statusDuringAttach);
|
|
110
|
+
}
|
|
111
|
+
if (opts.attachResult instanceof Error) {
|
|
112
|
+
throw opts.attachResult;
|
|
113
|
+
}
|
|
114
|
+
return opts.attachResult;
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
118
|
+
}
|
|
119
|
+
openRemote(port) {
|
|
120
|
+
this.openRemoteCalls.push(port);
|
|
121
|
+
}
|
|
122
|
+
run(args) {
|
|
123
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
124
|
+
return this.runStartupAttach(args);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
describe('DevContainerStartupContribution#runStartupAttach', () => {
|
|
128
|
+
before(() => disableJSDOM = (0, jsdom_1.enableJSDOM)());
|
|
129
|
+
after(() => disableJSDOM());
|
|
130
|
+
const runningB = { id: 'abc123def456', name: 'B', image: 'img', status: 'running', created: 0 };
|
|
131
|
+
it('reloads into the container on success without showing an error', async () => {
|
|
132
|
+
const harness = new AttachHarness();
|
|
133
|
+
harness.setup({ containers: [runningB], attachResult: { port: '9000', workspacePath: '/w', containerId: 'abc123def456' } });
|
|
134
|
+
await harness.run({ containerId: 'B', scanForDevJson: false });
|
|
135
|
+
(0, chai_1.expect)(harness.openRemoteCalls).to.deep.equal(['9000']);
|
|
136
|
+
(0, chai_1.expect)(harness.errors).to.have.lengthOf(0);
|
|
137
|
+
(0, chai_1.expect)(harness.showCount).to.be.greaterThan(0);
|
|
138
|
+
});
|
|
139
|
+
it('forwards backend status messages to the attach screen', async () => {
|
|
140
|
+
const harness = new AttachHarness();
|
|
141
|
+
harness.setup({
|
|
142
|
+
containers: [runningB],
|
|
143
|
+
attachResult: { port: '9000', workspacePath: '/w', containerId: 'abc123def456' },
|
|
144
|
+
statusDuringAttach: 'Starting application on remote...'
|
|
145
|
+
});
|
|
146
|
+
await harness.run({ containerId: 'B', scanForDevJson: false });
|
|
147
|
+
(0, chai_1.expect)(harness.stages).to.include('Starting application on remote...');
|
|
148
|
+
});
|
|
149
|
+
it('shows an error with retry/close when the container is not found, without reloading', async () => {
|
|
150
|
+
const harness = new AttachHarness();
|
|
151
|
+
harness.setup({ containers: [] });
|
|
152
|
+
await harness.run({ containerId: 'missing', scanForDevJson: false });
|
|
153
|
+
(0, chai_1.expect)(harness.openRemoteCalls).to.have.lengthOf(0);
|
|
154
|
+
(0, chai_1.expect)(harness.errors).to.have.lengthOf(1);
|
|
155
|
+
(0, chai_1.expect)(harness.errors[0].message).to.match(/not found/i);
|
|
156
|
+
});
|
|
157
|
+
it('retry re-runs the attach; close dismisses the screen', async () => {
|
|
158
|
+
const harness = new AttachHarness();
|
|
159
|
+
harness.setup({ containers: [] });
|
|
160
|
+
await harness.run({ containerId: 'missing', scanForDevJson: false });
|
|
161
|
+
(0, chai_1.expect)(harness.errors).to.have.lengthOf(1);
|
|
162
|
+
await harness.errors[0].actions.retry();
|
|
163
|
+
(0, chai_1.expect)(harness.errors).to.have.lengthOf(2);
|
|
164
|
+
harness.errors[1].actions.close();
|
|
165
|
+
(0, chai_1.expect)(harness.disposeCount).to.be.greaterThan(0);
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
class StartupHarness extends dev_container_startup_contribution_1.DevContainerStartupContribution {
|
|
169
|
+
constructor() {
|
|
170
|
+
super(...arguments);
|
|
171
|
+
this.errors = [];
|
|
172
|
+
}
|
|
173
|
+
setup() {
|
|
174
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
175
|
+
this.logger = { info: () => { }, warn: () => { }, error: () => { } };
|
|
176
|
+
this.launchArgs = { getLaunchArgs: () => undefined };
|
|
177
|
+
this.attachScreen = { isAttached: false, dispose: () => { } };
|
|
178
|
+
this.messageService = { error: (message) => this.errors.push(message) };
|
|
179
|
+
this.connectionProvider = {
|
|
180
|
+
getAttachContainerArgs: async () => { throw new Error('backend unreachable'); }
|
|
181
|
+
};
|
|
182
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
183
|
+
}
|
|
184
|
+
run() {
|
|
185
|
+
return this.handleStartupAttach();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
describe('DevContainerStartupContribution#handleStartupAttach', () => {
|
|
189
|
+
before(() => disableJSDOM = (0, jsdom_1.enableJSDOM)());
|
|
190
|
+
after(() => disableJSDOM());
|
|
191
|
+
it('reports a failure to resolve the attach arguments on a cold start', async () => {
|
|
192
|
+
const harness = new StartupHarness();
|
|
193
|
+
harness.setup();
|
|
194
|
+
await harness.run();
|
|
195
|
+
(0, chai_1.expect)(harness.errors).to.have.lengthOf(1);
|
|
196
|
+
(0, chai_1.expect)(harness.errors[0]).to.contain('backend unreachable');
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
//# sourceMappingURL=dev-container-startup-contribution.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-container-startup-contribution.spec.js","sourceRoot":"","sources":["../../src/electron-browser/dev-container-startup-contribution.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
export interface ContainerOutputProvider {
|
|
2
2
|
onRemoteOutput(output: string): void;
|
|
3
|
+
/**
|
|
4
|
+
* Receives curated status messages (from {@link RemoteStatusReport}) describing the current
|
|
5
|
+
* attach phase, e.g. "Starting application on remote...". Used to drive the "attaching" screen.
|
|
6
|
+
* Optional so that existing implementers of this interface keep compiling.
|
|
7
|
+
*/
|
|
8
|
+
onRemoteStatus?(message: string): void;
|
|
3
9
|
}
|
|
4
10
|
//# sourceMappingURL=container-output-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-output-provider.d.ts","sourceRoot":"","sources":["../../src/electron-common/container-output-provider.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,uBAAuB;IACpC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"container-output-provider.d.ts","sourceRoot":"","sources":["../../src/electron-common/container-output-provider.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,uBAAuB;IACpC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;;;;OAIG;IACH,cAAc,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C"}
|
|
@@ -8,6 +8,11 @@ export interface ContainerConnectionOptions {
|
|
|
8
8
|
lastContainerInfo?: LastContainerInfo;
|
|
9
9
|
devcontainerFile: string;
|
|
10
10
|
workspacePath?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Additional CLI arguments to pass to the container's remote backend, e.g. the
|
|
13
|
+
* `--session-preference` values forwarded to a second-instance window.
|
|
14
|
+
*/
|
|
15
|
+
additionalArgs?: string[];
|
|
11
16
|
}
|
|
12
17
|
export interface LastContainerInfo {
|
|
13
18
|
id: string;
|
|
@@ -39,6 +44,11 @@ export interface AttachContainerOptions {
|
|
|
39
44
|
workspacePath: string;
|
|
40
45
|
nodeDownloadTemplate?: string;
|
|
41
46
|
devcontainerFile?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Additional CLI arguments to pass to the container's remote backend, e.g. the
|
|
49
|
+
* `--session-preference` values forwarded to a second-instance window.
|
|
50
|
+
*/
|
|
51
|
+
additionalArgs?: string[];
|
|
42
52
|
}
|
|
43
53
|
export interface AttachContainerArgs {
|
|
44
54
|
containerId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-container-connection-provider.d.ts","sourceRoot":"","sources":["../../src/electron-common/remote-container-connection-provider.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGtD,eAAO,MAAM,qCAAqC,sBAAsB,CAAC;AAEzE,eAAO,MAAM,iCAAiC,eAA8C,CAAC;AAE7F,MAAM,WAAW,0BAA0B;IACvC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"remote-container-connection-provider.d.ts","sourceRoot":"","sources":["../../src/electron-common/remote-container-connection-provider.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGtD,eAAO,MAAM,qCAAqC,sBAAsB,CAAC;AAEzE,eAAO,MAAM,iCAAiC,eAA8C,CAAC;AAE7F,MAAM,WAAW,0BAA0B;IACvC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,MAAM,EAAE,aAAa,GAAG,YAAY,GAAG,oBAAoB,GAAG,UAAU,CAAC;CAC5E;AAED,MAAM,WAAW,sBAAsB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,iCAAkC,SAAQ,SAAS,CAAC,uBAAuB,CAAC;IACzF,kBAAkB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC5F,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACzE,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAC;IACjF,qBAAqB,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACzD,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC3E,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACnG,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IACnE,iBAAiB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACvF,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ElectronMainApplicationContribution } from '@theia/core/lib/electron-main/electron-main-application';
|
|
2
|
+
import { LaunchArguments } from '@theia/core/lib/common/launch-arguments';
|
|
3
|
+
/**
|
|
4
|
+
* Claims windows opened for a CLI `--attach-container` launch. Such a window is opened empty and
|
|
5
|
+
* reloads into the container once the attach completes; claiming it lets core open an empty window
|
|
6
|
+
* (instead of restoring the last workspace) and flag it so the dev-container frontend can show its
|
|
7
|
+
* "attaching" screen from the first paint. Keeps the knowledge of `--attach-container` in
|
|
8
|
+
* `@theia/dev-container` rather than in core.
|
|
9
|
+
*/
|
|
10
|
+
export declare class DevContainerClaimContribution implements ElectronMainApplicationContribution {
|
|
11
|
+
claimsWindow(args: LaunchArguments): boolean;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=dev-container-claim-contribution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-container-claim-contribution.d.ts","sourceRoot":"","sources":["../../src/electron-main/dev-container-claim-contribution.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,mCAAmC,EAAE,MAAM,yDAAyD,CAAC;AAC9G,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAE1E;;;;;;GAMG;AACH,qBACa,6BAA8B,YAAW,mCAAmC;IAErF,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO;CAG/C"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource GmbH and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.DevContainerClaimContribution = void 0;
|
|
19
|
+
const tslib_1 = require("tslib");
|
|
20
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
21
|
+
const launch_arguments_1 = require("@theia/core/lib/common/launch-arguments");
|
|
22
|
+
/**
|
|
23
|
+
* Claims windows opened for a CLI `--attach-container` launch. Such a window is opened empty and
|
|
24
|
+
* reloads into the container once the attach completes; claiming it lets core open an empty window
|
|
25
|
+
* (instead of restoring the last workspace) and flag it so the dev-container frontend can show its
|
|
26
|
+
* "attaching" screen from the first paint. Keeps the knowledge of `--attach-container` in
|
|
27
|
+
* `@theia/dev-container` rather than in core.
|
|
28
|
+
*/
|
|
29
|
+
let DevContainerClaimContribution = class DevContainerClaimContribution {
|
|
30
|
+
claimsWindow(args) {
|
|
31
|
+
return launch_arguments_1.LaunchArguments.lastValue(args, 'attach-container') !== undefined;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
exports.DevContainerClaimContribution = DevContainerClaimContribution;
|
|
35
|
+
exports.DevContainerClaimContribution = DevContainerClaimContribution = tslib_1.__decorate([
|
|
36
|
+
(0, inversify_1.injectable)()
|
|
37
|
+
], DevContainerClaimContribution);
|
|
38
|
+
//# sourceMappingURL=dev-container-claim-contribution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-container-claim-contribution.js","sourceRoot":"","sources":["../../src/electron-main/dev-container-claim-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAA0D;AAE1D,8EAA0E;AAE1E;;;;;;GAMG;AAEI,IAAM,6BAA6B,GAAnC,MAAM,6BAA6B;IAEtC,YAAY,CAAC,IAAqB;QAC9B,OAAO,kCAAe,CAAC,SAAS,CAAC,IAAI,EAAE,kBAAkB,CAAC,KAAK,SAAS,CAAC;IAC7E,CAAC;CACJ,CAAA;AALY,sEAA6B;wCAA7B,6BAA6B;IADzC,IAAA,sBAAU,GAAE;GACA,6BAA6B,CAKzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-container-electron-main-module.d.ts","sourceRoot":"","sources":["../../src/electron-main/dev-container-electron-main-module.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AAI/D,wBAGG"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource GmbH and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
19
|
+
const electron_main_application_1 = require("@theia/core/lib/electron-main/electron-main-application");
|
|
20
|
+
const dev_container_claim_contribution_1 = require("./dev-container-claim-contribution");
|
|
21
|
+
exports.default = new inversify_1.ContainerModule(bind => {
|
|
22
|
+
bind(dev_container_claim_contribution_1.DevContainerClaimContribution).toSelf().inSingletonScope();
|
|
23
|
+
bind(electron_main_application_1.ElectronMainApplicationContribution).toService(dev_container_claim_contribution_1.DevContainerClaimContribution);
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=dev-container-electron-main-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-container-electron-main-module.js","sourceRoot":"","sources":["../../src/electron-main/dev-container-electron-main-module.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,4DAA+D;AAC/D,uGAA8G;AAC9G,yFAAmF;AAEnF,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACtC,IAAI,CAAC,gEAA6B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAChE,IAAI,CAAC,+DAAmC,CAAC,CAAC,SAAS,CAAC,gEAA6B,CAAC,CAAC;AACvF,CAAC,CAAC,CAAC"}
|
|
@@ -40,7 +40,7 @@ export declare class DevContainerConnectionProvider implements RemoteContainerCo
|
|
|
40
40
|
*
|
|
41
41
|
* @returns the local proxy port and the remote connection
|
|
42
42
|
*/
|
|
43
|
-
protected setupRemoteConnection(container: Docker.Container, docker: Docker, config: DevContainerConfiguration, nodeDownloadTemplate: string | undefined, report: RemoteStatusReport): Promise<{
|
|
43
|
+
protected setupRemoteConnection(container: Docker.Container, docker: Docker, config: DevContainerConfiguration, nodeDownloadTemplate: string | undefined, report: RemoteStatusReport, additionalArgs?: string[]): Promise<{
|
|
44
44
|
localPort: number;
|
|
45
45
|
remote: RemoteDockerContainerConnection;
|
|
46
46
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-container-connection-provider.d.ts","sourceRoot":"","sources":["../../src/electron-node/remote-container-connection-provider.ts"],"names":[],"mappings":"AAkBA,OAAO,EACH,mBAAmB,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,yBAAyB,EAClG,gBAAgB,EAAE,iCAAiC,EAAE,oBAAoB,EAAE,kBAAkB,EAChG,MAAM,yDAAyD,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2DAA2D,CAAC;AACpG,OAAO,EAAE,kBAAkB,EAAE,MAAM,4DAA4D,CAAC;AAChG,OAAO,EAAE,yBAAyB,EAAE,MAAM,8DAA8D,CAAC;AACzG,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAqB,MAAM,aAAa,CAAC;AAEpF,OAAO,KAAK,MAAM,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAEvF,OAAO,EAAE,+BAA+B,EAAE,gCAAgC,EAAE,MAAM,sCAAsC,CAAC;AACzH,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAIhE,qBACa,8BAA+B,YAAW,iCAAiC,EAAE,SAAS,CAAC,uBAAuB,CAAC;IAGxH,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAGpE,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IAGnD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC;IAG7D,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;IAG5D,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAGpE,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,2BAA2B,CAAC;IAGhE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAGnC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAElD,SAAS,CAAC,cAAc,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAE9D,SAAS,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAI1C,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAsCzC,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAavE,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAwD3F,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA+DnH,kBAAkB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAqCjG,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIlE,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAWlE,iBAAiB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"remote-container-connection-provider.d.ts","sourceRoot":"","sources":["../../src/electron-node/remote-container-connection-provider.ts"],"names":[],"mappings":"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"}
|