@wocker/ws 1.0.20 → 1.0.22
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 +8 -0
- package/lib/AppModule.js +17 -39
- package/lib/controllers/DebugController.d.ts +2 -1
- package/lib/controllers/DebugController.js +13 -5
- package/lib/controllers/KeystoreController.d.ts +11 -0
- package/lib/controllers/KeystoreController.js +106 -0
- package/lib/controllers/PluginController.d.ts +3 -5
- package/lib/controllers/PluginController.js +11 -57
- package/lib/controllers/PresetController.d.ts +5 -3
- package/lib/controllers/PresetController.js +73 -55
- package/lib/controllers/ProjectController.d.ts +5 -3
- package/lib/controllers/ProjectController.js +71 -46
- package/lib/controllers/ProxyController.d.ts +1 -1
- package/lib/controllers/ProxyController.js +56 -14
- package/lib/controllers/index.d.ts +1 -1
- package/lib/controllers/index.js +1 -1
- package/lib/env.d.ts +2 -1
- package/lib/env.js +20 -9
- package/lib/keystore/KeystoreService.d.ts +12 -0
- package/lib/keystore/KeystoreService.js +70 -0
- package/lib/keystore/index.d.ts +1 -0
- package/lib/keystore/index.js +17 -0
- package/lib/keystore/providers/FileKeystoreProvider.d.ts +16 -0
- package/lib/keystore/providers/FileKeystoreProvider.js +97 -0
- package/lib/keystore/providers/KeytarKeystoreProvider.d.ts +9 -0
- package/lib/keystore/providers/KeytarKeystoreProvider.js +74 -0
- package/lib/keystore/types/Encryption.d.ts +9 -0
- package/lib/keystore/types/Encryption.js +81 -0
- package/lib/keystore/types/Encryptor.d.ts +10 -0
- package/lib/keystore/types/Encryptor.js +59 -0
- package/lib/keystore/types/FileKeystore.d.ts +17 -0
- package/lib/keystore/types/FileKeystore.js +33 -0
- package/lib/keystore/types/Keytar.d.ts +8 -0
- package/lib/keystore/types/Keytar.js +2 -0
- package/lib/keystore/utils/createEncryptionKey.d.ts +1 -0
- package/lib/keystore/utils/createEncryptionKey.js +46 -0
- package/lib/keystore/utils/createPasswordHash.d.ts +1 -0
- package/lib/keystore/utils/createPasswordHash.js +20 -0
- package/lib/keystore/utils/decrypt.d.ts +1 -0
- package/lib/keystore/utils/decrypt.js +15 -0
- package/lib/keystore/utils/encrypt.d.ts +1 -0
- package/lib/keystore/utils/encrypt.js +19 -0
- package/lib/keystore/utils/index.d.ts +5 -0
- package/lib/keystore/utils/index.js +21 -0
- package/lib/keystore/utils/verifyPasswordHash.d.ts +1 -0
- package/lib/keystore/utils/verifyPasswordHash.js +9 -0
- package/lib/main.js +10 -5
- package/lib/makes/FS.d.ts +2 -2
- package/lib/makes/FS.js +19 -9
- package/lib/makes/GithubClient.d.ts +14 -0
- package/lib/makes/GithubClient.js +65 -0
- package/lib/makes/Http.js +17 -7
- package/lib/makes/Plugin.d.ts +6 -0
- package/lib/makes/Plugin.js +16 -0
- package/lib/makes/index.d.ts +1 -0
- package/lib/makes/index.js +1 -0
- package/lib/plugins/MongodbPlugin.js +17 -7
- package/lib/plugins/index.d.ts +0 -2
- package/lib/plugins/index.js +0 -2
- package/lib/repositories/PresetRepository.d.ts +23 -0
- package/lib/repositories/PresetRepository.js +115 -0
- package/lib/repositories/index.d.ts +1 -0
- package/lib/repositories/index.js +17 -0
- package/lib/services/AppConfigService.d.ts +16 -1
- package/lib/services/AppConfigService.js +88 -62
- package/lib/services/AppEventsService.d.ts +4 -4
- package/lib/services/AppEventsService.js +14 -10
- package/lib/services/CertService.js +18 -8
- package/lib/services/DockerService.d.ts +2 -2
- package/lib/services/DockerService.js +14 -8
- package/lib/services/LogService.d.ts +4 -1
- package/lib/services/LogService.js +14 -8
- package/lib/services/PluginService.d.ts +8 -2
- package/lib/services/PluginService.js +88 -23
- package/lib/services/PresetService.d.ts +9 -8
- package/lib/services/PresetService.js +144 -248
- package/lib/services/ProjectService.d.ts +5 -2
- package/lib/services/ProjectService.js +37 -10
- package/lib/services/ProxyService.d.ts +3 -2
- package/lib/services/ProxyService.js +43 -25
- package/lib/utils/index.d.ts +0 -2
- package/lib/utils/index.js +0 -2
- package/package.json +30 -15
- package/plugins/proxy/Dockerfile +17 -1
- package/plugins/proxy/Procfile +2 -0
- package/lib/controllers/ImageController.d.ts +0 -7
- package/lib/controllers/ImageController.js +0 -46
- package/lib/makes/Model.d.ts +0 -5
- package/lib/makes/Model.js +0 -12
- package/lib/plugins/ElasticSearchPlugin.d.ts +0 -15
- package/lib/plugins/ElasticSearchPlugin.js +0 -72
- package/lib/plugins/ProxmoxPlugin.d.ts +0 -12
- package/lib/plugins/ProxmoxPlugin.js +0 -83
- package/lib/utils/volumeFormat.d.ts +0 -6
- package/lib/utils/volumeFormat.js +0 -8
- package/lib/utils/volumeParse.d.ts +0 -2
- package/lib/utils/volumeParse.js +0 -13
- package/plugins/proxy/config.json +0 -3
- package/presets/bun/Dockerfile +0 -11
- package/presets/bun/config.json +0 -4
|
@@ -0,0 +1,59 @@
|
|
|
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
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.Encryptor = void 0;
|
|
37
|
+
const crypto = __importStar(require("crypto"));
|
|
38
|
+
class Encryptor {
|
|
39
|
+
constructor(hash, salt) {
|
|
40
|
+
this._hash = hash;
|
|
41
|
+
this._salt = salt
|
|
42
|
+
? Buffer.from(salt, "hex")
|
|
43
|
+
: crypto.randomBytes(16);
|
|
44
|
+
}
|
|
45
|
+
get hash() {
|
|
46
|
+
return this._hash;
|
|
47
|
+
}
|
|
48
|
+
get salt() {
|
|
49
|
+
return this._salt.toString("hex");
|
|
50
|
+
}
|
|
51
|
+
setPassword(password) {
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
encrypt() {
|
|
55
|
+
}
|
|
56
|
+
decrypt() {
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.Encryptor = Encryptor;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type Secrets = Record<string, string>;
|
|
2
|
+
type Props = {
|
|
3
|
+
passwordHash?: string;
|
|
4
|
+
secrets?: Secrets;
|
|
5
|
+
};
|
|
6
|
+
export declare abstract class FileKeystore {
|
|
7
|
+
passwordHash?: string;
|
|
8
|
+
protected secrets: Secrets;
|
|
9
|
+
constructor(data: Props);
|
|
10
|
+
abstract save(): void;
|
|
11
|
+
get(key: string): string | undefined;
|
|
12
|
+
set(key: string, value: string): void;
|
|
13
|
+
delete(key: string): void;
|
|
14
|
+
toObject(): {};
|
|
15
|
+
toString(): string;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FileKeystore = void 0;
|
|
4
|
+
class FileKeystore {
|
|
5
|
+
constructor(data) {
|
|
6
|
+
const { passwordHash, secrets = {} } = data;
|
|
7
|
+
this.passwordHash = passwordHash;
|
|
8
|
+
this.secrets = secrets;
|
|
9
|
+
}
|
|
10
|
+
get(key) {
|
|
11
|
+
if (!(key in this.secrets)) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
return this.secrets[key];
|
|
15
|
+
}
|
|
16
|
+
set(key, value) {
|
|
17
|
+
this.secrets[key] = value;
|
|
18
|
+
}
|
|
19
|
+
delete(key) {
|
|
20
|
+
if (!(key in this.secrets)) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
delete this.secrets[key];
|
|
24
|
+
}
|
|
25
|
+
toObject() {
|
|
26
|
+
return {};
|
|
27
|
+
}
|
|
28
|
+
toString() {
|
|
29
|
+
const secrets = JSON.stringify(this.secrets, null, 4);
|
|
30
|
+
return `// Wocker keystore\nexports.passwordHash = "${this.passwordHash}";\nexports.secrets = ${secrets};\n`;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.FileKeystore = FileKeystore;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { getPassword, setPassword, deletePassword, findPassword, findCredentials } from "keytar";
|
|
2
|
+
export type Keytar = {
|
|
3
|
+
getPassword: typeof getPassword;
|
|
4
|
+
setPassword: typeof setPassword;
|
|
5
|
+
deletePassword: typeof deletePassword;
|
|
6
|
+
findPassword: typeof findPassword;
|
|
7
|
+
findCredentials: typeof findCredentials;
|
|
8
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const createEncryptionKey: (password: string, passwordHash: string) => Buffer<ArrayBufferLike>;
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.createEncryptionKey = void 0;
|
|
37
|
+
const crypto = __importStar(require("crypto"));
|
|
38
|
+
const verifyPasswordHash_1 = require("./verifyPasswordHash");
|
|
39
|
+
const createEncryptionKey = (password, passwordHash) => {
|
|
40
|
+
if (!(0, verifyPasswordHash_1.verifyPasswordHash)(password, passwordHash)) {
|
|
41
|
+
throw new Error("Invalid password provided");
|
|
42
|
+
}
|
|
43
|
+
const [, saltValue] = passwordHash.split(":"), salt = Buffer.from(saltValue, "hex");
|
|
44
|
+
return crypto.scryptSync(password, salt, 32);
|
|
45
|
+
};
|
|
46
|
+
exports.createEncryptionKey = createEncryptionKey;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const createPasswordHash: (password: string, salt?: string) => string;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createPasswordHash = void 0;
|
|
7
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
8
|
+
const createPasswordHash = (password, salt) => {
|
|
9
|
+
const saltBuffer = salt
|
|
10
|
+
? Buffer.from(salt, "hex")
|
|
11
|
+
: crypto_1.default.randomBytes(16);
|
|
12
|
+
if (!salt) {
|
|
13
|
+
salt = saltBuffer.toString("hex");
|
|
14
|
+
}
|
|
15
|
+
const hash = crypto_1.default.createHmac("sha256", saltBuffer)
|
|
16
|
+
.update(password)
|
|
17
|
+
.digest("hex");
|
|
18
|
+
return `${hash}:${salt}`;
|
|
19
|
+
};
|
|
20
|
+
exports.createPasswordHash = createPasswordHash;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const decrypt: (encryptedKey: Buffer, encryptedValue: string) => string;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.decrypt = void 0;
|
|
7
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
8
|
+
const decrypt = (encryptedKey, encryptedValue) => {
|
|
9
|
+
const buffer = Buffer.from(encryptedValue, "base64"), iv = buffer.subarray(0, 12), authTag = buffer.subarray(12, 28), encrypted = buffer.subarray(28).toString("base64"), decipher = crypto_1.default.createDecipheriv("aes-256-gcm", encryptedKey, iv);
|
|
10
|
+
decipher.setAuthTag(authTag);
|
|
11
|
+
let decrypted = decipher.update(encrypted, "base64", "utf8");
|
|
12
|
+
decrypted += decipher.final("utf8");
|
|
13
|
+
return decrypted;
|
|
14
|
+
};
|
|
15
|
+
exports.decrypt = decrypt;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const encrypt: (encryptedKey: Buffer, value: string) => string;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.encrypt = void 0;
|
|
7
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
8
|
+
const encrypt = (encryptedKey, value) => {
|
|
9
|
+
const iv = crypto_1.default.randomBytes(12), cipher = crypto_1.default.createCipheriv("aes-256-gcm", encryptedKey, iv);
|
|
10
|
+
let encrypted = cipher.update(value, "utf8", "base64");
|
|
11
|
+
encrypted += cipher.final("base64");
|
|
12
|
+
const authTag = cipher.getAuthTag();
|
|
13
|
+
return Buffer.concat([
|
|
14
|
+
iv,
|
|
15
|
+
authTag,
|
|
16
|
+
Buffer.from(encrypted, "base64")
|
|
17
|
+
]).toString("base64");
|
|
18
|
+
};
|
|
19
|
+
exports.encrypt = encrypt;
|
|
@@ -0,0 +1,21 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./createEncryptionKey"), exports);
|
|
18
|
+
__exportStar(require("./createPasswordHash"), exports);
|
|
19
|
+
__exportStar(require("./decrypt"), exports);
|
|
20
|
+
__exportStar(require("./encrypt"), exports);
|
|
21
|
+
__exportStar(require("./verifyPasswordHash"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const verifyPasswordHash: (password: string, passwordHash: string) => boolean;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.verifyPasswordHash = void 0;
|
|
4
|
+
const createPasswordHash_1 = require("./createPasswordHash");
|
|
5
|
+
const verifyPasswordHash = (password, passwordHash) => {
|
|
6
|
+
const [, salt = ""] = (passwordHash || "").split(":");
|
|
7
|
+
return passwordHash === (0, createPasswordHash_1.createPasswordHash)(password, salt);
|
|
8
|
+
};
|
|
9
|
+
exports.verifyPasswordHash = verifyPasswordHash;
|
package/lib/main.js
CHANGED
|
@@ -5,13 +5,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.app = void 0;
|
|
7
7
|
const core_1 = require("@wocker/core");
|
|
8
|
-
const
|
|
8
|
+
const yoctocolors_cjs_1 = __importDefault(require("yoctocolors-cjs"));
|
|
9
9
|
const AppModule_1 = require("./AppModule");
|
|
10
10
|
const services_1 = require("./services");
|
|
11
11
|
exports.app = {
|
|
12
12
|
async run(args) {
|
|
13
13
|
const app = await core_1.Factory.create(AppModule_1.AppModule);
|
|
14
|
-
const
|
|
14
|
+
const configService = app.get(services_1.AppConfigService);
|
|
15
15
|
const logger = app.get(services_1.LogService);
|
|
16
16
|
try {
|
|
17
17
|
const res = await app.run(args);
|
|
@@ -21,9 +21,14 @@ exports.app = {
|
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
catch (err) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
if (typeof err.name === "string" && ["ExitPromptError", "CancelPromptError", "AbortPromptError"].includes(err.name)) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
console.error(yoctocolors_cjs_1.default.red(err.message));
|
|
28
|
+
if (err instanceof core_1.CommandNotFoundError) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (configService.config.debug) {
|
|
27
32
|
logger.error(err.stack || err.toString());
|
|
28
33
|
}
|
|
29
34
|
}
|
package/lib/makes/FS.d.ts
CHANGED
|
@@ -11,10 +11,10 @@ export declare class FS extends CoreFS {
|
|
|
11
11
|
static mkdir(dirPath: string, options?: MakeDirectoryOptions): Promise<void>;
|
|
12
12
|
static mkdirSync(path: string, options?: MakeDirectoryOptions): string;
|
|
13
13
|
static readdirFiles(path: string, options?: ReaddirFilesOptions): Promise<string[]>;
|
|
14
|
-
static appendFile(path: PathOrFileDescriptor, data: any, options?: WriteFileOptions): Promise<
|
|
14
|
+
static appendFile(path: PathOrFileDescriptor, data: any, options?: WriteFileOptions): Promise<void>;
|
|
15
15
|
static appendFileSync(path: PathOrFileDescriptor, data: any, options?: WriteFileOptions): void;
|
|
16
16
|
static readBytes(filePath: PathLike, position?: number | bigint, size?: number | bigint): Promise<Buffer>;
|
|
17
|
-
static readFileSync(filePath: PathLike):
|
|
17
|
+
static readFileSync(filePath: PathLike): NonSharedBuffer;
|
|
18
18
|
static writeFileSync(path: PathLike, data: any, options?: WriteFileOptions): void;
|
|
19
19
|
static createWriteStream(path: PathLike): fs.WriteStream;
|
|
20
20
|
static unlink(filePath: PathLike): Promise<void>;
|
package/lib/makes/FS.js
CHANGED
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
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
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
36
|
exports.FS = void 0;
|
|
27
37
|
const core_1 = require("@wocker/core");
|
|
@@ -101,12 +111,12 @@ class FS extends core_1.FS {
|
|
|
101
111
|
}
|
|
102
112
|
static async appendFile(path, data, options) {
|
|
103
113
|
return new Promise((resolve, reject) => {
|
|
104
|
-
fs.appendFile(path, data, options, (error
|
|
114
|
+
fs.appendFile(path, data, options, (error) => {
|
|
105
115
|
if (error) {
|
|
106
116
|
reject(error);
|
|
107
117
|
}
|
|
108
118
|
else {
|
|
109
|
-
resolve(
|
|
119
|
+
resolve(undefined);
|
|
110
120
|
}
|
|
111
121
|
});
|
|
112
122
|
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AxiosInstance } from "axios";
|
|
2
|
+
type RepositoryInfo = {
|
|
3
|
+
default_branch: string;
|
|
4
|
+
};
|
|
5
|
+
export declare class GithubClient {
|
|
6
|
+
owner: string;
|
|
7
|
+
repository: string;
|
|
8
|
+
constructor(owner: string, repository: string);
|
|
9
|
+
get axios(): AxiosInstance;
|
|
10
|
+
getInfo(): Promise<RepositoryInfo>;
|
|
11
|
+
getFile(branch: string, path: string): Promise<any>;
|
|
12
|
+
download(branch: string, dirPath: string): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.GithubClient = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const core_1 = require("@wocker/core");
|
|
9
|
+
class GithubClient {
|
|
10
|
+
constructor(owner, repository) {
|
|
11
|
+
this.owner = owner;
|
|
12
|
+
this.repository = repository;
|
|
13
|
+
}
|
|
14
|
+
get axios() {
|
|
15
|
+
return axios_1.default.create({
|
|
16
|
+
headers: {
|
|
17
|
+
"User-Agent": "Wocker"
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
async getInfo() {
|
|
22
|
+
const response = await this.axios.get(`https://api.github.com/repos/${this.owner}/${this.repository}`, {
|
|
23
|
+
headers: {
|
|
24
|
+
"Accept": "application/vnd.github+json"
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
return response.data;
|
|
28
|
+
}
|
|
29
|
+
async getFile(branch, path) {
|
|
30
|
+
const response = await this.axios.get(`https://raw.githubusercontent.com/${this.owner}/${this.repository}/${branch}/${path}`, {
|
|
31
|
+
headers: {
|
|
32
|
+
"Accept": "application/vnd.github+json"
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return response.data;
|
|
36
|
+
}
|
|
37
|
+
async download(branch, dirPath) {
|
|
38
|
+
const res = await this.axios.get(`https://github.com/${this.owner}/${this.repository}/archive/refs/heads/${branch}.zip`, {
|
|
39
|
+
responseType: "stream"
|
|
40
|
+
});
|
|
41
|
+
const fs = new core_1.FileSystem(dirPath);
|
|
42
|
+
if (!fs.exists()) {
|
|
43
|
+
fs.mkdir("", {
|
|
44
|
+
recursive: true
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return new Promise((resolve, reject) => {
|
|
48
|
+
const { Parse } = require("unzipper"), pipe = res.data.pipe(Parse());
|
|
49
|
+
pipe.on("entry", (entry) => {
|
|
50
|
+
const path = entry.path.replace(/^[^\/]+\//, "");
|
|
51
|
+
if (entry.type === "File") {
|
|
52
|
+
entry.pipe(fs.createWriteStream(path));
|
|
53
|
+
}
|
|
54
|
+
else if (entry.type === "Directory") {
|
|
55
|
+
fs.mkdir(path, {
|
|
56
|
+
recursive: true
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
pipe.on("end", () => resolve());
|
|
61
|
+
pipe.on("error", reject);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.GithubClient = GithubClient;
|
package/lib/makes/Http.js
CHANGED
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
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
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
36
|
exports.Http = void 0;
|
|
27
37
|
const axios_1 = __importStar(require("axios"));
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Plugin = void 0;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const core_1 = require("@wocker/core");
|
|
6
|
+
class Plugin {
|
|
7
|
+
constructor(type) {
|
|
8
|
+
this.type = type;
|
|
9
|
+
const pluginName = Reflect.getMetadata(core_1.PLUGIN_NAME_METADATA, this.type);
|
|
10
|
+
if (!pluginName || typeof pluginName !== "string") {
|
|
11
|
+
throw new Error("Invalid plugin package");
|
|
12
|
+
}
|
|
13
|
+
this.name = pluginName;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.Plugin = Plugin;
|
package/lib/makes/index.d.ts
CHANGED
package/lib/makes/index.js
CHANGED
|
@@ -21,13 +21,23 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
21
21
|
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;
|
|
22
22
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
23
|
};
|
|
24
|
-
var __importStar = (this && this.__importStar) || function (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
31
41
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
32
42
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
33
43
|
};
|
package/lib/plugins/index.d.ts
CHANGED
package/lib/plugins/index.js
CHANGED
|
@@ -14,6 +14,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./ElasticSearchPlugin"), exports);
|
|
18
17
|
__exportStar(require("./MongodbPlugin"), exports);
|
|
19
|
-
__exportStar(require("./ProxmoxPlugin"), exports);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AppConfig, Preset, PresetSource } from "@wocker/core";
|
|
2
|
+
import { AppConfigService } from "../services/AppConfigService";
|
|
3
|
+
import { LogService } from "../services/LogService";
|
|
4
|
+
type PresetData = {
|
|
5
|
+
name: string;
|
|
6
|
+
source: PresetSource;
|
|
7
|
+
path?: string;
|
|
8
|
+
};
|
|
9
|
+
type SearchOptions = Partial<{
|
|
10
|
+
name: string;
|
|
11
|
+
source: string;
|
|
12
|
+
path: string;
|
|
13
|
+
}>;
|
|
14
|
+
export declare class PresetRepository {
|
|
15
|
+
protected readonly appConfig: AppConfigService;
|
|
16
|
+
protected readonly logService: LogService;
|
|
17
|
+
constructor(appConfig: AppConfigService, logService: LogService);
|
|
18
|
+
protected load(data: PresetData): Preset;
|
|
19
|
+
protected configs(): AppConfig["presets"];
|
|
20
|
+
search(options?: SearchOptions): Preset[];
|
|
21
|
+
searchOne(options?: SearchOptions): Preset | null;
|
|
22
|
+
}
|
|
23
|
+
export {};
|