@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.
Files changed (100) hide show
  1. package/README.md +8 -0
  2. package/lib/AppModule.js +17 -39
  3. package/lib/controllers/DebugController.d.ts +2 -1
  4. package/lib/controllers/DebugController.js +13 -5
  5. package/lib/controllers/KeystoreController.d.ts +11 -0
  6. package/lib/controllers/KeystoreController.js +106 -0
  7. package/lib/controllers/PluginController.d.ts +3 -5
  8. package/lib/controllers/PluginController.js +11 -57
  9. package/lib/controllers/PresetController.d.ts +5 -3
  10. package/lib/controllers/PresetController.js +73 -55
  11. package/lib/controllers/ProjectController.d.ts +5 -3
  12. package/lib/controllers/ProjectController.js +71 -46
  13. package/lib/controllers/ProxyController.d.ts +1 -1
  14. package/lib/controllers/ProxyController.js +56 -14
  15. package/lib/controllers/index.d.ts +1 -1
  16. package/lib/controllers/index.js +1 -1
  17. package/lib/env.d.ts +2 -1
  18. package/lib/env.js +20 -9
  19. package/lib/keystore/KeystoreService.d.ts +12 -0
  20. package/lib/keystore/KeystoreService.js +70 -0
  21. package/lib/keystore/index.d.ts +1 -0
  22. package/lib/keystore/index.js +17 -0
  23. package/lib/keystore/providers/FileKeystoreProvider.d.ts +16 -0
  24. package/lib/keystore/providers/FileKeystoreProvider.js +97 -0
  25. package/lib/keystore/providers/KeytarKeystoreProvider.d.ts +9 -0
  26. package/lib/keystore/providers/KeytarKeystoreProvider.js +74 -0
  27. package/lib/keystore/types/Encryption.d.ts +9 -0
  28. package/lib/keystore/types/Encryption.js +81 -0
  29. package/lib/keystore/types/Encryptor.d.ts +10 -0
  30. package/lib/keystore/types/Encryptor.js +59 -0
  31. package/lib/keystore/types/FileKeystore.d.ts +17 -0
  32. package/lib/keystore/types/FileKeystore.js +33 -0
  33. package/lib/keystore/types/Keytar.d.ts +8 -0
  34. package/lib/keystore/types/Keytar.js +2 -0
  35. package/lib/keystore/utils/createEncryptionKey.d.ts +1 -0
  36. package/lib/keystore/utils/createEncryptionKey.js +46 -0
  37. package/lib/keystore/utils/createPasswordHash.d.ts +1 -0
  38. package/lib/keystore/utils/createPasswordHash.js +20 -0
  39. package/lib/keystore/utils/decrypt.d.ts +1 -0
  40. package/lib/keystore/utils/decrypt.js +15 -0
  41. package/lib/keystore/utils/encrypt.d.ts +1 -0
  42. package/lib/keystore/utils/encrypt.js +19 -0
  43. package/lib/keystore/utils/index.d.ts +5 -0
  44. package/lib/keystore/utils/index.js +21 -0
  45. package/lib/keystore/utils/verifyPasswordHash.d.ts +1 -0
  46. package/lib/keystore/utils/verifyPasswordHash.js +9 -0
  47. package/lib/main.js +10 -5
  48. package/lib/makes/FS.d.ts +2 -2
  49. package/lib/makes/FS.js +19 -9
  50. package/lib/makes/GithubClient.d.ts +14 -0
  51. package/lib/makes/GithubClient.js +65 -0
  52. package/lib/makes/Http.js +17 -7
  53. package/lib/makes/Plugin.d.ts +6 -0
  54. package/lib/makes/Plugin.js +16 -0
  55. package/lib/makes/index.d.ts +1 -0
  56. package/lib/makes/index.js +1 -0
  57. package/lib/plugins/MongodbPlugin.js +17 -7
  58. package/lib/plugins/index.d.ts +0 -2
  59. package/lib/plugins/index.js +0 -2
  60. package/lib/repositories/PresetRepository.d.ts +23 -0
  61. package/lib/repositories/PresetRepository.js +115 -0
  62. package/lib/repositories/index.d.ts +1 -0
  63. package/lib/repositories/index.js +17 -0
  64. package/lib/services/AppConfigService.d.ts +16 -1
  65. package/lib/services/AppConfigService.js +88 -62
  66. package/lib/services/AppEventsService.d.ts +4 -4
  67. package/lib/services/AppEventsService.js +14 -10
  68. package/lib/services/CertService.js +18 -8
  69. package/lib/services/DockerService.d.ts +2 -2
  70. package/lib/services/DockerService.js +14 -8
  71. package/lib/services/LogService.d.ts +4 -1
  72. package/lib/services/LogService.js +14 -8
  73. package/lib/services/PluginService.d.ts +8 -2
  74. package/lib/services/PluginService.js +88 -23
  75. package/lib/services/PresetService.d.ts +9 -8
  76. package/lib/services/PresetService.js +144 -248
  77. package/lib/services/ProjectService.d.ts +5 -2
  78. package/lib/services/ProjectService.js +37 -10
  79. package/lib/services/ProxyService.d.ts +3 -2
  80. package/lib/services/ProxyService.js +43 -25
  81. package/lib/utils/index.d.ts +0 -2
  82. package/lib/utils/index.js +0 -2
  83. package/package.json +30 -15
  84. package/plugins/proxy/Dockerfile +17 -1
  85. package/plugins/proxy/Procfile +2 -0
  86. package/lib/controllers/ImageController.d.ts +0 -7
  87. package/lib/controllers/ImageController.js +0 -46
  88. package/lib/makes/Model.d.ts +0 -5
  89. package/lib/makes/Model.js +0 -12
  90. package/lib/plugins/ElasticSearchPlugin.d.ts +0 -15
  91. package/lib/plugins/ElasticSearchPlugin.js +0 -72
  92. package/lib/plugins/ProxmoxPlugin.d.ts +0 -12
  93. package/lib/plugins/ProxmoxPlugin.js +0 -83
  94. package/lib/utils/volumeFormat.d.ts +0 -6
  95. package/lib/utils/volumeFormat.js +0 -8
  96. package/lib/utils/volumeParse.d.ts +0 -2
  97. package/lib/utils/volumeParse.js +0 -13
  98. package/plugins/proxy/config.json +0 -3
  99. package/presets/bun/Dockerfile +0 -11
  100. 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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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,5 @@
