discos 1.1.6 → 2.0.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/.github/PRIVACY_POLICY.md +3 -1
- package/.github/TERMS_OF_SERVICE.md +1 -0
- package/README.md +2 -2
- package/dist/common.d.ts +57 -36
- package/dist/common.d.ts.map +1 -1
- package/dist/common.js +88 -39
- package/dist/common.js.map +1 -1
- package/dist/{config.d.ts → config/config.d.ts} +2 -1
- package/dist/config/config.d.ts.map +1 -0
- package/dist/{config.js → config/config.js} +1 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/validateDb.d.ts +3 -0
- package/dist/config/validateDb.d.ts.map +1 -0
- package/dist/{tools → config}/validateDb.js +16 -15
- package/dist/config/validateDb.js.map +1 -0
- package/dist/config/validateDotenv.d.ts.map +1 -0
- package/dist/{tools → config}/validateDotenv.js +27 -19
- package/dist/config/validateDotenv.js.map +1 -0
- package/dist/{tools → exec}/backend.d.ts +4 -3
- package/dist/exec/backend.d.ts.map +1 -0
- package/dist/exec/backend.js +131 -0
- package/dist/exec/backend.js.map +1 -0
- package/dist/exec/terminal-manager.d.ts +9 -0
- package/dist/exec/terminal-manager.d.ts.map +1 -0
- package/dist/exec/terminal-manager.js +113 -0
- package/dist/exec/terminal-manager.js.map +1 -0
- package/dist/exec/username.d.ts +4 -0
- package/dist/exec/username.d.ts.map +1 -0
- package/dist/exec/username.js +25 -0
- package/dist/exec/username.js.map +1 -0
- package/dist/interfaces/queues.d.ts.map +1 -0
- package/dist/{types → interfaces}/queues.js.map +1 -1
- package/dist/logging/logger.d.ts +4 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/logger.js +22 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/models/user.d.ts +14 -0
- package/dist/models/user.d.ts.map +1 -0
- package/dist/models/user.js +59 -0
- package/dist/models/user.js.map +1 -0
- package/dist/modules/admin.d.ts +1 -1
- package/dist/modules/admin.d.ts.map +1 -1
- package/dist/modules/admin.js +56 -31
- package/dist/modules/admin.js.map +1 -1
- package/dist/modules/clear.d.ts.map +1 -1
- package/dist/modules/clear.js +7 -8
- package/dist/modules/clear.js.map +1 -1
- package/dist/modules/command.d.ts +1 -1
- package/dist/modules/command.d.ts.map +1 -1
- package/dist/modules/command.js +5 -5
- package/dist/modules/command.js.map +1 -1
- package/dist/modules/debug.d.ts +1 -1
- package/dist/modules/debug.d.ts.map +1 -1
- package/dist/modules/debug.js +3 -2
- package/dist/modules/debug.js.map +1 -1
- package/dist/modules/file.d.ts +3 -2
- package/dist/modules/file.d.ts.map +1 -1
- package/dist/modules/file.js +36 -13
- package/dist/modules/file.js.map +1 -1
- package/dist/modules/watch.d.ts +1 -1
- package/dist/modules/watch.d.ts.map +1 -1
- package/dist/modules/watch.js +4 -3
- package/dist/modules/watch.js.map +1 -1
- package/dist/security/ipcServer.d.ts +4 -0
- package/dist/security/ipcServer.d.ts.map +1 -0
- package/dist/{tools → security}/ipcServer.js +6 -5
- package/dist/security/ipcServer.js.map +1 -0
- package/dist/{tools → security}/queue-utils.d.ts +2 -1
- package/dist/security/queue-utils.d.ts.map +1 -0
- package/dist/{tools → security}/queue-utils.js +4 -1
- package/dist/security/queue-utils.js.map +1 -0
- package/dist/shared/consts.d.ts +6 -0
- package/dist/shared/consts.d.ts.map +1 -1
- package/dist/shared/consts.js +7 -1
- package/dist/shared/consts.js.map +1 -1
- package/dist/shared/interfaces.d.ts +1 -0
- package/dist/shared/interfaces.d.ts.map +1 -1
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/slash-commands.d.ts.map +1 -1
- package/dist/slash-commands.js +14 -7
- package/dist/slash-commands.js.map +1 -1
- package/dist/startup.d.ts +1 -1
- package/dist/startup.d.ts.map +1 -1
- package/dist/startup.js +51 -31
- package/dist/startup.js.map +1 -1
- package/package.json +18 -15
- package/setup/install.sh +13 -43
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/tools/backend.d.ts.map +0 -1
- package/dist/tools/backend.js +0 -166
- package/dist/tools/backend.js.map +0 -1
- package/dist/tools/ipcServer.d.ts +0 -4
- package/dist/tools/ipcServer.d.ts.map +0 -1
- package/dist/tools/ipcServer.js.map +0 -1
- package/dist/tools/queue-utils.d.ts.map +0 -1
- package/dist/tools/queue-utils.js.map +0 -1
- package/dist/tools/validateDb.d.ts +0 -3
- package/dist/tools/validateDb.d.ts.map +0 -1
- package/dist/tools/validateDb.js.map +0 -1
- package/dist/tools/validateDotenv.d.ts.map +0 -1
- package/dist/tools/validateDotenv.js.map +0 -1
- package/dist/types/queues.d.ts.map +0 -1
- /package/dist/{tools → config}/validateDotenv.d.ts +0 -0
- /package/dist/{types → interfaces}/queues.d.ts +0 -0
- /package/dist/{types → interfaces}/queues.js +0 -0
package/dist/startup.js
CHANGED
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
import { Client, GatewayIntentBits, Events } from 'discord.js';
|
|
2
|
-
import { validateDotenv } from './
|
|
3
|
-
import { validateDb } from './
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
2
|
+
import { validateDotenv } from './config/validateDotenv.js';
|
|
3
|
+
import { validateDb } from './config/validateDb.js';
|
|
4
|
+
import { Config } from './config/config.js';
|
|
5
|
+
import { startIPCServer } from './security/ipcServer.js';
|
|
6
|
+
import * as queueUtils from './security/queue-utils.js';
|
|
7
|
+
import { ping } from './exec/backend.js';
|
|
8
|
+
import { discordUsername } from './exec/username.js';
|
|
9
|
+
import { destroyTerminalForUser, initTerminalsFromConfig } from './exec/terminal-manager.js';
|
|
10
|
+
import logger from './logging/logger.js';
|
|
8
11
|
import * as COMMON from './common.js';
|
|
9
12
|
import { registerSlashCommands } from './slash-commands.js';
|
|
10
13
|
import { execCommand } from './modules/command.js';
|
|
11
14
|
import { clearHistory } from './modules/clear.js';
|
|
12
|
-
import { read, write, absPath, pathAutocomplete } from './modules/file.js';
|
|
15
|
+
import { read, write, absPath, pathAutocomplete, cwdPath } from './modules/file.js';
|
|
13
16
|
import { watch } from './modules/watch.js';
|
|
14
17
|
import { debug } from './modules/debug.js';
|
|
15
18
|
import { handleAdmin, localUserAutocomplete } from './modules/admin.js';
|
|
16
|
-
import { fileURLToPath } from 'url';
|
|
17
|
-
|
|
19
|
+
import { fileURLToPath } from 'node:url';
|
|
20
|
+
import dns from 'node:dns';
|
|
21
|
+
dns.setDefaultResultOrder('ipv4first');
|
|
22
|
+
dns.setServers(['1.1.1.1', '8.8.8.8', '1.0.0.1', '8.8.4.4']);
|
|
23
|
+
export async function startDiscOS() {
|
|
18
24
|
if (process.platform !== 'linux') {
|
|
19
|
-
|
|
25
|
+
logger.error(COMMON.PLATFORM_ERR);
|
|
20
26
|
process.exit(1);
|
|
21
27
|
}
|
|
22
28
|
if (!validateDotenv()) {
|
|
@@ -26,21 +32,22 @@ export function startDiscOS() {
|
|
|
26
32
|
validationQueue: [],
|
|
27
33
|
duplicateQueue: [],
|
|
28
34
|
};
|
|
29
|
-
if (!validateDb(queues))
|
|
35
|
+
if (!validateDb(queues))
|
|
30
36
|
process.exit(1);
|
|
31
|
-
|
|
37
|
+
if (Config.standalone)
|
|
38
|
+
await initTerminalsFromConfig(queues);
|
|
39
|
+
if (process.env.PTY_TEST_MODE)
|
|
40
|
+
logger.warn(COMMON.PTY_TEST_MODE_WARN);
|
|
32
41
|
Config.ipcServer = Config.standalone ? null : startIPCServer(queues);
|
|
33
42
|
const client = new Client({
|
|
34
43
|
intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent],
|
|
35
44
|
});
|
|
36
|
-
if (!Config.standalone)
|
|
45
|
+
if (!Config.standalone)
|
|
37
46
|
void ping();
|
|
38
|
-
}
|
|
39
47
|
client.on(Events.InteractionCreate, async (interaction) => {
|
|
40
48
|
if (interaction.isAutocomplete()) {
|
|
41
49
|
const subcommand = interaction.options.getSubcommand();
|
|
42
|
-
if (
|
|
43
|
-
(subcommand === COMMON.READ || subcommand === COMMON.WRITE)) {
|
|
50
|
+
if (interaction.commandName === COMMON.DCOS && (subcommand === COMMON.READ || subcommand === COMMON.WRITE)) {
|
|
44
51
|
return pathAutocomplete(interaction, queues);
|
|
45
52
|
}
|
|
46
53
|
else if ((interaction.commandName === COMMON.DCOS || interaction.commandName === COMMON.ADMOS) && subcommand === COMMON.USER_MGMT) {
|
|
@@ -63,15 +70,17 @@ export function startDiscOS() {
|
|
|
63
70
|
await interaction.reply({ content: COMMON.USER_ERR, flags: 64 });
|
|
64
71
|
return;
|
|
65
72
|
}
|
|
73
|
+
if (queueUtils.countUserCommandsInQueue(queues.duplicateQueue, interaction.user.id) >= Config.userRateLimit) {
|
|
74
|
+
await interaction.reply({ content: COMMON.USER_RATE_LIMIT, flags: 64 });
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
66
77
|
if (queues.duplicateQueue.length >= Number(Config.cmdQueueMaxSize)) {
|
|
67
78
|
await interaction.reply({ content: COMMON.DISCOS_OVERLOADED, flags: 64 });
|
|
68
79
|
return;
|
|
69
80
|
}
|
|
70
81
|
const subcommand = interaction.options.getSubcommand();
|
|
71
82
|
const userId = interaction.user.id;
|
|
72
|
-
const username = interaction
|
|
73
|
-
? (interaction.member.nickname ?? interaction.user.username)
|
|
74
|
-
: (interaction.user.displayName ?? interaction.user.username);
|
|
83
|
+
const username = discordUsername(interaction);
|
|
75
84
|
const isAdminUser = Config.adminUsers.includes(userId);
|
|
76
85
|
if (Config.lockdown && !isAdminUser) {
|
|
77
86
|
await interaction.reply({ content: COMMON.LOCKDOWN_ERR, flags: 64 });
|
|
@@ -79,10 +88,7 @@ export function startDiscOS() {
|
|
|
79
88
|
}
|
|
80
89
|
if (interaction.commandName === COMMON.ADMOS) {
|
|
81
90
|
if (!isAdminUser) {
|
|
82
|
-
await interaction.reply({
|
|
83
|
-
content: COMMON.DISCOS_NON_ADMIN,
|
|
84
|
-
flags: 64,
|
|
85
|
-
});
|
|
91
|
+
await interaction.reply({ content: COMMON.DISCOS_NON_ADMIN, flags: 64 });
|
|
86
92
|
return;
|
|
87
93
|
}
|
|
88
94
|
await handleAdmin(interaction, subcommand, username, queues, client);
|
|
@@ -98,7 +104,7 @@ export function startDiscOS() {
|
|
|
98
104
|
let sendSuccessMsg = COMMON.DEFAULT_DEBUG_VERBOSE;
|
|
99
105
|
switch (subcommand) {
|
|
100
106
|
case COMMON.EXEC: {
|
|
101
|
-
const linuxCmd = interaction.options.getString(COMMON.CMD,
|
|
107
|
+
const linuxCmd = interaction.options.getString(COMMON.CMD, false)?.trim() || '';
|
|
102
108
|
queuedCmd = linuxCmd;
|
|
103
109
|
break;
|
|
104
110
|
}
|
|
@@ -115,7 +121,7 @@ export function startDiscOS() {
|
|
|
115
121
|
}
|
|
116
122
|
case COMMON.WRITE: {
|
|
117
123
|
file = interaction.options.getAttachment(COMMON.FILE, true);
|
|
118
|
-
path = await absPath(interaction.options.getString(COMMON.PATH, false) ?? file.name, userId, queues);
|
|
124
|
+
path = await absPath(file.name, interaction.options.getString(COMMON.PATH, false) ?? (await cwdPath(file.name, userId, queues)), userId, queues);
|
|
119
125
|
queuedCmd = `dcos write to ${path}`;
|
|
120
126
|
break;
|
|
121
127
|
}
|
|
@@ -123,23 +129,26 @@ export function startDiscOS() {
|
|
|
123
129
|
path = interaction.options.getString(COMMON.TARGET, true);
|
|
124
130
|
interval = interaction.options.getInteger(COMMON.INTERVAL, false) ?? interval;
|
|
125
131
|
repeat = interaction.options.getInteger(COMMON.REPEAT, false) ?? repeat;
|
|
126
|
-
queuedCmd = `dcos watch ${
|
|
132
|
+
queuedCmd = `dcos watch ${userId}`;
|
|
127
133
|
break;
|
|
128
134
|
}
|
|
129
135
|
case COMMON.DEBUG: {
|
|
130
136
|
queuedCmd = 'dcos debug';
|
|
131
137
|
break;
|
|
132
138
|
}
|
|
139
|
+
case COMMON.RESET: {
|
|
140
|
+
queuedCmd = 'dcos reset';
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
133
143
|
case COMMON.HELP: {
|
|
134
144
|
queuedCmd = 'dcos help';
|
|
135
145
|
break;
|
|
136
146
|
}
|
|
137
147
|
}
|
|
138
|
-
|
|
148
|
+
const payload = { user: userId, username: discordUsername(interaction), cmd: queuedCmd };
|
|
149
|
+
if (await queueUtils.handleDuplicate(interaction, username, queues.duplicateQueue, payload))
|
|
139
150
|
return;
|
|
140
|
-
}
|
|
141
151
|
await interaction.deferReply({ flags: hideReply ? 64 : undefined });
|
|
142
|
-
const payload = { user: userId, cmd: queuedCmd };
|
|
143
152
|
queueUtils.addToAll(queues, payload);
|
|
144
153
|
try {
|
|
145
154
|
switch (subcommand) {
|
|
@@ -167,6 +176,11 @@ export function startDiscOS() {
|
|
|
167
176
|
await debug(interaction, username, userId, queues, client);
|
|
168
177
|
break;
|
|
169
178
|
}
|
|
179
|
+
case COMMON.RESET: {
|
|
180
|
+
destroyTerminalForUser(interaction.user.id);
|
|
181
|
+
await interaction.editReply({ content: COMMON.PTY_RESET_SUCCESS });
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
170
184
|
case COMMON.HELP: {
|
|
171
185
|
await interaction.editReply({ content: COMMON.HELP_USER });
|
|
172
186
|
break;
|
|
@@ -181,12 +195,18 @@ export function startDiscOS() {
|
|
|
181
195
|
}
|
|
182
196
|
});
|
|
183
197
|
void client.login(process.env.BOT_TOKEN).catch((err) => {
|
|
184
|
-
|
|
198
|
+
logger.error(COMMON.DISCOS_CONN_FAIL, err);
|
|
185
199
|
process.exit(1);
|
|
186
200
|
});
|
|
201
|
+
client.on(Events.Error, (err) => {
|
|
202
|
+
logger.error(COMMON.DISCOS_CLIENT_ERR, err);
|
|
203
|
+
});
|
|
187
204
|
}
|
|
188
205
|
if (process.argv[1] === fileURLToPath(import.meta.url)) {
|
|
189
206
|
registerSlashCommands();
|
|
190
|
-
startDiscOS()
|
|
207
|
+
startDiscOS().catch(() => {
|
|
208
|
+
logger.error(COMMON.DISCOS_STARTUP_ERR);
|
|
209
|
+
process.exit(1);
|
|
210
|
+
});
|
|
191
211
|
}
|
|
192
212
|
//# sourceMappingURL=startup.js.map
|
package/dist/startup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "discos",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"pack": "rm -rf dist && rm -f tsconfig.tsbuildinfo && npm run build && npm pack",
|
|
20
20
|
"format": "prettier --write \"**/*.{ts,json,md}\" --log-level silent",
|
|
21
21
|
"lint": "eslint . --ext .ts --cache",
|
|
22
|
-
"
|
|
22
|
+
"safe": "git config core.hooksPath .husky",
|
|
23
23
|
"unsafe": "git config --unset core.hooksPath",
|
|
24
24
|
"test": "echo \"No tests specified.\" && exit 0"
|
|
25
25
|
},
|
|
@@ -54,26 +54,29 @@
|
|
|
54
54
|
"node": ">=20.0.0"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"axios": "^1.
|
|
58
|
-
"discord.js": "^14.
|
|
59
|
-
"dotenv": "^17.2.
|
|
60
|
-
"file-type": "^21.
|
|
61
|
-
"
|
|
57
|
+
"axios": "^1.13.2",
|
|
58
|
+
"discord.js": "^14.25.1",
|
|
59
|
+
"dotenv": "^17.2.3",
|
|
60
|
+
"file-type": "^21.1.1",
|
|
61
|
+
"node-pty": "^1.1.0-beta43",
|
|
62
|
+
"shell-escape": "^0.2.0",
|
|
63
|
+
"strip-ansi": "^7.1.2",
|
|
64
|
+
"winston": "^3.19.0"
|
|
62
65
|
},
|
|
63
66
|
"devDependencies": {
|
|
64
|
-
"@eslint/js": "^9.
|
|
65
|
-
"@types/node": "^
|
|
67
|
+
"@eslint/js": "^9.39.2",
|
|
68
|
+
"@types/node": "^25.0.3",
|
|
66
69
|
"@types/shell-escape": "^0.2.3",
|
|
67
|
-
"eslint": "^9.
|
|
70
|
+
"eslint": "^9.39.2",
|
|
68
71
|
"eslint-config-prettier": "^10.1.8",
|
|
69
72
|
"eslint-plugin-node": "^11.1.0",
|
|
70
|
-
"eslint-plugin-prettier": "^5.5.
|
|
73
|
+
"eslint-plugin-prettier": "^5.5.4",
|
|
71
74
|
"husky": "^9.1.7",
|
|
72
|
-
"jiti": "^2.
|
|
73
|
-
"prettier": "^3.
|
|
75
|
+
"jiti": "^2.6.1",
|
|
76
|
+
"prettier": "^3.7.4",
|
|
74
77
|
"ts-node": "^10.9.2",
|
|
75
|
-
"typescript": "^5.
|
|
76
|
-
"typescript-eslint": "^8.
|
|
78
|
+
"typescript": "^5.9.3",
|
|
79
|
+
"typescript-eslint": "^8.50.0"
|
|
77
80
|
},
|
|
78
81
|
"files": [
|
|
79
82
|
"dist",
|
package/setup/install.sh
CHANGED
|
@@ -69,9 +69,9 @@ echo -e "\nInstalling dependencies..."
|
|
|
69
69
|
# Install deps for this script
|
|
70
70
|
need sed
|
|
71
71
|
need awk
|
|
72
|
-
need grep
|
|
72
|
+
need grep # DiscOS deps as well
|
|
73
73
|
need git
|
|
74
|
-
need curl
|
|
74
|
+
need curl # DiscOS deps as well
|
|
75
75
|
need tee
|
|
76
76
|
need tail
|
|
77
77
|
|
|
@@ -81,7 +81,6 @@ need base64
|
|
|
81
81
|
need dos2unix
|
|
82
82
|
need realpath
|
|
83
83
|
need head
|
|
84
|
-
need grep # installed as script deps as well
|
|
85
84
|
|
|
86
85
|
echo -e "All dependencies installed."
|
|
87
86
|
|
|
@@ -166,6 +165,10 @@ setup_db() {
|
|
|
166
165
|
read -rp "Enter the local username that you want to use as the given Discord user: " LOCAL_USERNAME
|
|
167
166
|
read -rp "Enter a single channel ID which DiscOS has already joined: " CHANNEL_ID
|
|
168
167
|
|
|
168
|
+
# Disable standalone mode by default for Docker releases
|
|
169
|
+
echo -e "\nIf you plan to run DiscOS in a Docker container in EB mode, modify the DB, so that the container is started in standalone mode!"
|
|
170
|
+
echo "Otherwise, if the prevoiusly set local user does not exist, DiscOS will fail to start."
|
|
171
|
+
|
|
169
172
|
DB="$TEMP_DIR/setup/db.json"
|
|
170
173
|
|
|
171
174
|
sed -i "s/DC_UID/$DISCORD_UID/g" "$DB"
|
|
@@ -255,7 +258,7 @@ setup_node_updater() {
|
|
|
255
258
|
setup_compose() {
|
|
256
259
|
echo -e "\nSetting up compose file...\n"
|
|
257
260
|
|
|
258
|
-
echo "The latest DiscOS image will be used.
|
|
261
|
+
echo "The latest DiscOS image will be used. In case of an update, be sure to manually pull the new image."
|
|
259
262
|
|
|
260
263
|
read -rp "Container name (default DiscOS): " CONTAINER_NAME
|
|
261
264
|
sed -i "s/SERVICE_NAME/${CONTAINER_NAME:-DiscOS}/g" "$COMPOSE_FILE"
|
|
@@ -271,41 +274,13 @@ setup_compose() {
|
|
|
271
274
|
}
|
|
272
275
|
|
|
273
276
|
|
|
274
|
-
############### cmdex setup ###############
|
|
275
|
-
|
|
276
|
-
setup_cmdex() {
|
|
277
|
-
echo -e "\nSetting up command executor..."
|
|
278
|
-
|
|
279
|
-
echo -e "\nYou can specify one user that is allowed to use command executor. This is the user as which your external backend (if used) or parent process (if npm install) will run."
|
|
280
|
-
read -rp "Enter the local username (default: root): " CMD_USER
|
|
281
|
-
CMD_USER=${CMD_USER:-root}
|
|
282
|
-
echo
|
|
283
|
-
|
|
284
|
-
cp "$TEMP_DIR/src/.sh/cmd-executor.sh" "/usr/local/bin/cmdex.sh"
|
|
285
|
-
chown discos:"$CMD_USER" "/usr/local/bin/cmdex.sh" || chown discos:discos "/usr/local/bin/cmdex.sh" || chown root:root "/usr/local/bin/cmdex.sh"
|
|
286
|
-
chmod 770 "/usr/local/bin/cmdex.sh"
|
|
287
|
-
ln -s "/usr/local/bin/cmdex.sh" "/usr/local/bin/cmdex" >/dev/null 2>&1 || echo "Symlink for cmdex already exists."
|
|
288
|
-
|
|
289
|
-
# Sudoers change
|
|
290
|
-
echo "discos ALL=(ALL) NOPASSWD: /usr/local/bin/cmdex.sh, /usr/local/bin/cmdex" | tee /etc/sudoers.d/cmdex >/dev/null
|
|
291
|
-
chmod 440 /etc/sudoers.d/cmdex
|
|
292
|
-
|
|
293
|
-
if [[ "$CMD_USER" != "root" && $(id -u "$CMD_USER" >/dev/null 2>&1; echo $?) -eq 0 ]]; then
|
|
294
|
-
echo "$CMD_USER ALL=(ALL) NOPASSWD: /usr/local/bin/cmdex.sh, /usr/local/bin/cmdex" | tee /etc/sudoers.d/cmdex-user-"$CMD_USER" >/dev/null
|
|
295
|
-
chmod 440 /etc/sudoers.d/cmdex-user-"$CMD_USER"
|
|
296
|
-
fi
|
|
297
|
-
|
|
298
|
-
echo -e "Command executor setup completed."
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
|
|
302
277
|
############### Systemd release ###############
|
|
303
278
|
install_systemd() {
|
|
304
279
|
echo -e "\nStarting Systemd release installation..."
|
|
305
280
|
|
|
306
281
|
if ! id -u discos &>/dev/null; then
|
|
307
282
|
useradd --system -m -s "$(command -v nologin)" discos
|
|
308
|
-
echo "Created system user: discos."
|
|
283
|
+
echo "Created system user: discos. DiscoS will run as root but use this user for storage and Node.js installation."
|
|
309
284
|
fi
|
|
310
285
|
|
|
311
286
|
DISCOS_HOME=$(getent passwd discos | cut -d: -f6)
|
|
@@ -344,8 +319,9 @@ install_systemd() {
|
|
|
344
319
|
# DB setup
|
|
345
320
|
setup_db "write"
|
|
346
321
|
|
|
347
|
-
#
|
|
348
|
-
|
|
322
|
+
# Set up ownership and permissions
|
|
323
|
+
chown -R root:discos "$DISCOS_DIR"
|
|
324
|
+
chmod -R 770 "$DISCOS_DIR"
|
|
349
325
|
else
|
|
350
326
|
# Stop the service for before the update process
|
|
351
327
|
systemctl stop discos.service || echo "DiscOS service could not be stopped."
|
|
@@ -367,7 +343,7 @@ install_systemd() {
|
|
|
367
343
|
cd \"\$TEMP_DIR\" || { echo 'Failed to enter temp download directory.'; exit 1; }
|
|
368
344
|
echo \"CWD: \$TEMP_DIR\"
|
|
369
345
|
echo 'Installing dependencies...'
|
|
370
|
-
npm ci --
|
|
346
|
+
npm ci --omit=optional --silent
|
|
371
347
|
npm run build
|
|
372
348
|
|
|
373
349
|
# Copy dist and install only prod deps
|
|
@@ -433,7 +409,7 @@ install_npm() {
|
|
|
433
409
|
if [[ "$IN_DOCKER" = "y" || "$IN_DOCKER" = "Y" ]]; then
|
|
434
410
|
COMPOSE_FILE="$TEMP_DIR/setup/docker-compose.yaml"
|
|
435
411
|
setup_compose
|
|
436
|
-
echo -e "Compose file will be displayed below. Now rewrite it according to your needs but make sure mounts and env var settings are kept.\n"
|
|
412
|
+
echo -e "Compose file will be displayed below. Now, rewrite it according to your needs but make sure mounts and env var settings are kept.\n"
|
|
437
413
|
cat "$COMPOSE_FILE"
|
|
438
414
|
echo
|
|
439
415
|
else
|
|
@@ -450,9 +426,6 @@ install_npm() {
|
|
|
450
426
|
read -rp "Press any key to continue with database generation. It will only be displayed, copy it where needed."
|
|
451
427
|
setup_db "disp"
|
|
452
428
|
|
|
453
|
-
# Command executor setup
|
|
454
|
-
setup_cmdex
|
|
455
|
-
|
|
456
429
|
echo -e "\nnpm release installation process completed."
|
|
457
430
|
}
|
|
458
431
|
|
|
@@ -496,9 +469,6 @@ install_docker() {
|
|
|
496
469
|
read -rp "Press any key to continue with database generation. It will be located in the compose file dir."
|
|
497
470
|
setup_db "$COMPOSE_PATH"
|
|
498
471
|
|
|
499
|
-
# Command executor setup
|
|
500
|
-
setup_cmdex
|
|
501
|
-
|
|
502
472
|
echo -e "\nDocker release installation process completed."
|
|
503
473
|
}
|
|
504
474
|
|
package/dist/config.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC,eAAO,MAAM,MAAM,EAAE;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CAgBnB,CAAC"}
|
package/dist/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAef;IACF,eAAe,EAAE,CAAC;IAClB,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,EAAE;IAChB,WAAW,EAAE,CAAC;IACd,eAAe,EAAE,EAAE;IACnB,SAAS,EAAE,EAAE;IACb,kBAAkB,EAAE,IAAI;IACxB,YAAY,EAAE,EAAE;IAChB,UAAU,EAAE,EAAE;IACd,eAAe,EAAE,EAAE;IACnB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;CAChB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/tools/backend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAM3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGpF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAS7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAoHzD,wBAAsB,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAe3G;AAED,wBAAsB,GAAG,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAgBlF;AAGD,wBAAsB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CA4B5C;AAGD,wBAAsB,6BAA6B,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBtG"}
|
package/dist/tools/backend.js
DELETED
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
import axios from 'axios';
|
|
2
|
-
import { Config } from '../config.js';
|
|
3
|
-
import { DB_UPDATE } from '../shared/consts.js';
|
|
4
|
-
import * as COMMON from '../common.js';
|
|
5
|
-
import { ROOT_UID, PING_RESPONSE } from '../shared/consts.js';
|
|
6
|
-
const WRITE_OP_SUCCESS = '';
|
|
7
|
-
import * as queueUtils from '../tools/queue-utils.js';
|
|
8
|
-
import shellEscape from 'shell-escape';
|
|
9
|
-
import { exec } from 'child_process';
|
|
10
|
-
import { promisify } from 'util';
|
|
11
|
-
import { readFile } from 'fs/promises';
|
|
12
|
-
const execAsync = promisify(exec);
|
|
13
|
-
async function localUser(user) {
|
|
14
|
-
try {
|
|
15
|
-
if (user === ROOT_UID) {
|
|
16
|
-
return 'root';
|
|
17
|
-
}
|
|
18
|
-
const dbContent = await readFile(Config.databasePath, 'utf-8');
|
|
19
|
-
const dbParsed = JSON.parse(dbContent);
|
|
20
|
-
const serverUser = dbParsed.users[user];
|
|
21
|
-
return shellEscape([serverUser]);
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
return '.';
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
function internalAxiosResponse(data, status) {
|
|
28
|
-
return {
|
|
29
|
-
data: data,
|
|
30
|
-
status: status,
|
|
31
|
-
statusText: '',
|
|
32
|
-
headers: {},
|
|
33
|
-
config: {
|
|
34
|
-
headers: {},
|
|
35
|
-
},
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
async function spawnChild(user, command) {
|
|
39
|
-
try {
|
|
40
|
-
const cmd = shellEscape([command]);
|
|
41
|
-
const serverUser = await localUser(user);
|
|
42
|
-
const { stdout } = await execAsync(`sudo /usr/local/bin/cmdex ${serverUser} ${cmd}`, {
|
|
43
|
-
encoding: 'buffer',
|
|
44
|
-
maxBuffer: 1000 * 1000 * Config.fileMaxSize * 1.34,
|
|
45
|
-
});
|
|
46
|
-
return stdout;
|
|
47
|
-
}
|
|
48
|
-
catch {
|
|
49
|
-
return Buffer.from(COMMON.SPAWN_ERR);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
async function fileWrite(url, path, payload) {
|
|
53
|
-
const escapedPath = shellEscape([path]);
|
|
54
|
-
const safeUrl = shellEscape([url]);
|
|
55
|
-
try {
|
|
56
|
-
const { stdout } = await execAsync(`sudo /usr/local/bin/cmdex root whoami`);
|
|
57
|
-
if (stdout.trim() !== 'root') {
|
|
58
|
-
return COMMON.SPAWN_ERR;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
return COMMON.SPAWN_ERR;
|
|
63
|
-
}
|
|
64
|
-
const serverUser = await localUser(payload.user);
|
|
65
|
-
const isDirCmd = shellEscape([`[ -d ${escapedPath} ] && echo 1 || echo 0`]);
|
|
66
|
-
let { stdout } = await execAsync(`sudo /usr/local/bin/cmdex ${serverUser} ${isDirCmd}`);
|
|
67
|
-
if (stdout.trim() === '1') {
|
|
68
|
-
return COMMON.EB_DIR_ERR;
|
|
69
|
-
}
|
|
70
|
-
const testPermissionCmd = shellEscape([`mkdir -p "$(dirname ${escapedPath})" && echo > ${escapedPath} && rm -f ${escapedPath}`]);
|
|
71
|
-
({ stdout } = await execAsync(`sudo /usr/local/bin/cmdex ${serverUser} ${testPermissionCmd}`));
|
|
72
|
-
if (stdout.trim() !== '') {
|
|
73
|
-
return COMMON.EB_PERM_ERR;
|
|
74
|
-
}
|
|
75
|
-
const curlCmd = shellEscape([`curl -fsSL ${safeUrl} -o ${escapedPath}`]);
|
|
76
|
-
({ stdout } = await execAsync(`sudo /usr/local/bin/cmdex ${serverUser} ${curlCmd}`));
|
|
77
|
-
if (stdout.trim() !== '') {
|
|
78
|
-
return COMMON.EB_DOWNLOAD_ERR;
|
|
79
|
-
}
|
|
80
|
-
const getHomeCmd = shellEscape(['echo $HOME']);
|
|
81
|
-
({ stdout } = await execAsync(`sudo /usr/local/bin/cmdex ${serverUser} ${getHomeCmd}`));
|
|
82
|
-
const userHomeDir = stdout.trim();
|
|
83
|
-
const permCmd = shellEscape([`cd ${userHomeDir} && chown ${serverUser}:${serverUser} ${escapedPath} && chmod 644 ${escapedPath}`]);
|
|
84
|
-
({ stdout } = await execAsync(`sudo /usr/local/bin/cmdex root ${permCmd}`));
|
|
85
|
-
if (stdout.trim() !== '') {
|
|
86
|
-
return COMMON.EB_SET_PERM_ERR;
|
|
87
|
-
}
|
|
88
|
-
return WRITE_OP_SUCCESS;
|
|
89
|
-
}
|
|
90
|
-
export async function post(payload, b64decode) {
|
|
91
|
-
let res;
|
|
92
|
-
if (Config.standalone) {
|
|
93
|
-
const output = await spawnChild(payload.user, payload.cmd);
|
|
94
|
-
res = internalAxiosResponse(b64decode ? Buffer.from(output.toString(), 'base64') : output, 200);
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
res = await axios.post(Config.backend, payload, {
|
|
98
|
-
responseType: 'text',
|
|
99
|
-
validateStatus: (status) => status <= 500,
|
|
100
|
-
});
|
|
101
|
-
if (b64decode)
|
|
102
|
-
res.data = Buffer.from(res.data, 'base64');
|
|
103
|
-
}
|
|
104
|
-
return res;
|
|
105
|
-
}
|
|
106
|
-
export async function put(req) {
|
|
107
|
-
let res;
|
|
108
|
-
if (Config.standalone) {
|
|
109
|
-
const internalResponse = await fileWrite(req.url, req.path, req.payload);
|
|
110
|
-
return internalAxiosResponse(internalResponse, internalResponse === WRITE_OP_SUCCESS ? 200 : 500);
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
res = await axios.put(Config.backend, req, {
|
|
114
|
-
headers: {
|
|
115
|
-
'Content-Type': 'application/json',
|
|
116
|
-
},
|
|
117
|
-
validateStatus: (status) => status <= 500,
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
return res;
|
|
121
|
-
}
|
|
122
|
-
export async function ping() {
|
|
123
|
-
const controller = new AbortController();
|
|
124
|
-
const timeout = setTimeout(() => controller.abort(), 5000);
|
|
125
|
-
try {
|
|
126
|
-
const res = await axios.get(Config.backend, {
|
|
127
|
-
responseType: 'text',
|
|
128
|
-
validateStatus: (status) => status >= 200 && status < 300,
|
|
129
|
-
signal: controller.signal,
|
|
130
|
-
});
|
|
131
|
-
if (res.data.trim() !== PING_RESPONSE) {
|
|
132
|
-
throw new Error(COMMON.EXTERNAL_NORESPONSE);
|
|
133
|
-
}
|
|
134
|
-
console.log(COMMON.EXTERNAL_OK);
|
|
135
|
-
return COMMON.EXTERNAL_OK;
|
|
136
|
-
}
|
|
137
|
-
catch (err) {
|
|
138
|
-
if (err instanceof Error) {
|
|
139
|
-
console.warn(err.message);
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
console.warn(String(err));
|
|
143
|
-
}
|
|
144
|
-
return COMMON.EXTERNAL_NORESPONSE;
|
|
145
|
-
}
|
|
146
|
-
finally {
|
|
147
|
-
clearTimeout(timeout);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
export async function updateExternalBackendDatabase(database, queues) {
|
|
151
|
-
const validationPayload = { user: ROOT_UID, cmd: DB_UPDATE };
|
|
152
|
-
queueUtils.addToAll(queues, validationPayload);
|
|
153
|
-
try {
|
|
154
|
-
await axios.put(Config.backend + '/' + DB_UPDATE, database, {
|
|
155
|
-
headers: {
|
|
156
|
-
'Content-Type': 'application/json',
|
|
157
|
-
},
|
|
158
|
-
validateStatus: (status) => status <= 500,
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
catch {
|
|
162
|
-
console.error(COMMON.NETWORK_ERR);
|
|
163
|
-
}
|
|
164
|
-
queueUtils.tryRemoveInQueue(queues.validationQueue, validationPayload);
|
|
165
|
-
}
|
|
166
|
-
//# sourceMappingURL=backend.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/tools/backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ipcServer.d.ts","sourceRoot":"","sources":["../../src/tools/ipcServer.ts"],"names":[],"mappings":"AAEA,OAAO,GAAG,MAAM,KAAK,CAAC;AAMtB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKxD,wBAAgB,cAAc,CAAC,SAAS,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,CA+CnE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ipcServer.js","sourceRoot":"","sources":["../../src/tools/ipcServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,yBAAyB,CAAC;AAEtD,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKlD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,UAAU,cAAc,CAAC,SAAwB;IAErD,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE;QACzC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAEzB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC9C,MAAM,CAAC,GAAG,EAAE,CAAC;YACf,CAAC;YAGD,IAAI,GAAsB,CAAC;YAC3B,IAAI,CAAC;gBACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAsB,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC/C,MAAM,CAAC,GAAG,EAAE,CAAC;gBACb,OAAO;YACT,CAAC;YAGD,IAAI,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE,CAAC;gBACzD,UAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;gBAE5D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACjD,CAAC;YACD,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE;QAI9B,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queue-utils.d.ts","sourceRoot":"","sources":["../../src/tools/queue-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAG5E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAGjF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAKzF;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAErF;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,2BAA2B,CAAC,SAAS,CAAC,EACnD,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,iBAAiB,EAAE,EAC1B,UAAU,EAAE,iBAAiB,EAC7B,kBAAkB,UAAQ,GACzB,OAAO,CAAC,OAAO,CAAC,CAYlB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queue-utils.js","sourceRoot":"","sources":["../../src/tools/queue-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAIvC,MAAM,UAAU,QAAQ,CAAC,MAAqB,EAAE,GAAsB;IACpE,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAqB,EAAE,GAAsB;IACzE,gBAAgB,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IAC9C,gBAAgB,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAA0B,EAAE,GAAsB;IACjF,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;IACxF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAA0B,EAAE,GAAsB;IAC1E,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmD,EACnD,QAAgB,EAChB,KAA0B,EAC1B,UAA6B,EAC7B,kBAAkB,GAAG,KAAK;IAE1B,MAAM,KAAK,GAAG,kBAAkB;QAC9B,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,CAAC;QACzF,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5F,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,MAAM,WAAW,CAAC,KAAK,CAAC;YACtB,OAAO,EAAE,MAAM,CAAC,aAAa,GAAG,QAAQ,GAAG,GAAG;YAC9C,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validateDb.d.ts","sourceRoot":"","sources":["../../src/tools/validateDb.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKzD,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAsFzD"}
|