@wocker/ws 1.0.21 → 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 (127) hide show
  1. package/README.md +8 -0
  2. package/lib/AppModule.js +46 -75
  3. package/lib/controllers/DebugController.d.ts +4 -2
  4. package/lib/controllers/DebugController.js +19 -11
  5. package/lib/controllers/ExperimentalController.d.ts +8 -0
  6. package/lib/controllers/ExperimentalController.js +77 -0
  7. package/lib/controllers/PluginController.d.ts +4 -5
  8. package/lib/controllers/PluginController.js +14 -59
  9. package/lib/controllers/PresetController.d.ts +9 -3
  10. package/lib/controllers/PresetController.js +61 -52
  11. package/lib/controllers/ProjectController.d.ts +7 -2
  12. package/lib/controllers/ProjectController.js +124 -94
  13. package/lib/controllers/index.d.ts +1 -3
  14. package/lib/controllers/index.js +1 -3
  15. package/lib/env.d.ts +2 -2
  16. package/lib/env.js +3 -3
  17. package/lib/main.js +16 -7
  18. package/lib/makes/GithubClient.d.ts +14 -0
  19. package/lib/makes/GithubClient.js +65 -0
  20. package/lib/makes/Logger.d.ts +1 -1
  21. package/lib/makes/Plugin.d.ts +5 -0
  22. package/lib/makes/Plugin.js +15 -0
  23. package/lib/makes/index.d.ts +1 -1
  24. package/lib/makes/index.js +1 -1
  25. package/lib/modules/app/index.d.ts +2 -0
  26. package/lib/{plugins/proxmox → modules/app}/index.js +6 -13
  27. package/lib/modules/docker/index.d.ts +8 -0
  28. package/lib/modules/docker/index.js +41 -0
  29. package/lib/modules/docker/services/ContainerService.d.ts +14 -0
  30. package/lib/modules/docker/services/ContainerService.js +115 -0
  31. package/lib/{services → modules/docker/services}/DockerService.d.ts +12 -5
  32. package/lib/{services → modules/docker/services}/DockerService.js +33 -117
  33. package/lib/modules/docker/services/ImageService.d.ts +18 -0
  34. package/lib/modules/docker/services/ImageService.js +68 -0
  35. package/lib/modules/docker/services/ModemService.d.ts +14 -0
  36. package/lib/modules/docker/services/ModemService.js +137 -0
  37. package/lib/modules/docker/services/ProtoService.d.ts +6 -0
  38. package/lib/modules/docker/services/ProtoService.js +20 -0
  39. package/lib/modules/index.d.ts +3 -0
  40. package/lib/{plugins → modules}/index.js +3 -3
  41. package/lib/modules/keystore/controllers/KeystoreController.d.ts +11 -0
  42. package/lib/modules/keystore/controllers/KeystoreController.js +106 -0
  43. package/lib/modules/keystore/index.d.ts +4 -0
  44. package/lib/{plugins/elastic-search → modules/keystore}/index.js +16 -9
  45. package/lib/modules/keystore/providers/FileKeystoreProvider.d.ts +16 -0
  46. package/lib/modules/keystore/providers/FileKeystoreProvider.js +97 -0
  47. package/lib/modules/keystore/providers/KeytarKeystoreProvider.d.ts +9 -0
  48. package/lib/modules/keystore/providers/KeytarKeystoreProvider.js +74 -0
  49. package/lib/modules/keystore/services/KeystoreService.d.ts +12 -0
  50. package/lib/modules/keystore/services/KeystoreService.js +70 -0
  51. package/lib/modules/keystore/types/FileKeystore.d.ts +17 -0
  52. package/lib/modules/keystore/types/FileKeystore.js +33 -0
  53. package/lib/modules/keystore/types/Keytar.d.ts +8 -0
  54. package/lib/modules/keystore/types/Keytar.js +2 -0
  55. package/lib/modules/keystore/utils/createEncryptionKey.d.ts +1 -0
  56. package/lib/modules/keystore/utils/createEncryptionKey.js +46 -0
  57. package/lib/modules/keystore/utils/createPasswordHash.d.ts +1 -0
  58. package/lib/modules/keystore/utils/createPasswordHash.js +20 -0
  59. package/lib/modules/keystore/utils/decrypt.d.ts +1 -0
  60. package/lib/modules/keystore/utils/decrypt.js +15 -0
  61. package/lib/modules/keystore/utils/encrypt.d.ts +1 -0
  62. package/lib/modules/keystore/utils/encrypt.js +19 -0
  63. package/lib/modules/keystore/utils/index.d.ts +5 -0
  64. package/lib/{services → modules/keystore/utils}/index.js +5 -10
  65. package/lib/modules/keystore/utils/verifyPasswordHash.d.ts +1 -0
  66. package/lib/modules/keystore/utils/verifyPasswordHash.js +9 -0
  67. package/lib/{controllers → modules/proxy/controllers}/CertController.d.ts +2 -1
  68. package/lib/{controllers → modules/proxy/controllers}/CertController.js +4 -3
  69. package/lib/{controllers → modules/proxy/controllers}/ProxyController.d.ts +4 -1
  70. package/lib/{controllers → modules/proxy/controllers}/ProxyController.js +46 -37
  71. package/lib/modules/proxy/index.d.ts +5 -0
  72. package/lib/modules/proxy/index.js +39 -0
  73. package/lib/{services → modules/proxy/services}/CertService.d.ts +3 -3
  74. package/lib/{services → modules/proxy/services}/CertService.js +11 -11
  75. package/lib/{services → modules/proxy/services}/ProxyService.d.ts +2 -2
  76. package/lib/{services → modules/proxy/services}/ProxyService.js +21 -13
  77. package/lib/repositories/PresetRepository.d.ts +23 -0
  78. package/lib/repositories/PresetRepository.js +115 -0
  79. package/lib/repositories/index.d.ts +1 -0
  80. package/lib/repositories/index.js +17 -0
  81. package/lib/services/AppConfigService.d.ts +6 -2
  82. package/lib/services/AppConfigService.js +60 -53
  83. package/lib/services/AppEventsService.d.ts +4 -4
  84. package/lib/services/AppEventsService.js +14 -10
  85. package/lib/services/LogService.d.ts +3 -1
  86. package/lib/services/LogService.js +12 -10
  87. package/lib/services/PluginService.d.ts +8 -2
  88. package/lib/services/PluginService.js +69 -16
  89. package/lib/services/PresetService.d.ts +9 -8
  90. package/lib/services/PresetService.js +145 -260
  91. package/lib/services/ProjectService.d.ts +8 -5
  92. package/lib/services/ProjectService.js +44 -18
  93. package/lib/utils/followProgress2.d.ts +1 -0
  94. package/lib/utils/followProgress2.js +63 -0
  95. package/lib/utils/index.d.ts +1 -4
  96. package/lib/utils/index.js +1 -4
  97. package/package.json +24 -15
  98. package/proto/buildkit.proto +55 -0
  99. package/proto/solver/pb/ops.proto +443 -0
  100. package/lib/controllers/ImageController.d.ts +0 -7
  101. package/lib/controllers/ImageController.js +0 -46
  102. package/lib/makes/FS.d.ts +0 -27
  103. package/lib/makes/FS.js +0 -284
  104. package/lib/makes/LineConvertStream.d.ts +0 -11
  105. package/lib/makes/LineConvertStream.js +0 -42
  106. package/lib/makes/Model.d.ts +0 -5
  107. package/lib/makes/Model.js +0 -12
  108. package/lib/plugins/MongodbPlugin.d.ts +0 -20
  109. package/lib/plugins/MongodbPlugin.js +0 -288
  110. package/lib/plugins/elastic-search/controllers/ElasticSearchController.d.ts +0 -10
  111. package/lib/plugins/elastic-search/controllers/ElasticSearchController.js +0 -91
  112. package/lib/plugins/elastic-search/index.d.ts +0 -2
  113. package/lib/plugins/index.d.ts +0 -3
  114. package/lib/plugins/proxmox/controllers/ProxmoxController.d.ts +0 -14
  115. package/lib/plugins/proxmox/controllers/ProxmoxController.js +0 -127
  116. package/lib/plugins/proxmox/index.d.ts +0 -2
  117. package/lib/services/index.d.ts +0 -10
  118. package/lib/utils/followProgress.d.ts +0 -1
  119. package/lib/utils/followProgress.js +0 -73
  120. package/lib/utils/volumeFormat.d.ts +0 -6
  121. package/lib/utils/volumeFormat.js +0 -8
  122. package/lib/utils/volumeParse.d.ts +0 -2
  123. package/lib/utils/volumeParse.js +0 -13
  124. package/presets/bun/Dockerfile +0 -11
  125. package/presets/bun/config.json +0 -4
  126. /package/lib/{utils/format-size-units.d.ts → modules/docker/utils/formatSizeUnits.d.ts} +0 -0
  127. /package/lib/{utils/format-size-units.js → modules/docker/utils/formatSizeUnits.js} +0 -0
