@wocker/ws 1.0.32 → 1.1.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 (64) hide show
  1. package/lib/AppModule.js +1 -2
  2. package/lib/main.js +2 -2
  3. package/lib/makes/GithubClient.d.ts +3 -2
  4. package/lib/makes/GithubClient.js +27 -27
  5. package/lib/makes/index.d.ts +0 -3
  6. package/lib/makes/index.js +0 -3
  7. package/lib/modules/core/controllers/DebugController.d.ts +3 -4
  8. package/lib/modules/core/controllers/DebugController.js +5 -22
  9. package/lib/modules/core/controllers/ExperimentalController.d.ts +3 -3
  10. package/lib/modules/core/controllers/ExperimentalController.js +1 -1
  11. package/lib/modules/dns/index.js +3 -3
  12. package/lib/modules/keystore/controllers/KeystoreController.d.ts +3 -3
  13. package/lib/modules/keystore/controllers/KeystoreController.js +8 -8
  14. package/lib/modules/keystore/providers/FileKeystoreProvider.js +8 -8
  15. package/lib/modules/keystore/services/KeystoreService.d.ts +3 -3
  16. package/lib/modules/keystore/services/KeystoreService.js +4 -4
  17. package/lib/modules/package-manager/service/PackageManager.d.ts +3 -3
  18. package/lib/modules/package-manager/service/PackageManager.js +8 -8
  19. package/lib/modules/package-manager/service/RegistryService.js +5 -4
  20. package/lib/modules/plugin/controllers/PluginController.d.ts +3 -3
  21. package/lib/modules/plugin/controllers/PluginController.js +4 -4
  22. package/lib/modules/plugin/index.js +4 -5
  23. package/lib/modules/plugin/services/PluginService.d.ts +3 -3
  24. package/lib/modules/plugin/services/PluginService.js +11 -13
  25. package/lib/modules/preset/controllers/PresetController.d.ts +3 -3
  26. package/lib/modules/preset/controllers/PresetController.js +6 -6
  27. package/lib/modules/preset/controllers/PresetListener.d.ts +5 -3
  28. package/lib/modules/preset/controllers/PresetListener.js +21 -30
  29. package/lib/modules/preset/repositories/PresetRepository.d.ts +3 -3
  30. package/lib/modules/preset/repositories/PresetRepository.js +7 -7
  31. package/lib/modules/preset/services/PresetService.d.ts +4 -3
  32. package/lib/modules/preset/services/PresetService.js +33 -33
  33. package/lib/modules/project/controllers/MetadataController.d.ts +8 -0
  34. package/lib/modules/project/controllers/MetadataController.js +89 -0
  35. package/lib/modules/project/controllers/ProjectController.d.ts +6 -6
  36. package/lib/modules/project/controllers/ProjectController.js +62 -49
  37. package/lib/modules/project/controllers/SecretsController.js +2 -2
  38. package/lib/modules/project/index.d.ts +1 -2
  39. package/lib/modules/project/index.js +4 -6
  40. package/lib/modules/project/services/ProjectService.d.ts +3 -4
  41. package/lib/modules/project/services/ProjectService.js +38 -39
  42. package/lib/modules/proxy/controllers/HttpAuthController.d.ts +3 -4
  43. package/lib/modules/proxy/controllers/HttpAuthController.js +28 -16
  44. package/lib/modules/proxy/controllers/ProxyController.d.ts +3 -3
  45. package/lib/modules/proxy/controllers/ProxyController.js +11 -11
  46. package/lib/modules/proxy/services/HttpAuthService.d.ts +3 -0
  47. package/lib/modules/proxy/services/HttpAuthService.js +29 -10
  48. package/lib/modules/proxy/services/ProxyService.d.ts +3 -3
  49. package/lib/modules/proxy/services/ProxyService.js +9 -9
  50. package/lib/utils/index.d.ts +0 -1
  51. package/lib/utils/index.js +0 -1
  52. package/package.json +5 -13
  53. package/lib/makes/Http.d.ts +0 -18
  54. package/lib/makes/Http.js +0 -82
  55. package/lib/makes/Version.d.ts +0 -22
  56. package/lib/makes/Version.js +0 -59
  57. package/lib/makes/VersionRange.d.ts +0 -6
  58. package/lib/makes/VersionRange.js +0 -18
  59. package/lib/makes/VersionRule.d.ts +0 -24
  60. package/lib/makes/VersionRule.js +0 -68
  61. package/lib/modules/project/repositories/ProjectRepository.d.ts +0 -13
  62. package/lib/modules/project/repositories/ProjectRepository.js +0 -71
  63. package/lib/utils/injectVariables.d.ts +0 -5
  64. package/lib/utils/injectVariables.js +0 -10
