@theia/dev-container 1.72.0-next.59 → 1.73.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.
Files changed (90) hide show
  1. package/lib/electron-browser/container-connection-contribution.d.ts +5 -2
  2. package/lib/electron-browser/container-connection-contribution.d.ts.map +1 -1
  3. package/lib/electron-browser/container-connection-contribution.js +130 -30
  4. package/lib/electron-browser/container-connection-contribution.js.map +1 -1
  5. package/lib/electron-browser/container-output-provider.d.ts.map +1 -1
  6. package/lib/electron-browser/container-output-provider.js +3 -1
  7. package/lib/electron-browser/container-output-provider.js.map +1 -1
  8. package/lib/electron-browser/dev-container-frontend-module.d.ts.map +1 -1
  9. package/lib/electron-browser/dev-container-frontend-module.js +5 -0
  10. package/lib/electron-browser/dev-container-frontend-module.js.map +1 -1
  11. package/lib/electron-browser/dev-container-startup-contribution.d.ts +15 -0
  12. package/lib/electron-browser/dev-container-startup-contribution.d.ts.map +1 -0
  13. package/lib/electron-browser/dev-container-startup-contribution.js +94 -0
  14. package/lib/electron-browser/dev-container-startup-contribution.js.map +1 -0
  15. package/lib/electron-common/dev-container-preferences.d.ts +12 -0
  16. package/lib/electron-common/dev-container-preferences.d.ts.map +1 -0
  17. package/lib/electron-common/dev-container-preferences.js +44 -0
  18. package/lib/electron-common/dev-container-preferences.js.map +1 -0
  19. package/lib/electron-common/remote-container-connection-provider.d.ts +20 -1
  20. package/lib/electron-common/remote-container-connection-provider.d.ts.map +1 -1
  21. package/lib/electron-node/dev-container-backend-module.d.ts.map +1 -1
  22. package/lib/electron-node/dev-container-backend-module.js +4 -0
  23. package/lib/electron-node/dev-container-backend-module.js.map +1 -1
  24. package/lib/electron-node/dev-container-cli-contribution.d.ts +19 -0
  25. package/lib/electron-node/dev-container-cli-contribution.d.ts.map +1 -0
  26. package/lib/electron-node/dev-container-cli-contribution.js +66 -0
  27. package/lib/electron-node/dev-container-cli-contribution.js.map +1 -0
  28. package/lib/electron-node/dev-container-cli-contribution.spec.d.ts +2 -0
  29. package/lib/electron-node/dev-container-cli-contribution.spec.d.ts.map +1 -0
  30. package/lib/electron-node/dev-container-cli-contribution.spec.js +91 -0
  31. package/lib/electron-node/dev-container-cli-contribution.spec.js.map +1 -0
  32. package/lib/electron-node/dev-container-file-service.d.ts +4 -4
  33. package/lib/electron-node/dev-container-file-service.d.ts.map +1 -1
  34. package/lib/electron-node/dev-container-file-service.js +9 -9
  35. package/lib/electron-node/dev-container-file-service.js.map +1 -1
  36. package/lib/electron-node/devcontainer-contributions/main-container-creation-contributions.d.ts +6 -2
  37. package/lib/electron-node/devcontainer-contributions/main-container-creation-contributions.d.ts.map +1 -1
  38. package/lib/electron-node/devcontainer-contributions/main-container-creation-contributions.js +24 -4
  39. package/lib/electron-node/devcontainer-contributions/main-container-creation-contributions.js.map +1 -1
  40. package/lib/electron-node/devcontainer-contributions/variable-resolver-contribution.d.ts +7 -6
  41. package/lib/electron-node/devcontainer-contributions/variable-resolver-contribution.d.ts.map +1 -1
  42. package/lib/electron-node/devcontainer-contributions/variable-resolver-contribution.js +4 -9
  43. package/lib/electron-node/devcontainer-contributions/variable-resolver-contribution.js.map +1 -1
  44. package/lib/electron-node/devcontainer-util.d.ts +19 -0
  45. package/lib/electron-node/devcontainer-util.d.ts.map +1 -0
  46. package/lib/electron-node/devcontainer-util.js +48 -0
  47. package/lib/electron-node/devcontainer-util.js.map +1 -0
  48. package/lib/electron-node/devcontainer-util.spec.d.ts +2 -0
  49. package/lib/electron-node/devcontainer-util.spec.d.ts.map +1 -0
  50. package/lib/electron-node/devcontainer-util.spec.js +128 -0
  51. package/lib/electron-node/devcontainer-util.spec.js.map +1 -0
  52. package/lib/electron-node/docker-container-service.d.ts +3 -3
  53. package/lib/electron-node/docker-container-service.d.ts.map +1 -1
  54. package/lib/electron-node/docker-container-service.js +3 -4
  55. package/lib/electron-node/docker-container-service.js.map +1 -1
  56. package/lib/electron-node/remote-container-connection-provider.d.ts +27 -66
  57. package/lib/electron-node/remote-container-connection-provider.d.ts.map +1 -1
  58. package/lib/electron-node/remote-container-connection-provider.js +269 -311
  59. package/lib/electron-node/remote-container-connection-provider.js.map +1 -1
  60. package/lib/electron-node/remote-docker-container-connection.d.ts +50 -0
  61. package/lib/electron-node/remote-docker-container-connection.d.ts.map +1 -0
  62. package/lib/electron-node/remote-docker-container-connection.js +239 -0
  63. package/lib/electron-node/remote-docker-container-connection.js.map +1 -0
  64. package/lib/electron-node/remote-docker-container-connection.spec.d.ts +2 -0
  65. package/lib/electron-node/remote-docker-container-connection.spec.d.ts.map +1 -0
  66. package/lib/electron-node/remote-docker-container-connection.spec.js +217 -0
  67. package/lib/electron-node/remote-docker-container-connection.spec.js.map +1 -0
  68. package/package.json +7 -7
  69. package/src/electron-browser/container-connection-contribution.ts +155 -38
  70. package/src/electron-browser/container-output-provider.ts +3 -1
  71. package/src/electron-browser/dev-container-frontend-module.ts +6 -0
  72. package/src/electron-browser/dev-container-startup-contribution.ts +99 -0
  73. package/src/electron-common/dev-container-preferences.ts +53 -0
  74. package/src/electron-common/remote-container-connection-provider.ts +23 -1
  75. package/src/electron-node/dev-container-backend-module.ts +5 -0
  76. package/src/electron-node/dev-container-cli-contribution.spec.ts +106 -0
  77. package/src/electron-node/dev-container-cli-contribution.ts +68 -0
  78. package/src/electron-node/dev-container-file-service.ts +10 -10
  79. package/src/electron-node/devcontainer-contributions/main-container-creation-contributions.ts +29 -5
  80. package/src/electron-node/devcontainer-contributions/variable-resolver-contribution.ts +11 -11
  81. package/src/electron-node/devcontainer-util.spec.ts +154 -0
  82. package/src/electron-node/devcontainer-util.ts +49 -0
  83. package/src/electron-node/docker-container-service.ts +6 -7
  84. package/src/electron-node/remote-container-connection-provider.ts +274 -366
  85. package/src/electron-node/{remote-container-connection-provider.spec.ts → remote-docker-container-connection.spec.ts} +105 -4
  86. package/src/electron-node/remote-docker-container-connection.ts +290 -0
  87. package/lib/electron-node/remote-container-connection-provider.spec.d.ts +0 -2
  88. package/lib/electron-node/remote-container-connection-provider.spec.d.ts.map +0 -1
  89. package/lib/electron-node/remote-container-connection-provider.spec.js +0 -131
  90. package/lib/electron-node/remote-container-connection-provider.spec.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"variable-resolver-contribution.js","sourceRoot":"","sources":["../../../src/electron-node/devcontainer-contributions/variable-resolver-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,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;;;AAWhF,sFAGC;;AAZD,4DAAqG;AACrG,0EAAqE;AAExD,QAAA,4BAA4B,GAAG,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAMnF,SAAgB,qCAAqC,CAAC,IAAqB;IACvE,IAAI,CAAC,oCAA4B,CAAC,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACnF,IAAI,CAAC,oCAA4B,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,gBAAgB,EAAE,CAAC;AAClF,CAAC;AAGM,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IACjC,UAAU,CAAC,IAAY;QACnB,OAAO,IAAI,KAAK,UAAU,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,QAAgB;QACpB,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;CACJ,CAAA;AARY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,sBAAU,GAAE;GACA,wBAAwB,CAQpC;AAGM,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAI5B,UAAU,CAAC,IAAY;QACnB,OAAO,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC;IAChF,CAAC;IACD,OAAO,CAAC,QAAgB;QACpB,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,EAAE,IAAI,QAAQ,CAAC;IACjE,CAAC;CACJ,CAAA;AAVY,kDAAmB;AAEL;IADtB,IAAA,kBAAM,EAAC,IAAI,iCAAqB,CAAC,GAAG,EAAE,CAAC,iDAAsB,CAAC,CAAC;sCACjB,iDAAsB;mEAAC;8BAF7D,mBAAmB;IAD/B,IAAA,sBAAU,GAAE;GACA,mBAAmB,CAU/B"}