@@ -54,22 +54,27 @@ const utils_1 = require("@wocker/utils");
54
54
  const utils_2 = require("@wocker/utils");
55
55
  const Path = __importStar(require("path"));
56
56
  const cli_table3_1 = __importDefault(require("cli-table3"));
57
- const env_1 = require("../env");
58
57
  const utils_3 = require("../utils");
59
- const services_1 = require("../services");
58
+ const repositories_1 = require("../repositories");
59
+ const AppConfigService_1 = require("../services/AppConfigService");
60
+ const AppEventsService_1 = require("../services/AppEventsService");
61
+ const ProjectService_1 = require("../services/ProjectService");
62
+ const PresetService_1 = require("../services/PresetService");
63
+ const modules_1 = require("../modules");
60
64
  let PresetController = class PresetController {
61
- constructor(appConfigService, appEventsService, projectService, presetService, dockerService) {
65
+ constructor(appConfigService, appEventsService, projectService, presetService, presetRepository, dockerService) {
62
66
  this.appConfigService = appConfigService;
63
67
  this.appEventsService = appEventsService;
64
68
  this.projectService = projectService;
65
69
  this.presetService = presetService;
70
+ this.presetRepository = presetRepository;
66
71
  this.dockerService = dockerService;
67
72
  this.appEventsService.on("project:init", (project) => this.onInit(project));
68
73
  this.appEventsService.on("project:beforeStart", (project) => this.onBeforeStart(project));
69
74
  this.appEventsService.on("project:rebuild", (project) => this.onRebuild(project));
70
75
  }
71
76
  async presets() {
72
- const presets = await this.presetService.search();
77
+ const presets = this.presetRepository.search();
73
78
  return presets.map((preset) => {
74
79
  return preset.name;
75
80
  });
@@ -78,12 +83,12 @@ let PresetController = class PresetController {
78
83
  if (project.type !== core_1.PROJECT_TYPE_PRESET) {
79
84
  return;
80
85
  }
81
- const presets = await this.presetService.search();
86
+ const presets = this.presetRepository.search();
82
87
  if (presets.length === 0) {
83
88
  throw new Error("No presets");
84
89
  }
85
90
  project.preset = await (0, utils_1.promptSelect)({
86
- message: "Choose preset:",
91
+ message: "Choose preset",
87
92
  options: presets.map((preset) => {
88
93
  return {
89
94
  label: preset.name,
@@ -93,7 +98,7 @@ let PresetController = class PresetController {
93
98
  default: project.preset
94
99
  });
95
100
  project.presetMode = await (0, utils_1.promptSelect)({
96
- message: "Preset mode:",
101
+ message: "Preset mode",
97
102
  options: [
98
103
  {
99
104
  label: "For project only",
@@ -106,15 +111,15 @@ let PresetController = class PresetController {
106
111
  ],
107
112
  default: project.presetMode
108
113
  });
109
- const preset = await this.presetService.get(project.preset);
114
+ const preset = this.presetService.get(project.preset);
110
115
  if (!preset) {
111
116
  throw new Error("Preset not found");
112
117
  }
113
118
  if (preset.buildArgsOptions) {
114
- project.buildArgs = await (0, utils_1.promptConfig)(preset.buildArgsOptions, project.buildArgs);
119
+ project.buildArgs = await this.presetService.prompt(preset.buildArgsOptions, project.buildArgs);
115
120
  }
116
121
  if (preset.envOptions) {
117
- project.env = await (0, utils_1.promptConfig)(preset.envOptions, project.env);
122
+ project.env = await this.presetService.prompt(preset.envOptions, project.env);
118
123
  }
119
124
  if (preset.volumeOptions) {
120
125
  for (let volume of preset.volumeOptions) {
@@ -122,15 +127,15 @@ let PresetController = class PresetController {
122
127
  ...project.buildArgs || {},
123
128
  ...project.env || {}
124
129
  });
125
- const { source, destination, options } = (0, utils_3.volumeParse)(volume);
130
+ const { source, destination, options } = (0, utils_2.volumeParse)(volume);
126
131
  let projectVolume = project.getVolumeByDestination(destination);
127
- const newSource = await (0, utils_1.promptText)({
128
- message: "Volume:",
132
+ const newSource = await (0, utils_1.promptInput)({
133
+ message: "Volume",
129
134
  required: true,
130
135
  suffix: `:${destination}`,
131
- default: projectVolume ? (0, utils_3.volumeParse)(projectVolume).source : source
136
+ default: projectVolume ? (0, utils_2.volumeParse)(projectVolume).source : source
132
137
  });
133
- projectVolume = (0, utils_3.volumeFormat)({
138
+ projectVolume = (0, utils_2.volumeFormat)({
134
139
  source: newSource,
135
140
  destination,
136
141
  options
@@ -146,7 +151,7 @@ let PresetController = class PresetController {
146
151
  if (project.type !== core_1.PROJECT_TYPE_PRESET) {
147
152
  return;
148
153
  }
149
- const preset = await this.presetService.get(project.preset);
154
+ const preset = this.presetService.get(project.preset);
150
155
  if (!preset) {
151
156
  throw new Error(`Preset ${project.preset} not found`);
152
157
  }
@@ -161,7 +166,7 @@ let PresetController = class PresetController {
161
166
  if (project.type !== core_1.PROJECT_TYPE_PRESET) {
162
167
  return;
163
168
  }
164
- const preset = await this.presetService.get(project.preset);
169
+ const preset = this.presetService.get(project.preset);
165
170
  if (preset.dockerfile) {
166
171
  project.imageName = this.presetService.getImageNameForProject(project, preset);
167
172
  if (!await this.dockerService.imageExists(project.imageName)) {
@@ -180,27 +185,32 @@ let PresetController = class PresetController {
180
185
  async init() {
181
186
  await this.presetService.init();
182
187
  }
183
- async deinit() {
188
+ async destroy() {
184
189
  await this.presetService.deinit();
185
190
  }
186
191
  async add(name, version) {
187
192
  await this.presetService.addPreset(name, version);
188
193
  }
189
194
  async list() {
190
- const presets = await this.presetService.search();
195
+ const presets = this.presetRepository.search();
191
196
  const table = new cli_table3_1.default({
192
197
  head: [
193
198
  "Name",
194
- "Source"
199
+ "Source",
200
+ "Path"
195
201
  ]
196
202
  });
197
203
  for (const preset of presets) {
198
- table.push([preset.name, preset.source]);
204
+ table.push([
205
+ preset.name,
206
+ preset.source,
207
+ preset.source === core_1.PRESET_SOURCE_EXTERNAL ? preset.path : ""
208
+ ]);
199
209
  }
200
210
  return table.toString();
201
211
  }
202
212
  async delete(name, confirm) {
203
- const preset = await this.presetService.get(name);
213
+ const preset = this.presetService.get(name);
204
214
  if (typeof confirm === "undefined" || confirm === null) {
205
215
  confirm = await (0, utils_2.promptConfirm)({
206
216
  message: `Delete preset ${name}?`,
@@ -211,14 +221,14 @@ let PresetController = class PresetController {
211
221
  return;
212
222
  }
213
223
  console.info("Deleting...");
214
- await preset.delete();
224
+ preset.delete();
215
225
  }
216
226
  async eject(name) {
217
227
  if (name) {
218
228
  this.projectService.cdProject(name);
219
229
  }
220
230
  const project = this.projectService.get();
221
- const preset = await this.presetService.get(project.preset);
231
+ const preset = this.presetService.get(project.preset);
222
232
  if (!preset) {
223
233
  throw new Error("Preset not found");
224
234
  }
@@ -256,17 +266,17 @@ let PresetController = class PresetController {
256
266
  recursive: true
257
267
  });
258
268
  }
259
- await copier.copy(path);
269
+ copier.copy(path);
260
270
  }
261
271
  delete project.preset;
262
272
  delete project.imageName;
263
- await project.save();
273
+ project.save();
264
274
  }
265
275
  async build(presetName, rebuild) {
266
- const preset = await this.presetService.get(presetName);
276
+ const preset = this.presetService.get(presetName);
267
277
  let buildArgs = {};
268
278
  if (preset.buildArgsOptions) {
269
- buildArgs = await (0, utils_1.promptGroup)(preset.buildArgsOptions);
279
+ buildArgs = await this.presetService.prompt(preset.buildArgsOptions);
270
280
  }
271
281
  const imageName = this.presetService.getImageName(preset, buildArgs);
272
282
  if (rebuild) {
@@ -278,7 +288,7 @@ let PresetController = class PresetController {
278
288
  presetName: preset.name
279
289
  },
280
290
  buildArgs: buildArgs,
281
- context: Path.join(env_1.PRESETS_DIR, preset.name),
291
+ context: preset.path,
282
292
  src: preset.dockerfile
283
293
  });
284
294
  }
@@ -286,19 +296,21 @@ let PresetController = class PresetController {
286
296
  exports.PresetController = PresetController;
287
297
  __decorate([
288
298
  (0, core_1.Command)("preset:init"),
299
+ (0, core_1.Description)("Creates preset config for current dir"),
289
300
  __metadata("design:type", Function),
290
301
  __metadata("design:paramtypes", []),
291
302
  __metadata("design:returntype", Promise)
292
303
  ], PresetController.prototype, "init", null);
293
304
  __decorate([
294
- (0, core_1.Command)("preset:deinit"),
305
+ (0, core_1.Command)("preset:destroy"),
295
306
  __metadata("design:type", Function),
296
307
  __metadata("design:paramtypes", []),
297
308
  __metadata("design:returntype", Promise)
298
- ], PresetController.prototype, "deinit", null);
309
+ ], PresetController.prototype, "destroy", null);
299
310
  __decorate([
300
- (0, core_1.Command)("preset:add <preset>"),
301
- (0, core_1.Command)("preset:add <preset>@<version>"),
311
+ (0, core_1.Command)("preset:install <preset>"),
312
+ (0, core_1.Command)("preset:install <preset>@<version>"),
313
+ (0, core_1.Description)("Adding preset from github repository"),
302
314
  __param(0, (0, core_1.Param)("preset")),
303
315
  __param(1, (0, core_1.Param)("version")),
304
316
  __metadata("design:type", Function),
@@ -307,6 +319,7 @@ __decorate([
307
319
  ], PresetController.prototype, "add", null);
308
320
  __decorate([
309
321
  (0, core_1.Command)("preset:ls"),
322
+ (0, core_1.Description)("List of all available presets"),
310
323
  __metadata("design:type", Function),
311
324
  __metadata("design:paramtypes", []),
312
325
  __metadata("design:returntype", Promise)
@@ -314,42 +327,38 @@ __decorate([
314
327
  __decorate([
315
328
  (0, core_1.Command)("preset:delete <preset>"),
316
329
  __param(0, (0, core_1.Param)("preset")),
317
- __param(1, (0, core_1.Option)("yes", {
318
- alias: "y",
319
- description: "Confirm deletion"
320
- })),
330
+ __param(1, (0, core_1.Option)("yes", "y")),
331
+ __param(1, (0, core_1.Description)("Confirm deletion")),
321
332
  __metadata("design:type", Function),
322
333
  __metadata("design:paramtypes", [String, Boolean]),
323
334
  __metadata("design:returntype", Promise)
324
335
  ], PresetController.prototype, "delete", null);
325
336
  __decorate([
326
337
  (0, core_1.Command)("preset:eject"),
327
- __param(0, (0, core_1.Option)("name", {
328
- type: "string",
329
- alias: "n",
330
- description: "Project name"
331
- })),
338
+ (0, core_1.Description)("Eject preset files into the project"),
339
+ __param(0, (0, core_1.Option)("name", "n")),
340
+ __param(0, (0, core_1.Description)("The name of the project")),
332
341
  __metadata("design:type", Function),
333
342
  __metadata("design:paramtypes", [String]),
334
343
  __metadata("design:returntype", Promise)
335
344
  ], PresetController.prototype, "eject", null);
336
345
  __decorate([
337
346
  (0, core_1.Command)("preset:build <preset>"),
347
+ (0, core_1.Description)("Build docker image form a preset"),
338
348
  __param(0, (0, core_1.Param)("preset")),
339
- __param(1, (0, core_1.Option)("rebuild", {
340
- type: "boolean",
341
- alias: "r",
342
- description: "Rebuild image"
343
- })),
349
+ __param(1, (0, core_1.Option)("rebuild", "r")),
350
+ __param(1, (0, core_1.Description)("Rebuild image")),
344
351
  __metadata("design:type", Function),
345
352
  __metadata("design:paramtypes", [String, Boolean]),
346
353
  __metadata("design:returntype", Promise)
347
354
  ], PresetController.prototype, "build", null);
348
355
  exports.PresetController = PresetController = __decorate([
349
356
  (0, core_1.Controller)(),
350
- __metadata("design:paramtypes", [services_1.AppConfigService,
351
- services_1.AppEventsService,
352
- services_1.ProjectService,
353
- services_1.PresetService,
354
- services_1.DockerService])
357
+ (0, core_1.Description)("Preset commands"),
358
+ __metadata("design:paramtypes", [AppConfigService_1.AppConfigService,
359
+ AppEventsService_1.AppEventsService,
360
+ ProjectService_1.ProjectService,
361
+ PresetService_1.PresetService,
362
+ repositories_1.PresetRepository,
363
+ modules_1.DockerService])
355
364
  ], PresetController);
@@ -1,5 +1,9 @@
1
1
  import { ProjectType } from "@wocker/core";
2
- import { AppConfigService, AppEventsService, ProjectService, LogService, DockerService } from "../services";
2
+ import { AppConfigService } from "../services/AppConfigService";
3
+ import { AppEventsService } from "../services/AppEventsService";
4
+ import { ProjectService } from "../services/ProjectService";
5
+ import { LogService } from "../services/LogService";
6
+ import { DockerService } from "../modules";
3
7
  export declare class ProjectController {
4
8
  protected readonly appConfigService: AppConfigService;
5
9
  protected readonly appEventsService: AppEventsService;
@@ -10,6 +14,7 @@ export declare class ProjectController {
10
14
  protected getProjectNames(): Promise<string[]>;
11
15
  getScriptNames(): Promise<string[]>;
12
16
  init(name: string, type: ProjectType): Promise<void>;
17
+ destroy(name?: string): Promise<void>;
13
18
  projectList(all: boolean): Promise<string>;
14
19
  start(name?: string, detach?: boolean, attach?: boolean, rebuild?: boolean, restart?: boolean): Promise<void>;
15
20
  stop(name: string): Promise<void>;
@@ -28,7 +33,7 @@ export declare class ProjectController {
28
33
  configUnset(configs: string[], name?: string, global?: boolean): Promise<void>;
29
34
  buildArgsList(name?: string): Promise<string>;
30
35
  buildArgsGet(args: string[], name?: string): Promise<string>;
31
- buildArgsSet(name: string, args: string[]): Promise<void>;
36
+ buildArgsSet(args: string[], name: string): Promise<void>;
32
37
  buildArgsUnset(args: string[], name: string): Promise<void>;
33
38
  volumeList(name?: string): Promise<string>;
34
39
  volumeMount(volumes: string[], name: string): Promise<void>;