@@ -52,8 +52,8 @@ const yoctocolors_cjs_1 = __importDefault(require("yoctocolors-cjs"));
52
52
  const package_manager_1 = require("../../package-manager");
53
53
  const makes_1 = require("../../../makes");
54
54
  let PluginService = class PluginService {
55
- constructor(appConfigService, pm, registryService, logService, cli) {
56
- this.appConfigService = appConfigService;
55
+ constructor(appService, pm, registryService, logService, cli) {
56
+ this.appService = appService;
57
57
  this.pm = pm;
58
58
  this.registryService = registryService;
59
59
  this.logService = logService;
@@ -65,10 +65,10 @@ let PluginService = class PluginService {
65
65
  head: ["Name", "Env"],
66
66
  colWidths: [30]
67
67
  });
68
- if (this.appConfigService.plugins.length === 0) {
68
+ if (this.appService.plugins.length === 0) {
69
69
  return yoctocolors_cjs_1.default.gray("No plugins installed");
70
70
  }
71
- for (const plugin of this.appConfigService.plugins) {
71
+ for (const plugin of this.appService.plugins) {
72
72
  table.push([plugin.name, plugin.env]);
73
73
  }
74
74
  return table.toString();
@@ -88,14 +88,14 @@ let PluginService = class PluginService {
88
88
  async install(pluginName, version = "latest") {
89
89
  const [, prefix = "@wocker/", name, suffix = "-plugin"] = /^(@wocker\/)?(\w+)(-plugin)?$/.exec(pluginName) || [];
90
90
  const fullName = `${prefix}${name}${suffix}`;
91
- const currentVersion = await this.getCurrentVersion(fullName), wRule = makes_1.VersionRule.parse(this.rule), rule = makes_1.VersionRule.parse(version === "latest" ? "x" : version || this.rule);
91
+ const currentVersion = await this.getCurrentVersion(fullName), wRule = core_1.VersionRule.parse(this.rule), rule = core_1.VersionRule.parse(version === "latest" ? "x" : version || this.rule);
92
92
  const packageInfo = await this.registryService.getPackageInfo(fullName);
93
93
  const versions = Object.keys(packageInfo.versions)
94
94
  .filter((version) => {
95
95
  return wRule.match(version, true) && rule.match(version, true);
96
96
  })
97
97
  .sort((a, b) => {
98
- return makes_1.Version.parse(b).compare(a);
98
+ return core_1.Version.parse(b).compare(a);
99
99
  });
100
100
  const bestSatisfyingVersion = versions.find((version) => rule.match(version)) ??
101
101
  versions.find((version) => rule.match(version, true));
@@ -105,8 +105,7 @@ let PluginService = class PluginService {
105
105
  if ((!currentVersion || currentVersion !== bestSatisfyingVersion) || !await this.checkPlugin(fullName)) {
106
106
  await this.pm.install(fullName, bestSatisfyingVersion);
107
107
  }
108
- this.appConfigService.addPlugin(fullName, version);
109
- this.appConfigService.save();
108
+ this.appService.addPlugin(fullName, version);
110
109
  console.info(`Plugin ${fullName} activated`);
111
110
  }
112
111
  async uninstall(pluginName) {
@@ -115,8 +114,7 @@ let PluginService = class PluginService {
115
114
  if (await this.checkPlugin(fullName)) {
116
115
  await this.pm.uninstall(fullName);
117
116
  }
118
- this.appConfigService.removePlugin(fullName);
119
- this.appConfigService.save();
117
+ this.appService.removePlugin(fullName);
120
118
  console.info(`Plugin ${fullName} deactivated`);
121
119
  }
122
120
  async import(name) {
@@ -124,11 +122,11 @@ let PluginService = class PluginService {
124
122
  return new makes_1.Plugin(type);
125
123
  }
126
124
  async update() {
127
- if (this.appConfigService.plugins.length === 0) {
125
+ if (this.appService.plugins.length === 0) {
128
126
  console.info("No plugins installed");
129
127
  return;
130
128
  }
131
- for (const plugin of this.appConfigService.plugins) {
129
+ for (const plugin of this.appService.plugins) {
132
130
  console.info(`Checking ${plugin.name}...`);
133
131
  try {
134
132
  await this.install(plugin.name, plugin.env);
@@ -156,7 +154,7 @@ let PluginService = class PluginService {
156
154
  exports.PluginService = PluginService;
157
155
  exports.PluginService = PluginService = __decorate([
158
156
  (0, core_1.Injectable)(),
159
- __metadata("design:paramtypes", [core_1.AppConfigService,
157
+ __metadata("design:paramtypes", [core_1.AppService,
160
158
  package_manager_1.PackageManager,
161
159
  package_manager_1.RegistryService,
162
160
  core_1.LogService,
@@ -1,13 +1,13 @@
1
- import { AppConfigService } from "@wocker/core";
1
+ import { AppService } from "@wocker/core";
2
2
  import { DockerService } from "@wocker/docker-module";
3
3
  import { PresetRepository } from "../repositories/PresetRepository";
4
4
  import { PresetService } from "../services/PresetService";
5
5
  export declare class PresetController {
6
- protected readonly appConfigService: AppConfigService;
6
+ protected readonly appService: AppService;
7
7
  protected readonly dockerService: DockerService;
8
8
  protected readonly presetRepository: PresetRepository;
9
9
  protected readonly presetService: PresetService;
10
- constructor(appConfigService: AppConfigService, dockerService: DockerService, presetRepository: PresetRepository, presetService: PresetService);
10
+ constructor(appService: AppService, dockerService: DockerService, presetRepository: PresetRepository, presetService: PresetService);
11
11
  init(): Promise<void>;
12
12
  list(): Promise<string>;
13
13
  install(repository: string, version?: string): Promise<void>;
@@ -19,12 +19,12 @@ exports.PresetController = void 0;
19
19
  const core_1 = require("@wocker/core");
20
20
  const docker_module_1 = require("@wocker/docker-module");
21
21
  const cli_table3_1 = __importDefault(require("cli-table3"));
22
- const utils_1 = require("@wocker/utils");
22
+ const prompts_1 = require("@wocker/prompts");
23
23
  const PresetRepository_1 = require("../repositories/PresetRepository");
24
24
  const PresetService_1 = require("../services/PresetService");
25
25
  let PresetController = class PresetController {
26
- constructor(appConfigService, dockerService, presetRepository, presetService) {
27
- this.appConfigService = appConfigService;
26
+ constructor(appService, dockerService, presetRepository, presetService) {
27
+ this.appService = appService;
28
28
  this.dockerService = dockerService;
29
29
  this.presetRepository = presetRepository;
30
30
  this.presetService = presetService;
@@ -59,7 +59,7 @@ let PresetController = class PresetController {
59
59
  async delete(name, confirm) {
60
60
  const preset = this.presetService.get(name);
61
61
  if (typeof confirm === "undefined" || confirm === null) {
62
- confirm = await (0, utils_1.promptConfirm)({
62
+ confirm = await (0, prompts_1.promptConfirm)({
63
63
  message: `Delete preset ${name}?`,
64
64
  default: false
65
65
  });
@@ -81,7 +81,7 @@ let PresetController = class PresetController {
81
81
  await this.dockerService.imageRm(imageName);
82
82
  }
83
83
  await this.dockerService.buildImage({
84
- version: this.appConfigService.isExperimentalEnabled("buildKit") ? "2" : "1",
84
+ version: this.appService.isExperimentalEnabled("buildKit") ? "2" : "1",
85
85
  tag: imageName,
86
86
  labels: {
87
87
  presetName: preset.name
@@ -157,7 +157,7 @@ __decorate([
157
157
  exports.PresetController = PresetController = __decorate([
158
158
  (0, core_1.Controller)(),
159
159
  (0, core_1.Description)("Preset commands"),
160
- __metadata("design:paramtypes", [core_1.AppConfigService,
160
+ __metadata("design:paramtypes", [core_1.AppService,
161
161
  docker_module_1.DockerService,
162
162
  PresetRepository_1.PresetRepository,
163
163
  PresetService_1.PresetService])
@@ -1,13 +1,15 @@
1
- import { Project, AppConfigService } from "@wocker/core";
1
+ import { Project, AppService } from "@wocker/core";
2
+ import { Interpolator } from "@wocker/utils";
2
3
  import { DockerService } from "@wocker/docker-module";
3
4
  import { PresetRepository } from "../repositories/PresetRepository";
4
5
  import { PresetService } from "../services/PresetService";
5
6
  export declare class PresetListener {
6
- protected readonly appConfigService: AppConfigService;
7
+ protected readonly appService: AppService;
7
8
  protected readonly dockerService: DockerService;
8
9
  protected readonly presetRepository: PresetRepository;
9
10
  protected readonly presetService: PresetService;
10
- constructor(appConfigService: AppConfigService, dockerService: DockerService, presetRepository: PresetRepository, presetService: PresetService);
11
+ constructor(appService: AppService, dockerService: DockerService, presetRepository: PresetRepository, presetService: PresetService);
12
+ protected get interpolator(): Interpolator;
11
13
  onInit(project: Project): Promise<void>;
12
14
  protected onRebuild(project: Project): Promise<void>;
13
15
  protected onBeforeStart(project: Project): Promise<void>;
@@ -11,27 +11,31 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.PresetListener = void 0;
13
13
  const core_1 = require("@wocker/core");
14
- const docker_module_1 = require("@wocker/docker-module");
15
14
  const utils_1 = require("@wocker/utils");
15
+ const docker_module_1 = require("@wocker/docker-module");
16
+ const prompts_1 = require("@wocker/prompts");
17
+ const utils_2 = require("@wocker/utils");
16
18
  const PresetRepository_1 = require("../repositories/PresetRepository");
17
19
  const PresetService_1 = require("../services/PresetService");
18
- const utils_2 = require("../../../utils");
19
20
  let PresetListener = class PresetListener {
20
- constructor(appConfigService, dockerService, presetRepository, presetService) {
21
- this.appConfigService = appConfigService;
21
+ constructor(appService, dockerService, presetRepository, presetService) {
22
+ this.appService = appService;
22
23
  this.dockerService = dockerService;
23
24
  this.presetRepository = presetRepository;
24
25
  this.presetService = presetService;
25
26
  }
27
+ get interpolator() {
28
+ return new utils_1.Interpolator();
29
+ }
26
30
  async onInit(project) {
27
- if (project.type !== core_1.PROJECT_TYPE_PRESET) {
31
+ if (project.type !== core_1.ProjectType.PRESET) {
28
32
  return;
29
33
  }
30
34
  const presets = this.presetRepository.search();
31
35
  if (presets.length === 0) {
32
36
  throw new Error("No presets");
33
37
  }
34
- project.preset = await (0, utils_1.promptSelect)({
38
+ project.preset = await (0, prompts_1.promptSelect)({
35
39
  message: "Choose preset",
36
40
  options: presets.map((preset) => {
37
41
  return {
@@ -41,18 +45,9 @@ let PresetListener = class PresetListener {
41
45
  }),
42
46
  default: project.preset
43
47
  });
44
- project.presetMode = await (0, utils_1.promptSelect)({
48
+ project.presetMode = await (0, prompts_1.promptSelect)({
45
49
  message: "Preset mode",
46
- options: [
47
- {
48
- label: "For project only",
49
- value: "project"
50
- },
51
- {
52
- label: "Global usage",
53
- value: "global"
54
- }
55
- ],
50
+ options: core_1.PresetMode.options(),
56
51
  default: project.presetMode
57
52
  });
58
53
  const preset = this.presetService.get(project.preset);
@@ -67,23 +62,19 @@ let PresetListener = class PresetListener {
67
62
  }
68
63
  if (preset.volumeOptions) {
69
64
  for (let volume of preset.volumeOptions) {
70
- volume = (0, utils_2.injectVariables)(volume, {
65
+ volume = this.interpolator.interpolate(volume, {
71
66
  ...project.buildArgs || {},
72
67
  ...project.env || {}
73
68
  });
74
- const { source, destination, options } = (0, utils_1.volumeParse)(volume);
69
+ const { source, destination, options } = utils_2.Volume.parse(volume);
75
70
  let projectVolume = project.getVolumeByDestination(destination);
76
- const newSource = await (0, utils_1.promptInput)({
71
+ const newSource = await (0, prompts_1.promptInput)({
77
72
  message: "Volume",
78
73
  required: true,
79
74
  suffix: `:${destination}`,
80
- default: projectVolume ? (0, utils_1.volumeParse)(projectVolume).source : source
81
- });
82
- projectVolume = (0, utils_1.volumeFormat)({
83
- source: newSource,
84
- destination,
85
- options
75
+ default: projectVolume ? utils_2.Volume.parse(projectVolume).source : source
86
76
  });
77
+ projectVolume = new utils_2.Volume(newSource, destination, options).toString();
87
78
  project.volumeMount(projectVolume);
88
79
  }
89
80
  }
@@ -92,7 +83,7 @@ let PresetListener = class PresetListener {
92
83
  }
93
84
  }
94
85
  async onRebuild(project) {
95
- if (project.type !== core_1.PROJECT_TYPE_PRESET) {
86
+ if (project.type !== core_1.ProjectType.PRESET) {
96
87
  return;
97
88
  }
98
89
  const preset = this.presetService.get(project.preset);
@@ -107,7 +98,7 @@ let PresetListener = class PresetListener {
107
98
  }
108
99
  }
109
100
  async onBeforeStart(project) {
110
- if (project.type !== core_1.PROJECT_TYPE_PRESET) {
101
+ if (project.type !== core_1.ProjectType.PRESET) {
111
102
  return;
112
103
  }
113
104
  const preset = this.presetService.get(project.preset);
@@ -115,7 +106,7 @@ let PresetListener = class PresetListener {
115
106
  project.imageName = this.presetService.getImageNameForProject(project, preset);
116
107
  if (!await this.dockerService.imageExists(project.imageName)) {
117
108
  await this.dockerService.buildImage({
118
- version: this.appConfigService.isExperimentalEnabled("buildKit") ? "2" : "1",
109
+ version: this.appService.isExperimentalEnabled("buildKit") ? "2" : "1",
119
110
  tag: project.imageName,
120
111
  labels: {
121
112
  presetName: preset.name
@@ -149,7 +140,7 @@ __decorate([
149
140
  ], PresetListener.prototype, "onBeforeStart", null);
150
141
  exports.PresetListener = PresetListener = __decorate([
151
142
  (0, core_1.Controller)(),
152
- __metadata("design:paramtypes", [core_1.AppConfigService,
143
+ __metadata("design:paramtypes", [core_1.AppService,
153
144
  docker_module_1.DockerService,
154
145
  PresetRepository_1.PresetRepository,
155
146
  PresetService_1.PresetService])
@@ -1,14 +1,14 @@
1
- import { AppConfig, PresetServiceSearchOptions as SearchOptions, Preset, PresetSource, AppConfigService, LogService, FileSystemDriver } from "@wocker/core";
1
+ import { AppConfig, PresetServiceSearchOptions as SearchOptions, Preset, PresetSource, AppService, LogService, FileSystemDriver } from "@wocker/core";
2
2
  type PresetData = {
3
3
  name: string;
4
4
  source: PresetSource;
5
5
  path?: string;
6
6
  };
7
7
  export declare class PresetRepository {
8
- protected readonly appConfigService: AppConfigService;
8
+ protected readonly appService: AppService;
9
9
  protected readonly logService: LogService;
10
10
  protected readonly driver: FileSystemDriver;
11
- constructor(appConfigService: AppConfigService, logService: LogService, driver: FileSystemDriver);
11
+ constructor(appService: AppService, logService: LogService, driver: FileSystemDriver);
12
12
  protected load(data: PresetData): Preset;
13
13
  protected configs(): AppConfig["presets"];
14
14
  search(options?: SearchOptions): Preset[];
@@ -16,8 +16,8 @@ exports.PresetRepository = void 0;
16
16
  const core_1 = require("@wocker/core");
17
17
  const env_1 = require("../../../env");
18
18
  let PresetRepository = class PresetRepository {
19
- constructor(appConfigService, logService, driver) {
20
- this.appConfigService = appConfigService;
19
+ constructor(appService, logService, driver) {
20
+ this.appService = appService;
21
21
  this.logService = logService;
22
22
  this.driver = driver;
23
23
  }
@@ -39,7 +39,7 @@ let PresetRepository = class PresetRepository {
39
39
  fs.writeJSON("config.json", this.toObject());
40
40
  break;
41
41
  }
42
- _this.appConfigService.registerPreset(this.name, this.source, data.path);
42
+ _this.appService.registerPreset(this.name, this.source, data.path);
43
43
  }
44
44
  delete() {
45
45
  switch (this.source) {
@@ -51,13 +51,13 @@ let PresetRepository = class PresetRepository {
51
51
  }
52
52
  break;
53
53
  }
54
- _this.appConfigService.unregisterPreset(this.name);
54
+ _this.appService.unregisterPreset(this.name);
55
55
  }
56
56
  }(config);
57
57
  }
58
58
  configs() {
59
59
  const fs = new core_1.FileSystem(env_1.PRESETS_DIR, this.driver), dirs = fs.exists("") ? fs.readdir("") : [];
60
- const { presets = [] } = this.appConfigService.config;
60
+ const { presets = [] } = this.appService.config;
61
61
  return [
62
62
  ...dirs.map((name) => {
63
63
  return {
@@ -70,7 +70,7 @@ let PresetRepository = class PresetRepository {
70
70
  if (item.source === core_1.PRESET_SOURCE_GITHUB) {
71
71
  return {
72
72
  ...item,
73
- path: this.appConfigService.fs.path("presets", item.name)
73
+ path: this.appService.fs.path("presets", item.name)
74
74
  };
75
75
  }
76
76
  return item;
@@ -113,6 +113,6 @@ exports.PresetRepository = PresetRepository;
113
113
  exports.PresetRepository = PresetRepository = __decorate([
114
114
  (0, core_1.Injectable)(),
115
115
  __param(2, (0, core_1.Inject)(core_1.FILE_SYSTEM_DRIVER_KEY)),
116
- __metadata("design:paramtypes", [core_1.AppConfigService,
116
+ __metadata("design:paramtypes", [core_1.AppService,
117
117
  core_1.LogService, Object])
118
118
  ], PresetRepository);
@@ -1,11 +1,12 @@
1
- import { Project, Preset, PresetVariableConfig, EnvConfig, AppConfigService, AppFileSystemService } from "@wocker/core";
1
+ import { Project, Preset, PresetVariableConfig, EnvConfig, AppService, ProcessService, AppFileSystemService } from "@wocker/core";
2
2
  import { PresetRepository } from "../repositories/PresetRepository";
3
3
  export declare class PresetService {
4
- protected readonly appConfigService: AppConfigService;
4
+ protected readonly appService: AppService;
5
+ protected readonly processService: ProcessService;
5
6
  protected readonly fs: AppFileSystemService;
6
7
  protected readonly presetRepository: PresetRepository;
7
8
  protected range: string;
8
- constructor(appConfigService: AppConfigService, fs: AppFileSystemService, presetRepository: PresetRepository);
9
+ constructor(appService: AppService, processService: ProcessService, fs: AppFileSystemService, presetRepository: PresetRepository);
9
10
  prompt(configMap: {
10
11
  [name: string]: PresetVariableConfig;
11
12
  }, values?: EnvConfig): Promise<EnvConfig>;
@@ -14,14 +14,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.PresetService = void 0;
16
16
  const core_1 = require("@wocker/core");
17
- const utils_1 = require("@wocker/utils");
18
- const md5_1 = __importDefault(require("md5"));
17
+ const prompts_1 = require("@wocker/prompts");
18
+ const crypto_1 = __importDefault(require("crypto"));
19
19
  const PresetRepository_1 = require("../repositories/PresetRepository");
20
- const makes_1 = require("../../../makes");
21
20
  const GithubClient_1 = require("../../../makes/GithubClient");
22
21
  let PresetService = class PresetService {
23
- constructor(appConfigService, fs, presetRepository) {
24
- this.appConfigService = appConfigService;
22
+ constructor(appService, processService, fs, presetRepository) {
23
+ this.appService = appService;
24
+ this.processService = processService;
25
25
  this.fs = fs;
26
26
  this.presetRepository = presetRepository;
27
27
  this.range = "1.x.x";
@@ -31,7 +31,7 @@ let PresetService = class PresetService {
31
31
  const config = configMap[name];
32
32
  switch (config.type) {
33
33
  case "boolean": {
34
- const value = await (0, utils_1.promptConfirm)({
34
+ const value = await (0, prompts_1.promptConfirm)({
35
35
  message: config.message,
36
36
  required: config.required,
37
37
  default: typeof values[name] !== "undefined" && values[name] === "true"
@@ -42,7 +42,7 @@ let PresetService = class PresetService {
42
42
  break;
43
43
  }
44
44
  case "select": {
45
- const options = (0, utils_1.normalizeOptions)(config.options);
45
+ const options = (0, prompts_1.normalizeOptions)(config.options);
46
46
  const defaultValue = config.multiple ? options.reduce((defaultValue, option) => {
47
47
  if (values[option.value] === "true") {
48
48
  return [
@@ -52,7 +52,7 @@ let PresetService = class PresetService {
52
52
  }
53
53
  return defaultValue;
54
54
  }, []) : values[name];
55
- const result = await (0, utils_1.promptSelect)({
55
+ const result = await (0, prompts_1.promptSelect)({
56
56
  required: config.required,
57
57
  multiple: config.multiple,
58
58
  message: config.message,
@@ -76,7 +76,7 @@ let PresetService = class PresetService {
76
76
  }
77
77
  case "int":
78
78
  case "number": {
79
- const result = await (0, utils_1.promptInput)({
79
+ const result = await (0, prompts_1.promptInput)({
80
80
  ...config,
81
81
  type: "number",
82
82
  default: values[name] || config.default
@@ -87,7 +87,7 @@ let PresetService = class PresetService {
87
87
  case "string":
88
88
  case "text":
89
89
  case "password": {
90
- values[name] = await (0, utils_1.promptInput)({
90
+ values[name] = await (0, prompts_1.promptInput)({
91
91
  ...config,
92
92
  type: config.type === "string" ? "text" : config.type,
93
93
  default: values[name] || config.default
@@ -120,7 +120,7 @@ let PresetService = class PresetService {
120
120
  });
121
121
  const version = [
122
122
  ...rawValues,
123
- (0, md5_1.default)(hashValues.join(",")).substring(0, 6)
123
+ crypto_1.default.createHash("md5").update(hashValues.join(","), "utf8").digest("hex").substring(0, 6)
124
124
  ].filter((value) => {
125
125
  return !!value;
126
126
  }).join("-");
@@ -129,27 +129,27 @@ let PresetService = class PresetService {
129
129
  get(name) {
130
130
  const preset = name
131
131
  ? this.presetRepository.searchOne({ name })
132
- : this.presetRepository.searchOne({ path: this.appConfigService.pwd() });
132
+ : this.presetRepository.searchOne({ path: this.processService.pwd() });
133
133
  if (!preset) {
134
134
  throw new Error(name ? `Preset "${name}" not found` : "Preset not found");
135
135
  }
136
136
  return preset;
137
137
  }
138
138
  async init() {
139
- const fs = this.fs.cd(this.appConfigService.pwd());
139
+ const fs = this.fs.cd(this.processService.pwd());
140
140
  let preset = this.presetRepository.searchOne({
141
- path: this.appConfigService.pwd()
141
+ path: this.processService.pwd()
142
142
  });
143
143
  if (preset) {
144
144
  return;
145
145
  }
146
146
  if (fs.exists("config.json")) {
147
147
  const config = fs.readJSON("config.json");
148
- this.appConfigService.registerPreset(config.name, core_1.PRESET_SOURCE_EXTERNAL, fs.path());
148
+ this.appService.registerPreset(config.name, core_1.PRESET_SOURCE_EXTERNAL, fs.path());
149
149
  return;
150
150
  }
151
151
  let config = {};
152
- config.name = await (0, utils_1.promptInput)({
152
+ config.name = await (0, prompts_1.promptInput)({
153
153
  message: "Preset name",
154
154
  required: true,
155
155
  validate: (name) => {
@@ -162,7 +162,7 @@ let PresetService = class PresetService {
162
162
  return true;
163
163
  }
164
164
  });
165
- config.version = await (0, utils_1.promptInput)({
165
+ config.version = await (0, prompts_1.promptInput)({
166
166
  message: "Preset version",
167
167
  validate: (version) => {
168
168
  if (!/^[0-9]+\.[0-9]+\.[0-9]+$/.test(version)) {
@@ -171,7 +171,7 @@ let PresetService = class PresetService {
171
171
  return true;
172
172
  }
173
173
  });
174
- config.type = await (0, utils_1.promptSelect)({
174
+ config.type = await (0, prompts_1.promptSelect)({
175
175
  message: "Preset type",
176
176
  options: ["dockerfile", "image"]
177
177
  });
@@ -187,13 +187,13 @@ let PresetService = class PresetService {
187
187
  if (dockerfiles.length === 0) {
188
188
  throw new Error("No dockerfiles found");
189
189
  }
190
- config.dockerfile = await (0, utils_1.promptSelect)({
190
+ config.dockerfile = await (0, prompts_1.promptSelect)({
191
191
  message: "Preset dockerfile",
192
192
  options: dockerfiles
193
193
  });
194
194
  break;
195
195
  case "image":
196
- config.image = await (0, utils_1.promptInput)({
196
+ config.image = await (0, prompts_1.promptInput)({
197
197
  message: "Preset image",
198
198
  required: true,
199
199
  validate(value) {
@@ -206,7 +206,7 @@ let PresetService = class PresetService {
206
206
  break;
207
207
  }
208
208
  console.info(JSON.stringify(config, null, 4));
209
- const confirm = await (0, utils_1.promptConfirm)({
209
+ const confirm = await (0, prompts_1.promptConfirm)({
210
210
  message: "Correct",
211
211
  default: true
212
212
  });
@@ -214,17 +214,16 @@ let PresetService = class PresetService {
214
214
  return;
215
215
  }
216
216
  fs.writeJSON("config.json", config);
217
- this.appConfigService.registerPreset(config.name, core_1.PRESET_SOURCE_EXTERNAL, fs.path());
217
+ this.appService.registerPreset(config.name, core_1.PRESET_SOURCE_EXTERNAL, fs.path());
218
218
  }
219
219
  async deinit() {
220
220
  const preset = this.presetRepository.searchOne({
221
- path: this.appConfigService.pwd()
221
+ path: this.processService.pwd()
222
222
  });
223
223
  if (!preset) {
224
224
  return;
225
225
  }
226
- this.appConfigService.config.unregisterPreset(preset.name);
227
- this.appConfigService.save();
226
+ this.appService.unregisterPreset(preset.name);
228
227
  }
229
228
  async install(repository, version) {
230
229
  if (!/^[\w-]+\/[\w-]+$/.test(repository)) {
@@ -233,11 +232,11 @@ let PresetService = class PresetService {
233
232
  const [owner, name] = repository.split("/");
234
233
  let satisfyingTag;
235
234
  let satisfyingBranch;
236
- const github = new GithubClient_1.GithubClient(owner, name), wRule = makes_1.VersionRule.parse(this.range), rule = makes_1.VersionRule.parse(["latest", "beta"].includes(version) ? "x" : version ?? this.range);
235
+ const github = new GithubClient_1.GithubClient(owner, name), wRule = core_1.VersionRule.parse(this.range), rule = core_1.VersionRule.parse(["latest", "beta"].includes(version) ? "x" : version ?? this.range);
237
236
  if (version !== "beta") {
238
237
  satisfyingTag = (await github.getTags())
239
238
  .filter((tag) => {
240
- if (!makes_1.Version.valid(tag.name)) {
239
+ if (!core_1.Version.valid(tag.name)) {
241
240
  return false;
242
241
  }
243
242
  return wRule.match(tag.name) || rule.match(tag.name);
@@ -246,13 +245,13 @@ let PresetService = class PresetService {
246
245
  if (!tag) {
247
246
  return nextTag;
248
247
  }
249
- return makes_1.Version.parse(tag.name).compare(nextTag.name) < 0 ? nextTag : tag;
248
+ return core_1.Version.parse(tag.name).compare(nextTag.name) < 0 ? nextTag : tag;
250
249
  }, null);
251
250
  }
252
251
  if (!satisfyingTag) {
253
252
  satisfyingBranch = (await github.getBranches())
254
253
  .filter((branch) => {
255
- if (!makes_1.Version.valid(branch.name)) {
254
+ if (!core_1.Version.valid(branch.name)) {
256
255
  return false;
257
256
  }
258
257
  return wRule.match(branch.name) || rule.match(branch.name);
@@ -261,7 +260,7 @@ let PresetService = class PresetService {
261
260
  if (!branch) {
262
261
  return nextBranch;
263
262
  }
264
- return makes_1.Version.parse(branch.name).compare(nextBranch.name) < 0 ? nextBranch : branch;
263
+ return core_1.Version.parse(branch.name).compare(nextBranch.name) < 0 ? nextBranch : branch;
265
264
  }, null);
266
265
  }
267
266
  if (!satisfyingTag && !satisfyingBranch) {
@@ -273,7 +272,7 @@ let PresetService = class PresetService {
273
272
  let preset = this.presetRepository.searchOne({
274
273
  name: config.name
275
274
  });
276
- if (preset && satisfyingTag && preset.source === core_1.PRESET_SOURCE_GITHUB && makes_1.Version.parse(ref).compare(preset.version) === 0) {
275
+ if (preset && satisfyingTag && preset.source === core_1.PRESET_SOURCE_GITHUB && core_1.Version.parse(ref).compare(preset.version) === 0) {
277
276
  console.info("Preset already installed");
278
277
  return;
279
278
  }
@@ -289,7 +288,7 @@ let PresetService = class PresetService {
289
288
  });
290
289
  }
291
290
  this.fs.mv(`presets/.tmp/${config.name}`, `presets/${config.name}`);
292
- this.appConfigService.registerPreset(config.name, core_1.PRESET_SOURCE_GITHUB);
291
+ this.appService.registerPreset(config.name, core_1.PRESET_SOURCE_GITHUB);
293
292
  console.info("Preset installed successfully");
294
293
  }
295
294
  finally {
@@ -304,7 +303,8 @@ let PresetService = class PresetService {
304
303
  exports.PresetService = PresetService;
305
304
  exports.PresetService = PresetService = __decorate([
306
305
  (0, core_1.Injectable)(),
307
- __metadata("design:paramtypes", [core_1.AppConfigService,
306
+ __metadata("design:paramtypes", [core_1.AppService,
307
+ core_1.ProcessService,
308
308
  core_1.AppFileSystemService,
309
309
  PresetRepository_1.PresetRepository])
310
310
  ], PresetService);
@@ -0,0 +1,8 @@
1
+ import { ProjectService } from "../services/ProjectService";
2
+ export declare class MetadataController {
3
+ protected readonly projectService: ProjectService;
4
+ constructor(projectService: ProjectService);
5
+ list(projectName?: string): string;
6
+ set(meta: string[], projectName?: string): void;
7
+ unset(meta: string[], projectName?: string): void;
8
+ }