@wocker/ws 1.0.22 → 1.0.24

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 (139) hide show
  1. package/lib/{AppModule.d.ts → RootModule.d.ts} +1 -1
  2. package/lib/RootModule.js +93 -0
  3. package/lib/controllers/DebugController.d.ts +1 -1
  4. package/lib/controllers/DebugController.js +7 -9
  5. package/lib/controllers/ExperimentalController.d.ts +8 -0
  6. package/lib/controllers/ExperimentalController.js +76 -0
  7. package/lib/controllers/PluginController.d.ts +2 -1
  8. package/lib/controllers/PluginController.js +3 -3
  9. package/lib/controllers/ProjectController.d.ts +8 -7
  10. package/lib/controllers/ProjectController.js +123 -240
  11. package/lib/controllers/index.d.ts +1 -4
  12. package/lib/controllers/index.js +1 -4
  13. package/lib/env.d.ts +2 -3
  14. package/lib/env.js +3 -4
  15. package/lib/main.js +8 -8
  16. package/lib/makes/Plugin.d.ts +0 -1
  17. package/lib/makes/Plugin.js +0 -1
  18. package/lib/makes/index.d.ts +0 -2
  19. package/lib/makes/index.js +0 -2
  20. package/lib/modules/app/index.d.ts +2 -0
  21. package/lib/modules/app/index.js +32 -0
  22. package/lib/modules/docker/index.d.ts +8 -0
  23. package/lib/modules/docker/index.js +41 -0
  24. package/lib/modules/docker/services/ContainerService.d.ts +14 -0
  25. package/lib/modules/docker/services/ContainerService.js +115 -0
  26. package/lib/{services → modules/docker/services}/DockerService.d.ts +12 -5
  27. package/lib/{services → modules/docker/services}/DockerService.js +27 -114
  28. package/lib/modules/docker/services/ImageService.d.ts +18 -0
  29. package/lib/modules/docker/services/ImageService.js +68 -0
  30. package/lib/modules/docker/services/ModemService.d.ts +15 -0
  31. package/lib/modules/docker/services/ModemService.js +138 -0
  32. package/lib/modules/docker/services/ProtoService.d.ts +6 -0
  33. package/lib/modules/docker/services/ProtoService.js +20 -0
  34. package/lib/modules/index.d.ts +6 -0
  35. package/lib/{keystore → modules}/index.js +6 -1
  36. package/lib/{controllers → modules/keystore/controllers}/KeystoreController.d.ts +2 -2
  37. package/lib/{controllers → modules/keystore/controllers}/KeystoreController.js +4 -5
  38. package/lib/modules/keystore/index.d.ts +4 -0
  39. package/lib/modules/keystore/index.js +29 -0
  40. package/lib/{keystore → modules/keystore}/providers/FileKeystoreProvider.d.ts +3 -4
  41. package/lib/{keystore → modules/keystore}/providers/FileKeystoreProvider.js +4 -5
  42. package/lib/{keystore → modules/keystore}/providers/KeytarKeystoreProvider.js +1 -1
  43. package/lib/{keystore → modules/keystore/services}/KeystoreService.d.ts +4 -3
  44. package/lib/{keystore → modules/keystore/services}/KeystoreService.js +9 -6
  45. package/lib/modules/preset/controllers/PresetController.d.ts +18 -0
  46. package/lib/modules/preset/controllers/PresetController.js +157 -0
  47. package/lib/modules/preset/controllers/PresetListener.d.ts +14 -0
  48. package/lib/modules/preset/controllers/PresetListener.js +140 -0
  49. package/lib/modules/preset/index.d.ts +5 -0
  50. package/lib/modules/preset/index.js +39 -0
  51. package/lib/modules/preset/repositories/PresetRepository.d.ts +16 -0
  52. package/lib/{repositories → modules/preset/repositories}/PresetRepository.js +9 -11
  53. package/lib/{services → modules/preset/services}/PresetService.d.ts +4 -12
  54. package/lib/{services → modules/preset/services}/PresetService.js +22 -27
  55. package/lib/modules/project/controllers/ProjectController.d.ts +13 -0
  56. package/lib/modules/project/controllers/ProjectController.js +127 -0
  57. package/lib/modules/project/index.d.ts +5 -0
  58. package/lib/modules/project/index.js +39 -0
  59. package/lib/modules/project/repositories/ProjectRepository.d.ts +13 -0
  60. package/lib/modules/project/repositories/ProjectRepository.js +90 -0
  61. package/lib/modules/project/services/ProjectService.d.ts +21 -0
  62. package/lib/modules/project/services/ProjectService.js +211 -0
  63. package/lib/{controllers → modules/proxy/controllers}/CertController.d.ts +2 -1
  64. package/lib/{controllers → modules/proxy/controllers}/CertController.js +4 -3
  65. package/lib/{controllers → modules/proxy/controllers}/ProxyController.d.ts +5 -4
  66. package/lib/{controllers → modules/proxy/controllers}/ProxyController.js +12 -11
  67. package/lib/modules/proxy/index.d.ts +5 -0
  68. package/lib/modules/proxy/index.js +41 -0
  69. package/lib/{services → modules/proxy/services}/CertService.d.ts +5 -6
  70. package/lib/{services → modules/proxy/services}/CertService.js +13 -14
  71. package/lib/{services → modules/proxy/services}/ProxyService.d.ts +4 -4
  72. package/lib/{services → modules/proxy/services}/ProxyService.js +27 -20
  73. package/lib/services/PluginService.d.ts +1 -3
  74. package/lib/services/PluginService.js +12 -18
  75. package/lib/utils/followProgress2.d.ts +1 -0
  76. package/lib/utils/followProgress2.js +63 -0
  77. package/lib/utils/index.d.ts +1 -2
  78. package/lib/utils/index.js +1 -2
  79. package/package.json +7 -8
  80. package/proto/buildkit.proto +55 -0
  81. package/proto/solver/pb/ops.proto +443 -0
  82. package/lib/AppModule.js +0 -84
  83. package/lib/controllers/PresetController.d.ts +0 -23
  84. package/lib/controllers/PresetController.js +0 -361
  85. package/lib/keystore/index.d.ts +0 -1
  86. package/lib/keystore/types/Encryption.d.ts +0 -9
  87. package/lib/keystore/types/Encryption.js +0 -81
  88. package/lib/keystore/types/Encryptor.d.ts +0 -10
  89. package/lib/keystore/types/Encryptor.js +0 -59
  90. package/lib/makes/FS.d.ts +0 -27
  91. package/lib/makes/FS.js +0 -284
  92. package/lib/makes/LineConvertStream.d.ts +0 -11
  93. package/lib/makes/LineConvertStream.js +0 -42
  94. package/lib/makes/Logger.d.ts +0 -9
  95. package/lib/makes/Logger.js +0 -34
  96. package/lib/plugins/MongodbPlugin.d.ts +0 -20
  97. package/lib/plugins/MongodbPlugin.js +0 -288
  98. package/lib/plugins/index.d.ts +0 -1
  99. package/lib/plugins/index.js +0 -17
  100. package/lib/repositories/PresetRepository.d.ts +0 -23
  101. package/lib/repositories/index.d.ts +0 -1
  102. package/lib/repositories/index.js +0 -17
  103. package/lib/services/AppConfigService.d.ts +0 -35
  104. package/lib/services/AppConfigService.js +0 -163
  105. package/lib/services/AppEventsService.d.ts +0 -9
  106. package/lib/services/AppEventsService.js +0 -43
  107. package/lib/services/LogService.d.ts +0 -15
  108. package/lib/services/LogService.js +0 -67
  109. package/lib/services/ProjectService.d.ts +0 -27
  110. package/lib/services/ProjectService.js +0 -207
  111. package/lib/services/index.d.ts +0 -10
  112. package/lib/services/index.js +0 -26
  113. package/lib/utils/followProgress.d.ts +0 -1
  114. package/lib/utils/followProgress.js +0 -73
  115. package/presets/go/Dockerfile +0 -19
  116. package/presets/go/config.json +0 -14
  117. package/presets/php-fpm/Dockerfile +0 -173
  118. package/presets/php-fpm/bin/compare-version +0 -3
  119. package/presets/php-fpm/config.json +0 -55
  120. package/presets/php-fpm/etc/nginx/sites-available/default.conf +0 -36
  121. /package/lib/{utils/format-size-units.d.ts → modules/docker/utils/formatSizeUnits.d.ts} +0 -0
  122. /package/lib/{utils/format-size-units.js → modules/docker/utils/formatSizeUnits.js} +0 -0
  123. /package/lib/{keystore → modules/keystore}/providers/KeytarKeystoreProvider.d.ts +0 -0
  124. /package/lib/{keystore → modules/keystore}/types/FileKeystore.d.ts +0 -0
  125. /package/lib/{keystore → modules/keystore}/types/FileKeystore.js +0 -0
  126. /package/lib/{keystore → modules/keystore}/types/Keytar.d.ts +0 -0
  127. /package/lib/{keystore → modules/keystore}/types/Keytar.js +0 -0
  128. /package/lib/{keystore → modules/keystore}/utils/createEncryptionKey.d.ts +0 -0
  129. /package/lib/{keystore → modules/keystore}/utils/createEncryptionKey.js +0 -0
  130. /package/lib/{keystore → modules/keystore}/utils/createPasswordHash.d.ts +0 -0
  131. /package/lib/{keystore → modules/keystore}/utils/createPasswordHash.js +0 -0
  132. /package/lib/{keystore → modules/keystore}/utils/decrypt.d.ts +0 -0
  133. /package/lib/{keystore → modules/keystore}/utils/decrypt.js +0 -0
  134. /package/lib/{keystore → modules/keystore}/utils/encrypt.d.ts +0 -0
  135. /package/lib/{keystore → modules/keystore}/utils/encrypt.js +0 -0
  136. /package/lib/{keystore → modules/keystore}/utils/index.d.ts +0 -0
  137. /package/lib/{keystore → modules/keystore}/utils/index.js +0 -0
  138. /package/lib/{keystore → modules/keystore}/utils/verifyPasswordHash.d.ts +0 -0
  139. /package/lib/{keystore → modules/keystore}/utils/verifyPasswordHash.js +0 -0
