@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.
- package/README.md +1 -1
- package/lib/AppModule.js +42 -0
- package/lib/env.d.ts +2 -3
- package/lib/env.js +12 -42
- package/lib/main.d.ts +2 -3
- package/lib/main.js +24 -26
- package/lib/makes/GithubClient.d.ts +24 -3
- package/lib/makes/GithubClient.js +20 -6
- package/lib/makes/Version.d.ts +22 -0
- package/lib/makes/Version.js +59 -0
- package/lib/makes/VersionRange.d.ts +6 -0
- package/lib/makes/VersionRange.js +18 -0
- package/lib/makes/VersionRule.d.ts +24 -0
- package/lib/makes/VersionRule.js +68 -0
- package/lib/makes/index.d.ts +2 -0
- package/lib/makes/index.js +2 -0
- package/lib/modules/core/index.d.ts +2 -0
- package/lib/modules/{app → core}/index.js +13 -19
- package/lib/modules/dns/controllers/DnsController.d.ts +7 -0
- package/lib/modules/dns/controllers/DnsController.js +47 -0
- package/lib/modules/dns/index.d.ts +4 -0
- package/lib/modules/dns/index.js +41 -0
- package/lib/modules/dns/services/DnsService.d.ts +10 -0
- package/lib/modules/dns/services/DnsService.js +77 -0
- package/lib/modules/docker/index.d.ts +2 -1
- package/lib/modules/docker/index.js +5 -1
- package/lib/modules/docker/services/ComposeService.d.ts +32 -0
- package/lib/modules/docker/services/ComposeService.js +127 -0
- package/lib/modules/docker/services/ContainerService.d.ts +1 -1
- package/lib/modules/docker/services/DockerService.js +2 -25
- package/lib/modules/docker/services/ImageService.d.ts +2 -8
- package/lib/modules/docker/services/ImageService.js +15 -3
- package/lib/modules/docker/services/ModemService.d.ts +3 -3
- package/lib/modules/docker/services/ModemService.js +24 -6
- package/lib/modules/docker/services/ProtoService.js +2 -2
- package/lib/modules/docker/type/ComposeConfig.d.ts +12 -0
- package/lib/modules/index.d.ts +4 -1
- package/lib/modules/index.js +4 -1
- package/lib/modules/keystore/controllers/KeystoreController.d.ts +0 -3
- package/lib/modules/keystore/controllers/KeystoreController.js +3 -54
- package/lib/modules/keystore/services/KeystoreService.d.ts +3 -3
- package/lib/modules/keystore/services/KeystoreService.js +6 -4
- package/lib/modules/keystore/utils/createEncryptionKey.d.ts +1 -1
- package/lib/modules/package-manager/index.d.ts +5 -0
- package/lib/modules/package-manager/index.js +33 -0
- package/lib/modules/package-manager/providers/NpmProvider.d.ts +7 -0
- package/lib/modules/package-manager/providers/NpmProvider.js +39 -0
- package/lib/modules/package-manager/providers/PnpmProvider.d.ts +7 -0
- package/lib/modules/package-manager/providers/PnpmProvider.js +30 -0
- package/lib/modules/package-manager/providers/YarnProvider.d.ts +7 -0
- package/lib/modules/package-manager/providers/YarnProvider.js +29 -0
- package/lib/modules/package-manager/service/PackageManager.d.ts +10 -0
- package/lib/modules/package-manager/service/PackageManager.js +70 -0
- package/lib/modules/package-manager/service/RegistryService.d.ts +4 -0
- package/lib/{services/NpmService.js → modules/package-manager/service/RegistryService.js} +6 -11
- package/lib/modules/package-manager/types/Package.d.ts +4 -0
- package/lib/modules/package-manager/types/Package.js +2 -0
- package/lib/modules/package-manager/types/PackageInfo.js +2 -0
- package/lib/modules/package-manager/types/PackageManagerProvider.d.ts +6 -0
- package/lib/modules/package-manager/types/PackageManagerProvider.js +6 -0
- package/lib/{controllers → modules/plugin/controllers}/PluginController.d.ts +2 -2
- package/lib/{controllers → modules/plugin/controllers}/PluginController.js +21 -20
- package/lib/modules/plugin/index.d.ts +4 -0
- package/lib/modules/plugin/index.js +67 -0
- package/lib/{services → modules/plugin/services}/PluginService.d.ts +7 -5
- package/lib/{services → modules/plugin/services}/PluginService.js +38 -40
- package/lib/modules/preset/controllers/PresetController.d.ts +1 -1
- package/lib/modules/preset/controllers/PresetController.js +14 -7
- package/lib/modules/preset/controllers/PresetListener.d.ts +3 -2
- package/lib/modules/preset/controllers/PresetListener.js +6 -3
- package/lib/modules/preset/services/PresetService.d.ts +2 -1
- package/lib/modules/preset/services/PresetService.js +84 -15
- package/lib/modules/project/controllers/ProjectController.d.ts +38 -2
- package/lib/modules/project/controllers/ProjectController.js +848 -2
- package/lib/modules/project/controllers/SecretsController.d.ts +8 -0
- package/lib/modules/project/controllers/SecretsController.js +72 -0
- package/lib/modules/project/index.js +5 -1
- package/lib/modules/project/repositories/ProjectRepository.d.ts +3 -6
- package/lib/modules/project/repositories/ProjectRepository.js +9 -28
- package/lib/modules/project/services/ProjectService.d.ts +10 -4
- package/lib/modules/project/services/ProjectService.js +103 -8
- package/lib/modules/proxy/controllers/ProxyController.d.ts +1 -2
- package/lib/modules/proxy/controllers/ProxyController.js +1 -2
- package/lib/modules/proxy/services/CertService.js +1 -1
- package/lib/modules/proxy/services/ProxyService.d.ts +1 -0
- package/lib/modules/proxy/services/ProxyService.js +9 -4
- package/lib/utils/exec.js +4 -1
- package/lib/utils/get-cursor-position.js +1 -1
- package/lib/utils/index.d.ts +0 -1
- package/lib/utils/index.js +0 -1
- package/package.json +15 -15
- package/plugins/dns/Dockerfile +35 -0
- package/plugins/dns/app/Procfile +2 -0
- package/plugins/dns/app/dnsmasq.conf.tmpl +11 -0
- package/plugins/dns/app/dnsmasq.sh +28 -0
- package/plugins/proxy/Dockerfile +0 -2
- package/bin/ws.js +0 -6
- package/lib/RootModule.d.ts +0 -6
- package/lib/RootModule.js +0 -93
- package/lib/controllers/ProjectController.d.ts +0 -45
- package/lib/controllers/ProjectController.js +0 -972
- package/lib/controllers/index.d.ts +0 -5
- package/lib/controllers/index.js +0 -21
- package/lib/services/NpmService.d.ts +0 -5
- package/lib/types/index.d.ts +0 -1
- package/lib/types/index.js +0 -17
- package/lib/utils/followProgress2.d.ts +0 -1
- package/lib/utils/followProgress2.js +0 -63
- /package/lib/{modules/app/index.d.ts → AppModule.d.ts} +0 -0
- /package/lib/{controllers → modules/core/controllers}/CompletionController.d.ts +0 -0
- /package/lib/{controllers → modules/core/controllers}/CompletionController.js +0 -0
- /package/lib/{controllers → modules/core/controllers}/DebugController.d.ts +0 -0
- /package/lib/{controllers → modules/core/controllers}/DebugController.js +0 -0
- /package/lib/{controllers → modules/core/controllers}/ExperimentalController.d.ts +0 -0
- /package/lib/{controllers → modules/core/controllers}/ExperimentalController.js +0 -0
- /package/lib/{types/PackageInfo.js → modules/docker/type/ComposeConfig.js} +0 -0
- /package/lib/{types → modules/package-manager/types}/PackageInfo.d.ts +0 -0
|
@@ -0,0 +1,33 @@
|
|
|
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.RegistryService = exports.PackageManager = exports.PackageManagerModule = void 0;
|
|
10
|
+
const core_1 = require("@wocker/core");
|
|
11
|
+
const core_2 = require("../core");
|
|
12
|
+
const PackageManager_1 = require("./service/PackageManager");
|
|
13
|
+
Object.defineProperty(exports, "PackageManager", { enumerable: true, get: function () { return PackageManager_1.PackageManager; } });
|
|
14
|
+
const RegistryService_1 = require("./service/RegistryService");
|
|
15
|
+
Object.defineProperty(exports, "RegistryService", { enumerable: true, get: function () { return RegistryService_1.RegistryService; } });
|
|
16
|
+
let PackageManagerModule = class PackageManagerModule {
|
|
17
|
+
};
|
|
18
|
+
exports.PackageManagerModule = PackageManagerModule;
|
|
19
|
+
exports.PackageManagerModule = PackageManagerModule = __decorate([
|
|
20
|
+
(0, core_1.Module)({
|
|
21
|
+
imports: [
|
|
22
|
+
core_2.CoreModule
|
|
23
|
+
],
|
|
24
|
+
providers: [
|
|
25
|
+
PackageManager_1.PackageManager,
|
|
26
|
+
RegistryService_1.RegistryService
|
|
27
|
+
],
|
|
28
|
+
exports: [
|
|
29
|
+
PackageManager_1.PackageManager,
|
|
30
|
+
RegistryService_1.RegistryService
|
|
31
|
+
]
|
|
32
|
+
})
|
|
33
|
+
], PackageManagerModule);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PackageManagerProvider } from "../types/PackageManagerProvider";
|
|
2
|
+
import { Package } from "../types/Package";
|
|
3
|
+
export declare class NpmProvider extends PackageManagerProvider {
|
|
4
|
+
getPackages(): Promise<Package[]>;
|
|
5
|
+
install(name: string, version?: string): Promise<void>;
|
|
6
|
+
uninstall(name: string): Promise<void>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
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.NpmProvider = void 0;
|
|
10
|
+
const core_1 = require("@wocker/core");
|
|
11
|
+
const PackageManagerProvider_1 = require("../types/PackageManagerProvider");
|
|
12
|
+
const utils_1 = require("../../../utils");
|
|
13
|
+
let NpmProvider = class NpmProvider extends PackageManagerProvider_1.PackageManagerProvider {
|
|
14
|
+
async getPackages() {
|
|
15
|
+
const res = await (0, utils_1.exec)("npm ls -g --json");
|
|
16
|
+
const packages = [], { dependencies } = JSON.parse(res);
|
|
17
|
+
for (const name in dependencies) {
|
|
18
|
+
packages.push({
|
|
19
|
+
name: name,
|
|
20
|
+
version: dependencies[name].version
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return packages;
|
|
24
|
+
}
|
|
25
|
+
async install(name, version) {
|
|
26
|
+
const command = `npm install -g ${version ? `${name}@${version}` : name}`;
|
|
27
|
+
console.info(`> ${command}`);
|
|
28
|
+
await (0, utils_1.exec)(command);
|
|
29
|
+
}
|
|
30
|
+
async uninstall(name) {
|
|
31
|
+
const command = `npm uninstall -g ${name}`;
|
|
32
|
+
console.info(`> ${command}`);
|
|
33
|
+
await (0, utils_1.exec)(command);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
exports.NpmProvider = NpmProvider;
|
|
37
|
+
exports.NpmProvider = NpmProvider = __decorate([
|
|
38
|
+
(0, core_1.Injectable)()
|
|
39
|
+
], NpmProvider);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PackageManagerProvider } from "../types/PackageManagerProvider";
|
|
2
|
+
import { Package } from "../types/Package";
|
|
3
|
+
export declare class PnpmProvider extends PackageManagerProvider {
|
|
4
|
+
getPackages(): Promise<Package[]>;
|
|
5
|
+
install(name: string, version?: string): Promise<void>;
|
|
6
|
+
uninstall(name: string): Promise<void>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PnpmProvider = void 0;
|
|
4
|
+
const PackageManagerProvider_1 = require("../types/PackageManagerProvider");
|
|
5
|
+
const utils_1 = require("../../../utils");
|
|
6
|
+
class PnpmProvider extends PackageManagerProvider_1.PackageManagerProvider {
|
|
7
|
+
async getPackages() {
|
|
8
|
+
const res = await (0, utils_1.exec)("pnpm ls -g --json"), data = JSON.parse(res), dependencies = Array.isArray(data) ? data[0]?.dependencies : data.dependencies, packages = [];
|
|
9
|
+
if (dependencies) {
|
|
10
|
+
for (const name in dependencies) {
|
|
11
|
+
packages.push({
|
|
12
|
+
name,
|
|
13
|
+
version: dependencies[name].version
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return packages;
|
|
18
|
+
}
|
|
19
|
+
async install(name, version) {
|
|
20
|
+
const command = `pnpm add -g ${version ? `${name}@${version}` : name}`;
|
|
21
|
+
console.info(`> ${command}`);
|
|
22
|
+
await (0, utils_1.exec)(command);
|
|
23
|
+
}
|
|
24
|
+
async uninstall(name) {
|
|
25
|
+
const command = `pnpm remove -g ${name}`;
|
|
26
|
+
console.info(`> ${command}`);
|
|
27
|
+
await (0, utils_1.exec)(command);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.PnpmProvider = PnpmProvider;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PackageManagerProvider } from "../types/PackageManagerProvider";
|
|
2
|
+
import { Package } from "../types/Package";
|
|
3
|
+
export declare class YarnProvider extends PackageManagerProvider {
|
|
4
|
+
getPackages(): Promise<Package[]>;
|
|
5
|
+
install(name: string, version?: string): Promise<void>;
|
|
6
|
+
uninstall(name: string): Promise<void>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.YarnProvider = void 0;
|
|
4
|
+
const PackageManagerProvider_1 = require("../types/PackageManagerProvider");
|
|
5
|
+
const utils_1 = require("../../../utils");
|
|
6
|
+
class YarnProvider extends PackageManagerProvider_1.PackageManagerProvider {
|
|
7
|
+
async getPackages() {
|
|
8
|
+
const res = await (0, utils_1.exec)("yarn --cwd `yarn global dir` list --json --depth=0"), three = JSON.parse(res), packages = [];
|
|
9
|
+
for (const item of three.data.trees) {
|
|
10
|
+
const [, name, version] = /^(.*)@(.*)$/.exec(item.name);
|
|
11
|
+
packages.push({
|
|
12
|
+
name,
|
|
13
|
+
version
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return packages;
|
|
17
|
+
}
|
|
18
|
+
async install(name, version) {
|
|
19
|
+
const command = `yarn global add ${version ? `${name}@${version}` : name}`;
|
|
20
|
+
console.info(`> ${command}`);
|
|
21
|
+
await (0, utils_1.exec)(command);
|
|
22
|
+
}
|
|
23
|
+
async uninstall(name) {
|
|
24
|
+
const command = `yarn global remove ${name}`;
|
|
25
|
+
console.info(`> ${command}`);
|
|
26
|
+
await (0, utils_1.exec)(command);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.YarnProvider = YarnProvider;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AppConfigService } from "@wocker/core";
|
|
2
|
+
import { PackageManagerProvider } from "../types/PackageManagerProvider";
|
|
3
|
+
export declare class PackageManager {
|
|
4
|
+
protected readonly appConfigService: AppConfigService;
|
|
5
|
+
constructor(appConfigService: AppConfigService);
|
|
6
|
+
getManager(): Promise<PackageManagerProvider>;
|
|
7
|
+
getPackages(global?: boolean): Promise<import("../types/Package").Package[]>;
|
|
8
|
+
install(name: string, version?: string): Promise<void>;
|
|
9
|
+
uninstall(name: string): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.PackageManager = void 0;
|
|
13
|
+
const core_1 = require("@wocker/core");
|
|
14
|
+
const utils_1 = require("@wocker/utils");
|
|
15
|
+
const NpmProvider_1 = require("../providers/NpmProvider");
|
|
16
|
+
const PnpmProvider_1 = require("../providers/PnpmProvider");
|
|
17
|
+
const YarnProvider_1 = require("../providers/YarnProvider");
|
|
18
|
+
let PackageManager = class PackageManager {
|
|
19
|
+
constructor(appConfigService) {
|
|
20
|
+
this.appConfigService = appConfigService;
|
|
21
|
+
}
|
|
22
|
+
async getManager() {
|
|
23
|
+
if (!this.appConfigService.config.pm) {
|
|
24
|
+
this.appConfigService.config.pm = await (0, utils_1.promptSelect)({
|
|
25
|
+
label: "Package manager:",
|
|
26
|
+
options: [
|
|
27
|
+
{
|
|
28
|
+
label: "NPM",
|
|
29
|
+
value: "npm"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
label: "PNPM",
|
|
33
|
+
value: "pnpm"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
label: "YARN",
|
|
37
|
+
value: "yarn"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
required: true
|
|
41
|
+
});
|
|
42
|
+
this.appConfigService.save();
|
|
43
|
+
}
|
|
44
|
+
switch (this.appConfigService.config.pm) {
|
|
45
|
+
case "npm":
|
|
46
|
+
return new NpmProvider_1.NpmProvider();
|
|
47
|
+
case "pnpm":
|
|
48
|
+
return new PnpmProvider_1.PnpmProvider();
|
|
49
|
+
case "yarn":
|
|
50
|
+
return new YarnProvider_1.YarnProvider();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async getPackages(global) {
|
|
54
|
+
const pm = await this.getManager();
|
|
55
|
+
return pm.getPackages(global);
|
|
56
|
+
}
|
|
57
|
+
async install(name, version) {
|
|
58
|
+
const pm = await this.getManager();
|
|
59
|
+
await pm.install(name, version);
|
|
60
|
+
}
|
|
61
|
+
async uninstall(name) {
|
|
62
|
+
const pm = await this.getManager();
|
|
63
|
+
await pm.uninstall(name);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
exports.PackageManager = PackageManager;
|
|
67
|
+
exports.PackageManager = PackageManager = __decorate([
|
|
68
|
+
(0, core_1.Injectable)("PACKAGE_MANAGER_SERVICE"),
|
|
69
|
+
__metadata("design:paramtypes", [core_1.AppConfigService])
|
|
70
|
+
], PackageManager);
|
|
@@ -6,11 +6,10 @@ 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.
|
|
9
|
+
exports.RegistryService = void 0;
|
|
10
10
|
const core_1 = require("@wocker/core");
|
|
11
|
-
const makes_1 = require("
|
|
12
|
-
|
|
13
|
-
let NpmService = class NpmService {
|
|
11
|
+
const makes_1 = require("../../../makes");
|
|
12
|
+
let RegistryService = class RegistryService {
|
|
14
13
|
async getPackageInfo(name) {
|
|
15
14
|
const res = await makes_1.Http.get("https://registry.npmjs.org")
|
|
16
15
|
.send(name);
|
|
@@ -22,12 +21,8 @@ let NpmService = class NpmService {
|
|
|
22
21
|
}
|
|
23
22
|
return res.data;
|
|
24
23
|
}
|
|
25
|
-
async install(name, version) {
|
|
26
|
-
console.info(`npm install -g ${version ? `${name}@${version}` : name}`);
|
|
27
|
-
await (0, utils_1.exec)(`npm install -g ${version ? `${name}@${version}` : name}`);
|
|
28
|
-
}
|
|
29
24
|
};
|
|
30
|
-
exports.
|
|
31
|
-
exports.
|
|
25
|
+
exports.RegistryService = RegistryService;
|
|
26
|
+
exports.RegistryService = RegistryService = __decorate([
|
|
32
27
|
(0, core_1.Injectable)()
|
|
33
|
-
],
|
|
28
|
+
], RegistryService);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Package } from "./Package";
|
|
2
|
+
export declare abstract class PackageManagerProvider {
|
|
3
|
+
abstract getPackages(global?: boolean): Promise<Package[]>;
|
|
4
|
+
abstract install(name: string, version?: string): Promise<void>;
|
|
5
|
+
abstract uninstall(name: string): Promise<void>;
|
|
6
|
+
}
|
|
@@ -5,8 +5,8 @@ export declare class PluginController {
|
|
|
5
5
|
protected readonly pluginService: PluginService;
|
|
6
6
|
constructor(appConfigService: AppConfigService, pluginService: PluginService);
|
|
7
7
|
list(): Promise<string>;
|
|
8
|
-
add(
|
|
9
|
-
remove(
|
|
8
|
+
add(names: string[]): Promise<void>;
|
|
9
|
+
remove(names: string[]): Promise<void>;
|
|
10
10
|
update(): Promise<void>;
|
|
11
11
|
getInstalledPlugins(): string[];
|
|
12
12
|
}
|
|
@@ -23,17 +23,22 @@ let PluginController = class PluginController {
|
|
|
23
23
|
async list() {
|
|
24
24
|
return this.pluginService.getPluginsTable();
|
|
25
25
|
}
|
|
26
|
-
async add(
|
|
27
|
-
|
|
26
|
+
async add(names) {
|
|
27
|
+
for (const fullName of names) {
|
|
28
|
+
const [, name, version] = /^(@?[^@/\s]+(?:\/[^@/\s]+)?)(?:@([^@\s]+))?$/.exec(fullName) || [];
|
|
29
|
+
await this.pluginService.install(name, version);
|
|
30
|
+
}
|
|
28
31
|
}
|
|
29
|
-
async remove(
|
|
30
|
-
|
|
32
|
+
async remove(names) {
|
|
33
|
+
for (const name of names) {
|
|
34
|
+
await this.pluginService.uninstall(name);
|
|
35
|
+
}
|
|
31
36
|
}
|
|
32
37
|
async update() {
|
|
33
38
|
await this.pluginService.update();
|
|
34
39
|
}
|
|
35
40
|
getInstalledPlugins() {
|
|
36
|
-
return this.appConfigService.
|
|
41
|
+
return this.appConfigService.plugins.map(pluginRef => pluginRef.name);
|
|
37
42
|
}
|
|
38
43
|
};
|
|
39
44
|
exports.PluginController = PluginController;
|
|
@@ -45,35 +50,31 @@ __decorate([
|
|
|
45
50
|
__metadata("design:returntype", Promise)
|
|
46
51
|
], PluginController.prototype, "list", null);
|
|
47
52
|
__decorate([
|
|
48
|
-
(0, core_1.Command)("plugin:
|
|
49
|
-
(0, core_1.Command)("plugin:install <name>"),
|
|
53
|
+
(0, core_1.Command)("plugin:install <...names>"),
|
|
50
54
|
(0, core_1.Description)("Install a plugin by specifying its name"),
|
|
51
|
-
__param(0, (0, core_1.Param)("
|
|
52
|
-
__param(
|
|
53
|
-
type: "boolean",
|
|
54
|
-
alias: "d",
|
|
55
|
-
description: "Use the beta version of the plugin (if a beta version exists). Defaults to the latest stable version."
|
|
56
|
-
})),
|
|
55
|
+
__param(0, (0, core_1.Param)("names")),
|
|
56
|
+
__param(0, (0, core_1.Description)("Names of plugins to install")),
|
|
57
57
|
__metadata("design:type", Function),
|
|
58
|
-
__metadata("design:paramtypes", [
|
|
58
|
+
__metadata("design:paramtypes", [Array]),
|
|
59
59
|
__metadata("design:returntype", Promise)
|
|
60
60
|
], PluginController.prototype, "add", null);
|
|
61
61
|
__decorate([
|
|
62
|
-
(0, core_1.Command)("plugin:remove
|
|
63
|
-
|
|
62
|
+
(0, core_1.Command)("plugin:remove <...names>"),
|
|
63
|
+
(0, core_1.Description)("Remove a plugin"),
|
|
64
|
+
__param(0, (0, core_1.Param)("names")),
|
|
65
|
+
__param(0, (0, core_1.Description)("Names of plugins to remove")),
|
|
64
66
|
__metadata("design:type", Function),
|
|
65
|
-
__metadata("design:paramtypes", [
|
|
67
|
+
__metadata("design:paramtypes", [Array]),
|
|
66
68
|
__metadata("design:returntype", Promise)
|
|
67
69
|
], PluginController.prototype, "remove", null);
|
|
68
70
|
__decorate([
|
|
69
|
-
(0, core_1.Command)("plugin:update
|
|
71
|
+
(0, core_1.Command)("plugin:update"),
|
|
70
72
|
__metadata("design:type", Function),
|
|
71
73
|
__metadata("design:paramtypes", []),
|
|
72
74
|
__metadata("design:returntype", Promise)
|
|
73
75
|
], PluginController.prototype, "update", null);
|
|
74
76
|
__decorate([
|
|
75
|
-
(0, core_1.Completion)("
|
|
76
|
-
(0, core_1.Completion)("name", "plugin:remove <name>"),
|
|
77
|
+
(0, core_1.Completion)("names", "plugin:remove <...names>"),
|
|
77
78
|
__metadata("design:type", Function),
|
|
78
79
|
__metadata("design:paramtypes", []),
|
|
79
80
|
__metadata("design:returntype", Array)
|
|
@@ -0,0 +1,67 @@
|
|
|
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 PluginModule_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.PluginModule = void 0;
|
|
11
|
+
const core_1 = require("@wocker/core");
|
|
12
|
+
const core_2 = require("../core");
|
|
13
|
+
const package_manager_1 = require("../package-manager");
|
|
14
|
+
const PluginController_1 = require("./controllers/PluginController");
|
|
15
|
+
const PluginService_1 = require("./services/PluginService");
|
|
16
|
+
let PluginModule = PluginModule_1 = class PluginModule {
|
|
17
|
+
static register() {
|
|
18
|
+
return {
|
|
19
|
+
module: PluginModule_1,
|
|
20
|
+
inject: [
|
|
21
|
+
core_1.AppConfigService,
|
|
22
|
+
core_1.AppFileSystemService,
|
|
23
|
+
core_1.LogService,
|
|
24
|
+
PluginService_1.PluginService
|
|
25
|
+
],
|
|
26
|
+
useFactory: async (appConfigService, fs, logService, pluginService) => {
|
|
27
|
+
const imports = [];
|
|
28
|
+
for (const pluginData of appConfigService.plugins) {
|
|
29
|
+
try {
|
|
30
|
+
const plugin = await pluginService.import(pluginData.name);
|
|
31
|
+
imports.push({
|
|
32
|
+
module: plugin.type,
|
|
33
|
+
providers: [
|
|
34
|
+
{
|
|
35
|
+
provide: core_1.PLUGIN_DIR_KEY,
|
|
36
|
+
useValue: fs.path("plugins", plugin.name)
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
logService.error(err.message, {
|
|
43
|
+
pluginName: pluginData.name,
|
|
44
|
+
pluginEnv: pluginData.env
|
|
45
|
+
});
|
|
46
|
+
appConfigService.removePlugin(pluginData.name);
|
|
47
|
+
appConfigService.save();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
imports
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
exports.PluginModule = PluginModule;
|
|
58
|
+
exports.PluginModule = PluginModule = PluginModule_1 = __decorate([
|
|
59
|
+
(0, core_1.Module)({
|
|
60
|
+
imports: [
|
|
61
|
+
core_2.CoreModule,
|
|
62
|
+
package_manager_1.PackageManagerModule
|
|
63
|
+
],
|
|
64
|
+
controllers: [PluginController_1.PluginController],
|
|
65
|
+
providers: [PluginService_1.PluginService]
|
|
66
|
+
})
|
|
67
|
+
], PluginModule);
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { Cli, AppConfigService, LogService } from "@wocker/core";
|
|
2
|
-
import {
|
|
3
|
-
import { Plugin } from "
|
|
2
|
+
import { PackageManager, RegistryService } from "../../package-manager";
|
|
3
|
+
import { Plugin } from "../../../makes";
|
|
4
4
|
export declare class PluginService {
|
|
5
5
|
protected readonly appConfigService: AppConfigService;
|
|
6
|
-
protected readonly
|
|
6
|
+
protected readonly pm: PackageManager;
|
|
7
|
+
protected readonly registryService: RegistryService;
|
|
7
8
|
protected readonly logService: LogService;
|
|
8
9
|
protected readonly cli: Cli;
|
|
9
|
-
|
|
10
|
+
protected rule: string;
|
|
11
|
+
constructor(appConfigService: AppConfigService, pm: PackageManager, registryService: RegistryService, logService: LogService, cli: Cli);
|
|
10
12
|
getPluginsTable(): string;
|
|
11
13
|
checkPlugin(pluginName: string): Promise<boolean>;
|
|
12
|
-
install(pluginName: string,
|
|
14
|
+
install(pluginName: string, version?: string): Promise<void>;
|
|
13
15
|
uninstall(pluginName: string): Promise<void>;
|
|
14
16
|
import(name: string): Promise<Plugin>;
|
|
15
17
|
update(): Promise<void>;
|
|
@@ -49,15 +49,16 @@ exports.PluginService = void 0;
|
|
|
49
49
|
const core_1 = require("@wocker/core");
|
|
50
50
|
const cli_table3_1 = __importDefault(require("cli-table3"));
|
|
51
51
|
const yoctocolors_cjs_1 = __importDefault(require("yoctocolors-cjs"));
|
|
52
|
-
const
|
|
53
|
-
const makes_1 = require("
|
|
54
|
-
const utils_1 = require("../utils");
|
|
52
|
+
const package_manager_1 = require("../../package-manager");
|
|
53
|
+
const makes_1 = require("../../../makes");
|
|
55
54
|
let PluginService = class PluginService {
|
|
56
|
-
constructor(appConfigService,
|
|
55
|
+
constructor(appConfigService, pm, registryService, logService, cli) {
|
|
57
56
|
this.appConfigService = appConfigService;
|
|
58
|
-
this.
|
|
57
|
+
this.pm = pm;
|
|
58
|
+
this.registryService = registryService;
|
|
59
59
|
this.logService = logService;
|
|
60
60
|
this.cli = cli;
|
|
61
|
+
this.rule = "1.x.x";
|
|
61
62
|
}
|
|
62
63
|
getPluginsTable() {
|
|
63
64
|
const table = new cli_table3_1.default({
|
|
@@ -84,33 +85,36 @@ let PluginService = class PluginService {
|
|
|
84
85
|
}
|
|
85
86
|
return false;
|
|
86
87
|
}
|
|
87
|
-
async install(pluginName,
|
|
88
|
+
async install(pluginName, version = "latest") {
|
|
88
89
|
const [, prefix = "@wocker/", name, suffix = "-plugin"] = /^(@wocker\/)?(\w+)(-plugin)?$/.exec(pluginName) || [];
|
|
89
90
|
const fullName = `${prefix}${name}${suffix}`;
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
console.info(`Plugin ${fullName}@${env} activated`);
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
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);
|
|
92
|
+
const packageInfo = await this.registryService.getPackageInfo(fullName);
|
|
93
|
+
const versions = Object.keys(packageInfo.versions)
|
|
94
|
+
.filter((version) => {
|
|
95
|
+
return wRule.match(version, true) && rule.match(version, true);
|
|
96
|
+
})
|
|
97
|
+
.sort((a, b) => {
|
|
98
|
+
return makes_1.Version.parse(b).compare(a);
|
|
99
|
+
});
|
|
100
|
+
const bestSatisfyingVersion = versions.find((version) => rule.match(version)) ??
|
|
101
|
+
versions.find((version) => rule.match(version, true));
|
|
102
|
+
if (!bestSatisfyingVersion) {
|
|
103
|
+
throw new Error(`No matching version found for ${fullName}@${version}.`);
|
|
106
104
|
}
|
|
107
|
-
|
|
108
|
-
this.
|
|
105
|
+
if ((!currentVersion || currentVersion !== bestSatisfyingVersion) || !await this.checkPlugin(fullName)) {
|
|
106
|
+
await this.pm.install(fullName, bestSatisfyingVersion);
|
|
109
107
|
}
|
|
108
|
+
this.appConfigService.addPlugin(fullName, version);
|
|
109
|
+
this.appConfigService.save();
|
|
110
|
+
console.info(`Plugin ${fullName} activated`);
|
|
110
111
|
}
|
|
111
112
|
async uninstall(pluginName) {
|
|
112
113
|
const [, prefix = "@wocker/", name, suffix = "-plugin"] = /^(@wocker\/)?(\w+)(-plugin)?$/.exec(pluginName) || [];
|
|
113
114
|
const fullName = `${prefix}${name}${suffix}`;
|
|
115
|
+
if (await this.checkPlugin(fullName)) {
|
|
116
|
+
await this.pm.uninstall(fullName);
|
|
117
|
+
}
|
|
114
118
|
this.appConfigService.removePlugin(fullName);
|
|
115
119
|
this.appConfigService.save();
|
|
116
120
|
console.info(`Plugin ${fullName} deactivated`);
|
|
@@ -121,25 +125,16 @@ let PluginService = class PluginService {
|
|
|
121
125
|
}
|
|
122
126
|
async update() {
|
|
123
127
|
if (this.appConfigService.plugins.length === 0) {
|
|
128
|
+
console.info("No plugins installed");
|
|
124
129
|
return;
|
|
125
130
|
}
|
|
126
131
|
for (const plugin of this.appConfigService.plugins) {
|
|
127
132
|
console.info(`Checking ${plugin.name}...`);
|
|
128
133
|
try {
|
|
129
|
-
|
|
130
|
-
const res = await makes_1.Http.get("https://registry.npmjs.org")
|
|
131
|
-
.send(plugin.name);
|
|
132
|
-
if (res.status !== 200) {
|
|
133
|
-
continue;
|
|
134
|
-
}
|
|
135
|
-
const { "dist-tags": { latest } } = res.data;
|
|
136
|
-
this.logService.info(plugin.name, current, latest);
|
|
137
|
-
if (!current || current < latest) {
|
|
138
|
-
console.log(`Updating ${plugin.name}...`);
|
|
139
|
-
await (0, utils_1.spawn)("npm", ["i", "-g", plugin.name]);
|
|
140
|
-
}
|
|
134
|
+
await this.install(plugin.name, plugin.env);
|
|
141
135
|
}
|
|
142
136
|
catch (err) {
|
|
137
|
+
console.info(err.message);
|
|
143
138
|
this.logService.error(err.message);
|
|
144
139
|
}
|
|
145
140
|
}
|
|
@@ -147,11 +142,13 @@ let PluginService = class PluginService {
|
|
|
147
142
|
}
|
|
148
143
|
async getCurrentVersion(name) {
|
|
149
144
|
try {
|
|
150
|
-
const
|
|
151
|
-
|
|
145
|
+
const packages = await this.pm.getPackages(), package1 = packages.find((p) => p.name === name);
|
|
146
|
+
if (package1) {
|
|
147
|
+
return package1.version;
|
|
148
|
+
}
|
|
152
149
|
}
|
|
153
150
|
catch (err) {
|
|
154
|
-
this.logService.error(`Failed to get current version of ${name}`);
|
|
151
|
+
this.logService.error(`Failed to get current version of "${name}"`);
|
|
155
152
|
}
|
|
156
153
|
return null;
|
|
157
154
|
}
|
|
@@ -160,7 +157,8 @@ exports.PluginService = PluginService;
|
|
|
160
157
|
exports.PluginService = PluginService = __decorate([
|
|
161
158
|
(0, core_1.Injectable)(),
|
|
162
159
|
__metadata("design:paramtypes", [core_1.AppConfigService,
|
|
163
|
-
|
|
160
|
+
package_manager_1.PackageManager,
|
|
161
|
+
package_manager_1.RegistryService,
|
|
164
162
|
core_1.LogService,
|
|
165
163
|
core_1.Cli])
|
|
166
164
|
], PluginService);
|
|
@@ -10,7 +10,7 @@ export declare class PresetController {
|
|
|
10
10
|
constructor(appConfigService: AppConfigService, 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>;
|
|
14
14
|
destroy(): Promise<void>;
|
|
15
15
|
delete(name: string, confirm?: boolean): Promise<void>;
|
|
16
16
|
build(presetName: string, rebuild?: boolean): Promise<void>;
|