1
+ {"version":3,"file":"variable-resolver-contribution.js","sourceRoot":"","sources":["../../../src/electron-node/devcontainer-contributions/variable-resolver-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,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;;;AAchF,sFAGC;;AAfD,4DAAsE;AAMzD,QAAA,4BAA4B,GAAG,MAAM,CAAC,8BAA8B,CAAC,CAAC;AAMnF,SAAgB,qCAAqC,CAAC,IAAqB;IACvE,IAAI,CAAC,oCAA4B,CAAC,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACnF,IAAI,CAAC,oCAA4B,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,gBAAgB,EAAE,CAAC;AAClF,CAAC;AAGM,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IACjC,UAAU,CAAC,IAAY;QACnB,OAAO,IAAI,KAAK,UAAU,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,QAAgB;QACpB,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;CACJ,CAAA;AARY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,sBAAU,GAAE;GACA,wBAAwB,CAQpC;AAGM,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC5B,UAAU,CAAC,IAAY,EAAE,OAAyB;QAC9C,OAAO,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC;IAC/D,CAAC;IACD,OAAO,CAAC,SAAiB,EAAE,OAAyB;QAChD,OAAO,OAAO,EAAE,WAAW,IAAI,SAAS,CAAC;IAC7C,CAAC;CACJ,CAAA;AAPY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,sBAAU,GAAE;GACA,mBAAmB,CAO/B"}
@@ -0,0 +1,19 @@
1
+ import type { ContainerInspectInfo } from 'dockerode';
2
+ export type MountInfo = ContainerInspectInfo['Mounts'][number];
3
+ /**
4
+ * Returns true for bind mounts that are not injected by HostConfigSharingContribution
5
+ * (SSH dir, gitconfig). Shared by {@link inferWorkspacePath} and
6
+ * {@link getWorkspaceMounts} to keep the filtering logic in one place.
7
+ */
8
+ export declare function isWorkspaceMount(mount: MountInfo): boolean;
9
+ /**
10
+ * Returns all bind mounts that look like workspace mounts (filtering out
11
+ * injected SSH/gitconfig mounts).
12
+ */
13
+ export declare function getWorkspaceMounts(mounts: MountInfo[]): MountInfo[];
14
+ /**
15
+ * Infers a workspace path from container inspect info.
16
+ * Takes the first workspace-relevant bind mount, falls back to WorkingDir, then `/`.
17
+ */
18
+ export declare function inferWorkspacePath(containerInfo: ContainerInspectInfo): string;
19
+ //# sourceMappingURL=devcontainer-util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devcontainer-util.d.ts","sourceRoot":"","sources":["../../src/electron-node/devcontainer-util.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEtD,MAAM,MAAM,SAAS,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAM1D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAEnE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,oBAAoB,GAAG,MAAM,CAG9E"}
@@ -0,0 +1,48 @@
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.isWorkspaceMount = isWorkspaceMount;
19
+ exports.getWorkspaceMounts = getWorkspaceMounts;
20
+ exports.inferWorkspacePath = inferWorkspacePath;
21
+ /**
22
+ * Returns true for bind mounts that are not injected by HostConfigSharingContribution
23
+ * (SSH dir, gitconfig). Shared by {@link inferWorkspacePath} and
24
+ * {@link getWorkspaceMounts} to keep the filtering logic in one place.
25
+ */
26
+ function isWorkspaceMount(mount) {
27
+ return mount.Type === 'bind'
28
+ && !!mount.Destination
29
+ && !mount.Destination.endsWith('/.ssh')
30
+ && !mount.Destination.endsWith('/.gitconfig')
31
+ && mount.Destination !== '/tmp/host_gitconfig';
32
+ }
33
+ /**
34
+ * Returns all bind mounts that look like workspace mounts (filtering out
35
+ * injected SSH/gitconfig mounts).
36
+ */
37
+ function getWorkspaceMounts(mounts) {
38
+ return mounts.filter(isWorkspaceMount);
39
+ }
40
+ /**
41
+ * Infers a workspace path from container inspect info.
42
+ * Takes the first workspace-relevant bind mount, falls back to WorkingDir, then `/`.
43
+ */
44
+ function inferWorkspacePath(containerInfo) {
45
+ const workspaceMount = containerInfo.Mounts.find(isWorkspaceMount);
46
+ return (workspaceMount?.Destination ?? containerInfo.Config.WorkingDir) || '/';
47
+ }
48
+ //# sourceMappingURL=devcontainer-util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devcontainer-util.js","sourceRoot":"","sources":["../../src/electron-node/devcontainer-util.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;;AAWhF,4CAMC;AAMD,gDAEC;AAMD,gDAGC;AA5BD;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,KAAgB;IAC7C,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM;WACrB,CAAC,CAAC,KAAK,CAAC,WAAW;WACnB,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;WACpC,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC;WAC1C,KAAK,CAAC,WAAW,KAAK,qBAAqB,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,MAAmB;IAClD,OAAO,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,aAAmC;IAClE,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACnE,OAAO,CAAC,cAAc,EAAE,WAAW,IAAI,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC;AACnF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=devcontainer-util.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devcontainer-util.spec.d.ts","sourceRoot":"","sources":["../../src/electron-node/devcontainer-util.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,128 @@
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 chai_1 = require("chai");
19
+ const devcontainer_util_1 = require("./devcontainer-util");
20
+ function createContainerInfo(mounts, workingDir) {
21
+ return {
22
+ Mounts: mounts.map(m => ({ ...m, Type: m.Type ?? 'bind' })),
23
+ Config: { WorkingDir: workingDir ?? '' }
24
+ };
25
+ }
26
+ describe('inferWorkspacePath', () => {
27
+ it('should return workspace mount destination', () => {
28
+ const info = createContainerInfo([{ Destination: '/workspaces/project' }]);
29
+ (0, chai_1.expect)((0, devcontainer_util_1.inferWorkspacePath)(info)).to.equal('/workspaces/project');
30
+ });
31
+ it('should skip .ssh mount', () => {
32
+ const info = createContainerInfo([
33
+ { Destination: '/root/.ssh' },
34
+ { Destination: '/workspaces/project' }
35
+ ]);
36
+ (0, chai_1.expect)((0, devcontainer_util_1.inferWorkspacePath)(info)).to.equal('/workspaces/project');
37
+ });
38
+ it('should skip .gitconfig mount', () => {
39
+ const info = createContainerInfo([
40
+ { Destination: '/home/user/.gitconfig' },
41
+ { Destination: '/workspaces/project' }
42
+ ]);
43
+ (0, chai_1.expect)((0, devcontainer_util_1.inferWorkspacePath)(info)).to.equal('/workspaces/project');
44
+ });
45
+ it('should skip /tmp/host_gitconfig mount', () => {
46
+ const info = createContainerInfo([
47
+ { Destination: '/tmp/host_gitconfig' },
48
+ { Destination: '/workspaces/project' }
49
+ ]);
50
+ (0, chai_1.expect)((0, devcontainer_util_1.inferWorkspacePath)(info)).to.equal('/workspaces/project');
51
+ });
52
+ it('should skip all injected mounts and find workspace', () => {
53
+ const info = createContainerInfo([
54
+ { Destination: '/root/.ssh' },
55
+ { Destination: '/tmp/host_gitconfig' },
56
+ { Destination: '/workspace' }
57
+ ]);
58
+ (0, chai_1.expect)((0, devcontainer_util_1.inferWorkspacePath)(info)).to.equal('/workspace');
59
+ });
60
+ it('should fall back to WorkingDir when no suitable mounts', () => {
61
+ const info = createContainerInfo([{ Destination: '/root/.ssh' }], '/app');
62
+ (0, chai_1.expect)((0, devcontainer_util_1.inferWorkspacePath)(info)).to.equal('/app');
63
+ });
64
+ it('should fall back to / when no mounts and no WorkingDir', () => {
65
+ const info = createContainerInfo([], '');
66
+ (0, chai_1.expect)((0, devcontainer_util_1.inferWorkspacePath)(info)).to.equal('/');
67
+ });
68
+ it('should fall back to / when mounts is empty', () => {
69
+ const info = createContainerInfo([]);
70
+ (0, chai_1.expect)((0, devcontainer_util_1.inferWorkspacePath)(info)).to.equal('/');
71
+ });
72
+ it('should skip non-bind mounts', () => {
73
+ const info = createContainerInfo([
74
+ { Destination: '/data', Type: 'volume' },
75
+ { Destination: '/workspaces/project' }
76
+ ]);
77
+ (0, chai_1.expect)((0, devcontainer_util_1.inferWorkspacePath)(info)).to.equal('/workspaces/project');
78
+ });
79
+ });
80
+ describe('isWorkspaceMount', () => {
81
+ function mount(destination, type = 'bind') {
82
+ return { Destination: destination, Type: type };
83
+ }
84
+ it('should accept a normal bind mount', () => {
85
+ (0, chai_1.expect)((0, devcontainer_util_1.isWorkspaceMount)(mount('/workspaces/project'))).to.be.true;
86
+ });
87
+ it('should reject .ssh mounts', () => {
88
+ (0, chai_1.expect)((0, devcontainer_util_1.isWorkspaceMount)(mount('/root/.ssh'))).to.be.false;
89
+ });
90
+ it('should reject .gitconfig mounts', () => {
91
+ (0, chai_1.expect)((0, devcontainer_util_1.isWorkspaceMount)(mount('/home/user/.gitconfig'))).to.be.false;
92
+ });
93
+ it('should reject /tmp/host_gitconfig', () => {
94
+ (0, chai_1.expect)((0, devcontainer_util_1.isWorkspaceMount)(mount('/tmp/host_gitconfig'))).to.be.false;
95
+ });
96
+ it('should reject volume mounts', () => {
97
+ (0, chai_1.expect)((0, devcontainer_util_1.isWorkspaceMount)(mount('/workspaces/project', 'volume'))).to.be.false;
98
+ });
99
+ it('should reject tmpfs mounts', () => {
100
+ (0, chai_1.expect)((0, devcontainer_util_1.isWorkspaceMount)(mount('/workspaces/project', 'tmpfs'))).to.be.false;
101
+ });
102
+ });
103
+ describe('getWorkspaceMounts', () => {
104
+ function mount(destination, type = 'bind') {
105
+ return { Destination: destination, Type: type };
106
+ }
107
+ it('should filter out injected mounts and return workspace mounts', () => {
108
+ const mounts = [
109
+ mount('/root/.ssh'),
110
+ mount('/workspaces/project'),
111
+ mount('/tmp/host_gitconfig'),
112
+ mount('/app'),
113
+ ];
114
+ const result = (0, devcontainer_util_1.getWorkspaceMounts)(mounts);
115
+ (0, chai_1.expect)(result.map(m => m.Destination)).to.deep.equal(['/workspaces/project', '/app']);
116
+ });
117
+ it('should return empty array when all mounts are injected', () => {
118
+ const mounts = [
119
+ mount('/root/.ssh'),
120
+ mount('/home/user/.gitconfig'),
121
+ ];
122
+ (0, chai_1.expect)((0, devcontainer_util_1.getWorkspaceMounts)(mounts)).to.deep.equal([]);
123
+ });
124
+ it('should return empty array for empty input', () => {
125
+ (0, chai_1.expect)((0, devcontainer_util_1.getWorkspaceMounts)([])).to.deep.equal([]);
126
+ });
127
+ });
128
+ //# sourceMappingURL=devcontainer-util.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devcontainer-util.spec.js","sourceRoot":"","sources":["../../src/electron-node/devcontainer-util.spec.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,+BAA8B;AAC9B,2DAA0G;AAG1G,SAAS,mBAAmB,CACxB,MAAqD,EACrD,UAAmB;IAEnB,OAAO;QACH,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;QAC3D,MAAM,EAAE,EAAE,UAAU,EAAE,UAAU,IAAI,EAAE,EAAE;KACR,CAAC;AACzC,CAAC;AAED,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAEhC,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAG,mBAAmB,CAAC,CAAC,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC;QAC3E,IAAA,aAAM,EAAC,IAAA,sCAAkB,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9B,MAAM,IAAI,GAAG,mBAAmB,CAAC;YAC7B,EAAE,WAAW,EAAE,YAAY,EAAE;YAC7B,EAAE,WAAW,EAAE,qBAAqB,EAAE;SACzC,CAAC,CAAC;QACH,IAAA,aAAM,EAAC,IAAA,sCAAkB,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACpC,MAAM,IAAI,GAAG,mBAAmB,CAAC;YAC7B,EAAE,WAAW,EAAE,uBAAuB,EAAE;YACxC,EAAE,WAAW,EAAE,qBAAqB,EAAE;SACzC,CAAC,CAAC;QACH,IAAA,aAAM,EAAC,IAAA,sCAAkB,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,MAAM,IAAI,GAAG,mBAAmB,CAAC;YAC7B,EAAE,WAAW,EAAE,qBAAqB,EAAE;YACtC,EAAE,WAAW,EAAE,qBAAqB,EAAE;SACzC,CAAC,CAAC;QACH,IAAA,aAAM,EAAC,IAAA,sCAAkB,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC1D,MAAM,IAAI,GAAG,mBAAmB,CAAC;YAC7B,EAAE,WAAW,EAAE,YAAY,EAAE;YAC7B,EAAE,WAAW,EAAE,qBAAqB,EAAE;YACtC,EAAE,WAAW,EAAE,YAAY,EAAE;SAChC,CAAC,CAAC;QACH,IAAA,aAAM,EAAC,IAAA,sCAAkB,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAC9D,MAAM,IAAI,GAAG,mBAAmB,CAAC,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QAC1E,IAAA,aAAM,EAAC,IAAA,sCAAkB,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAC9D,MAAM,IAAI,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,IAAA,aAAM,EAAC,IAAA,sCAAkB,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAClD,MAAM,IAAI,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACrC,IAAA,aAAM,EAAC,IAAA,sCAAkB,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACnC,MAAM,IAAI,GAAG,mBAAmB,CAAC;YAC7B,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxC,EAAE,WAAW,EAAE,qBAAqB,EAAE;SACzC,CAAC,CAAC;QACH,IAAA,aAAM,EAAC,IAAA,sCAAkB,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAE9B,SAAS,KAAK,CAAC,WAAmB,EAAE,OAAe,MAAM;QACrD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAe,CAAC;IACjE,CAAC;IAED,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACzC,IAAA,aAAM,EAAC,IAAA,oCAAgB,EAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACjC,IAAA,aAAM,EAAC,IAAA,oCAAgB,EAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACvC,IAAA,aAAM,EAAC,IAAA,oCAAgB,EAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACzC,IAAA,aAAM,EAAC,IAAA,oCAAgB,EAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACnC,IAAA,aAAM,EAAC,IAAA,oCAAgB,EAAC,KAAK,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAClC,IAAA,aAAM,EAAC,IAAA,oCAAgB,EAAC,KAAK,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAChF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAEhC,SAAS,KAAK,CAAC,WAAmB,EAAE,OAAe,MAAM;QACrD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAe,CAAC;IACjE,CAAC;IAED,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACrE,MAAM,MAAM,GAAG;YACX,KAAK,CAAC,YAAY,CAAC;YACnB,KAAK,CAAC,qBAAqB,CAAC;YAC5B,KAAK,CAAC,qBAAqB,CAAC;YAC5B,KAAK,CAAC,MAAM,CAAC;SAChB,CAAC;QACF,MAAM,MAAM,GAAG,IAAA,sCAAkB,EAAC,MAAM,CAAC,CAAC;QAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG;YACX,KAAK,CAAC,YAAY,CAAC;YACnB,KAAK,CAAC,uBAAuB,CAAC;SACjC,CAAC;QACF,IAAA,aAAM,EAAC,IAAA,sCAAkB,EAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACjD,IAAA,aAAM,EAAC,IAAA,sCAAkB,EAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,11 +1,12 @@
1
1
  import { ContributionProvider, MaybePromise, URI } from '@theia/core';
2
+ import { VariableContext } from './devcontainer-contributions/variable-resolver-contribution';
2
3
  import { WorkspaceServer } from '@theia/workspace/lib/common';
3
4
  import * as Docker from 'dockerode';
4
5
  import { ContainerConnectionOptions } from '../electron-common/remote-container-connection-provider';
5
6
  import { DevContainerConfiguration } from './devcontainer-file';
6
7
  import { DevContainerFileService } from './dev-container-file-service';
7
8
  import { ContainerOutputProvider } from '../electron-common/container-output-provider';
8
- import { RemoteDockerContainerConnection } from './remote-container-connection-provider';
9
+ import { RemoteDockerContainerConnection } from './remote-docker-container-connection';
9
10
  import { DockerComposeService } from './docker-compose/compose-service';
10
11
  export declare const ContainerCreationContribution: unique symbol;
11
12
  export interface ContainerCreationContribution {
@@ -24,9 +25,8 @@ export declare class DockerContainerService {
24
25
  protected readonly containerCreationContributions: ContributionProvider<ContainerCreationContribution>;
25
26
  protected readonly devContainerFileService: DevContainerFileService;
26
27
  protected readonly dockerComposeService: DockerComposeService;
27
- container: Docker.Container | undefined;
28
28
  getOrCreateContainer(docker: Docker, options: ContainerConnectionOptions, outputProvider?: ContainerOutputProvider): Promise<Docker.Container>;
29
- postConnect(devcontainerFile: string, connection: RemoteDockerContainerConnection, outputProvider?: ContainerOutputProvider): Promise<void>;
29
+ postConnect(devcontainerFile: string, connection: RemoteDockerContainerConnection, outputProvider?: ContainerOutputProvider, context?: VariableContext): Promise<void>;
30
30
  protected buildContainer(docker: Docker, devcontainerFile: string, workspace: URI, outputProvider?: ContainerOutputProvider): Promise<Docker.Container>;
31
31
  }
32
32
  //# sourceMappingURL=docker-container-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"docker-container-service.d.ts","sourceRoot":"","sources":["../../src/electron-node/docker-container-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,KAAK,MAAM,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AACrG,OAAO,EAAE,yBAAyB,EAA2B,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,eAAO,MAAM,6BAA6B,eAA2C,CAAC;AAEtF,MAAM,WAAW,6BAA6B;IAC1C,uBAAuB,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,sBAAsB,EACjE,eAAe,EAAE,yBAAyB,EAC1C,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,uBAAuB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAElE;;OAEG;IACH,gBAAgB,CAAC,CAAC,eAAe,EAAE,yBAAyB,EACxD,SAAS,EAAE,MAAM,CAAC,SAAS,EAC3B,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,uBAAuB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAElE;;OAEG;IACH,iBAAiB,CAAC,CAAC,eAAe,EAAE,yBAAyB,EAAE,UAAU,EAAE,+BAA+B,EACtG,cAAc,CAAC,EAAE,uBAAuB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;CACrE;AAED,qBACa,sBAAsB;IAG/B,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAGpD,SAAS,CAAC,QAAQ,CAAC,8BAA8B,EAAE,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;IAGvG,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAGpE,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAE9D,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAElC,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,EAAE,cAAc,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;IAyB9I,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,+BAA+B,EAAE,cAAc,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;cASjI,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;CAuDhK"}
1
+ {"version":3,"file":"docker-container-service.d.ts","sourceRoot":"","sources":["../../src/electron-node/docker-container-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAE9F,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,KAAK,MAAM,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AACrG,OAAO,EAAE,yBAAyB,EAA2B,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,eAAO,MAAM,6BAA6B,eAA2C,CAAC;AAEtF,MAAM,WAAW,6BAA6B;IAC1C,uBAAuB,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,sBAAsB,EACjE,eAAe,EAAE,yBAAyB,EAC1C,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,uBAAuB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAElE;;OAEG;IACH,gBAAgB,CAAC,CAAC,eAAe,EAAE,yBAAyB,EACxD,SAAS,EAAE,MAAM,CAAC,SAAS,EAC3B,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,uBAAuB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAElE;;OAEG;IACH,iBAAiB,CAAC,CAAC,eAAe,EAAE,yBAAyB,EAAE,UAAU,EAAE,+BAA+B,EACtG,cAAc,CAAC,EAAE,uBAAuB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;CACrE;AAED,qBACa,sBAAsB;IAG/B,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAGpD,SAAS,CAAC,QAAQ,CAAC,8BAA8B,EAAE,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;IAGvG,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAGpE,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAExD,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,EAAE,cAAc,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;IAwB9I,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,+BAA+B,EAAE,cAAc,CAAC,EAAE,uBAAuB,EAC7H,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;cAS7B,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;CAuDhK"}
@@ -28,7 +28,7 @@ let DockerContainerService = class DockerContainerService {
28
28
  async getOrCreateContainer(docker, options, outputProvider) {
29
29
  let container;
30
30
  const workspace = new core_1.URI(options.workspacePath ?? await this.workspaceServer.getMostRecentlyUsedWorkspace());
31
- if (options.lastContainerInfo && fs.statSync(options.devcontainerFile).mtimeMs < options.lastContainerInfo.lastUsed) {
31
+ if (options.lastContainerInfo && fs.pathExistsSync(options.devcontainerFile) && fs.statSync(options.devcontainerFile).mtimeMs < options.lastContainerInfo.lastUsed) {
32
32
  try {
33
33
  container = docker.getContainer(options.lastContainerInfo.id);
34
34
  if ((await container.inspect()).State.Running) {
@@ -46,11 +46,10 @@ let DockerContainerService = class DockerContainerService {
46
46
  if (!container) {
47
47
  container = await this.buildContainer(docker, options.devcontainerFile, workspace, outputProvider);
48
48
  }
49
- this.container = container;
50
49
  return container;
51
50
  }
52
- async postConnect(devcontainerFile, connection, outputProvider) {
53
- const devcontainerConfig = await this.devContainerFileService.getConfiguration(devcontainerFile);
51
+ async postConnect(devcontainerFile, connection, outputProvider, context) {
52
+ const devcontainerConfig = await this.devContainerFileService.getConfiguration(devcontainerFile, context);
54
53
  for (const containerCreateContrib of this.containerCreationContributions.getContributions()) {
55
54
  await containerCreateContrib.handlePostConnect?.(devcontainerConfig, connection, outputProvider);
56
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"docker-container-service.js","sourceRoot":"","sources":["../../src/electron-node/docker-container-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,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,sCAAsE;AACtE,4DAAyE;AACzE,wDAA8D;AAC9D,kDAAkD;AAIlD,6EAAuE;AAGvE,sEAAwE;AAE3D,QAAA,6BAA6B,GAAG,MAAM,CAAC,gCAAgC,CAAC,CAAC;AAwB/E,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAgB/B,KAAK,CAAC,oBAAoB,CAAC,MAAc,EAAE,OAAmC,EAAE,cAAwC;QACpH,IAAI,SAAS,CAAC;QAEd,MAAM,SAAS,GAAG,IAAI,UAAG,CAAC,OAAO,CAAC,aAAa,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,4BAA4B,EAAE,CAAC,CAAC;QAE9G,IAAI,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;YAClH,IAAI,CAAC;gBACD,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;gBAC9D,IAAI,CAAC,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBAC5C,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACJ,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;gBAC5B,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,SAAS,GAAG,SAAS,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YACrE,CAAC;QACL,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QACvG,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,gBAAwB,EAAE,UAA2C,EAAE,cAAwC;QAC7H,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAEjG,KAAK,MAAM,sBAAsB,IAAI,IAAI,CAAC,8BAA8B,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC1F,MAAM,sBAAsB,CAAC,iBAAiB,EAAE,CAAC,kBAAkB,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;QACrG,CAAC;IAEL,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,gBAAwB,EAAE,SAAc,EAAE,cAAwC;QAC7H,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAEjG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtB,iDAAiD;YACjD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,sBAAsB,GAAkC;YAC1D,GAAG,EAAE,IAAI;YACT,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE;gBACR,YAAY,EAAE,EAAE;gBAChB,MAAM,EAAE,CAAC;wBACL,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE;wBACjC,MAAM,EAAE,eAAe,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE;wBAC5C,IAAI,EAAE,MAAM;qBACf,CAAC;aACL;SACJ,CAAC;QAEF,KAAK,MAAM,sBAAsB,IAAI,IAAI,CAAC,8BAA8B,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC1F,MAAM,sBAAsB,CAAC,uBAAuB,EAAE,CAAC,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QAC/H,CAAC;QAED,0FAA0F;QAC1F,qFAAqF;QACrF,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;YACxC,MAAM,eAAe,GAAI,kBAA8C,CAAC,eAAe,CAAC;YACxF,IAAI,eAAe,KAAK,KAAK,EAAE,CAAC;gBAC5B,sBAAsB,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,8BAA8B,CAAC,CAAC;YACnF,CAAC;QACL,CAAC;QAED,IAAI,SAA2B,CAAC;QAEhC,IAAI,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;YACvC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,cAAc,CAAC,CAAC;YACnI,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,8BAA8B,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACtH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,yDAAyD,aAAa,EAAE,CAAC,CAAC;YAC9F,CAAC;YACD,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACJ,SAAS,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;YACjE,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;QAED,KAAK,MAAM,sBAAsB,IAAI,IAAI,CAAC,8BAA8B,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC1F,MAAM,sBAAsB,CAAC,gBAAgB,EAAE,CAAC,kBAAkB,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QAC3G,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;CAEJ,CAAA;AAzGY,wDAAsB;AAGZ;IADlB,IAAA,kBAAM,EAAC,wBAAe,CAAC;;+DAC4B;AAGjC;IADlB,IAAA,kBAAM,EAAC,2BAAoB,CAAC;IAAE,IAAA,iBAAK,EAAC,qCAA6B,CAAC;;8EACoC;AAGpF;IADlB,IAAA,kBAAM,EAAC,oDAAuB,CAAC;sCACY,oDAAuB;uEAAC;AAGjD;IADlB,IAAA,kBAAM,EAAC,sCAAoB,CAAC;sCACY,sCAAoB;oEAAC;iCAZrD,sBAAsB;IADlC,IAAA,sBAAU,GAAE;GACA,sBAAsB,CAyGlC"}
1
+ {"version":3,"file":"docker-container-service.js","sourceRoot":"","sources":["../../src/electron-node/docker-container-service.ts"],"names":[],"mappings":"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"}
@@ -1,88 +1,49 @@
1
- import { ContainerConnectionOptions, ContainerConnectionResult, DevContainerFile, RemoteContainerConnectionProvider, RunningContainerInfo } from '../electron-common/remote-container-connection-provider';
2
- import { RemoteConnection, RemoteExecOptions, RemoteExecResult, RemoteExecTester } from '@theia/remote/lib/electron-node/remote-types';
3
- import { RemoteSetupResult, RemoteSetupService } from '@theia/remote/lib/electron-node/setup/remote-setup-service';
1
+ import { AttachContainerArgs, AttachContainerOptions, ContainerConnectionOptions, ContainerConnectionResult, DevContainerFile, RemoteContainerConnectionProvider, RunningContainerInfo, WorkspaceCandidate } from '../electron-common/remote-container-connection-provider';
4
2
  import { RemoteConnectionService } from '@theia/remote/lib/electron-node/remote-connection-service';
3
+ import { RemoteSetupService } from '@theia/remote/lib/electron-node/setup/remote-setup-service';
5
4
  import { RemoteProxyServerProvider } from '@theia/remote/lib/electron-node/remote-proxy-server-provider';
6
- import { Emitter, Event, MessageService, RpcServer, ILogger } from '@theia/core';
7
- import { Socket } from 'net';
5
+ import { RemoteStatusReport } from '@theia/remote/lib/electron-node/remote-types';
6
+ import { RpcServer, ILogger, MessageService } from '@theia/core';
8
7
  import * as Docker from 'dockerode';
9
- import { DockerContainerService } from './docker-container-service';
10
- import { WriteStream } from 'tty';
11
8
  import { DevContainerFileService } from './dev-container-file-service';
9
+ import { DockerContainerService } from './docker-container-service';
12
10
  import { ContainerOutputProvider } from '../electron-common/container-output-provider';
11
+ import { DevContainerCliContribution } from './dev-container-cli-contribution';
12
+ import { RemoteDockerContainerConnection } from './remote-docker-container-connection';
13
+ export { RemoteDockerContainerConnection, RemoteContainerConnectionOptions } from './remote-docker-container-connection';
13
14
  import { DevContainerConfiguration } from './devcontainer-file';
14
15
  export declare class DevContainerConnectionProvider implements RemoteContainerConnectionProvider, RpcServer<ContainerOutputProvider> {
15
16
  protected readonly remoteConnectionService: RemoteConnectionService;
16
17
  protected readonly remoteSetup: RemoteSetupService;
17
- protected readonly messageService: MessageService;
18
18
  protected readonly serverProvider: RemoteProxyServerProvider;
19
19
  protected readonly containerService: DockerContainerService;
20
20
  protected readonly devContainerFileService: DevContainerFileService;
21
- protected readonly remoteService: RemoteConnectionService;
21
+ protected readonly cliContribution: DevContainerCliContribution;
22
22
  protected readonly logger: ILogger;
23
+ protected readonly messageService: MessageService;
23
24
  protected outputProvider: ContainerOutputProvider | undefined;
24
25
  setClient(client: ContainerOutputProvider): void;
26
+ createDockerConnection(): Promise<Docker>;
27
+ listRunningContainers(docker?: Docker): Promise<RunningContainerInfo[]>;
28
+ getWorkspaceCandidates(containerId: string, docker?: Docker): Promise<WorkspaceCandidate[]>;
29
+ scanForDevContainerConfig(containerId: string, workspacePath: string, docker?: Docker): Promise<string | undefined>;
25
30
  connectToContainer(options: ContainerConnectionOptions): Promise<ContainerConnectionResult>;
26
31
  getDevContainerFiles(workspacePath: string): Promise<DevContainerFile[]>;
27
- createContainerConnection(container: Docker.Container, docker: Docker, config: DevContainerConfiguration): Promise<RemoteDockerContainerConnection>;
32
+ getAttachContainerArgs(): Promise<AttachContainerArgs | undefined>;
33
+ attachToContainer(options: AttachContainerOptions): Promise<ContainerConnectionResult>;
28
34
  getCurrentContainerInfo(port: number): Promise<Docker.ContainerInspectInfo | undefined>;
29
- listRunningContainers(): Promise<RunningContainerInfo[]>;
30
- attachToContainer(containerId: string): Promise<ContainerConnectionResult>;
31
- protected inferWorkspacePath(containerInfo: Docker.ContainerInspectInfo): string;
32
35
  removeContainer(containerId: string): Promise<void>;
33
- dispose(): void;
34
- }
35
- export interface RemoteContainerConnectionOptions {
36
- id: string;
37
- name: string;
38
- type: string;
39
- docker: Docker;
40
- container: Docker.Container;
41
- config: DevContainerConfiguration;
42
- logger: ILogger;
43
- }
44
- interface ContainerTerminalSession {
45
- execution: Docker.Exec;
46
- stdout: WriteStream;
47
- stderr: WriteStream;
48
- executeCommand(cmd: string, args?: string[]): Promise<{
49
- stdout: string;
50
- stderr: string;
51
- }>;
52
- }
53
- interface ContainerTerminalSession {
54
- execution: Docker.Exec;
55
- stdout: WriteStream;
56
- stderr: WriteStream;
57
- executeCommand(cmd: string, args?: string[]): Promise<{
58
- stdout: string;
59
- stderr: string;
36
+ protected doRemoveContainer(containerId: string, docker?: Docker): Promise<void>;
37
+ /**
38
+ * Creates a remote connection, runs setup (injecting the Theia backend into the container),
39
+ * registers the connection, and starts a local proxy server.
40
+ *
41
+ * @returns the local proxy port and the remote connection
42
+ */
43
+ protected setupRemoteConnection(container: Docker.Container, docker: Docker, config: DevContainerConfiguration, nodeDownloadTemplate: string | undefined, report: RemoteStatusReport): Promise<{
44
+ localPort: number;
45
+ remote: RemoteDockerContainerConnection;
60
46
  }>;
47
+ dispose(): void;
61
48
  }
62
- export declare class RemoteDockerContainerConnection implements RemoteConnection {
63
- id: string;
64
- name: string;
65
- type: string;
66
- localPort: number;
67
- remotePort: number;
68
- docker: Docker;
69
- container: Docker.Container;
70
- remoteSetupResult: RemoteSetupResult;
71
- protected readonly logger: ILogger;
72
- protected config: DevContainerConfiguration;
73
- protected activeTerminalSession: ContainerTerminalSession | undefined;
74
- protected readonly onDidDisconnectEmitter: Emitter<void>;
75
- onDidDisconnect: Event<void>;
76
- constructor(options: RemoteContainerConnectionOptions);
77
- protected getRemoteEnv(): string[] | undefined;
78
- forwardOut(socket: Socket, port?: number): Promise<void>;
79
- exec(cmd: string, args?: string[], options?: RemoteExecOptions): Promise<RemoteExecResult>;
80
- execPartial(cmd: string, tester: RemoteExecTester, args?: string[], options?: RemoteExecOptions): Promise<RemoteExecResult>;
81
- getDockerHost(): string;
82
- copy(localPath: string | Buffer | NodeJS.ReadableStream, remotePath: string): Promise<void>;
83
- disposeSync(): void;
84
- dispose(): Promise<void>;
85
- protected shutdownContainer(sync: boolean): Promise<unknown>;
86
- }
87
- export {};
88
49
  //# sourceMappingURL=remote-container-connection-provider.d.ts.map
@@ -1 +1 @@
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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"}
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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"}