1
+ export * from "./createEncryptionKey";
2
+ export * from "./createPasswordHash";
3
+ export * from "./decrypt";
4
+ export * from "./encrypt";
5
+ export * from "./verifyPasswordHash";
@@ -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 chalk_1 = __importDefault(require("chalk"));
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 config = app.get(services_1.AppConfigService);
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
- console.error(chalk_1.default.red(err.message));
25
- const { debug } = config.getConfig();
26
- if (debug) {
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<unknown>;
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): Buffer;
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 (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
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, data) => {
114
+ fs.appendFile(path, data, options, (error) => {
105
115
  if (error) {
106
116
  reject(error);
107
117
  }
108
118
  else {
109
- resolve(data);
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 (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
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,6 @@
1
+ import "reflect-metadata";
2
+ export declare class Plugin {
3
+ readonly type: any;
4
+ readonly name: string;
5
+ constructor(type: any);
6
+ }
@@ -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;
@@ -1,3 +1,4 @@
1
1
  export * from "./FS";
2
2
  export * from "./Http";
3
3
  export * from "./Logger";
4
+ export * from "./Plugin";
@@ -17,3 +17,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./FS"), exports);
18
18
  __exportStar(require("./Http"), exports);
19
19
  __exportStar(require("./Logger"), exports);
20
+ __exportStar(require("./Plugin"), exports);
@@ -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 (mod) {
25
- if (mod && mod.__esModule) return mod;
26
- var result = {};
27
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
- __setModuleDefault(result, mod);
29
- return result;
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
  };
@@ -1,3 +1 @@
1
- export * from "./ElasticSearchPlugin";
2
1
  export * from "./MongodbPlugin";
3
- export * from "./ProxmoxPlugin";
@@ -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 {};