@wocker/ws 1.0.32-beta.1 → 1.1.0-beta.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.
- package/lib/main.js +2 -2
- package/lib/makes/index.d.ts +0 -2
- package/lib/makes/index.js +0 -2
- package/lib/modules/core/controllers/DebugController.d.ts +3 -4
- package/lib/modules/core/controllers/DebugController.js +5 -22
- package/lib/modules/core/controllers/ExperimentalController.d.ts +3 -3
- package/lib/modules/core/controllers/ExperimentalController.js +1 -1
- package/lib/modules/dns/index.js +3 -3
- package/lib/modules/keystore/controllers/KeystoreController.d.ts +3 -3
- package/lib/modules/keystore/controllers/KeystoreController.js +6 -6
- package/lib/modules/keystore/services/KeystoreService.d.ts +3 -3
- package/lib/modules/keystore/services/KeystoreService.js +4 -4
- package/lib/modules/package-manager/service/PackageManager.d.ts +3 -3
- package/lib/modules/package-manager/service/PackageManager.js +7 -7
- package/lib/modules/plugin/controllers/PluginController.d.ts +3 -3
- package/lib/modules/plugin/controllers/PluginController.js +4 -4
- package/lib/modules/plugin/index.js +4 -5
- package/lib/modules/plugin/services/PluginService.d.ts +3 -3
- package/lib/modules/plugin/services/PluginService.js +11 -13
- package/lib/modules/preset/controllers/PresetController.d.ts +3 -3
- package/lib/modules/preset/controllers/PresetController.js +4 -4
- package/lib/modules/preset/controllers/PresetListener.d.ts +3 -3
- package/lib/modules/preset/controllers/PresetListener.js +7 -7
- package/lib/modules/preset/repositories/PresetRepository.d.ts +3 -3
- package/lib/modules/preset/repositories/PresetRepository.js +7 -7
- package/lib/modules/preset/services/PresetService.d.ts +4 -3
- package/lib/modules/preset/services/PresetService.js +19 -19
- package/lib/modules/project/controllers/ProjectController.d.ts +3 -3
- package/lib/modules/project/controllers/ProjectController.js +17 -24
- package/lib/modules/project/repositories/ProjectRepository.d.ts +1 -8
- package/lib/modules/project/repositories/ProjectRepository.js +1 -56
- package/lib/modules/project/services/ProjectService.d.ts +3 -3
- package/lib/modules/project/services/ProjectService.js +37 -37
- package/lib/modules/proxy/controllers/HttpAuthController.d.ts +3 -2
- package/lib/modules/proxy/controllers/HttpAuthController.js +29 -8
- package/lib/modules/proxy/controllers/ProxyController.d.ts +3 -3
- package/lib/modules/proxy/controllers/ProxyController.js +5 -5
- package/lib/modules/proxy/services/HttpAuthService.d.ts +3 -0
- package/lib/modules/proxy/services/HttpAuthService.js +29 -10
- package/lib/modules/proxy/services/ProxyService.d.ts +3 -3
- package/lib/modules/proxy/services/ProxyService.js +7 -7
- package/package.json +15 -5
- package/lib/makes/Version.d.ts +0 -22
- package/lib/makes/Version.js +0 -59
- package/lib/makes/VersionRange.d.ts +0 -6
- package/lib/makes/VersionRange.js +0 -18
- package/lib/makes/VersionRule.d.ts +0 -24
- package/lib/makes/VersionRule.js +0 -68
|
@@ -27,13 +27,20 @@ let HttpAuthController = class HttpAuthController {
|
|
|
27
27
|
async onAddDomain(project, ...domains) {
|
|
28
28
|
console.log("New domains:", domains);
|
|
29
29
|
}
|
|
30
|
-
async
|
|
30
|
+
async users() {
|
|
31
|
+
await this.httpAuthService.usersForProject(this.projectService.get());
|
|
32
|
+
}
|
|
33
|
+
async enable(domain, noRestart) {
|
|
31
34
|
await this.httpAuthService.enableForProject(this.projectService.get(), domain);
|
|
32
|
-
|
|
35
|
+
if (!noRestart) {
|
|
36
|
+
await this.proxyService.start(true);
|
|
37
|
+
}
|
|
33
38
|
}
|
|
34
|
-
async disable(domain) {
|
|
39
|
+
async disable(domain, noRestart) {
|
|
35
40
|
await this.httpAuthService.disableForProject(this.projectService.get(), domain);
|
|
36
|
-
|
|
41
|
+
if (!noRestart) {
|
|
42
|
+
await this.proxyService.start(true);
|
|
43
|
+
}
|
|
37
44
|
}
|
|
38
45
|
async add(user, password, global, algorithm) {
|
|
39
46
|
if (!user) {
|
|
@@ -56,12 +63,12 @@ let HttpAuthController = class HttpAuthController {
|
|
|
56
63
|
else {
|
|
57
64
|
await this.httpAuthService.addForProject(this.projectService.get(), user, password, algorithm);
|
|
58
65
|
}
|
|
59
|
-
await this.proxyService.start(true);
|
|
60
66
|
}
|
|
61
67
|
async remove(user) {
|
|
62
68
|
await this.httpAuthService.removeForProject(this.projectService.get(), user);
|
|
63
69
|
}
|
|
64
70
|
async clear() {
|
|
71
|
+
await this.httpAuthService.clearForProject(this.projectService.get());
|
|
65
72
|
}
|
|
66
73
|
};
|
|
67
74
|
exports.HttpAuthController = HttpAuthController;
|
|
@@ -71,19 +78,31 @@ __decorate([
|
|
|
71
78
|
__metadata("design:paramtypes", [core_1.Project, String]),
|
|
72
79
|
__metadata("design:returntype", Promise)
|
|
73
80
|
], HttpAuthController.prototype, "onAddDomain", null);
|
|
81
|
+
__decorate([
|
|
82
|
+
(0, core_1.Command)("http-auth"),
|
|
83
|
+
(0, core_1.Description)(""),
|
|
84
|
+
__metadata("design:type", Function),
|
|
85
|
+
__metadata("design:paramtypes", []),
|
|
86
|
+
__metadata("design:returntype", Promise)
|
|
87
|
+
], HttpAuthController.prototype, "users", null);
|
|
74
88
|
__decorate([
|
|
75
89
|
(0, core_1.Command)("http-auth:enable"),
|
|
76
90
|
__param(0, (0, core_1.Option)("domain", "d")),
|
|
77
91
|
__param(0, (0, core_1.Description)("Domain to apply authentication to.")),
|
|
92
|
+
__param(1, (0, core_1.Option)("no-restart")),
|
|
93
|
+
__param(1, (0, core_1.Description)("")),
|
|
78
94
|
__metadata("design:type", Function),
|
|
79
|
-
__metadata("design:paramtypes", [String]),
|
|
95
|
+
__metadata("design:paramtypes", [String, Boolean]),
|
|
80
96
|
__metadata("design:returntype", Promise)
|
|
81
97
|
], HttpAuthController.prototype, "enable", null);
|
|
82
98
|
__decorate([
|
|
83
99
|
(0, core_1.Command)("http-auth:disable"),
|
|
84
100
|
__param(0, (0, core_1.Option)("domain", "d")),
|
|
101
|
+
__param(0, (0, core_1.Description)("")),
|
|
102
|
+
__param(1, (0, core_1.Option)("no-restart")),
|
|
103
|
+
__param(1, (0, core_1.Description)("")),
|
|
85
104
|
__metadata("design:type", Function),
|
|
86
|
-
__metadata("design:paramtypes", [String]),
|
|
105
|
+
__metadata("design:paramtypes", [String, Boolean]),
|
|
87
106
|
__metadata("design:returntype", Promise)
|
|
88
107
|
], HttpAuthController.prototype, "disable", null);
|
|
89
108
|
__decorate([
|
|
@@ -104,7 +123,8 @@ __decorate([
|
|
|
104
123
|
__metadata("design:returntype", Promise)
|
|
105
124
|
], HttpAuthController.prototype, "add", null);
|
|
106
125
|
__decorate([
|
|
107
|
-
(0, core_1.Command)("http-auth:remove [user]"),
|
|
126
|
+
(0, core_1.Command)("http-auth:remove-user [user]"),
|
|
127
|
+
(0, core_1.Description)(""),
|
|
108
128
|
__param(0, (0, core_1.Param)("user")),
|
|
109
129
|
__metadata("design:type", Function),
|
|
110
130
|
__metadata("design:paramtypes", [String]),
|
|
@@ -112,6 +132,7 @@ __decorate([
|
|
|
112
132
|
], HttpAuthController.prototype, "remove", null);
|
|
113
133
|
__decorate([
|
|
114
134
|
(0, core_1.Command)("http-auth:clear"),
|
|
135
|
+
(0, core_1.Description)("Remove all users for the project."),
|
|
115
136
|
__metadata("design:type", Function),
|
|
116
137
|
__metadata("design:paramtypes", []),
|
|
117
138
|
__metadata("design:returntype", Promise)
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Project,
|
|
1
|
+
import { Project, AppService } from "@wocker/core";
|
|
2
2
|
import { ProjectService } from "../../project";
|
|
3
3
|
import { ProxyService } from "../services/ProxyService";
|
|
4
4
|
export declare class ProxyController {
|
|
5
|
-
protected readonly
|
|
5
|
+
protected readonly appService: AppService;
|
|
6
6
|
protected readonly projectService: ProjectService;
|
|
7
7
|
protected readonly proxyService: ProxyService;
|
|
8
|
-
constructor(
|
|
8
|
+
constructor(appService: AppService, projectService: ProjectService, proxyService: ProxyService);
|
|
9
9
|
onProjectInit(project: Project): Promise<void>;
|
|
10
10
|
onProjectStart(project: Project): Promise<void>;
|
|
11
11
|
onProjectStop(_project: Project): Promise<void>;
|
|
@@ -22,8 +22,8 @@ const yoctocolors_cjs_1 = __importDefault(require("yoctocolors-cjs"));
|
|
|
22
22
|
const project_1 = require("../../project");
|
|
23
23
|
const ProxyService_1 = require("../services/ProxyService");
|
|
24
24
|
let ProxyController = class ProxyController {
|
|
25
|
-
constructor(
|
|
26
|
-
this.
|
|
25
|
+
constructor(appService, projectService, proxyService) {
|
|
26
|
+
this.appService = appService;
|
|
27
27
|
this.projectService = projectService;
|
|
28
28
|
this.proxyService = proxyService;
|
|
29
29
|
}
|
|
@@ -47,7 +47,7 @@ let ProxyController = class ProxyController {
|
|
|
47
47
|
return projects.map((project) => project.name);
|
|
48
48
|
}
|
|
49
49
|
async init(httpPort, httpsPort, sshPort, sshPassword) {
|
|
50
|
-
const config = this.
|
|
50
|
+
const config = this.appService.config;
|
|
51
51
|
if (httpPort === null || typeof httpPort === "undefined" || isNaN(httpPort)) {
|
|
52
52
|
httpPort = await (0, utils_1.promptInput)({
|
|
53
53
|
required: true,
|
|
@@ -95,7 +95,7 @@ let ProxyController = class ProxyController {
|
|
|
95
95
|
config.unsetMeta("PROXY_SSH_PASSWORD");
|
|
96
96
|
config.unsetMeta("PROXY_SSH_PORT");
|
|
97
97
|
}
|
|
98
|
-
this.
|
|
98
|
+
this.appService.save();
|
|
99
99
|
}
|
|
100
100
|
async start(restart, rebuild) {
|
|
101
101
|
await this.proxyService.start(restart, rebuild);
|
|
@@ -190,7 +190,7 @@ __decorate([
|
|
|
190
190
|
exports.ProxyController = ProxyController = __decorate([
|
|
191
191
|
(0, core_1.Controller)(),
|
|
192
192
|
(0, core_1.Description)("Proxy commands"),
|
|
193
|
-
__metadata("design:paramtypes", [core_1.
|
|
193
|
+
__metadata("design:paramtypes", [core_1.AppService,
|
|
194
194
|
project_1.ProjectService,
|
|
195
195
|
ProxyService_1.ProxyService])
|
|
196
196
|
], ProxyController);
|
|
@@ -7,11 +7,14 @@ export declare class HttpAuthService {
|
|
|
7
7
|
protected readonly dockerService: DockerService;
|
|
8
8
|
protected readonly proxyService: ProxyService;
|
|
9
9
|
constructor(processService: ProcessService, fs: AppFileSystemService, dockerService: DockerService, proxyService: ProxyService);
|
|
10
|
+
users(path: string): Promise<void>;
|
|
10
11
|
add(path: string, user: string, password: string, algorithm?: HttpAuthService.Algorithm): Promise<void>;
|
|
11
12
|
addForProject(project: Project, user: string, password: string, algorithm?: HttpAuthService.Algorithm): Promise<void>;
|
|
12
13
|
addForGlobal(user: string, password: string, algorithm?: HttpAuthService.Algorithm): Promise<void>;
|
|
13
14
|
removeUser(path: string, user: string): Promise<void>;
|
|
15
|
+
usersForProject(project: Project): Promise<void>;
|
|
14
16
|
removeForProject(project: Project, user: string): Promise<void>;
|
|
17
|
+
clearForProject(project: Project): Promise<void>;
|
|
15
18
|
enableForProject(project: Project, domain?: string): Promise<void>;
|
|
16
19
|
disableForProject(project: Project, domain?: string): Promise<void>;
|
|
17
20
|
}
|
|
@@ -12,7 +12,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.HttpAuthService = void 0;
|
|
13
13
|
const core_1 = require("@wocker/core");
|
|
14
14
|
const docker_module_1 = require("@wocker/docker-module");
|
|
15
|
-
const utils_1 = require("@wocker/utils");
|
|
16
15
|
const ProxyService_1 = require("./ProxyService");
|
|
17
16
|
let HttpAuthService = class HttpAuthService {
|
|
18
17
|
constructor(processService, fs, dockerService, proxyService) {
|
|
@@ -21,6 +20,13 @@ let HttpAuthService = class HttpAuthService {
|
|
|
21
20
|
this.dockerService = dockerService;
|
|
22
21
|
this.proxyService = proxyService;
|
|
23
22
|
}
|
|
23
|
+
async users(path) {
|
|
24
|
+
await this.dockerService.exec("wocker-proxy", {
|
|
25
|
+
tty: true,
|
|
26
|
+
user: "nginx",
|
|
27
|
+
cmd: ["cut", "-d:", "-f1", `/etc/${path}`]
|
|
28
|
+
});
|
|
29
|
+
}
|
|
24
30
|
async add(path, user, password, algorithm = "md5") {
|
|
25
31
|
const alMap = {
|
|
26
32
|
md5: "-m",
|
|
@@ -37,16 +43,10 @@ let HttpAuthService = class HttpAuthService {
|
|
|
37
43
|
mode: 0o640
|
|
38
44
|
});
|
|
39
45
|
}
|
|
40
|
-
|
|
46
|
+
await this.dockerService.exec("wocker-proxy", {
|
|
41
47
|
user: "nginx",
|
|
42
|
-
cmd: ["htpasswd", "-b", alMap[algorithm], `/etc/${path}`, user, password]
|
|
43
|
-
|
|
44
|
-
await new Promise((resolve, reject) => {
|
|
45
|
-
stream.on("data", (chunk) => {
|
|
46
|
-
this.processService.stdout.write((0, utils_1.demuxOutput)(chunk));
|
|
47
|
-
});
|
|
48
|
-
stream.on("end", resolve);
|
|
49
|
-
stream.on("error", reject);
|
|
48
|
+
cmd: ["htpasswd", "-b", alMap[algorithm], `/etc/${path}`, user, password],
|
|
49
|
+
tty: true
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
52
|
async addForProject(project, user, password, algorithm = "md5") {
|
|
@@ -61,6 +61,17 @@ let HttpAuthService = class HttpAuthService {
|
|
|
61
61
|
return this.add(`nginx/htpasswd/_global`, user, password, algorithm);
|
|
62
62
|
}
|
|
63
63
|
async removeUser(path, user) {
|
|
64
|
+
await this.dockerService.exec("wocker-proxy", {
|
|
65
|
+
cmd: ["htpasswd", "-D", `/etc/${path}`, user],
|
|
66
|
+
user: "nginx",
|
|
67
|
+
tty: true
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
async usersForProject(project) {
|
|
71
|
+
if (!this.fs.exists("nginx/htpasswd/projects")) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
await this.users(`nginx/htpasswd/projects/${project.name}`);
|
|
64
75
|
}
|
|
65
76
|
async removeForProject(project, user) {
|
|
66
77
|
if (!this.fs.exists("nginx/htpasswd/projects")) {
|
|
@@ -68,6 +79,14 @@ let HttpAuthService = class HttpAuthService {
|
|
|
68
79
|
}
|
|
69
80
|
await this.removeUser(`nginx/htpasswd/projects/${project.name}`, user);
|
|
70
81
|
}
|
|
82
|
+
async clearForProject(project) {
|
|
83
|
+
const filePath = `nginx/htpasswd/projects/${project.name}`;
|
|
84
|
+
if (this.fs.exists(filePath)) {
|
|
85
|
+
this.fs.writeFile(filePath, "", {
|
|
86
|
+
mode: 0o640
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
71
90
|
async enableForProject(project, domain) {
|
|
72
91
|
if (!this.fs.exists(`nginx/htpasswd/projects/${project.name}`)) {
|
|
73
92
|
throw new Error(`No htpasswd for ${project.name}`);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Project,
|
|
1
|
+
import { Project, AppService, AppFileSystemService, ProcessService, ProxyService as CoreProxyService } from "@wocker/core";
|
|
2
2
|
import { DockerService } from "@wocker/docker-module";
|
|
3
3
|
export declare class ProxyService extends CoreProxyService {
|
|
4
|
-
protected readonly
|
|
4
|
+
protected readonly appService: AppService;
|
|
5
5
|
protected readonly processService: ProcessService;
|
|
6
6
|
protected readonly fs: AppFileSystemService;
|
|
7
7
|
protected readonly dockerService: DockerService;
|
|
@@ -9,7 +9,7 @@ export declare class ProxyService extends CoreProxyService {
|
|
|
9
9
|
protected oldContainerNames: string[];
|
|
10
10
|
protected imageName: string;
|
|
11
11
|
protected oldImages: string[];
|
|
12
|
-
constructor(
|
|
12
|
+
constructor(appService: AppService, processService: ProcessService, fs: AppFileSystemService, dockerService: DockerService);
|
|
13
13
|
init(project: Project): Promise<void>;
|
|
14
14
|
start(restart?: boolean, rebuild?: boolean): Promise<void>;
|
|
15
15
|
stop(): Promise<void>;
|
|
@@ -49,9 +49,9 @@ const utils_1 = require("@wocker/utils");
|
|
|
49
49
|
const Path = __importStar(require("path"));
|
|
50
50
|
const env_1 = require("../../../env");
|
|
51
51
|
let ProxyService = class ProxyService extends core_1.ProxyService {
|
|
52
|
-
constructor(
|
|
52
|
+
constructor(appService, processService, fs, dockerService) {
|
|
53
53
|
super();
|
|
54
|
-
this.
|
|
54
|
+
this.appService = appService;
|
|
55
55
|
this.processService = processService;
|
|
56
56
|
this.fs = fs;
|
|
57
57
|
this.dockerService = dockerService;
|
|
@@ -110,7 +110,7 @@ let ProxyService = class ProxyService extends core_1.ProxyService {
|
|
|
110
110
|
else {
|
|
111
111
|
this.fs.chmod("nginx/htpasswd", 0o764);
|
|
112
112
|
}
|
|
113
|
-
const httpPort = this.
|
|
113
|
+
const httpPort = this.appService.getMeta("PROXY_HTTP_PORT", "80"), httpsPort = this.appService.getMeta("PROXY_HTTPS_PORT", "443"), sshPort = this.appService.getMeta("PROXY_SSH_PORT", "22");
|
|
114
114
|
container = await this.dockerService.createContainer({
|
|
115
115
|
name: this.containerName,
|
|
116
116
|
image: this.imageName,
|
|
@@ -124,7 +124,7 @@ let ProxyService = class ProxyService extends core_1.ProxyService {
|
|
|
124
124
|
ports: [
|
|
125
125
|
`${httpPort}:80`,
|
|
126
126
|
`${httpsPort}:443`,
|
|
127
|
-
...this.
|
|
127
|
+
...this.appService.getMeta("PROXY_SSH_PASSWORD") ? [
|
|
128
128
|
`${sshPort}:22`
|
|
129
129
|
] : []
|
|
130
130
|
],
|
|
@@ -161,9 +161,9 @@ let ProxyService = class ProxyService extends core_1.ProxyService {
|
|
|
161
161
|
}
|
|
162
162
|
await this.dockerService.buildImage({
|
|
163
163
|
tag: this.imageName,
|
|
164
|
-
version: this.
|
|
164
|
+
version: this.appService.isExperimentalEnabled("buildKit") ? "2" : "1",
|
|
165
165
|
buildArgs: {
|
|
166
|
-
SSH_PASSWORD: this.
|
|
166
|
+
SSH_PASSWORD: this.appService.getMeta("PROXY_SSH_PASSWORD")
|
|
167
167
|
},
|
|
168
168
|
context: Path.join(env_1.PLUGINS_DIR, "proxy"),
|
|
169
169
|
dockerfile: "./Dockerfile"
|
|
@@ -176,7 +176,7 @@ let ProxyService = class ProxyService extends core_1.ProxyService {
|
|
|
176
176
|
exports.ProxyService = ProxyService;
|
|
177
177
|
exports.ProxyService = ProxyService = __decorate([
|
|
178
178
|
(0, core_1.Injectable)("PROXY_SERVICE"),
|
|
179
|
-
__metadata("design:paramtypes", [core_1.
|
|
179
|
+
__metadata("design:paramtypes", [core_1.AppService,
|
|
180
180
|
core_1.ProcessService,
|
|
181
181
|
core_1.AppFileSystemService,
|
|
182
182
|
docker_module_1.DockerService])
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wocker/ws",
|
|
3
3
|
"type": "commonjs",
|
|
4
|
-
"version": "1.0
|
|
4
|
+
"version": "1.1.0-beta.0",
|
|
5
5
|
"author": "Kris Papercut <krispcut@gmail.com>",
|
|
6
6
|
"description": "Docker workspace for web projects",
|
|
7
7
|
"license": "MIT",
|
|
@@ -35,14 +35,13 @@
|
|
|
35
35
|
"make-coverage-badge": "make-coverage-badge"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@wocker/core": "1.0.
|
|
39
|
-
"@wocker/docker-module": "^0.0
|
|
38
|
+
"@wocker/core": "^1.1.0-beta.2",
|
|
39
|
+
"@wocker/docker-module": "^1.0.0",
|
|
40
40
|
"@wocker/utils": "^2.0.6",
|
|
41
41
|
"async-mutex": "^0.4.0",
|
|
42
42
|
"axios": "^1.6.7",
|
|
43
43
|
"child_process": "^1.0.2",
|
|
44
44
|
"cli-table3": "^0.6.2",
|
|
45
|
-
"docker-compose": "^1.2.0",
|
|
46
45
|
"dockerode": "^4.0.2",
|
|
47
46
|
"keytar": "^7.9.0",
|
|
48
47
|
"md5": "^2.3.0",
|
|
@@ -57,7 +56,7 @@
|
|
|
57
56
|
"@types/mute-stream": "^0.0.4",
|
|
58
57
|
"@types/node": "^24.5.2",
|
|
59
58
|
"@types/unzipper": "^0.10.10",
|
|
60
|
-
"@wocker/docker-mock-module": "^0.0
|
|
59
|
+
"@wocker/docker-mock-module": "^1.0.0",
|
|
61
60
|
"@wocker/testing": "^1.0.4",
|
|
62
61
|
"jest": "^30.1.3",
|
|
63
62
|
"make-coverage-badge": "^1.2.0",
|
|
@@ -66,5 +65,16 @@
|
|
|
66
65
|
"ts-node": "^10.9.2",
|
|
67
66
|
"typescript": "^5.9.3",
|
|
68
67
|
"unionfs": "^4.5.4"
|
|
68
|
+
},
|
|
69
|
+
"overrides": {
|
|
70
|
+
"@wocker/testing": {
|
|
71
|
+
"@wocker/core": "^1.1.0-beta.2"
|
|
72
|
+
},
|
|
73
|
+
"@wocker/docker-module": {
|
|
74
|
+
"@wocker/core": "^1.1.0-beta.2"
|
|
75
|
+
},
|
|
76
|
+
"@wocker/docker-mock-module": {
|
|
77
|
+
"@wocker/core": "^1.1.0-beta.2"
|
|
78
|
+
}
|
|
69
79
|
}
|
|
70
80
|
}
|
package/lib/makes/Version.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
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 {};
|
package/lib/makes/Version.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
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();
|
|
@@ -1,18 +0,0 @@
|
|
|
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;
|
|
@@ -1,24 +0,0 @@
|
|
|
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 {};
|
package/lib/makes/VersionRule.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
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();
|