@wocker/ws 1.0.22 → 1.0.23

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 (105) hide show
  1. package/lib/AppModule.js +36 -29
  2. package/lib/controllers/DebugController.d.ts +2 -1
  3. package/lib/controllers/DebugController.js +7 -7
  4. package/lib/controllers/ExperimentalController.d.ts +8 -0
  5. package/lib/controllers/ExperimentalController.js +77 -0
  6. package/lib/controllers/PluginController.d.ts +2 -1
  7. package/lib/controllers/PluginController.js +4 -3
  8. package/lib/controllers/PresetController.d.ts +5 -1
  9. package/lib/controllers/PresetController.js +11 -8
  10. package/lib/controllers/ProjectController.d.ts +6 -2
  11. package/lib/controllers/ProjectController.js +80 -59
  12. package/lib/controllers/index.d.ts +1 -3
  13. package/lib/controllers/index.js +1 -3
  14. package/lib/env.d.ts +1 -2
  15. package/lib/env.js +2 -3
  16. package/lib/main.js +7 -3
  17. package/lib/makes/Logger.d.ts +1 -1
  18. package/lib/makes/Plugin.d.ts +0 -1
  19. package/lib/makes/Plugin.js +0 -1
  20. package/lib/makes/index.d.ts +0 -1
  21. package/lib/makes/index.js +0 -1
  22. package/lib/modules/app/index.d.ts +2 -0
  23. package/lib/modules/app/index.js +16 -0
  24. package/lib/modules/docker/index.d.ts +8 -0
  25. package/lib/modules/docker/index.js +41 -0
  26. package/lib/modules/docker/services/ContainerService.d.ts +14 -0
  27. package/lib/modules/docker/services/ContainerService.js +115 -0
  28. package/lib/{services → modules/docker/services}/DockerService.d.ts +12 -5
  29. package/lib/{services → modules/docker/services}/DockerService.js +27 -114
  30. package/lib/modules/docker/services/ImageService.d.ts +18 -0
  31. package/lib/modules/docker/services/ImageService.js +68 -0
  32. package/lib/modules/docker/services/ModemService.d.ts +14 -0
  33. package/lib/modules/docker/services/ModemService.js +137 -0
  34. package/lib/modules/docker/services/ProtoService.d.ts +6 -0
  35. package/lib/modules/docker/services/ProtoService.js +20 -0
  36. package/lib/modules/index.d.ts +3 -0
  37. package/lib/{keystore → modules}/index.js +3 -1
  38. package/lib/{controllers → modules/keystore/controllers}/KeystoreController.d.ts +2 -2
  39. package/lib/{controllers → modules/keystore/controllers}/KeystoreController.js +5 -5
  40. package/lib/modules/keystore/index.d.ts +4 -0
  41. package/lib/modules/keystore/index.js +29 -0
  42. package/lib/{keystore → modules/keystore}/providers/FileKeystoreProvider.d.ts +1 -1
  43. package/lib/{keystore → modules/keystore}/providers/FileKeystoreProvider.js +1 -1
  44. package/lib/{keystore → modules/keystore}/providers/KeytarKeystoreProvider.js +1 -1
  45. package/lib/{keystore → modules/keystore/services}/KeystoreService.d.ts +1 -1
  46. package/lib/{keystore → modules/keystore/services}/KeystoreService.js +3 -3
  47. package/lib/{controllers → modules/proxy/controllers}/CertController.d.ts +2 -1
  48. package/lib/{controllers → modules/proxy/controllers}/CertController.js +4 -3
  49. package/lib/{controllers → modules/proxy/controllers}/ProxyController.d.ts +4 -1
  50. package/lib/{controllers → modules/proxy/controllers}/ProxyController.js +9 -6
  51. package/lib/modules/proxy/index.d.ts +5 -0
  52. package/lib/modules/proxy/index.js +39 -0
  53. package/lib/{services → modules/proxy/services}/CertService.d.ts +3 -3
  54. package/lib/{services → modules/proxy/services}/CertService.js +9 -9
  55. package/lib/{services → modules/proxy/services}/ProxyService.d.ts +2 -2
  56. package/lib/{services → modules/proxy/services}/ProxyService.js +15 -7
  57. package/lib/services/AppConfigService.d.ts +2 -13
  58. package/lib/services/AppConfigService.js +17 -26
  59. package/lib/services/PluginService.js +6 -8
  60. package/lib/services/PresetService.js +2 -3
  61. package/lib/services/ProjectService.d.ts +4 -4
  62. package/lib/services/ProjectService.js +9 -10
  63. package/lib/utils/followProgress2.d.ts +1 -0
  64. package/lib/utils/followProgress2.js +63 -0
  65. package/lib/utils/index.d.ts +1 -2
  66. package/lib/utils/index.js +1 -2
  67. package/package.json +5 -6
  68. package/proto/buildkit.proto +55 -0
  69. package/proto/solver/pb/ops.proto +443 -0
  70. package/lib/keystore/index.d.ts +0 -1
  71. package/lib/keystore/types/Encryption.d.ts +0 -9
  72. package/lib/keystore/types/Encryption.js +0 -81
  73. package/lib/keystore/types/Encryptor.d.ts +0 -10
  74. package/lib/keystore/types/Encryptor.js +0 -59
  75. package/lib/makes/FS.d.ts +0 -27
  76. package/lib/makes/FS.js +0 -284
  77. package/lib/makes/LineConvertStream.d.ts +0 -11
  78. package/lib/makes/LineConvertStream.js +0 -42
  79. package/lib/plugins/MongodbPlugin.d.ts +0 -20
  80. package/lib/plugins/MongodbPlugin.js +0 -288
  81. package/lib/plugins/index.d.ts +0 -1
  82. package/lib/plugins/index.js +0 -17
  83. package/lib/services/index.d.ts +0 -10
  84. package/lib/services/index.js +0 -26
  85. package/lib/utils/followProgress.d.ts +0 -1
  86. package/lib/utils/followProgress.js +0 -73
  87. /package/lib/{utils/format-size-units.d.ts → modules/docker/utils/formatSizeUnits.d.ts} +0 -0
  88. /package/lib/{utils/format-size-units.js → modules/docker/utils/formatSizeUnits.js} +0 -0
  89. /package/lib/{keystore → modules/keystore}/providers/KeytarKeystoreProvider.d.ts +0 -0
  90. /package/lib/{keystore → modules/keystore}/types/FileKeystore.d.ts +0 -0
  91. /package/lib/{keystore → modules/keystore}/types/FileKeystore.js +0 -0
  92. /package/lib/{keystore → modules/keystore}/types/Keytar.d.ts +0 -0
  93. /package/lib/{keystore → modules/keystore}/types/Keytar.js +0 -0
  94. /package/lib/{keystore → modules/keystore}/utils/createEncryptionKey.d.ts +0 -0
  95. /package/lib/{keystore → modules/keystore}/utils/createEncryptionKey.js +0 -0
  96. /package/lib/{keystore → modules/keystore}/utils/createPasswordHash.d.ts +0 -0
  97. /package/lib/{keystore → modules/keystore}/utils/createPasswordHash.js +0 -0
  98. /package/lib/{keystore → modules/keystore}/utils/decrypt.d.ts +0 -0
  99. /package/lib/{keystore → modules/keystore}/utils/decrypt.js +0 -0
  100. /package/lib/{keystore → modules/keystore}/utils/encrypt.d.ts +0 -0
  101. /package/lib/{keystore → modules/keystore}/utils/encrypt.js +0 -0
  102. /package/lib/{keystore → modules/keystore}/utils/index.d.ts +0 -0
  103. /package/lib/{keystore → modules/keystore}/utils/index.js +0 -0
  104. /package/lib/{keystore → modules/keystore}/utils/verifyPasswordHash.d.ts +0 -0
  105. /package/lib/{keystore → modules/keystore}/utils/verifyPasswordHash.js +0 -0
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ContainerService = void 0;
13
+ const core_1 = require("@wocker/core");
14
+ const ModemService_1 = require("./ModemService");
15
+ let ContainerService = class ContainerService {
16
+ constructor(logService, modemService) {
17
+ this.logService = logService;
18
+ this.modemService = modemService;
19
+ }
20
+ get docker() {
21
+ return this.modemService.docker;
22
+ }
23
+ async get(name) {
24
+ const containers = await this.docker.listContainers({
25
+ all: true,
26
+ filters: {
27
+ name: [name]
28
+ }
29
+ });
30
+ const container = containers.find((container) => {
31
+ return container.Names.indexOf("/" + name) >= 0;
32
+ });
33
+ if (!container) {
34
+ return null;
35
+ }
36
+ return this.docker.getContainer(container.Id);
37
+ }
38
+ async rm(name) {
39
+ const container = await this.get(name);
40
+ if (!container) {
41
+ return;
42
+ }
43
+ const { State: { Status } } = await container.inspect();
44
+ if (Status === "running" || Status === "restarting") {
45
+ try {
46
+ await container.stop();
47
+ }
48
+ catch (err) {
49
+ this.logService.error("DockerService.removeContainer", err.message);
50
+ }
51
+ }
52
+ try {
53
+ await container.remove();
54
+ }
55
+ catch (err) {
56
+ this.logService.error("DockerService.removeContainer: ", err.message);
57
+ }
58
+ }
59
+ async exec(nameOrContainer, options, _tty) {
60
+ const container = typeof nameOrContainer === "string"
61
+ ? await this.get(nameOrContainer)
62
+ : nameOrContainer;
63
+ if (!container) {
64
+ return;
65
+ }
66
+ const { cmd = [], tty = false, user } = Array.isArray(options) ? {
67
+ cmd: options,
68
+ tty: _tty
69
+ } : options;
70
+ const exec = await container.exec({
71
+ AttachStdin: true,
72
+ AttachStdout: true,
73
+ AttachStderr: true,
74
+ Tty: tty,
75
+ User: user,
76
+ Cmd: cmd,
77
+ ConsoleSize: [
78
+ process.stdout.rows,
79
+ process.stdout.columns
80
+ ]
81
+ });
82
+ const stream = await exec.start({
83
+ hijack: true,
84
+ stdin: tty,
85
+ Tty: tty
86
+ });
87
+ if (tty) {
88
+ const handleResize = async () => {
89
+ const [width, height] = process.stdout.getWindowSize();
90
+ this.logService.debug("Exec resize", {
91
+ width,
92
+ height
93
+ });
94
+ await exec.resize({
95
+ w: width,
96
+ h: height
97
+ });
98
+ };
99
+ process.on("SIGWINCH", handleResize);
100
+ try {
101
+ await this.modemService.attachStream(stream);
102
+ }
103
+ finally {
104
+ process.off("SIGWINCH", handleResize);
105
+ }
106
+ }
107
+ return stream;
108
+ }
109
+ };
110
+ exports.ContainerService = ContainerService;
111
+ exports.ContainerService = ContainerService = __decorate([
112
+ (0, core_1.Injectable)(),
113
+ __metadata("design:paramtypes", [core_1.LogService,
114
+ ModemService_1.ModemService])
115
+ ], ContainerService);
@@ -1,10 +1,16 @@
1
- import { DockerService as CoreDockerService, DockerServiceParams as Params } from "@wocker/core";
2
- import Docker, { Container, Volume, VolumeCreateResponse } from "dockerode";
3
- import { LogService } from "./LogService";
1
+ import { DockerService as CoreDockerService, DockerServiceParams as Params, LogService } from "@wocker/core";
2
+ import type Docker from "dockerode";
3
+ import type { Container, Volume, VolumeCreateResponse } from "dockerode";
4
+ import { ContainerService } from "./ContainerService";
5
+ import { ModemService } from "./ModemService";
6
+ import { ImageService } from "./ImageService";
4
7
  export declare class DockerService extends CoreDockerService {
5
8
  protected readonly logService: LogService;
6
- protected docker: Docker;
7
- constructor(logService: LogService);
9
+ protected readonly modemService: ModemService;
10
+ protected readonly containerService: ContainerService;
11
+ protected readonly imageService: ImageService;
12
+ constructor(logService: LogService, modemService: ModemService, containerService: ContainerService, imageService: ImageService);
13
+ get docker(): Docker;
8
14
  createVolume(name: string): Promise<VolumeCreateResponse>;
9
15
  hasVolume(name: string): Promise<boolean>;
10
16
  getVolume(name: string): Promise<Volume>;
@@ -21,4 +27,5 @@ export declare class DockerService extends CoreDockerService {
21
27
  attachStream(stream: NodeJS.ReadWriteStream): Promise<NodeJS.ReadWriteStream>;
22
28
  exec(nameOrContainer: string | Container, options: Params.Exec | string[], _tty?: boolean): Promise<import("stream").Duplex>;
23
29
  logs(containerOrName: string | Container): Promise<NodeJS.ReadableStream>;
30
+ followProgress(stream: NodeJS.ReadableStream): Promise<void>;
24
31
  }
@@ -8,23 +8,22 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
12
  exports.DockerService = void 0;
16
13
  const core_1 = require("@wocker/core");
17
- const dockerode_1 = __importDefault(require("dockerode"));
18
- const utils_1 = require("../utils");
19
- const makes_1 = require("../makes");
20
- const LogService_1 = require("./LogService");
14
+ const ContainerService_1 = require("./ContainerService");
15
+ const ModemService_1 = require("./ModemService");
16
+ const ImageService_1 = require("./ImageService");
21
17
  let DockerService = class DockerService extends core_1.DockerService {
22
- constructor(logService) {
18
+ constructor(logService, modemService, containerService, imageService) {
23
19
  super();
24
20
  this.logService = logService;
25
- this.docker = new dockerode_1.default({
26
- socketPath: "/var/run/docker.sock"
27
- });
21
+ this.modemService = modemService;
22
+ this.containerService = containerService;
23
+ this.imageService = imageService;
24
+ }
25
+ get docker() {
26
+ return this.modemService.docker;
28
27
  }
29
28
  async createVolume(name) {
30
29
  return await this.docker.createVolume({
@@ -136,44 +135,15 @@ let DockerService = class DockerService extends core_1.DockerService {
136
135
  });
137
136
  }
138
137
  async getContainer(name) {
139
- const containers = await this.docker.listContainers({
140
- all: true,
141
- filters: {
142
- name: [name]
143
- }
144
- });
145
- const container = containers.find((container) => {
146
- return container.Names.indexOf("/" + name) >= 0;
147
- });
148
- if (container) {
149
- return this.docker.getContainer(container.Id);
150
- }
151
- return null;
138
+ return this.containerService.get(name);
152
139
  }
153
140
  async removeContainer(name) {
154
- const container = await this.getContainer(name);
155
- if (!container) {
156
- return;
157
- }
158
- const { State: { Status } } = await container.inspect();
159
- if (Status === "running" || Status === "restarting") {
160
- try {
161
- await container.stop();
162
- }
163
- catch (err) {
164
- makes_1.Logger.error("DockerService.removeContainer", err.message);
165
- }
166
- }
167
- try {
168
- await container.remove();
169
- }
170
- catch (err) {
171
- makes_1.Logger.error("DockerService.removeContainer: ", err.message);
172
- }
141
+ await this.containerService.rm(name);
173
142
  }
174
143
  async buildImage(params) {
175
144
  const { tag, labels = {}, buildArgs = {}, context, src } = params;
176
- const files = await makes_1.FS.readdirFiles(context, {
145
+ const fs = new core_1.FileSystem(context);
146
+ const files = await fs.readdirFiles("", {
177
147
  recursive: true
178
148
  });
179
149
  const stream = await this.docker.buildImage({
@@ -193,27 +163,13 @@ let DockerService = class DockerService extends core_1.DockerService {
193
163
  }, {}),
194
164
  dockerfile: src
195
165
  });
196
- await (0, utils_1.followProgress)(stream);
166
+ await this.modemService.followProgress(stream);
197
167
  }
198
168
  async imageExists(tag) {
199
- const image = this.docker.getImage(tag);
200
- try {
201
- await image.inspect();
202
- return true;
203
- }
204
- catch (ignore) {
205
- return false;
206
- }
169
+ return this.imageService.exists(tag);
207
170
  }
208
171
  async imageRm(tag, force = false) {
209
- const image = this.docker.getImage(tag);
210
- const exists = await this.imageExists(tag);
211
- if (!exists) {
212
- return;
213
- }
214
- await image.remove({
215
- force
216
- });
172
+ await this.imageService.rm(tag, force);
217
173
  }
218
174
  async imageLs(options) {
219
175
  const { tag, reference, labels } = options || {};
@@ -241,12 +197,7 @@ let DockerService = class DockerService extends core_1.DockerService {
241
197
  });
242
198
  }
243
199
  async pullImage(tag) {
244
- const exists = await this.imageExists(tag);
245
- if (exists) {
246
- return;
247
- }
248
- const stream = await this.docker.pull(tag);
249
- await (0, utils_1.followProgress)(stream);
200
+ await this.imageService.pull(tag);
250
201
  }
251
202
  async attach(containerOrName) {
252
203
  let container = typeof containerOrName === "string"
@@ -277,54 +228,10 @@ let DockerService = class DockerService extends core_1.DockerService {
277
228
  return stream;
278
229
  }
279
230
  async attachStream(stream) {
280
- if (process.stdin.isTTY) {
281
- process.stdin.setRawMode(true);
282
- }
283
- process.stdin.resume();
284
- process.stdin.setEncoding("utf8");
285
- process.stdin.pipe(stream);
286
- stream.setEncoding("utf8");
287
- stream.pipe(process.stdout);
288
- const onEnd = () => {
289
- process.stdin.pause();
290
- if (process.stdin.isTTY) {
291
- process.stdin.setRawMode(false);
292
- }
293
- process.stdin.unpipe(stream);
294
- stream.unpipe(process.stdout);
295
- };
296
- stream.on("end", onEnd);
297
- stream.on("error", onEnd);
298
- return stream;
231
+ return this.modemService.attachStream(stream);
299
232
  }
300
233
  async exec(nameOrContainer, options, _tty) {
301
- const container = typeof nameOrContainer === "string"
302
- ? await this.getContainer(nameOrContainer)
303
- : nameOrContainer;
304
- if (!container) {
305
- return;
306
- }
307
- const { cmd = [], tty = false, user } = Array.isArray(options) ? {
308
- cmd: options,
309
- tty: _tty
310
- } : options;
311
- const exec = await container.exec({
312
- AttachStdin: true,
313
- AttachStdout: true,
314
- AttachStderr: tty,
315
- Tty: tty,
316
- User: user,
317
- Cmd: cmd
318
- });
319
- const stream = await exec.start({
320
- hijack: true,
321
- stdin: tty,
322
- Tty: tty
323
- });
324
- if (tty) {
325
- await this.attachStream(stream);
326
- }
327
- return stream;
234
+ return await this.containerService.exec(nameOrContainer, options, _tty);
328
235
  }
329
236
  async logs(containerOrName) {
330
237
  const container = typeof containerOrName === "string"
@@ -347,9 +254,15 @@ let DockerService = class DockerService extends core_1.DockerService {
347
254
  });
348
255
  return stream;
349
256
  }
257
+ async followProgress(stream) {
258
+ await this.modemService.followProgress(stream);
259
+ }
350
260
  };
351
261
  exports.DockerService = DockerService;
352
262
  exports.DockerService = DockerService = __decorate([
353
263
  (0, core_1.Injectable)("DOCKER_SERVICE"),
354
- __metadata("design:paramtypes", [LogService_1.LogService])
264
+ __metadata("design:paramtypes", [core_1.LogService,
265
+ ModemService_1.ModemService,
266
+ ContainerService_1.ContainerService,
267
+ ImageService_1.ImageService])
355
268
  ], DockerService);
@@ -0,0 +1,18 @@
1
+ import type Docker from "dockerode";
2
+ import { ModemService } from "./ModemService";
3
+ type BuildParams = {
4
+ tag: string;
5
+ context: string;
6
+ dockerfile: string;
7
+ version: "1" | "2";
8
+ };
9
+ export declare class ImageService {
10
+ protected readonly modemService: ModemService;
11
+ constructor(modemService: ModemService);
12
+ get docker(): Docker;
13
+ build(params: BuildParams): Promise<void>;
14
+ exists(tag: string): Promise<boolean>;
15
+ pull(tag: string): Promise<void>;
16
+ rm(tag: string, force?: boolean): Promise<void>;
17
+ }
18
+ export {};
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ImageService = void 0;
13
+ const core_1 = require("@wocker/core");
14
+ const ModemService_1 = require("./ModemService");
15
+ let ImageService = class ImageService {
16
+ constructor(modemService) {
17
+ this.modemService = modemService;
18
+ }
19
+ get docker() {
20
+ return this.modemService.docker;
21
+ }
22
+ async build(params) {
23
+ const { tag, context, dockerfile, version } = params;
24
+ const files = (new core_1.FileSystem(context)).readdir("", {
25
+ recursive: true
26
+ });
27
+ const stream = await this.docker.buildImage({
28
+ context,
29
+ src: files
30
+ }, {
31
+ t: tag,
32
+ dockerfile,
33
+ version
34
+ });
35
+ await this.modemService.followProgress(stream);
36
+ }
37
+ async exists(tag) {
38
+ const image = this.docker.getImage(tag);
39
+ try {
40
+ await image.inspect();
41
+ return true;
42
+ }
43
+ catch (err) {
44
+ return false;
45
+ }
46
+ }
47
+ async pull(tag) {
48
+ if (await this.exists(tag)) {
49
+ return;
50
+ }
51
+ const stream = await this.docker.pull(tag);
52
+ await this.modemService.followProgress(stream);
53
+ }
54
+ async rm(tag, force = false) {
55
+ if (!await this.exists(tag)) {
56
+ return;
57
+ }
58
+ const image = this.docker.getImage(tag);
59
+ await image.remove({
60
+ force
61
+ });
62
+ }
63
+ };
64
+ exports.ImageService = ImageService;
65
+ exports.ImageService = ImageService = __decorate([
66
+ (0, core_1.Injectable)(),
67
+ __metadata("design:paramtypes", [ModemService_1.ModemService])
68
+ ], ImageService);
@@ -0,0 +1,14 @@
1
+ import { ModemService as CoreModemService } from "@wocker/core";
2
+ import type Modem from "docker-modem";
3
+ import type Docker from "dockerode";
4
+ import { ProtoService } from "./ProtoService";
5
+ export declare class ModemService extends CoreModemService {
6
+ protected readonly protoService: ProtoService;
7
+ protected _modem?: Modem;
8
+ protected _docker?: Docker;
9
+ constructor(protoService: ProtoService);
10
+ get modem(): Modem;
11
+ get docker(): Docker;
12
+ attachStream(stream: NodeJS.ReadWriteStream): Promise<NodeJS.ReadWriteStream>;
13
+ followProgress(stream: NodeJS.ReadableStream): Promise<void>;
14
+ }
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ModemService = void 0;
13
+ const core_1 = require("@wocker/core");
14
+ const formatSizeUnits_1 = require("../utils/formatSizeUnits");
15
+ const ProtoService_1 = require("./ProtoService");
16
+ let ModemService = class ModemService extends core_1.ModemService {
17
+ constructor(protoService) {
18
+ super();
19
+ this.protoService = protoService;
20
+ }
21
+ get modem() {
22
+ if (!this._modem) {
23
+ const Modem = require("docker-modem");
24
+ this._modem = new Modem({
25
+ socketPath: "/var/run/docker.sock"
26
+ });
27
+ }
28
+ return this._modem;
29
+ }
30
+ get docker() {
31
+ if (!this._docker) {
32
+ const Docker = require("dockerode");
33
+ this._docker = new Docker({
34
+ modem: this.modem
35
+ });
36
+ }
37
+ return this._docker;
38
+ }
39
+ async attachStream(stream) {
40
+ if (process.stdin.isTTY) {
41
+ process.stdin.setRawMode(true);
42
+ }
43
+ process.stdin.resume();
44
+ process.stdin.setEncoding("utf8");
45
+ process.stdin.pipe(stream);
46
+ stream.setEncoding("utf8");
47
+ stream.pipe(process.stdout);
48
+ try {
49
+ await new Promise((resolve, reject) => {
50
+ stream.on("end", resolve);
51
+ stream.on("error", reject);
52
+ });
53
+ }
54
+ finally {
55
+ process.stdin.pause();
56
+ if (process.stdin.isTTY) {
57
+ process.stdin.setRawMode(false);
58
+ }
59
+ process.stdin.unpipe(stream);
60
+ stream.unpipe(process.stdout);
61
+ }
62
+ return stream;
63
+ }
64
+ async followProgress(stream) {
65
+ let isEnded = false, line = 0;
66
+ const mapLines = {};
67
+ return new Promise((resolve, reject) => {
68
+ const handleEnd = () => {
69
+ if (!isEnded) {
70
+ resolve();
71
+ }
72
+ isEnded = true;
73
+ };
74
+ stream.on("data", (chunk) => {
75
+ const text = chunk.toString().replace(/}\s*\{/g, "},{"), items = JSON.parse(`[${text}]`);
76
+ for (const item of items) {
77
+ if (item.id === "moby.buildkit.trace") {
78
+ }
79
+ if (item.stream) {
80
+ process.stdout.write(`${item.stream}`);
81
+ line += item.stream.split("\n").length - 1;
82
+ }
83
+ else if (item.id) {
84
+ const { id, status, processDetail: { current, total, } = {} } = item;
85
+ if (typeof mapLines[id] === "undefined") {
86
+ mapLines[id] = line;
87
+ }
88
+ const targetLine = typeof mapLines[id] !== "undefined"
89
+ ? mapLines[id]
90
+ : line;
91
+ const dy = line - targetLine;
92
+ if (dy > 0) {
93
+ process.stdout.write("\x1b[s");
94
+ process.stdout.write(`\x1b[${dy}A`);
95
+ }
96
+ process.stdout.write("\x1b[2K");
97
+ let str = `${id}: ${status}\n`;
98
+ if (status === "Downloading") {
99
+ const width = process.stdout.columns;
100
+ const sizeWidth = 19, totalWidth = width - id.length - status.length - sizeWidth - 7, currentWidth = Math.floor(totalWidth * (current / total)), formatSize = `${(0, formatSizeUnits_1.formatSizeUnits)(current)}/${(0, formatSizeUnits_1.formatSizeUnits)(total)}`;
101
+ str = `${id}: ${status} [${"█".repeat(currentWidth)}${"░".repeat(totalWidth - currentWidth)}] ${formatSize}\n`;
102
+ }
103
+ process.stdout.write(str);
104
+ if (dy > 0) {
105
+ process.stdout.write("\x1b[u");
106
+ }
107
+ else {
108
+ line++;
109
+ }
110
+ }
111
+ else if (typeof item.aux === "object") {
112
+ const str = `auxID: ${item.aux.ID}`;
113
+ process.stdout.write(`${str}\n`);
114
+ line += Math.ceil(str.length / process.stdout.columns);
115
+ }
116
+ else if (item.status) {
117
+ process.stdout.write(`${item.status}\n`);
118
+ line += Math.ceil(item.status.length / process.stdout.columns);
119
+ }
120
+ else {
121
+ console.info("Unexpected data", item);
122
+ }
123
+ }
124
+ });
125
+ stream.on("end", handleEnd);
126
+ stream.on("close", handleEnd);
127
+ stream.on("error", (err) => {
128
+ reject(err);
129
+ });
130
+ });
131
+ }
132
+ };
133
+ exports.ModemService = ModemService;
134
+ exports.ModemService = ModemService = __decorate([
135
+ (0, core_1.Injectable)("MODEM_SERVICE"),
136
+ __metadata("design:paramtypes", [ProtoService_1.ProtoService])
137
+ ], ModemService);
@@ -0,0 +1,6 @@
1
+ import { Type, Root } from "protobufjs";
2
+ export declare class ProtoService {
3
+ protected _root?: Root;
4
+ get root(): Root;
5
+ lookupType(path: string): Type;
6
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProtoService = void 0;
4
+ const protobufjs_1 = require("protobufjs");
5
+ const env_1 = require("../../../env");
6
+ class ProtoService {
7
+ get root() {
8
+ if (!this._root) {
9
+ this._root = (0, protobufjs_1.loadSync)([
10
+ `${env_1.ROOT_DIR}/proto/solver/pb/ops.proto`,
11
+ `${env_1.ROOT_DIR}/proto/buildkit.proto`
12
+ ]);
13
+ }
14
+ return this._root;
15
+ }
16
+ lookupType(path) {
17
+ return this.root.lookupType(path);
18
+ }
19
+ }
20
+ exports.ProtoService = ProtoService;
@@ -0,0 +1,3 @@
1
+ export * from "./docker";
2
+ export * from "./keystore";
3
+ export * from "./proxy";
@@ -14,4 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./KeystoreService"), exports);
17
+ __exportStar(require("./docker"), exports);
18
+ __exportStar(require("./keystore"), exports);
19
+ __exportStar(require("./proxy"), exports);
@@ -1,5 +1,5 @@
1
- import { AppConfigService } from "../services";
2
- import { KeystoreService } from "../keystore";
1
+ import { AppConfigService } from "../../../services/AppConfigService";
2
+ import { KeystoreService } from "../services/KeystoreService";
3
3
  export declare class KeystoreController {
4
4
  protected readonly appConfigService: AppConfigService;
5
5
  protected readonly keystoreService: KeystoreService;
@@ -15,8 +15,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.KeystoreController = void 0;
16
16
  const core_1 = require("@wocker/core");
17
17
  const utils_1 = require("@wocker/utils");
18
- const services_1 = require("../services");
19
- const keystore_1 = require("../keystore");
18
+ const AppConfigService_1 = require("../../../services/AppConfigService");
19
+ const KeystoreService_1 = require("../services/KeystoreService");
20
20
  let KeystoreController = class KeystoreController {
21
21
  constructor(appConfigService, keystoreService) {
22
22
  this.appConfigService = appConfigService;
@@ -34,7 +34,7 @@ let KeystoreController = class KeystoreController {
34
34
  return;
35
35
  }
36
36
  this.appConfigService.config.keystore = provider;
37
- this.appConfigService.config.save();
37
+ this.appConfigService.save();
38
38
  }
39
39
  async add(name, provider) {
40
40
  const value = await (0, utils_1.promptInput)({
@@ -101,6 +101,6 @@ __decorate([
101
101
  exports.KeystoreController = KeystoreController = __decorate([
102
102
  (0, core_1.Controller)(),
103
103
  (0, core_1.Description)("Keystore commands"),
104
- __metadata("design:paramtypes", [services_1.AppConfigService,
105
- keystore_1.KeystoreService])
104
+ __metadata("design:paramtypes", [AppConfigService_1.AppConfigService,
105
+ KeystoreService_1.KeystoreService])
106
106
  ], KeystoreController);
@@ -0,0 +1,4 @@
1
+ import { KeystoreService } from "./services/KeystoreService";
2
+ export declare class KeystoreModule {
3
+ }
4
+ export { KeystoreService };