package/lib/makes/FS.js DELETED
@@ -1,284 +0,0 @@
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.FS = void 0;
37
- const core_1 = require("@wocker/core");
38
- const fs = __importStar(require("fs"));
39
- const Path = __importStar(require("path"));
40
- const readable_stream_1 = require("readable-stream");
41
- class FS extends core_1.FS {
42
- static async access(path) {
43
- return new Promise((resolve, reject) => {
44
- fs.access(path, (err) => {
45
- if (!err) {
46
- resolve(null);
47
- }
48
- else {
49
- reject(err);
50
- }
51
- });
52
- });
53
- }
54
- static existsSync(path) {
55
- return fs.existsSync(path);
56
- }
57
- static async mkdir(dirPath, options = {}) {
58
- return new Promise((resolve, reject) => {
59
- fs.mkdir(dirPath, options, (err) => {
60
- if (!err) {
61
- resolve();
62
- }
63
- else {
64
- reject(err);
65
- }
66
- });
67
- });
68
- }
69
- static mkdirSync(path, options) {
70
- return fs.mkdirSync(path, options);
71
- }
72
- static async readdirFiles(path, options) {
73
- const { recursive = false } = options || {};
74
- if (recursive) {
75
- const names = await FS.readdir(path);
76
- let res = [];
77
- for (const name of names) {
78
- const filePath = Path.join(path, name);
79
- let sub = [
80
- name
81
- ];
82
- const stats = await FS.stat(filePath);
83
- if (stats.isDirectory()) {
84
- sub = (await FS.readdirFiles(filePath, { recursive: true })).map((subName) => {
85
- return Path.join(name, subName);
86
- });
87
- }
88
- res = [
89
- ...res,
90
- ...sub
91
- ];
92
- }
93
- return res;
94
- }
95
- return new Promise((resolve, reject) => {
96
- fs.readdir(path, {
97
- withFileTypes: true
98
- }, (err, files) => {
99
- if (err) {
100
- reject(err);
101
- return;
102
- }
103
- const names = files.filter((dirent) => {
104
- return dirent.isFile();
105
- }).map((dirent) => {
106
- return dirent.name;
107
- });
108
- resolve(names);
109
- });
110
- });
111
- }
112
- static async appendFile(path, data, options) {
113
- return new Promise((resolve, reject) => {
114
- fs.appendFile(path, data, options, (error) => {
115
- if (error) {
116
- reject(error);
117
- }
118
- else {
119
- resolve(undefined);
120
- }
121
- });
122
- });
123
- }
124
- static appendFileSync(path, data, options) {
125
- return fs.appendFileSync(path, data, options);
126
- }
127
- static async readBytes(filePath, position = 0, size) {
128
- if (position < 0 && typeof size === "undefined") {
129
- const stats = await FS.stat(filePath);
130
- size = BigInt(position) * -1n;
131
- position = BigInt(stats.size) - size;
132
- if (position < 0n) {
133
- position = 0;
134
- }
135
- }
136
- else if (typeof size === "undefined") {
137
- const stats = await FS.stat(filePath);
138
- if (typeof stats.size !== "bigint" && typeof position !== "bigint") {
139
- size = stats.size - position;
140
- }
141
- else {
142
- size = BigInt(stats.size) - BigInt(position);
143
- }
144
- }
145
- if (size < 0n) {
146
- return Buffer.alloc(0);
147
- }
148
- const buffer = Buffer.alloc(Number(size));
149
- return new Promise((resolve, reject) => {
150
- fs.open(filePath, (err, file) => {
151
- if (err) {
152
- reject(err);
153
- return;
154
- }
155
- fs.read(file, buffer, 0, buffer.length, position, (err, _, buffer) => {
156
- if (err) {
157
- reject(err);
158
- return;
159
- }
160
- resolve(buffer);
161
- });
162
- });
163
- });
164
- }
165
- static readFileSync(filePath) {
166
- return fs.readFileSync(filePath);
167
- }
168
- static writeFileSync(path, data, options) {
169
- return fs.writeFileSync(path, data, options);
170
- }
171
- static createWriteStream(path) {
172
- return fs.createWriteStream(path);
173
- }
174
- static async unlink(filePath) {
175
- return new Promise((resolve, reject) => {
176
- fs.unlink(filePath, (err) => {
177
- if (!err) {
178
- resolve();
179
- }
180
- else {
181
- reject(err);
182
- }
183
- });
184
- });
185
- }
186
- static watch(filename, options) {
187
- return fs.watch(filename, options);
188
- }
189
- static stat(filename, options) {
190
- return new Promise((resolve, reject) => {
191
- fs.stat(filename, options, (err, stats) => {
192
- if (err) {
193
- reject(err);
194
- }
195
- else {
196
- resolve(stats);
197
- }
198
- });
199
- });
200
- }
201
- static createReadStream(path, options) {
202
- return fs.createReadStream(path, options);
203
- }
204
- static createReadLinesStream(path, count) {
205
- const write = new readable_stream_1.PassThrough();
206
- (async () => {
207
- if (typeof count === "undefined" || count > 0) {
208
- const stats = await FS.stat(path);
209
- const resLines = [""];
210
- let position = 0n;
211
- while (position < stats.size) {
212
- let size = BigInt(count ? 64 * count : 255);
213
- if (position + size > stats.size) {
214
- size = BigInt(stats.size) - position;
215
- }
216
- const buffer = await FS.readBytes(path, position, size);
217
- const lines = buffer.toString("utf-8").split("\n");
218
- position += size;
219
- for (let i = 0; i < lines.length; i++) {
220
- const line = lines[i];
221
- if (i === 0) {
222
- resLines[resLines.length - 1] = (resLines[resLines.length - 1] || "") + line;
223
- }
224
- else {
225
- resLines.push(line);
226
- }
227
- }
228
- if (resLines.length > count + 1) {
229
- break;
230
- }
231
- }
232
- for (let i = 0; i < (count || resLines.length); i++) {
233
- write.write(resLines[i]);
234
- }
235
- }
236
- else if (count < 0) {
237
- const stats = await FS.stat(path);
238
- const resLines = [""];
239
- let position = BigInt(stats.size);
240
- while (position > 0n) {
241
- let size = BigInt(2 * count * -1);
242
- position -= size;
243
- if (position < 0) {
244
- size = position + size;
245
- position = 0n;
246
- }
247
- const buffer = await FS.readBytes(path, position, size);
248
- const lines = buffer.toString("utf-8").split("\n").reverse();
249
- for (let i = 0; i < lines.length; i++) {
250
- const line = lines[i];
251
- if (i === 0) {
252
- resLines[0] = line + (resLines[0] || "");
253
- }
254
- else {
255
- resLines.unshift(line);
256
- }
257
- }
258
- if (resLines.length > count * -1 + 1) {
259
- break;
260
- }
261
- }
262
- const lines = resLines.slice(count - 1);
263
- for (let i = 0; i < lines.length; i++) {
264
- write.write(lines[i]);
265
- }
266
- write.end();
267
- }
268
- })();
269
- return write;
270
- }
271
- static async copyFile(src, dest) {
272
- new Promise((resolve, reject) => {
273
- fs.copyFile(src, dest, (err) => {
274
- if (!err) {
275
- resolve(undefined);
276
- }
277
- else {
278
- reject(err);
279
- }
280
- });
281
- });
282
- }
283
- }
284
- exports.FS = FS;
@@ -1,11 +0,0 @@
1
- import { Readable } from "stream";
2
- import { Mutex } from "async-mutex";
3
- declare class LineConvertStream extends Readable {
4
- protected stream: NodeJS.ReadableStream;
5
- protected buf: string;
6
- protected mutex: Mutex;
7
- constructor(stream: NodeJS.ReadableStream);
8
- _read(size: number): void;
9
- process(chunk: any): Promise<void>;
10
- }
11
- export { LineConvertStream };
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LineConvertStream = void 0;
4
- const stream_1 = require("stream");
5
- const async_mutex_1 = require("async-mutex");
6
- class LineConvertStream extends stream_1.Readable {
7
- constructor(stream) {
8
- super();
9
- this.buf = "";
10
- this.mutex = new async_mutex_1.Mutex();
11
- this.stream = stream;
12
- this.stream.on("data", (chunk) => this.process(chunk));
13
- this.stream.on("end", () => {
14
- this.push(null);
15
- });
16
- this.stream.on("close", () => {
17
- this.destroy();
18
- });
19
- }
20
- _read(size) {
21
- }
22
- async process(chunk) {
23
- await this.mutex.acquire();
24
- this.buf += chunk.toString();
25
- try {
26
- let pos;
27
- while ((pos = this.buf.indexOf("\n")) >= 0) {
28
- if (pos === 0) {
29
- this.buf = this.buf.slice(0);
30
- continue;
31
- }
32
- const line = this.buf.slice(0, pos);
33
- this.buf = this.buf.slice(pos + 1);
34
- this.push(line);
35
- }
36
- }
37
- finally {
38
- this.mutex.release();
39
- }
40
- }
41
- }
42
- exports.LineConvertStream = LineConvertStream;
@@ -1,9 +0,0 @@
1
- import { LogService } from "../services";
2
- declare class Logger {
3
- static install(ls: LogService): void;
4
- static log(...data: any[]): void;
5
- static info(...data: any[]): void;
6
- static warn(...data: any[]): void;
7
- static error(...data: any[]): void;
8
- }
9
- export { Logger };
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Logger = void 0;
4
- let logService;
5
- class Logger {
6
- static install(ls) {
7
- logService = ls;
8
- }
9
- static log(...data) {
10
- if (!logService) {
11
- throw new Error("Dependency is missing");
12
- }
13
- logService.log(...data);
14
- }
15
- static info(...data) {
16
- if (!logService) {
17
- throw new Error("Dependency is missing");
18
- }
19
- logService.info(...data);
20
- }
21
- static warn(...data) {
22
- if (!logService) {
23
- throw new Error("Dependency is missing");
24
- }
25
- logService.warn(...data);
26
- }
27
- static error(...data) {
28
- if (!logService) {
29
- throw new Error("Dependency is missing");
30
- }
31
- logService.error(...data);
32
- }
33
- }
34
- exports.Logger = Logger;
@@ -1,20 +0,0 @@
1
- import { DockerService } from "../services";
2
- export declare class MongodbPlugin {
3
- protected readonly dockerService: DockerService;
4
- protected container: string;
5
- protected adminContainer: string;
6
- protected dataDir: string;
7
- constructor(dockerService: DockerService);
8
- protected dataPath(...parts: string[]): string;
9
- getDatabases(): Promise<string[]>;
10
- getDatabasesDumps(): Promise<string[]>;
11
- start(): Promise<void>;
12
- startAdmin(): Promise<void>;
13
- stop(): Promise<void>;
14
- stopDB(): Promise<void>;
15
- stopAdmin(): Promise<void>;
16
- restart(): Promise<void>;
17
- backup(database?: string): Promise<void>;
18
- deleteBackup(database?: string, filename?: string, yes?: boolean): Promise<void>;
19
- restore(database?: string, filename?: string): Promise<void>;
20
- }
@@ -1,288 +0,0 @@
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 __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
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
- return c > 3 && r && Object.defineProperty(target, key, r), r;
23
- };
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
- })();
41
- var __metadata = (this && this.__metadata) || function (k, v) {
42
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
- };
44
- Object.defineProperty(exports, "__esModule", { value: true });
45
- exports.MongodbPlugin = void 0;
46
- const core_1 = require("@wocker/core");
47
- const utils_1 = require("@wocker/utils");
48
- const Path = __importStar(require("path"));
49
- const dateFns = __importStar(require("date-fns"));
50
- const env_1 = require("../env");
51
- const makes_1 = require("../makes");
52
- const services_1 = require("../services");
53
- let MongodbPlugin = class MongodbPlugin {
54
- constructor(dockerService) {
55
- this.dockerService = dockerService;
56
- this.container = "mongodb.workspace";
57
- this.adminContainer = "dbadmin-mongodb.workspace";
58
- this.dataDir = Path.join(env_1.DATA_DIR, "db/mongodb");
59
- }
60
- dataPath(...parts) {
61
- return Path.join(this.dataDir, ...parts);
62
- }
63
- async getDatabases() {
64
- const stream = await this.dockerService.exec(this.container, [
65
- "mongosh",
66
- "--username", "root",
67
- "--password", "toor",
68
- "--quiet",
69
- "--eval", "db.getMongo().getDBNames().forEach(function(i){print(i)})"
70
- ], false);
71
- let res = "";
72
- stream.on("data", (data) => {
73
- res += (0, utils_1.demuxOutput)(data).toString();
74
- });
75
- await new Promise((resolve, reject) => {
76
- stream.on("end", resolve);
77
- stream.on("error", reject);
78
- });
79
- return res.split(/\r?\n/).filter((database) => {
80
- return !!database;
81
- });
82
- }
83
- async getDatabasesDumps() {
84
- const dumpDir = this.dataPath("dump");
85
- return makes_1.FS.readdir(dumpDir);
86
- }
87
- async start() {
88
- console.log("Mongidb starting...");
89
- await this.dockerService.pullImage("mongo:latest");
90
- const container = await this.dockerService.createContainer({
91
- name: this.container,
92
- restart: "always",
93
- image: "mongo:latest",
94
- volumes: [
95
- `${this.dataPath()}:/data/db`
96
- ],
97
- ports: ["27017:27017"],
98
- env: {
99
- MONGO_INITDB_ROOT_USERNAME: "root",
100
- MONGO_INITDB_ROOT_PASSWORD: "toor",
101
- MONGO_ROOT_USER: "root",
102
- MONGO_ROOT_PASSWORD: "toor"
103
- }
104
- });
105
- await container.start();
106
- await this.startAdmin();
107
- }
108
- async startAdmin() {
109
- console.log("Mongodb Admin starting...");
110
- await this.dockerService.pullImage("mongo-express:latest");
111
- const container = await this.dockerService.createContainer({
112
- name: this.adminContainer,
113
- restart: "always",
114
- env: {
115
- ME_CONFIG_MONGODB_SERVER: this.container,
116
- ME_CONFIG_MONGODB_PORT: "27017",
117
- MONGO_ROOT_USER: "root",
118
- MONGO_ROOT_PASSWORD: "toor",
119
- ME_CONFIG_MONGODB_ADMINUSERNAME: "root",
120
- ME_CONFIG_MONGODB_ADMINPASSWORD: "toor",
121
- ME_CONFIG_MONGODB_ENABLE_ADMIN: "true",
122
- ME_CONFIG_MONGODB_AUTH_DATABASE: "admin",
123
- ME_CONFIG_MONGODB_AUTH_USERNAME: "root",
124
- ME_CONFIG_MONGODB_AUTH_PASSWORD: "toor",
125
- VIRTUAL_HOST: this.adminContainer,
126
- VIRTUAL_PORT: "8081"
127
- },
128
- image: "mongo-express:latest"
129
- });
130
- await container.start();
131
- }
132
- async stop() {
133
- await this.stopDB();
134
- await this.stopAdmin();
135
- }
136
- async stopDB() {
137
- console.log("Mongodb stopping...");
138
- const container = await this.dockerService.getContainer(this.container);
139
- if (container) {
140
- try {
141
- await container.stop();
142
- await container.remove();
143
- }
144
- catch (err) {
145
- makes_1.Logger.error(err.message);
146
- }
147
- }
148
- }
149
- async stopAdmin() {
150
- console.log("Mongodb Admin stopping...");
151
- await this.dockerService.removeContainer(this.adminContainer);
152
- }
153
- async restart() {
154
- await this.stop();
155
- await this.start();
156
- }
157
- async backup(database) {
158
- if (!database) {
159
- database = await (0, utils_1.promptSelect)({
160
- message: "Database",
161
- options: await this.getDatabases()
162
- });
163
- }
164
- const date = dateFns.format(new Date(), "yyyy-MM-dd HH-mm");
165
- const dirPath = this.dataPath("dump", database);
166
- const filePath = this.dataPath("dump", database, `${date}.gz`);
167
- if (!makes_1.FS.existsSync(dirPath)) {
168
- makes_1.FS.mkdirSync(dirPath, {
169
- recursive: true
170
- });
171
- }
172
- const stream = await this.dockerService.exec(this.container, [
173
- "mongodump",
174
- "--authenticationDatabase", "admin",
175
- "--host", `${this.container}:27017`,
176
- "--username", "root",
177
- "--password", "toor",
178
- "--db", database,
179
- "--archive",
180
- "--gzip"
181
- ], false);
182
- const file = makes_1.FS.createWriteStream(filePath);
183
- stream.on("data", (data) => {
184
- file.write((0, utils_1.demuxOutput)(data));
185
- });
186
- await new Promise((resolve, reject) => {
187
- stream.on("end", resolve);
188
- stream.on("error", reject);
189
- });
190
- }
191
- async deleteBackup(database, filename, yes) {
192
- if (!database) {
193
- database = await (0, utils_1.promptSelect)({
194
- message: "Database",
195
- options: await this.getDatabasesDumps()
196
- });
197
- }
198
- if (!database) {
199
- throw new Error("No database");
200
- }
201
- const dirPath = this.dataPath("dump", database);
202
- if (!makes_1.FS.existsSync(dirPath)) {
203
- throw new Error(`Backups dir for database "${database}" not found`);
204
- }
205
- if (!filename) {
206
- const files = await makes_1.FS.readdirFiles(dirPath);
207
- if (files.length === 0) {
208
- throw new Error(`No backups for ${database}`);
209
- }
210
- filename = await (0, utils_1.promptSelect)({
211
- message: "File",
212
- options: files
213
- });
214
- }
215
- const filePath = this.dataPath("dump", database, filename);
216
- if (!makes_1.FS.existsSync(filePath)) {
217
- throw new Error(`Backup "${filename}" not found`);
218
- }
219
- if (!yes) {
220
- yes = await (0, utils_1.promptConfirm)({
221
- message: `Delete ${filename}?`,
222
- default: false
223
- });
224
- }
225
- if (!yes) {
226
- return;
227
- }
228
- await makes_1.FS.rm(filePath);
229
- const otherFiles = await makes_1.FS.readdir(dirPath);
230
- if (otherFiles.length === 0) {
231
- await makes_1.FS.rm(dirPath, {
232
- force: true,
233
- recursive: true
234
- });
235
- }
236
- }
237
- async restore(database, filename) {
238
- if (!database) {
239
- const dumps = await makes_1.FS.readdir(this.dataPath("dump"));
240
- if (dumps.length === 0) {
241
- throw new Error("No dumps found");
242
- }
243
- database = await (0, utils_1.promptSelect)({
244
- message: "Database",
245
- options: dumps
246
- });
247
- }
248
- if (!database) {
249
- throw new Error("Need database name");
250
- }
251
- if (!filename) {
252
- const filenames = await makes_1.FS.readdir(this.dataPath("dump", database));
253
- filename = await (0, utils_1.promptSelect)({
254
- message: "File",
255
- options: filenames
256
- });
257
- }
258
- const path = this.dataPath("dump", database, filename);
259
- const file = makes_1.FS.createReadStream(path);
260
- const stream = await this.dockerService.exec(this.container, [
261
- "mongorestore",
262
- "--authenticationDatabase", "admin",
263
- "--host", `${this.container}:27017`,
264
- "--username", "root",
265
- "--password", "toor",
266
- "--db", database,
267
- "--drop",
268
- "--gzip",
269
- "--archive"
270
- ], false);
271
- file.on("data", (data) => {
272
- stream.write(data);
273
- });
274
- file.on("end", () => {
275
- throw new Error("File end");
276
- });
277
- stream.on("error", (err) => {
278
- file.close();
279
- throw err;
280
- });
281
- console.log(path);
282
- }
283
- };
284
- exports.MongodbPlugin = MongodbPlugin;
285
- exports.MongodbPlugin = MongodbPlugin = __decorate([
286
- (0, core_1.Controller)(),
287
- __metadata("design:paramtypes", [services_1.DockerService])
288
- ], MongodbPlugin);
@@ -1 +0,0 @@
1
- export * from "./MongodbPlugin";