@wocker/ws 1.0.24 → 1.0.26

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 (117) hide show
  1. package/README.md +1 -1
  2. package/lib/AppModule.js +42 -0
  3. package/lib/env.d.ts +2 -3
  4. package/lib/env.js +12 -42
  5. package/lib/main.d.ts +2 -3
  6. package/lib/main.js +24 -26
  7. package/lib/makes/GithubClient.d.ts +24 -3
  8. package/lib/makes/GithubClient.js +20 -6
  9. package/lib/makes/Version.d.ts +22 -0
  10. package/lib/makes/Version.js +59 -0
  11. package/lib/makes/VersionRange.d.ts +6 -0
  12. package/lib/makes/VersionRange.js +18 -0
  13. package/lib/makes/VersionRule.d.ts +24 -0
  14. package/lib/makes/VersionRule.js +68 -0
  15. package/lib/makes/index.d.ts +2 -0
  16. package/lib/makes/index.js +2 -0
  17. package/lib/modules/core/index.d.ts +2 -0
  18. package/lib/modules/{app → core}/index.js +13 -19
  19. package/lib/modules/dns/controllers/DnsController.d.ts +7 -0
  20. package/lib/modules/dns/controllers/DnsController.js +47 -0
  21. package/lib/modules/dns/index.d.ts +4 -0
  22. package/lib/modules/dns/index.js +41 -0
  23. package/lib/modules/dns/services/DnsService.d.ts +10 -0
  24. package/lib/modules/dns/services/DnsService.js +77 -0
  25. package/lib/modules/docker/index.d.ts +2 -1
  26. package/lib/modules/docker/index.js +5 -1
  27. package/lib/modules/docker/services/ComposeService.d.ts +32 -0
  28. package/lib/modules/docker/services/ComposeService.js +127 -0
  29. package/lib/modules/docker/services/ContainerService.d.ts +1 -1
  30. package/lib/modules/docker/services/DockerService.js +2 -25
  31. package/lib/modules/docker/services/ImageService.d.ts +2 -8
  32. package/lib/modules/docker/services/ImageService.js +15 -3
  33. package/lib/modules/docker/services/ModemService.d.ts +3 -3
  34. package/lib/modules/docker/services/ModemService.js +24 -6
  35. package/lib/modules/docker/services/ProtoService.js +2 -2
  36. package/lib/modules/docker/type/ComposeConfig.d.ts +12 -0
  37. package/lib/modules/index.d.ts +4 -1
  38. package/lib/modules/index.js +4 -1
  39. package/lib/modules/keystore/controllers/KeystoreController.d.ts +0 -3
  40. package/lib/modules/keystore/controllers/KeystoreController.js +3 -54
  41. package/lib/modules/keystore/services/KeystoreService.d.ts +3 -3
  42. package/lib/modules/keystore/services/KeystoreService.js +6 -4
  43. package/lib/modules/keystore/utils/createEncryptionKey.d.ts +1 -1
  44. package/lib/modules/package-manager/index.d.ts +5 -0
  45. package/lib/modules/package-manager/index.js +33 -0
  46. package/lib/modules/package-manager/providers/NpmProvider.d.ts +7 -0
  47. package/lib/modules/package-manager/providers/NpmProvider.js +39 -0
  48. package/lib/modules/package-manager/providers/PnpmProvider.d.ts +7 -0
  49. package/lib/modules/package-manager/providers/PnpmProvider.js +30 -0
  50. package/lib/modules/package-manager/providers/YarnProvider.d.ts +7 -0
  51. package/lib/modules/package-manager/providers/YarnProvider.js +29 -0
  52. package/lib/modules/package-manager/service/PackageManager.d.ts +10 -0
  53. package/lib/modules/package-manager/service/PackageManager.js +70 -0
  54. package/lib/modules/package-manager/service/RegistryService.d.ts +4 -0
  55. package/lib/{services/NpmService.js → modules/package-manager/service/RegistryService.js} +6 -11
  56. package/lib/modules/package-manager/types/Package.d.ts +4 -0
  57. package/lib/modules/package-manager/types/Package.js +2 -0
  58. package/lib/modules/package-manager/types/PackageInfo.js +2 -0
  59. package/lib/modules/package-manager/types/PackageManagerProvider.d.ts +6 -0
  60. package/lib/modules/package-manager/types/PackageManagerProvider.js +6 -0
  61. package/lib/{controllers → modules/plugin/controllers}/PluginController.d.ts +2 -2
  62. package/lib/{controllers → modules/plugin/controllers}/PluginController.js +21 -20
  63. package/lib/modules/plugin/index.d.ts +4 -0
  64. package/lib/modules/plugin/index.js +67 -0
  65. package/lib/{services → modules/plugin/services}/PluginService.d.ts +7 -5
  66. package/lib/{services → modules/plugin/services}/PluginService.js +38 -40
  67. package/lib/modules/preset/controllers/PresetController.d.ts +1 -1
  68. package/lib/modules/preset/controllers/PresetController.js +14 -7
  69. package/lib/modules/preset/controllers/PresetListener.d.ts +3 -2
  70. package/lib/modules/preset/controllers/PresetListener.js +6 -3
  71. package/lib/modules/preset/services/PresetService.d.ts +2 -1
  72. package/lib/modules/preset/services/PresetService.js +84 -15
  73. package/lib/modules/project/controllers/ProjectController.d.ts +38 -2
  74. package/lib/modules/project/controllers/ProjectController.js +848 -2
  75. package/lib/modules/project/controllers/SecretsController.d.ts +8 -0
  76. package/lib/modules/project/controllers/SecretsController.js +72 -0
  77. package/lib/modules/project/index.js +5 -1
  78. package/lib/modules/project/repositories/ProjectRepository.d.ts +3 -6
  79. package/lib/modules/project/repositories/ProjectRepository.js +9 -28
  80. package/lib/modules/project/services/ProjectService.d.ts +10 -4
  81. package/lib/modules/project/services/ProjectService.js +103 -8
  82. package/lib/modules/proxy/controllers/ProxyController.d.ts +1 -2
  83. package/lib/modules/proxy/controllers/ProxyController.js +1 -2
  84. package/lib/modules/proxy/services/CertService.js +1 -1
  85. package/lib/modules/proxy/services/ProxyService.d.ts +1 -0
  86. package/lib/modules/proxy/services/ProxyService.js +9 -4
  87. package/lib/utils/exec.js +4 -1
  88. package/lib/utils/get-cursor-position.js +1 -1
  89. package/lib/utils/index.d.ts +0 -1
  90. package/lib/utils/index.js +0 -1
  91. package/package.json +15 -15
  92. package/plugins/dns/Dockerfile +35 -0
  93. package/plugins/dns/app/Procfile +2 -0
  94. package/plugins/dns/app/dnsmasq.conf.tmpl +11 -0
  95. package/plugins/dns/app/dnsmasq.sh +28 -0
  96. package/plugins/proxy/Dockerfile +0 -2
  97. package/bin/ws.js +0 -6
  98. package/lib/RootModule.d.ts +0 -6
  99. package/lib/RootModule.js +0 -93
  100. package/lib/controllers/ProjectController.d.ts +0 -45
  101. package/lib/controllers/ProjectController.js +0 -972
  102. package/lib/controllers/index.d.ts +0 -5
  103. package/lib/controllers/index.js +0 -21
  104. package/lib/services/NpmService.d.ts +0 -5
  105. package/lib/types/index.d.ts +0 -1
  106. package/lib/types/index.js +0 -17
  107. package/lib/utils/followProgress2.d.ts +0 -1
  108. package/lib/utils/followProgress2.js +0 -63
  109. /package/lib/{modules/app/index.d.ts → AppModule.d.ts} +0 -0
  110. /package/lib/{controllers → modules/core/controllers}/CompletionController.d.ts +0 -0
  111. /package/lib/{controllers → modules/core/controllers}/CompletionController.js +0 -0
  112. /package/lib/{controllers → modules/core/controllers}/DebugController.d.ts +0 -0
  113. /package/lib/{controllers → modules/core/controllers}/DebugController.js +0 -0
  114. /package/lib/{controllers → modules/core/controllers}/ExperimentalController.d.ts +0 -0
  115. /package/lib/{controllers → modules/core/controllers}/ExperimentalController.js +0 -0
  116. /package/lib/{types/PackageInfo.js → modules/docker/type/ComposeConfig.js} +0 -0
  117. /package/lib/{types → modules/package-manager/types}/PackageInfo.d.ts +0 -0
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/@wocker/ws.svg)](https://www.npmjs.com/package/@wocker/ws)
6
6
  [![Publish](https://github.com/kearisp/wocker-ws/actions/workflows/publish-latest.yml/badge.svg?event=release)](https://github.com/kearisp/wocker-ws/actions/workflows/publish-latest.yml)
7
- [![License](https://img.shields.io/npm/l/@wocker/ws)](https://github.com/kearisp/wocker-ws/blob/main/LICENSE)
7
+ [![License](https://img.shields.io/npm/l/@wocker/ws)](https://github.com/kearisp/wocker-ws/blob/master/LICENSE)
8
8
 
9
9
  [![npm total downloads](https://img.shields.io/npm/dt/@wocker/ws.svg)](https://www.npmjs.com/package/@wocker/ws)
10
10
  [![bundle size](https://img.shields.io/bundlephobia/minzip/@wocker/ws)](https://bundlephobia.com/package/@wocker/ws)
@@ -0,0 +1,42 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AppModule = void 0;
10
+ const core_1 = require("@wocker/core");
11
+ const modules_1 = require("./modules");
12
+ let AppModule = class AppModule {
13
+ };
14
+ exports.AppModule = AppModule;
15
+ exports.AppModule = AppModule = __decorate([
16
+ (0, core_1.Global)(),
17
+ (0, core_1.Module)({
18
+ imports: [
19
+ modules_1.CoreModule,
20
+ modules_1.DnsModule.register(),
21
+ modules_1.PluginModule.register(),
22
+ modules_1.ProjectModule,
23
+ modules_1.PresetModule,
24
+ modules_1.DockerModule,
25
+ modules_1.KeystoreModule,
26
+ modules_1.ProxyModule
27
+ ],
28
+ exports: [
29
+ modules_1.DockerService,
30
+ modules_1.CertService,
31
+ modules_1.ContainerService,
32
+ modules_1.ImageService,
33
+ modules_1.ProxyService,
34
+ modules_1.KeystoreService,
35
+ modules_1.PresetRepository,
36
+ modules_1.PresetService,
37
+ modules_1.ProjectService,
38
+ core_1.ProcessService,
39
+ modules_1.ProjectRepository
40
+ ]
41
+ })
42
+ ], AppModule);
package/lib/env.d.ts CHANGED
@@ -1,8 +1,7 @@
1
- export declare const WOCKER_VERSION = "1.0.24";
2
- export declare const NODE_ENV: string;
1
+ export { WOCKER_VERSION } from "@wocker/core";
2
+ export declare const WOCKER_DATA_DIR: string;
3
3
  export declare const ROOT_DIR: string;
4
4
  export declare const PRESETS_DIR: string;
5
5
  export declare const PLUGINS_DIR: string;
6
- export declare const WOCKER_DATA_DIR: string;
7
6
  export declare const VIRTUAL_HOST_KEY = "VIRTUAL_HOST";
8
7
  export declare const KEYTAR_SERVICE: string;
package/lib/env.js CHANGED
@@ -1,46 +1,16 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
35
5
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.KEYTAR_SERVICE = exports.VIRTUAL_HOST_KEY = exports.WOCKER_DATA_DIR = exports.PLUGINS_DIR = exports.PRESETS_DIR = exports.ROOT_DIR = exports.NODE_ENV = exports.WOCKER_VERSION = void 0;
37
- const OS = __importStar(require("os"));
38
- const Path = __importStar(require("path"));
39
- exports.WOCKER_VERSION = "1.0.24";
40
- exports.NODE_ENV = process.env.NODE_ENV;
41
- exports.ROOT_DIR = Path.join(__dirname, "..");
42
- exports.PRESETS_DIR = Path.join(exports.ROOT_DIR, "presets");
43
- exports.PLUGINS_DIR = Path.join(exports.ROOT_DIR, "plugins");
44
- exports.WOCKER_DATA_DIR = process.env.WS_DIR || Path.join(OS.homedir(), ".workspace");
6
+ exports.KEYTAR_SERVICE = exports.VIRTUAL_HOST_KEY = exports.PLUGINS_DIR = exports.PRESETS_DIR = exports.ROOT_DIR = exports.WOCKER_DATA_DIR = exports.WOCKER_VERSION = void 0;
7
+ var core_1 = require("@wocker/core");
8
+ Object.defineProperty(exports, "WOCKER_VERSION", { enumerable: true, get: function () { return core_1.WOCKER_VERSION; } });
9
+ const os_1 = __importDefault(require("os"));
10
+ const path_1 = __importDefault(require("path"));
11
+ exports.WOCKER_DATA_DIR = process.env.WS_DIR || path_1.default.join(os_1.default.homedir(), ".workspace");
12
+ exports.ROOT_DIR = path_1.default.join(__dirname, "..");
13
+ exports.PRESETS_DIR = path_1.default.join(exports.ROOT_DIR, "presets");
14
+ exports.PLUGINS_DIR = path_1.default.join(exports.ROOT_DIR, "plugins");
45
15
  exports.VIRTUAL_HOST_KEY = "VIRTUAL_HOST";
46
16
  exports.KEYTAR_SERVICE = process.env.WOCKER_KEYTAR_SERVICE || "wocker";
package/lib/main.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- export declare const app: {
2
- run(args: string[]): Promise<void>;
3
- };
1
+ #!/usr/bin/env node
2
+ export {};
package/lib/main.js CHANGED
@@ -1,36 +1,34 @@
1
+ #!/usr/bin/env node
1
2
  "use strict";
2
3
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
5
  };
5
6
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.app = void 0;
7
7
  const core_1 = require("@wocker/core");
8
8
  const yoctocolors_cjs_1 = __importDefault(require("yoctocolors-cjs"));
9
- const RootModule_1 = require("./RootModule");
10
- exports.app = {
11
- async run(args) {
12
- const context = await core_1.Factory.create(RootModule_1.RootModule), appConfigService = context.get(core_1.AppConfigService), logService = context.get(core_1.LogService);
13
- try {
14
- const res = await context.run(args);
15
- if (res) {
16
- process.stdout.write(res);
17
- process.stdout.write("\n");
18
- }
9
+ const AppModule_1 = require("./AppModule");
10
+ (async () => {
11
+ const context = await core_1.Factory.create(AppModule_1.AppModule), appConfigService = context.get(core_1.AppConfigService), logService = context.get(core_1.LogService);
12
+ try {
13
+ const res = await context.run(process.argv);
14
+ if (res) {
15
+ process.stdout.write(res);
16
+ process.stdout.write("\n");
19
17
  }
20
- catch (err) {
21
- if (typeof err.name === "string" && ["ExitPromptError", "CancelPromptError", "AbortPromptError"].includes(err.name)) {
22
- return;
23
- }
24
- console.error(yoctocolors_cjs_1.default.red(err.message));
25
- if (err instanceof core_1.UsageException || err.name === "UsageException") {
26
- return;
27
- }
28
- if (err instanceof core_1.CommandNotFoundError) {
29
- return;
30
- }
31
- if (appConfigService.debug) {
32
- logService.error(err.stack || err.toString());
33
- }
18
+ }
19
+ catch (err) {
20
+ if (typeof err.name === "string" && ["ExitPromptError", "CancelPromptError", "AbortPromptError"].includes(err.name)) {
21
+ return;
22
+ }
23
+ console.error(yoctocolors_cjs_1.default.red(err.message));
24
+ if (err instanceof core_1.UsageException || err.name === "UsageException") {
25
+ return;
26
+ }
27
+ if (err instanceof core_1.CommandNotFoundError) {
28
+ return;
29
+ }
30
+ if (appConfigService.debug) {
31
+ logService.error(err.stack || err.toString());
34
32
  }
35
33
  }
36
- };
34
+ })();
@@ -2,13 +2,34 @@ import { AxiosInstance } from "axios";
2
2
  type RepositoryInfo = {
3
3
  default_branch: string;
4
4
  };
5
+ export type GithubTag = {
6
+ name: string;
7
+ zipball_url: string;
8
+ tarball_url: string;
9
+ commit: {
10
+ sha: string;
11
+ url: string;
12
+ };
13
+ node_id: string;
14
+ };
15
+ export type GithubBranch = {
16
+ name: string;
17
+ commit: {
18
+ sha: string;
19
+ url: string;
20
+ };
21
+ protected: boolean;
22
+ };
5
23
  export declare class GithubClient {
6
- owner: string;
7
- repository: string;
24
+ readonly owner: string;
25
+ readonly repository: string;
8
26
  constructor(owner: string, repository: string);
9
27
  get axios(): AxiosInstance;
10
28
  getInfo(): Promise<RepositoryInfo>;
11
- getFile(branch: string, path: string): Promise<any>;
29
+ getBranches(): Promise<GithubBranch[]>;
30
+ getTags(): Promise<GithubTag[]>;
31
+ getFile(ref: string, path: string): Promise<any>;
32
+ downloadZipByUrl(url: string, dirPath: string): Promise<void>;
12
33
  download(branch: string, dirPath: string): Promise<void>;
13
34
  }
14
35
  export {};
@@ -15,7 +15,7 @@ class GithubClient {
15
15
  return axios_1.default.create({
16
16
  headers: {
17
17
  "User-Agent": "Wocker"
18
- },
18
+ }
19
19
  });
20
20
  }
21
21
  async getInfo() {
@@ -26,16 +26,27 @@ class GithubClient {
26
26
  });
27
27
  return response.data;
28
28
  }
29
- async getFile(branch, path) {
30
- const response = await this.axios.get(`https://raw.githubusercontent.com/${this.owner}/${this.repository}/${branch}/${path}`, {
29
+ async getBranches() {
30
+ const response = await this.axios
31
+ .get(`https://api.github.com/repos/${this.owner}/${this.repository}/branches`);
32
+ return response.data;
33
+ }
34
+ async getTags() {
35
+ const response = await this.axios
36
+ .get(`https://api.github.com/repos/${this.owner}/${this.repository}/tags`);
37
+ return response.data;
38
+ }
39
+ async getFile(ref, path) {
40
+ const res = await this.axios
41
+ .get(`https://raw.githubusercontent.com/${this.owner}/${this.repository}/${ref}/${path}`, {
31
42
  headers: {
32
43
  "Accept": "application/vnd.github+json"
33
44
  }
34
45
  });
35
- return response.data;
46
+ return res.data;
36
47
  }
37
- async download(branch, dirPath) {
38
- const res = await this.axios.get(`https://github.com/${this.owner}/${this.repository}/archive/refs/heads/${branch}.zip`, {
48
+ async downloadZipByUrl(url, dirPath) {
49
+ const res = await this.axios.get(url, {
39
50
  responseType: "stream"
40
51
  });
41
52
  const fs = new core_1.FileSystem(dirPath);
@@ -61,5 +72,8 @@ class GithubClient {
61
72
  pipe.on("error", reject);
62
73
  });
63
74
  }
75
+ async download(branch, dirPath) {
76
+ return this.downloadZipByUrl(`https://api.github.com/repos/${this.owner}/${this.repository}/zipball/${branch}`, dirPath);
77
+ }
64
78
  }
65
79
  exports.GithubClient = GithubClient;
@@ -0,0 +1,22 @@
1
+ type VersionData = {
2
+ major: number;
3
+ minor: number;
4
+ patch: number;
5
+ tag?: string;
6
+ build?: number;
7
+ };
8
+ export declare class Version {
9
+ static readonly REGEXP: RegExp;
10
+ protected static cache: Map<string, Version>;
11
+ readonly major: number;
12
+ readonly minor: number;
13
+ readonly patch: number;
14
+ readonly tag?: string;
15
+ readonly build?: number;
16
+ constructor(data: VersionData);
17
+ parts(): number[];
18
+ compare(version: string | Version): number;
19
+ static valid(version: string): boolean;
20
+ static parse(version: string): Version;
21
+ }
22
+ export {};
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Version = void 0;
4
+ class Version {
5
+ constructor(data) {
6
+ Object.assign(this, data);
7
+ }
8
+ parts() {
9
+ return [
10
+ this.major,
11
+ this.minor,
12
+ this.patch,
13
+ this.build ?? 0
14
+ ];
15
+ }
16
+ compare(version) {
17
+ if (typeof version === "string") {
18
+ version = Version.parse(version);
19
+ }
20
+ const a = this.parts(), b = version.parts();
21
+ for (let i = 0; i < Math.max(a.length, b.length); i++) {
22
+ if (i === 3) {
23
+ if (this.tag && !version.tag)
24
+ return -1;
25
+ else if (!this.tag && version.tag)
26
+ return 1;
27
+ else if (this.tag !== version.tag)
28
+ return this.tag < version.tag ? -1 : 1;
29
+ }
30
+ const diff = (a[i] ?? 0) - (b[i] ?? 0);
31
+ if (diff !== 0) {
32
+ return diff > 0 ? 1 : -1;
33
+ }
34
+ }
35
+ return 0;
36
+ }
37
+ static valid(version) {
38
+ return Version.REGEXP.test(version);
39
+ }
40
+ static parse(version) {
41
+ if (!Version.cache.has(version)) {
42
+ if (!Version.REGEXP.test(version)) {
43
+ throw new RangeError("Invalid version format");
44
+ }
45
+ const [, major, minor, patch, tag, build] = Version.REGEXP.exec(version) || [];
46
+ Version.cache.set(version, new Version({
47
+ major: parseInt(major),
48
+ minor: parseInt(minor),
49
+ patch: parseInt(patch),
50
+ tag,
51
+ build: build ? parseInt(build) : undefined
52
+ }));
53
+ }
54
+ return Version.cache.get(version);
55
+ }
56
+ }
57
+ exports.Version = Version;
58
+ Version.REGEXP = /^v?(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z]+(?:-[a-zA-Z0-9]+)*)(?:\.(\d+))?)?/;
59
+ Version.cache = new Map();
@@ -0,0 +1,6 @@
1
+ import { VersionRule } from "./VersionRule";
2
+ export declare class VersionRange {
3
+ protected rules: VersionRule[][];
4
+ constructor(rules: VersionRule[][]);
5
+ static parse(range: string): VersionRange;
6
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VersionRange = void 0;
4
+ const VersionRule_1 = require("./VersionRule");
5
+ class VersionRange {
6
+ constructor(rules) {
7
+ this.rules = rules;
8
+ }
9
+ static parse(range) {
10
+ const rules = range.split("||").map((range) => {
11
+ return range.split(" ").map((rule) => {
12
+ return VersionRule_1.VersionRule.parse(rule);
13
+ });
14
+ });
15
+ return new VersionRange(rules);
16
+ }
17
+ }
18
+ exports.VersionRange = VersionRange;
@@ -0,0 +1,24 @@
1
+ import { Version } from "./Version";
2
+ type VersionRuleData = {
3
+ prefix?: string;
4
+ major?: number;
5
+ minor?: number;
6
+ patch?: number;
7
+ tag?: string;
8
+ build?: number;
9
+ };
10
+ export declare class VersionRule {
11
+ static readonly REGEXP: RegExp;
12
+ protected static map: Map<string, VersionRule>;
13
+ readonly prefix?: string;
14
+ readonly major?: number;
15
+ readonly minor?: number;
16
+ readonly patch?: number;
17
+ readonly tag?: string;
18
+ readonly build?: number;
19
+ constructor(data: VersionRuleData);
20
+ get version(): Version;
21
+ match(version: string | Version, withTag?: boolean): boolean;
22
+ static parse(rule: string): VersionRule;
23
+ }
24
+ export {};
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VersionRule = void 0;
4
+ const Version_1 = require("./Version");
5
+ class VersionRule {
6
+ constructor(data) {
7
+ Object.assign(this, data);
8
+ }
9
+ get version() {
10
+ return new Version_1.Version({
11
+ major: this.major ?? 0,
12
+ minor: this.minor ?? 0,
13
+ patch: this.patch ?? 0,
14
+ tag: this.tag,
15
+ build: this.build
16
+ });
17
+ }
18
+ match(version, withTag) {
19
+ if (typeof version === "string") {
20
+ version = Version_1.Version.parse(version);
21
+ }
22
+ if ((!withTag || this.tag) && this.tag !== version.tag) {
23
+ return false;
24
+ }
25
+ const cmp = version.compare(this.version);
26
+ switch (this.prefix) {
27
+ case ">":
28
+ return cmp > 0;
29
+ case ">=":
30
+ return cmp >= 0;
31
+ case "<":
32
+ return cmp < 0;
33
+ case "<=":
34
+ return cmp <= 0;
35
+ case "^":
36
+ return (this.major === version.major &&
37
+ cmp >= 0);
38
+ case "~":
39
+ return (this.major === version.major &&
40
+ this.minor === version.minor &&
41
+ cmp >= 0);
42
+ default:
43
+ return ((this.major === undefined || this.major === version.major) &&
44
+ (this.minor === undefined || this.minor === version.minor) &&
45
+ (this.patch === undefined || this.patch === version.patch));
46
+ }
47
+ }
48
+ static parse(rule) {
49
+ if (!VersionRule.map.has(rule)) {
50
+ if (!VersionRule.REGEXP.test(rule)) {
51
+ throw new Error("Invalid version rule");
52
+ }
53
+ const [, prefix, major, minor, patch, tag, build, onlyTag] = VersionRule.REGEXP.exec(rule) || [];
54
+ VersionRule.map.set(rule, new VersionRule({
55
+ prefix,
56
+ major: major && major !== "x" && major !== "*" ? parseInt(major) : undefined,
57
+ minor: minor && minor !== "x" ? parseInt(minor) : undefined,
58
+ patch: patch && patch !== "x" ? parseInt(patch) : undefined,
59
+ tag: tag || onlyTag,
60
+ build: build && build !== "x" ? parseInt(build) : undefined
61
+ }));
62
+ }
63
+ return VersionRule.map.get(rule);
64
+ }
65
+ }
66
+ exports.VersionRule = VersionRule;
67
+ VersionRule.REGEXP = /^(?:(\^|~|<=|>=|<|>)?(x|\d+)(?:\.(\*|x|\d+))?(?:\.(x|\d+))?(?:-([a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*)(?:\.(\d+))?)?|([a-zA-Z0-9]+(?:-[a-zAZ0-9]+)*))$/;
68
+ VersionRule.map = new Map();
@@ -1,2 +1,4 @@
1
1
  export * from "./Http";
2
2
  export * from "./Plugin";
3
+ export * from "./Version";
4
+ export * from "./VersionRule";
@@ -16,3 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./Http"), exports);
18
18
  __exportStar(require("./Plugin"), exports);
19
+ __exportStar(require("./Version"), exports);
20
+ __exportStar(require("./VersionRule"), exports);
@@ -0,0 +1,2 @@
1
+ export declare class CoreModule {
2
+ }
@@ -6,27 +6,21 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.AppModule = void 0;
9
+ exports.CoreModule = void 0;
10
10
  const core_1 = require("@wocker/core");
11
- const env_1 = require("../../env");
12
- let AppModule = class AppModule {
11
+ const CompletionController_1 = require("./controllers/CompletionController");
12
+ const DebugController_1 = require("./controllers/DebugController");
13
+ const ExperimentalController_1 = require("./controllers/ExperimentalController");
14
+ let CoreModule = class CoreModule {
13
15
  };
14
- exports.AppModule = AppModule;
15
- exports.AppModule = AppModule = __decorate([
16
+ exports.CoreModule = CoreModule;
17
+ exports.CoreModule = CoreModule = __decorate([
18
+ (0, core_1.Global)(),
16
19
  (0, core_1.Module)({
17
- providers: [
18
- {
19
- provide: core_1.WOCKER_VERSION_KEY,
20
- useValue: env_1.WOCKER_VERSION
21
- },
22
- {
23
- provide: core_1.WOCKER_DATA_DIR_KEY,
24
- useValue: env_1.WOCKER_DATA_DIR
25
- }
26
- ],
27
- exports: [
28
- core_1.WOCKER_VERSION_KEY,
29
- core_1.WOCKER_DATA_DIR_KEY
20
+ controllers: [
21
+ CompletionController_1.CompletionController,
22
+ DebugController_1.DebugController,
23
+ ExperimentalController_1.ExperimentalController
30
24
  ]
31
25
  })
32
- ], AppModule);
26
+ ], CoreModule);
@@ -0,0 +1,7 @@
1
+ import { DnsService } from "../services/DnsService";
2
+ export declare class DnsController {
3
+ protected readonly dnsService: DnsService;
4
+ constructor(dnsService: DnsService);
5
+ start(restart?: boolean, rebuild?: boolean): Promise<void>;
6
+ stop(): Promise<void>;
7
+ }
@@ -0,0 +1,47 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.DnsController = void 0;
16
+ const core_1 = require("@wocker/core");
17
+ const DnsService_1 = require("../services/DnsService");
18
+ let DnsController = class DnsController {
19
+ constructor(dnsService) {
20
+ this.dnsService = dnsService;
21
+ }
22
+ async start(restart, rebuild) {
23
+ await this.dnsService.start(restart, rebuild);
24
+ }
25
+ async stop() {
26
+ await this.dnsService.stop();
27
+ }
28
+ };
29
+ exports.DnsController = DnsController;
30
+ __decorate([
31
+ (0, core_1.Command)("dns:start"),
32
+ __param(0, (0, core_1.Option)("restart", "r")),
33
+ __param(1, (0, core_1.Option)("rebuild", "b")),
34
+ __metadata("design:type", Function),
35
+ __metadata("design:paramtypes", [Boolean, Boolean]),
36
+ __metadata("design:returntype", Promise)
37
+ ], DnsController.prototype, "start", null);
38
+ __decorate([
39
+ (0, core_1.Command)("dns:stop"),
40
+ __metadata("design:type", Function),
41
+ __metadata("design:paramtypes", []),
42
+ __metadata("design:returntype", Promise)
43
+ ], DnsController.prototype, "stop", null);
44
+ exports.DnsController = DnsController = __decorate([
45
+ (0, core_1.Controller)(),
46
+ __metadata("design:paramtypes", [DnsService_1.DnsService])
47
+ ], DnsController);
@@ -0,0 +1,4 @@
1
+ import { DynamicModule } from "@wocker/core";
2
+ export declare class DnsModule {
3
+ static register(): DynamicModule;
4
+ }
@@ -0,0 +1,41 @@
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 DnsModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.DnsModule = void 0;
11
+ const core_1 = require("@wocker/core");
12
+ const core_2 = require("../core");
13
+ const docker_1 = require("../docker");
14
+ const DnsController_1 = require("./controllers/DnsController");
15
+ const DnsService_1 = require("./services/DnsService");
16
+ let DnsModule = DnsModule_1 = class DnsModule {
17
+ static register() {
18
+ return {
19
+ module: DnsModule_1,
20
+ inject: [core_1.AppConfigService],
21
+ useFactory: (appConfigService) => {
22
+ if (!appConfigService.isExperimentalEnabled("dns")) {
23
+ return {};
24
+ }
25
+ return {
26
+ imports: [docker_1.DockerModule],
27
+ controllers: [DnsController_1.DnsController],
28
+ providers: [DnsService_1.DnsService]
29
+ };
30
+ }
31
+ };
32
+ }
33
+ };
34
+ exports.DnsModule = DnsModule;
35
+ exports.DnsModule = DnsModule = DnsModule_1 = __decorate([
36
+ (0, core_1.Module)({
37
+ imports: [
38
+ core_2.CoreModule
39
+ ]
40
+ })
41
+ ], DnsModule);