@stemy/backend 6.0.3 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/commands/clear.command.d.ts +6 -0
- package/commands/fixtures.command.d.ts +9 -0
- package/commands/move-assets.command.d.ts +10 -0
- package/common-types.d.ts +22 -12
- package/esm2022/commands/clear.command.mjs +15 -0
- package/esm2022/commands/fixtures.command.mjs +26 -0
- package/esm2022/commands/index.mjs +6 -4
- package/esm2022/commands/move-assets.command.mjs +45 -0
- package/esm2022/common-types.mjs +3 -3
- package/esm2022/public_api.mjs +18 -6
- package/esm2022/services/assets.mjs +46 -13
- package/esm2022/services/backend-provider.mjs +7 -1
- package/esm2022/services/cli-terminal.mjs +56 -0
- package/esm2022/services/configuration.mjs +11 -4
- package/esm2022/services/drivers/asset-fallback-driver.mjs +35 -0
- package/esm2022/services/drivers/asset-grid.driver.mjs +5 -7
- package/esm2022/services/drivers/asset-local.driver.mjs +19 -18
- package/esm2022/services/drivers/asset-storage-proxy.driver.mjs +48 -0
- package/esm2022/services/drivers/fallback-readable.mjs +34 -0
- package/esm2022/services/drivers/fallback-streams.mjs +34 -0
- package/esm2022/services/entities/asset.mjs +50 -15
- package/esm2022/services/entities/temp-asset.mjs +15 -3
- package/esm2022/services/terminal-manager.mjs +30 -16
- package/esm2022/socket-controllers/socket-terminal.mjs +89 -0
- package/esm2022/socket-controllers/terminal.controller.mjs +3 -3
- package/fesm2022/stemy-backend.mjs +423 -140
- package/fesm2022/stemy-backend.mjs.map +1 -1
- package/package.json +3 -2
- package/public_api.d.ts +2 -1
- package/services/assets.d.ts +13 -5
- package/services/cli-terminal.d.ts +18 -0
- package/services/configuration.d.ts +2 -0
- package/services/drivers/asset-fallback-driver.d.ts +11 -0
- package/services/drivers/asset-grid.driver.d.ts +4 -5
- package/services/drivers/asset-local.driver.d.ts +6 -6
- package/services/drivers/asset-storage-proxy.driver.d.ts +14 -0
- package/services/drivers/fallback-readable.d.ts +2 -0
- package/services/drivers/fallback-streams.d.ts +2 -0
- package/services/entities/asset.d.ts +8 -3
- package/services/entities/temp-asset.d.ts +6 -1
- package/services/terminal-manager.d.ts +3 -0
- package/socket-controllers/socket-terminal.d.ts +19 -0
- package/socket-controllers/terminal.controller.d.ts +2 -2
|
@@ -5,16 +5,25 @@ export class TempAsset {
|
|
|
5
5
|
filename;
|
|
6
6
|
contentType;
|
|
7
7
|
metadata;
|
|
8
|
-
id
|
|
8
|
+
get id() {
|
|
9
|
+
return this.oid.toHexString();
|
|
10
|
+
}
|
|
11
|
+
get streamId() {
|
|
12
|
+
return this.oid;
|
|
13
|
+
}
|
|
14
|
+
get driverId() {
|
|
15
|
+
return "temp";
|
|
16
|
+
}
|
|
9
17
|
get stream() {
|
|
10
18
|
return bufferToStream(this.buffer);
|
|
11
19
|
}
|
|
20
|
+
oid;
|
|
12
21
|
constructor(buffer, filename, contentType, metadata) {
|
|
13
22
|
this.buffer = buffer;
|
|
14
23
|
this.filename = filename;
|
|
15
24
|
this.contentType = contentType;
|
|
16
25
|
this.metadata = metadata;
|
|
17
|
-
this.
|
|
26
|
+
this.oid = new ObjectId();
|
|
18
27
|
}
|
|
19
28
|
async unlink() {
|
|
20
29
|
throw new Error(`Temp asset '${this.id}' can not be removed!`);
|
|
@@ -25,6 +34,9 @@ export class TempAsset {
|
|
|
25
34
|
async getBuffer() {
|
|
26
35
|
return this.buffer;
|
|
27
36
|
}
|
|
37
|
+
async move() {
|
|
38
|
+
throw new Error(`Temp asset '${this.id}' can not be moved!`);
|
|
39
|
+
}
|
|
28
40
|
async download(metadata) {
|
|
29
41
|
return this.stream;
|
|
30
42
|
}
|
|
@@ -50,4 +62,4 @@ export class TempAsset {
|
|
|
50
62
|
};
|
|
51
63
|
}
|
|
52
64
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcC1hc3NldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9lbnRpdGllcy90ZW1wLWFzc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFOUIsT0FBTyxFQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFcEQsTUFBTSxPQUFPLFNBQVM7SUFvQkk7SUFBeUI7SUFBMkI7SUFBOEI7SUFsQnhHLElBQUksRUFBRTtRQUNGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFa0IsR0FBRyxDQUFXO0lBRWpDLFlBQXNCLE1BQWMsRUFBVyxRQUFnQixFQUFXLFdBQW1CLEVBQVcsUUFBb0I7UUFBdEcsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFXLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBVyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUFXLGFBQVEsR0FBUixRQUFRLENBQVk7UUFDeEgsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTTtRQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxJQUFJLENBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLElBQXlCO1FBQ25DLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxJQUFJLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQXFCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQTBCLEVBQUUsUUFBcUI7UUFDM0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUEwQjtRQUMvQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU07UUFDRixPQUFPO1lBQ0gsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDMUIsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVhZGFibGV9IGZyb20gXCJzdHJlYW1cIjtcclxuaW1wb3J0IHtPYmplY3RJZH0gZnJvbSBcImJzb25cIjtcclxuaW1wb3J0IHtJQXNzZXQsIElBc3NldEltYWdlUGFyYW1zLCBJQXNzZXRNZXRhfSBmcm9tIFwiLi4vLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7YnVmZmVyVG9TdHJlYW0sIHRvSW1hZ2V9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRlbXBBc3NldCBpbXBsZW1lbnRzIElBc3NldCB7XHJcblxyXG4gICAgZ2V0IGlkKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub2lkLnRvSGV4U3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHN0cmVhbUlkKCk6IE9iamVjdElkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGRyaXZlcklkKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIFwidGVtcFwiO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBzdHJlYW0oKTogUmVhZGFibGUge1xyXG4gICAgICAgIHJldHVybiBidWZmZXJUb1N0cmVhbSh0aGlzLmJ1ZmZlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9pZDogT2JqZWN0SWQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGJ1ZmZlcjogQnVmZmVyLCByZWFkb25seSBmaWxlbmFtZTogc3RyaW5nLCByZWFkb25seSBjb250ZW50VHlwZTogc3RyaW5nLCByZWFkb25seSBtZXRhZGF0YTogSUFzc2V0TWV0YSkge1xyXG4gICAgICAgIHRoaXMub2lkID0gbmV3IE9iamVjdElkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdW5saW5rKCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUZW1wIGFzc2V0ICcke3RoaXMuaWR9JyBjYW4gbm90IGJlIHJlbW92ZWQhYCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2V0TWV0YShtZXRhOiBQYXJ0aWFsPElBc3NldE1ldGE+KTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMubWV0YWRhdGEsIG1ldGEgfHwge30pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEJ1ZmZlcigpOiBQcm9taXNlPEJ1ZmZlcj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcjtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBtb3ZlKCk6IFByb21pc2U8SUFzc2V0PiB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUZW1wIGFzc2V0ICcke3RoaXMuaWR9JyBjYW4gbm90IGJlIG1vdmVkIWApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRvd25sb2FkKG1ldGFkYXRhPzogSUFzc2V0TWV0YSk6IFByb21pc2U8UmVhZGFibGU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdHJlYW07XHJcbiAgICB9XHJcblxyXG4gICAgZG93bmxvYWRJbWFnZShwYXJhbXM/OiBJQXNzZXRJbWFnZVBhcmFtcywgbWV0YWRhdGE/OiBJQXNzZXRNZXRhKTogUHJvbWlzZTxSZWFkYWJsZT4ge1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5tZXRhZGF0YSwgbWV0YWRhdGEgfHwge30pO1xyXG4gICAgICAgIHJldHVybiB0b0ltYWdlKHRoaXMuc3RyZWFtLCBwYXJhbXMsIHRoaXMubWV0YWRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEltYWdlKHBhcmFtcz86IElBc3NldEltYWdlUGFyYW1zKTogUHJvbWlzZTxSZWFkYWJsZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRvd25sb2FkSW1hZ2UocGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzYXZlKCk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHRoaXM+IHtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICB0b0pTT04oKTogYW55IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpZDogdGhpcy5pZCxcclxuICAgICAgICAgICAgZmlsZW5hbWU6IHRoaXMuZmlsZW5hbWUsXHJcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlOiB0aGlzLmNvbnRlbnRUeXBlLFxyXG4gICAgICAgICAgICBtZXRhZGF0YTogdGhpcy5tZXRhZGF0YVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -5,9 +5,11 @@ import { TERMINAL_COMMAND } from "../common-types";
|
|
|
5
5
|
import { Logger } from "./logger";
|
|
6
6
|
import { Configuration } from "./configuration";
|
|
7
7
|
import { camelCaseToDash, colorize, ConsoleColor } from "../utils";
|
|
8
|
+
import { CliTerminal } from "./cli-terminal";
|
|
8
9
|
let TerminalManager = class TerminalManager {
|
|
9
10
|
logger;
|
|
10
11
|
config;
|
|
12
|
+
cliTerminal;
|
|
11
13
|
servicePassword;
|
|
12
14
|
suggestions;
|
|
13
15
|
commands;
|
|
@@ -40,7 +42,7 @@ let TerminalManager = class TerminalManager {
|
|
|
40
42
|
this.commands = commands.reduce((acc, command) => {
|
|
41
43
|
if (!command.name)
|
|
42
44
|
return acc;
|
|
43
|
-
acc[command.name] = async (a, t) => command.execute(a, t);
|
|
45
|
+
acc[command.name] = async (a, t, p) => command.execute(a, t, p);
|
|
44
46
|
return acc;
|
|
45
47
|
}, {});
|
|
46
48
|
this.loggedOutCommands = ["login", "clear"];
|
|
@@ -48,23 +50,35 @@ let TerminalManager = class TerminalManager {
|
|
|
48
50
|
this.loggedInCommands.push("logout");
|
|
49
51
|
console.log(`Current service password is: ${colorize(this.servicePassword, ConsoleColor.FgGreen)}`);
|
|
50
52
|
}
|
|
53
|
+
runCli() {
|
|
54
|
+
this.cliTerminal = new CliTerminal();
|
|
55
|
+
this.loadAddons(this.cliTerminal);
|
|
56
|
+
}
|
|
51
57
|
loadAddons(terminal) {
|
|
52
|
-
|
|
58
|
+
const isCli = terminal === this.cliTerminal;
|
|
59
|
+
let loggedIn = isCli;
|
|
60
|
+
const commands = isCli ? {
|
|
61
|
+
logout: async () => {
|
|
62
|
+
terminal.dispose();
|
|
63
|
+
}
|
|
64
|
+
} : {
|
|
65
|
+
login: async (args, terminal) => {
|
|
66
|
+
if (args.at(1).label === this.servicePassword) {
|
|
67
|
+
loggedIn = true;
|
|
68
|
+
terminal.writeln("Logged in as admin");
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
throw new Error("Invalid login");
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
logout: async (args, terminal) => {
|
|
75
|
+
loggedIn = false;
|
|
76
|
+
terminal.writeln("Logged out");
|
|
77
|
+
}
|
|
78
|
+
};
|
|
53
79
|
const addon = new CommandsAddon({
|
|
54
80
|
commands: {
|
|
55
|
-
|
|
56
|
-
if (args.at(1).label === this.servicePassword) {
|
|
57
|
-
loggedIn = true;
|
|
58
|
-
terminal.writeln("Logged in as admin");
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
throw new Error("Invalid login");
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
logout: async (args, terminal) => {
|
|
65
|
-
loggedIn = false;
|
|
66
|
-
terminal.writeln("Logged out");
|
|
67
|
-
},
|
|
81
|
+
...commands,
|
|
68
82
|
...this.commands
|
|
69
83
|
},
|
|
70
84
|
suggestCommands: async () => {
|
|
@@ -85,4 +99,4 @@ TerminalManager = __decorate([
|
|
|
85
99
|
Configuration, Array])
|
|
86
100
|
], TerminalManager);
|
|
87
101
|
export { TerminalManager };
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwtbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy90ZXJtaW5hbC1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUM5QyxPQUFPLEVBQUMsYUFBYSxFQUE4QixNQUFNLGdDQUFnQyxDQUFDO0FBQzFGLE9BQU8sRUFBOEIsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsZUFBZSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDakUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR3BDLElBQU0sZUFBZSxHQUFyQixNQUFNLGVBQWU7SUFRRjtJQUNBO0lBUlosV0FBVyxDQUFjO0lBQ3pCLGVBQWUsQ0FBUztJQUN4QixXQUFXLENBQWlCO0lBQzVCLFFBQVEsQ0FBYztJQUN0QixpQkFBaUIsQ0FBVztJQUM1QixnQkFBZ0IsQ0FBVztJQUVyQyxZQUFzQixNQUFjLEVBQ2QsTUFBcUIsRUFDRixRQUE0QjtRQUYvQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUV2QyxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2YsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNsQixPQUFPLElBQUksQ0FBQztnQkFD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QUFDO29CQUNoQixRQUFRLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBQzNDLENBQUM7cUJBQU0sQ0FBQztvQkFDSixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNyQyxDQUFDO1lBQ0wsQ0FBQztZQUNELE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUM3QixRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUNqQixRQUFRLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ25DLENBQUM7U0FDSixDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQUcsSUFBSSxhQUFhLENBQUM7WUFDNUIsUUFBUSxFQUFFO2dCQUNOLEdBQUcsUUFBUTtnQkFDWCxHQUFHLElBQUksQ0FBQyxRQUFRO2FBQ25CO1lBQ0QsZUFBZSxFQUFFLEtBQUssSUFBSSxFQUFFO2dCQUN4QixJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUNYLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO2dCQUNqQyxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ2xDLENBQUM7WUFDRCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDaEMsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0osQ0FBQTtBQW5GWSxlQUFlO0lBRDNCLFNBQVMsRUFBRTtJQVdLLFdBQUEsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUE7cUNBRlYsTUFBTTtRQUNOLGFBQWE7R0FUbEMsZUFBZSxDQW1GM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdEFsbCwgc2luZ2xldG9ufSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtDb21tYW5kc0FkZG9uLCBJQ29tbWFuZE1hcCwgSVN1Z2dlc3Rpb25NYXB9IGZyb20gXCJAc3RlbXkvdGVybWluYWwtY29tbWFuZHMtYWRkb25cIjtcclxuaW1wb3J0IHtJVGVybWluYWwsIElUZXJtaW5hbENvbW1hbmQsIFRFUk1JTkFMX0NPTU1BTkR9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtMb2dnZXJ9IGZyb20gXCIuL2xvZ2dlclwiO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gXCIuL2NvbmZpZ3VyYXRpb25cIjtcclxuaW1wb3J0IHtjYW1lbENhc2VUb0Rhc2gsIGNvbG9yaXplLCBDb25zb2xlQ29sb3J9IGZyb20gXCIuLi91dGlsc1wiO1xyXG5pbXBvcnQge0NsaVRlcm1pbmFsfSBmcm9tIFwiLi9jbGktdGVybWluYWxcIjtcclxuXHJcbkBzaW5nbGV0b24oKVxyXG5leHBvcnQgY2xhc3MgVGVybWluYWxNYW5hZ2VyIHtcclxuICAgIHByb3RlY3RlZCBjbGlUZXJtaW5hbDogQ2xpVGVybWluYWw7XHJcbiAgICBwcm90ZWN0ZWQgc2VydmljZVBhc3N3b3JkOiBzdHJpbmc7XHJcbiAgICBwcm90ZWN0ZWQgc3VnZ2VzdGlvbnM6IElTdWdnZXN0aW9uTWFwO1xyXG4gICAgcHJvdGVjdGVkIGNvbW1hbmRzOiBJQ29tbWFuZE1hcDtcclxuICAgIHByb3RlY3RlZCBsb2dnZWRPdXRDb21tYW5kczogc3RyaW5nW107XHJcbiAgICBwcm90ZWN0ZWQgbG9nZ2VkSW5Db21tYW5kczogc3RyaW5nW107XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGxvZ2dlcjogTG9nZ2VyLFxyXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIGNvbmZpZzogQ29uZmlndXJhdGlvbixcclxuICAgICAgICAgICAgICAgIEBpbmplY3RBbGwoVEVSTUlOQUxfQ09NTUFORCkgY29tbWFuZHM6IElUZXJtaW5hbENvbW1hbmRbXSkge1xyXG4gICAgICAgIHRoaXMuc2VydmljZVBhc3N3b3JkID0gY29uZmlnLnJlc29sdmUoXCJzZXJ2aWNlUGFzc3dvcmRcIik7XHJcbiAgICAgICAgdGhpcy5zdWdnZXN0aW9ucyA9IHtcclxuICAgICAgICAgICAgbG9naW46IGFzeW5jIChhcmdzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPiAyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IGAke2FyZ3MuYXQoMSkubGFiZWx9YDtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoIWlucHV0KSA/IFtdIDogW3tcclxuICAgICAgICAgICAgICAgICAgICBpZDogaW5wdXQsXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGlucHV0LFxyXG4gICAgICAgICAgICAgICAgICAgIG1hc2tlZDogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfV07XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC4uLmNvbW1hbmRzLnJlZHVjZSgoYWNjLCBjb21tYW5kKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb21tYW5kLm5hbWUgPSBjYW1lbENhc2VUb0Rhc2goY29tbWFuZC5uYW1lIHx8IGNvbW1hbmQuY29uc3RydWN0b3IubmFtZSB8fCBcIlwiKTtcclxuICAgICAgICAgICAgICAgIGlmICghY29tbWFuZC5uYW1lIHx8ICFjb21tYW5kLnN1Z2dlc3QpIHJldHVybiBhY2M7XHJcbiAgICAgICAgICAgICAgICBhY2NbY29tbWFuZC5uYW1lXSA9IGFzeW5jIChhLCB0KSA9PiBjb21tYW5kLnN1Z2dlc3QoYSwgdCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgICAgICB9LCB7fSBhcyBJU3VnZ2VzdGlvbk1hcClcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuY29tbWFuZHMgPSBjb21tYW5kcy5yZWR1Y2UoKGFjYywgY29tbWFuZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWNvbW1hbmQubmFtZSkgcmV0dXJuIGFjYztcclxuICAgICAgICAgICAgYWNjW2NvbW1hbmQubmFtZV0gPSBhc3luYyAoYSwgdCwgcCkgPT4gY29tbWFuZC5leGVjdXRlKGEsIHQsIHApO1xyXG4gICAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgIH0sIHt9IGFzIElDb21tYW5kTWFwKTtcclxuICAgICAgICB0aGlzLmxvZ2dlZE91dENvbW1hbmRzID0gW1wibG9naW5cIiwgXCJjbGVhclwiXTtcclxuICAgICAgICB0aGlzLmxvZ2dlZEluQ29tbWFuZHMgPSBPYmplY3Qua2V5cyh0aGlzLmNvbW1hbmRzKTtcclxuICAgICAgICB0aGlzLmxvZ2dlZEluQ29tbWFuZHMucHVzaChcImxvZ291dFwiKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhgQ3VycmVudCBzZXJ2aWNlIHBhc3N3b3JkIGlzOiAke2NvbG9yaXplKHRoaXMuc2VydmljZVBhc3N3b3JkLCBDb25zb2xlQ29sb3IuRmdHcmVlbil9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgcnVuQ2xpKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2xpVGVybWluYWwgPSBuZXcgQ2xpVGVybWluYWwoKTtcclxuICAgICAgICB0aGlzLmxvYWRBZGRvbnModGhpcy5jbGlUZXJtaW5hbCk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZEFkZG9ucyh0ZXJtaW5hbDogSVRlcm1pbmFsKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgaXNDbGkgPSB0ZXJtaW5hbCA9PT0gdGhpcy5jbGlUZXJtaW5hbDtcclxuICAgICAgICBsZXQgbG9nZ2VkSW4gPSBpc0NsaTtcclxuICAgICAgICBjb25zdCBjb21tYW5kczogSUNvbW1hbmRNYXAgPSBpc0NsaSA/IHtcclxuICAgICAgICAgICAgbG9nb3V0OiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0ZXJtaW5hbC5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IDoge1xyXG4gICAgICAgICAgICBsb2dpbjogYXN5bmMgKGFyZ3MsIHRlcm1pbmFsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXJncy5hdCgxKS5sYWJlbCA9PT0gdGhpcy5zZXJ2aWNlUGFzc3dvcmQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsb2dnZWRJbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGVybWluYWwud3JpdGVsbihcIkxvZ2dlZCBpbiBhcyBhZG1pblwiKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBsb2dpblwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbG9nb3V0OiBhc3luYyAoYXJncywgdGVybWluYWwpID0+IHtcclxuICAgICAgICAgICAgICAgIGxvZ2dlZEluID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0ZXJtaW5hbC53cml0ZWxuKFwiTG9nZ2VkIG91dFwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgYWRkb24gPSBuZXcgQ29tbWFuZHNBZGRvbih7XHJcbiAgICAgICAgICAgIGNvbW1hbmRzOiB7XHJcbiAgICAgICAgICAgICAgICAuLi5jb21tYW5kcyxcclxuICAgICAgICAgICAgICAgIC4uLnRoaXMuY29tbWFuZHNcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VnZ2VzdENvbW1hbmRzOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VkSW4pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2dnZWRJbkNvbW1hbmRzO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9nZ2VkT3V0Q29tbWFuZHM7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zOiB0aGlzLnN1Z2dlc3Rpb25zXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGVybWluYWwubG9hZEFkZG9uKGFkZG9uKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { BehaviorSubject, Subject } from "rxjs";
|
|
2
|
+
import { first, map, timeout } from "rxjs/operators";
|
|
3
|
+
import { fileTypeFromBuffer } from "../utils";
|
|
4
|
+
export class SocketTerminal {
|
|
5
|
+
client;
|
|
6
|
+
addons;
|
|
7
|
+
files$;
|
|
8
|
+
input$;
|
|
9
|
+
constructor(client) {
|
|
10
|
+
this.client = client;
|
|
11
|
+
this.addons = [];
|
|
12
|
+
this.files$ = new BehaviorSubject([]);
|
|
13
|
+
this.input$ = new Subject();
|
|
14
|
+
}
|
|
15
|
+
onData(cb) {
|
|
16
|
+
const sub = this.input$.pipe(map(v => {
|
|
17
|
+
if (v === "\b") {
|
|
18
|
+
return "\x7f";
|
|
19
|
+
}
|
|
20
|
+
return v;
|
|
21
|
+
})).subscribe(cb);
|
|
22
|
+
return {
|
|
23
|
+
dispose: () => sub.unsubscribe()
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
write(data) {
|
|
27
|
+
this.client.emit("terminal-data", data);
|
|
28
|
+
}
|
|
29
|
+
writeln(data) {
|
|
30
|
+
this.write(data + "\n");
|
|
31
|
+
}
|
|
32
|
+
loadAddon(addon) {
|
|
33
|
+
addon.activate(this);
|
|
34
|
+
this.addons.push(addon);
|
|
35
|
+
}
|
|
36
|
+
dispose() {
|
|
37
|
+
this.input$.complete();
|
|
38
|
+
this.client = null;
|
|
39
|
+
this.addons.forEach(a => a.dispose());
|
|
40
|
+
}
|
|
41
|
+
async suggestFiles(accept) {
|
|
42
|
+
const rand = Math.round(Math.random() * 1000);
|
|
43
|
+
const id = `${Date.now()}-${rand}`;
|
|
44
|
+
const files = this.files$.value;
|
|
45
|
+
return files.filter(f => f.accept === accept).concat([
|
|
46
|
+
{
|
|
47
|
+
id,
|
|
48
|
+
label: "...",
|
|
49
|
+
onAccept: async () => {
|
|
50
|
+
this.client.emit("terminal-upload", {
|
|
51
|
+
id,
|
|
52
|
+
accept
|
|
53
|
+
});
|
|
54
|
+
const file = await this.files$
|
|
55
|
+
.pipe(first(v => v.some(f => f.id === id)))
|
|
56
|
+
.pipe(timeout(120000))
|
|
57
|
+
.pipe(map(v => v.find(f => f.id === id)))
|
|
58
|
+
.toPromise();
|
|
59
|
+
if (file.error) {
|
|
60
|
+
this.files$.next(this.files$.value.filter(f => f.id !== id));
|
|
61
|
+
throw new Error(file.error);
|
|
62
|
+
}
|
|
63
|
+
return file;
|
|
64
|
+
},
|
|
65
|
+
showAlways: true,
|
|
66
|
+
accept: accept,
|
|
67
|
+
}
|
|
68
|
+
]);
|
|
69
|
+
}
|
|
70
|
+
async downloadFile(filename, buffer) {
|
|
71
|
+
const type = await fileTypeFromBuffer(buffer);
|
|
72
|
+
const data = buffer.toString("base64");
|
|
73
|
+
const content = `data:${type.mime};base64,${data}`;
|
|
74
|
+
this.client.emit("terminal-download", {
|
|
75
|
+
filename,
|
|
76
|
+
content
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
addFile(upload) {
|
|
80
|
+
if (upload.content) {
|
|
81
|
+
upload.buffer = Buffer.from(upload.content, "base64");
|
|
82
|
+
}
|
|
83
|
+
this.files$.next(this.files$.value.concat(upload));
|
|
84
|
+
}
|
|
85
|
+
input(data) {
|
|
86
|
+
this.input$.next(data);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LXRlcm1pbmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NvY2tldC1jb250cm9sbGVycy9zb2NrZXQtdGVybWluYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRTVDLE1BQU0sT0FBTyxjQUFjO0lBS0Q7SUFKWixNQUFNLENBQW1CO0lBQ3pCLE1BQU0sQ0FBbUM7SUFDekMsTUFBTSxDQUFrQjtJQUVsQyxZQUFzQixNQUFxQjtRQUFyQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBeUI7UUFDNUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNiLE9BQU8sTUFBTSxDQUFDO1lBQ2xCLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xCLE9BQU87WUFDSCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRTtTQUNuQyxDQUFDO0lBQ04sQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFZO1FBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWTtRQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQXFCO1FBQzNCLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBYztRQUM3QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM5QyxNQUFNLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQXNCLENBQUM7UUFDakQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDakQ7Z0JBQ0ksRUFBRTtnQkFDRixLQUFLLEVBQUUsS0FBSztnQkFDWixRQUFRLEVBQUUsS0FBSyxJQUFJLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO3dCQUNoQyxFQUFFO3dCQUNGLE1BQU07cUJBQ1QsQ0FBQyxDQUFDO29CQUNILE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU07eUJBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO3lCQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3lCQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzt5QkFDeEMsU0FBUyxFQUFFLENBQUM7b0JBQ2pCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDN0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2hDLENBQUM7b0JBQ0QsT0FBTyxJQUFJLENBQUM7Z0JBQ2hCLENBQUM7Z0JBQ0QsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLE1BQU0sRUFBRSxNQUFNO2FBQ2pCO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBZ0IsRUFBRSxNQUFjO1FBQy9DLE1BQU0sSUFBSSxHQUFHLE1BQU0sa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QyxNQUFNLE9BQU8sR0FBRyxRQUFRLElBQUksQ0FBQyxJQUFJLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDbEMsUUFBUTtZQUNSLE9BQU87U0FDVixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQXFCO1FBQ3pCLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQVk7UUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgU3ViamVjdH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtmaXJzdCwgbWFwLCB0aW1lb3V0fSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtJRGlzcG9zYWJsZSwgSVN1Z2dlc3Rpb24sIElUZXJtaW5hbEFkZG9ufSBmcm9tIFwiQHN0ZW15L3Rlcm1pbmFsLWNvbW1hbmRzLWFkZG9uXCI7XHJcbmltcG9ydCB7SUNsaWVudFNvY2tldCwgSVRlcm1pbmFsLCBJVGVybWluYWxGaWxlfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7ZmlsZVR5cGVGcm9tQnVmZmVyfSBmcm9tIFwiLi4vdXRpbHNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBTb2NrZXRUZXJtaW5hbCBpbXBsZW1lbnRzIElUZXJtaW5hbCB7XHJcbiAgICBwcm90ZWN0ZWQgYWRkb25zOiBJVGVybWluYWxBZGRvbltdO1xyXG4gICAgcHJvdGVjdGVkIGZpbGVzJDogQmVoYXZpb3JTdWJqZWN0PElUZXJtaW5hbEZpbGVbXT47XHJcbiAgICBwcm90ZWN0ZWQgaW5wdXQkOiBTdWJqZWN0PHN0cmluZz47XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNsaWVudDogSUNsaWVudFNvY2tldCkge1xyXG4gICAgICAgIHRoaXMuYWRkb25zID0gW107XHJcbiAgICAgICAgdGhpcy5maWxlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcclxuICAgICAgICB0aGlzLmlucHV0JCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25EYXRhKGNiOiAoZGF0YTogc3RyaW5nKSA9PiBhbnkpOiBJRGlzcG9zYWJsZSB7XHJcbiAgICAgICAgY29uc3Qgc3ViID0gdGhpcy5pbnB1dCQucGlwZShtYXAodiA9PiB7XHJcbiAgICAgICAgICAgIGlmICh2ID09PSBcIlxcYlwiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcXHg3ZlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB2O1xyXG4gICAgICAgIH0pKS5zdWJzY3JpYmUoY2IpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGRpc3Bvc2U6ICgpID0+IHN1Yi51bnN1YnNjcmliZSgpXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB3cml0ZShkYXRhOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNsaWVudC5lbWl0KFwidGVybWluYWwtZGF0YVwiLCBkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICB3cml0ZWxuKGRhdGE6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMud3JpdGUoZGF0YSArIFwiXFxuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRBZGRvbihhZGRvbjogSVRlcm1pbmFsQWRkb24pIHtcclxuICAgICAgICBhZGRvbi5hY3RpdmF0ZSh0aGlzKTtcclxuICAgICAgICB0aGlzLmFkZG9ucy5wdXNoKGFkZG9uKTtcclxuICAgIH1cclxuXHJcbiAgICBkaXNwb3NlKCkge1xyXG4gICAgICAgIHRoaXMuaW5wdXQkLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgdGhpcy5jbGllbnQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuYWRkb25zLmZvckVhY2goYSA9PiBhLmRpc3Bvc2UoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc3VnZ2VzdEZpbGVzKGFjY2VwdDogc3RyaW5nKTogUHJvbWlzZTxJVGVybWluYWxGaWxlW10+IHtcclxuICAgICAgICBjb25zdCByYW5kID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwMCk7XHJcbiAgICAgICAgY29uc3QgaWQgPSBgJHtEYXRlLm5vdygpfS0ke3JhbmR9YDtcclxuICAgICAgICBjb25zdCBmaWxlcyA9IHRoaXMuZmlsZXMkLnZhbHVlIGFzIElTdWdnZXN0aW9uW107XHJcbiAgICAgICAgcmV0dXJuIGZpbGVzLmZpbHRlcihmID0+IGYuYWNjZXB0ID09PSBhY2NlcHQpLmNvbmNhdChbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiLi4uXCIsXHJcbiAgICAgICAgICAgICAgICBvbkFjY2VwdDogYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xpZW50LmVtaXQoXCJ0ZXJtaW5hbC11cGxvYWRcIiwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IHRoaXMuZmlsZXMkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5waXBlKGZpcnN0KHYgPT4gdi5zb21lKGYgPT4gZi5pZCA9PT0gaWQpKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUodGltZW91dCgxMjAwMDApKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAodiA9PiB2LmZpbmQoZiA9PiBmLmlkID09PSBpZCkpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGUuZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlcyQubmV4dCh0aGlzLmZpbGVzJC52YWx1ZS5maWx0ZXIoZiA9PiBmLmlkICE9PSBpZCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZmlsZS5lcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWxlO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNob3dBbHdheXM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBhY2NlcHQ6IGFjY2VwdCxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRvd25sb2FkRmlsZShmaWxlbmFtZTogc3RyaW5nLCBidWZmZXI6IEJ1ZmZlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSBhd2FpdCBmaWxlVHlwZUZyb21CdWZmZXIoYnVmZmVyKTtcclxuICAgICAgICBjb25zdCBkYXRhID0gYnVmZmVyLnRvU3RyaW5nKFwiYmFzZTY0XCIpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBgZGF0YToke3R5cGUubWltZX07YmFzZTY0LCR7ZGF0YX1gO1xyXG4gICAgICAgIHRoaXMuY2xpZW50LmVtaXQoXCJ0ZXJtaW5hbC1kb3dubG9hZFwiLCB7XHJcbiAgICAgICAgICAgIGZpbGVuYW1lLFxyXG4gICAgICAgICAgICBjb250ZW50XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkRmlsZSh1cGxvYWQ6IElUZXJtaW5hbEZpbGUpIHtcclxuICAgICAgICBpZiAodXBsb2FkLmNvbnRlbnQpIHtcclxuICAgICAgICAgICAgdXBsb2FkLmJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHVwbG9hZC5jb250ZW50LCBcImJhc2U2NFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWxlcyQubmV4dCh0aGlzLmZpbGVzJC52YWx1ZS5jb25jYXQodXBsb2FkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5wdXQoZGF0YTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dCQubmV4dChkYXRhKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -2,7 +2,7 @@ import { __decorate, __metadata, __param } from "tslib";
|
|
|
2
2
|
import { singleton } from "tsyringe";
|
|
3
3
|
import { ConnectedSocket, MessageBody, OnMessage, SocketController } from "socket-controllers";
|
|
4
4
|
import { TerminalManager } from "../services/terminal-manager";
|
|
5
|
-
import {
|
|
5
|
+
import { SocketTerminal } from "./socket-terminal";
|
|
6
6
|
let TerminalController = class TerminalController {
|
|
7
7
|
manager;
|
|
8
8
|
terminals;
|
|
@@ -11,7 +11,7 @@ let TerminalController = class TerminalController {
|
|
|
11
11
|
this.terminals = {};
|
|
12
12
|
}
|
|
13
13
|
async terminalInit(client) {
|
|
14
|
-
const terminal = new
|
|
14
|
+
const terminal = new SocketTerminal(client);
|
|
15
15
|
this.manager.loadAddons(terminal);
|
|
16
16
|
this.terminals[client.id] = terminal;
|
|
17
17
|
client.on("disconnect", () => terminal.dispose());
|
|
@@ -58,4 +58,4 @@ TerminalController = __decorate([
|
|
|
58
58
|
__metadata("design:paramtypes", [TerminalManager])
|
|
59
59
|
], TerminalController);
|
|
60
60
|
export { TerminalController };
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwuY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zb2NrZXQtY29udHJvbGxlcnMvdGVybWluYWwuY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUc3RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBSTFDLElBQU0sa0JBQWtCLEdBQXhCLE1BQU0sa0JBQWtCO0lBR0w7SUFGWixTQUFTLENBQWlDO0lBRXBELFlBQXNCLE9BQXdCO1FBQXhCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFHSyxBQUFOLEtBQUssQ0FBQyxZQUFZLENBQW9CLE1BQXFCO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUNyQyxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBR0ssQUFBTixLQUFLLENBQUMsWUFBWSxDQUFvQixNQUFxQixFQUFpQixJQUFZO1FBQ3BGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUN0QixRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFHSyxBQUFOLEtBQUssQ0FBQyxjQUFjLENBQW9CLE1BQXFCLEVBQWlCLE1BQXFCO1FBQy9GLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUNqQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLENBQUM7Q0FDSixDQUFBO0FBcEJTO0lBREwsU0FBUyxDQUFDLGVBQWUsQ0FBQztJQUNQLFdBQUEsZUFBZSxFQUFFLENBQUE7Ozs7c0RBS3BDO0FBR0s7SUFETCxTQUFTLENBQUMsZUFBZSxDQUFDO0lBQ1AsV0FBQSxlQUFlLEVBQUUsQ0FBQTtJQUF5QixXQUFBLFdBQVcsRUFBRSxDQUFBOzs7O3NEQUkxRTtBQUdLO0lBREwsU0FBUyxDQUFDLGlCQUFpQixDQUFDO0lBQ1AsV0FBQSxlQUFlLEVBQUUsQ0FBQTtJQUF5QixXQUFBLFdBQVcsRUFBRSxDQUFBOzs7O3dEQUk1RTtBQTNCUSxrQkFBa0I7SUFGOUIsU0FBUyxFQUFFO0lBQ1gsZ0JBQWdCLEVBQUU7cUNBSWdCLGVBQWU7R0FIckMsa0JBQWtCLENBNEI5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c2luZ2xldG9ufSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtDb25uZWN0ZWRTb2NrZXQsIE1lc3NhZ2VCb2R5LCBPbk1lc3NhZ2UsIFNvY2tldENvbnRyb2xsZXJ9IGZyb20gXCJzb2NrZXQtY29udHJvbGxlcnNcIjtcclxuXHJcbmltcG9ydCB7SUNsaWVudFNvY2tldCwgSVRlcm1pbmFsRmlsZX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge1Rlcm1pbmFsTWFuYWdlcn0gZnJvbSBcIi4uL3NlcnZpY2VzL3Rlcm1pbmFsLW1hbmFnZXJcIjtcclxuaW1wb3J0IHtTb2NrZXRUZXJtaW5hbH0gZnJvbSBcIi4vc29ja2V0LXRlcm1pbmFsXCI7XHJcblxyXG5Ac2luZ2xldG9uKClcclxuQFNvY2tldENvbnRyb2xsZXIoKVxyXG5leHBvcnQgY2xhc3MgVGVybWluYWxDb250cm9sbGVyIHtcclxuICAgIHByb3RlY3RlZCB0ZXJtaW5hbHM6IHtbaWQ6IHN0cmluZ106IFNvY2tldFRlcm1pbmFsfTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgbWFuYWdlcjogVGVybWluYWxNYW5hZ2VyKSB7XHJcbiAgICAgICAgdGhpcy50ZXJtaW5hbHMgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBAT25NZXNzYWdlKFwidGVybWluYWwtaW5pdFwiKVxyXG4gICAgYXN5bmMgdGVybWluYWxJbml0KEBDb25uZWN0ZWRTb2NrZXQoKSBjbGllbnQ6IElDbGllbnRTb2NrZXQpIHtcclxuICAgICAgICBjb25zdCB0ZXJtaW5hbCA9IG5ldyBTb2NrZXRUZXJtaW5hbChjbGllbnQpO1xyXG4gICAgICAgIHRoaXMubWFuYWdlci5sb2FkQWRkb25zKHRlcm1pbmFsKTtcclxuICAgICAgICB0aGlzLnRlcm1pbmFsc1tjbGllbnQuaWRdID0gdGVybWluYWw7XHJcbiAgICAgICAgY2xpZW50Lm9uKFwiZGlzY29ubmVjdFwiLCAoKSA9PiB0ZXJtaW5hbC5kaXNwb3NlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIEBPbk1lc3NhZ2UoXCJ0ZXJtaW5hbC1kYXRhXCIpXHJcbiAgICBhc3luYyB0ZXJtaW5hbERhdGEoQENvbm5lY3RlZFNvY2tldCgpIGNsaWVudDogSUNsaWVudFNvY2tldCwgQE1lc3NhZ2VCb2R5KCkgZGF0YTogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgdGVybWluYWwgPSB0aGlzLnRlcm1pbmFsc1tjbGllbnQuaWRdO1xyXG4gICAgICAgIGlmICghdGVybWluYWwpIHJldHVybjtcclxuICAgICAgICB0ZXJtaW5hbC5pbnB1dChkYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBAT25NZXNzYWdlKFwidGVybWluYWwtdXBsb2FkXCIpXHJcbiAgICBhc3luYyB0ZXJtaW5hbFVwbG9hZChAQ29ubmVjdGVkU29ja2V0KCkgY2xpZW50OiBJQ2xpZW50U29ja2V0LCBATWVzc2FnZUJvZHkoKSB1cGxvYWQ6IElUZXJtaW5hbEZpbGUpIHtcclxuICAgICAgICBjb25zdCB0ZXJtaW5hbCA9IHRoaXMudGVybWluYWxzW2NsaWVudC5pZF07XHJcbiAgICAgICAgaWYgKCF0ZXJtaW5hbCB8fCAhdXBsb2FkKSByZXR1cm47XHJcbiAgICAgICAgdGVybWluYWwuYWRkRmlsZSh1cGxvYWQpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|