@dcl/sdk-commands 7.28.1-34502200570.commit-e3d4af5 → 7.28.1-34624845556.commit-7d0808b
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/dist/commands/sdk-server-logs/index.d.ts +24 -0
- package/dist/commands/sdk-server-logs/index.js +313 -0
- package/dist/commands/sdk-server-logs/index.js.map +1 -0
- package/dist/commands/start/index.js +19 -1
- package/dist/commands/start/index.js.map +1 -1
- package/dist/commands/start/multiplayer-server.d.ts +25 -0
- package/dist/commands/start/multiplayer-server.js +227 -0
- package/dist/commands/start/multiplayer-server.js.map +1 -0
- package/dist/commands/start/server/routes.js +2 -0
- package/dist/commands/start/server/routes.js.map +1 -1
- package/dist/commands/start/server/runtime-env.d.ts +71 -0
- package/dist/commands/start/server/runtime-env.js +253 -0
- package/dist/commands/start/server/runtime-env.js.map +1 -0
- package/dist/commands/start/server/storage-service.d.ts +8 -0
- package/dist/commands/start/server/storage-service.js +156 -0
- package/dist/commands/start/server/storage-service.js.map +1 -0
- package/dist/commands/start/utils.d.ts +34 -0
- package/dist/commands/start/utils.js +104 -0
- package/dist/commands/start/utils.js.map +1 -1
- package/dist/commands/storage/env.d.ts +5 -0
- package/dist/commands/storage/env.js +86 -0
- package/dist/commands/storage/env.js.map +1 -0
- package/dist/commands/storage/index.d.ts +26 -0
- package/dist/commands/storage/index.js +142 -0
- package/dist/commands/storage/index.js.map +1 -0
- package/dist/commands/storage/player.d.ts +5 -0
- package/dist/commands/storage/player.js +143 -0
- package/dist/commands/storage/player.js.map +1 -0
- package/dist/commands/storage/scene.d.ts +5 -0
- package/dist/commands/storage/scene.js +105 -0
- package/dist/commands/storage/scene.js.map +1 -0
- package/dist/commands/storage/shared.d.ts +62 -0
- package/dist/commands/storage/shared.js +260 -0
- package/dist/commands/storage/shared.js.map +1 -0
- package/dist/commands/storage/types.d.ts +56 -0
- package/dist/commands/storage/types.js +23 -0
- package/dist/commands/storage/types.js.map +1 -0
- package/dist/components/analytics.d.ts +75 -1
- package/dist/components/analytics.js +3 -2
- package/dist/components/analytics.js.map +1 -1
- package/dist/logic/auth-chain-headers.d.ts +11 -0
- package/dist/logic/auth-chain-headers.js +25 -0
- package/dist/logic/auth-chain-headers.js.map +1 -0
- package/dist/logic/bundle.js +31 -0
- package/dist/logic/bundle.js.map +1 -1
- package/dist/logic/config.d.ts +1 -0
- package/dist/logic/config.js +7 -0
- package/dist/logic/config.js.map +1 -1
- package/dist/logic/error.d.ts +1 -1
- package/dist/logic/error.js.map +1 -1
- package/dist/logic/exec.d.ts +1 -0
- package/dist/logic/exec.js +2 -2
- package/dist/logic/exec.js.map +1 -1
- package/dist/logic/lang.js +1 -1
- package/dist/logic/scene-validations.d.ts +8 -1
- package/dist/logic/scene-validations.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Result } from 'arg';
|
|
2
|
+
import { CliComponents } from '../../components';
|
|
3
|
+
interface Options {
|
|
4
|
+
args: Result<typeof args>;
|
|
5
|
+
components: CliComponents;
|
|
6
|
+
}
|
|
7
|
+
export declare const args: {
|
|
8
|
+
'--help': BooleanConstructor;
|
|
9
|
+
'-h': string;
|
|
10
|
+
'--dir': StringConstructor;
|
|
11
|
+
'--world': StringConstructor;
|
|
12
|
+
'-w': string;
|
|
13
|
+
'--position': StringConstructor;
|
|
14
|
+
'--target': StringConstructor;
|
|
15
|
+
'-t': string;
|
|
16
|
+
'--port': NumberConstructor;
|
|
17
|
+
'-p': string;
|
|
18
|
+
'--https': BooleanConstructor;
|
|
19
|
+
'--no-browser': BooleanConstructor;
|
|
20
|
+
'-b': string;
|
|
21
|
+
};
|
|
22
|
+
export declare function help(options: Options): void;
|
|
23
|
+
export declare function main(options: Options): Promise<void>;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.args = void 0;
|
|
7
|
+
exports.help = help;
|
|
8
|
+
exports.main = main;
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const fp_future_1 = __importDefault(require("fp-future"));
|
|
11
|
+
const crypto_1 = require("@dcl/crypto");
|
|
12
|
+
const crypto_2 = require("@dcl/crypto/dist/crypto");
|
|
13
|
+
const eth_connect_1 = require("eth-connect");
|
|
14
|
+
const args_1 = require("../../logic/args");
|
|
15
|
+
const error_1 = require("../../logic/error");
|
|
16
|
+
const beautiful_logs_1 = require("../../logic/beautiful-logs");
|
|
17
|
+
const account_1 = require("../../logic/account");
|
|
18
|
+
const auth_chain_headers_1 = require("../../logic/auth-chain-headers");
|
|
19
|
+
const routes_1 = require("../../linker-dapp/routes");
|
|
20
|
+
const run_dapp_1 = require("../../run-dapp");
|
|
21
|
+
const workspace_validations_1 = require("../../logic/workspace-validations");
|
|
22
|
+
const scene_validations_1 = require("../../logic/scene-validations");
|
|
23
|
+
exports.args = (0, args_1.declareArgs)({
|
|
24
|
+
'--help': Boolean,
|
|
25
|
+
'-h': '--help',
|
|
26
|
+
'--dir': String,
|
|
27
|
+
'--world': String,
|
|
28
|
+
'-w': '--world',
|
|
29
|
+
'--position': String,
|
|
30
|
+
'--target': String,
|
|
31
|
+
'-t': '--target',
|
|
32
|
+
'--port': Number,
|
|
33
|
+
'-p': '--port',
|
|
34
|
+
'--https': Boolean,
|
|
35
|
+
'--no-browser': Boolean,
|
|
36
|
+
'-b': '--no-browser'
|
|
37
|
+
});
|
|
38
|
+
const DEFAULT_SERVER = 'https://multiplayer-server.decentraland.org';
|
|
39
|
+
function help(options) {
|
|
40
|
+
options.components.logger.log(`
|
|
41
|
+
Usage: 'sdk-commands sdk-server-logs [options]'
|
|
42
|
+
Streams real-time logs from the multiplayer server.
|
|
43
|
+
Runs from any directory when --world and/or --position are provided.
|
|
44
|
+
Falls back to scene.json (worldConfiguration.name) when neither is passed.
|
|
45
|
+
|
|
46
|
+
Options:
|
|
47
|
+
-h, --help Displays complete help
|
|
48
|
+
-w, --world [name] World name. When omitted, --position targets Genesis City.
|
|
49
|
+
--position [x,y] Parcel coordinates. Optional for worlds (selects a scene
|
|
50
|
+
in a multi-scene world). Required for Genesis City.
|
|
51
|
+
-t, --target [URL] Target multiplayer server URL (default: ${DEFAULT_SERVER})
|
|
52
|
+
--dir [path] Path to the project directory (used with scene.json fallback)
|
|
53
|
+
-p, --port [port] Select a custom port for the linker dApp
|
|
54
|
+
-b, --no-browser Do not open a new browser window
|
|
55
|
+
--https Use HTTPS for the linker dApp
|
|
56
|
+
|
|
57
|
+
Examples:
|
|
58
|
+
- View logs using the world in the current scene.json:
|
|
59
|
+
$ sdk-commands sdk-server-logs
|
|
60
|
+
|
|
61
|
+
- View logs for a world from any directory:
|
|
62
|
+
$ sdk-commands sdk-server-logs --world myworld.dcl.eth
|
|
63
|
+
|
|
64
|
+
- View logs for a specific scene in a multi-scene world:
|
|
65
|
+
$ sdk-commands sdk-server-logs --world myworld.dcl.eth --position 10,10
|
|
66
|
+
|
|
67
|
+
- View logs for a Genesis City scene (use =value form for negative coords):
|
|
68
|
+
$ sdk-commands sdk-server-logs --position=-125,-96
|
|
69
|
+
|
|
70
|
+
- Connect to a custom server:
|
|
71
|
+
$ sdk-commands sdk-server-logs --world myworld --target https://multiplayer-server.decentraland.zone
|
|
72
|
+
|
|
73
|
+
- Use private key for authentication (no browser):
|
|
74
|
+
$ DCL_PRIVATE_KEY=0x... sdk-commands sdk-server-logs --world myworld
|
|
75
|
+
`);
|
|
76
|
+
}
|
|
77
|
+
function setServerLogsRoutes(router, components, awaitResponse, signCallback) {
|
|
78
|
+
const { logger } = components;
|
|
79
|
+
const resolveLinkerPromise = () => setTimeout(() => awaitResponse.resolve(), 100);
|
|
80
|
+
const rejectLinkerPromise = (e) => setTimeout(() => awaitResponse.reject(e), 100);
|
|
81
|
+
router.post('/api/logs', async (ctx) => {
|
|
82
|
+
const value = (await ctx.request.json());
|
|
83
|
+
if (!value.address || !value.authChain) {
|
|
84
|
+
const errorMessage = `Invalid payload: ${Object.keys(value).join(' - ')}`;
|
|
85
|
+
logger.error(errorMessage);
|
|
86
|
+
resolveLinkerPromise();
|
|
87
|
+
return { status: 400, body: { success: false, error: errorMessage } };
|
|
88
|
+
}
|
|
89
|
+
try {
|
|
90
|
+
await signCallback(value);
|
|
91
|
+
resolveLinkerPromise();
|
|
92
|
+
return { body: { success: true } };
|
|
93
|
+
}
|
|
94
|
+
catch (e) {
|
|
95
|
+
rejectLinkerPromise(e);
|
|
96
|
+
return { status: 400, body: { success: false, error: e.message } };
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
return router;
|
|
100
|
+
}
|
|
101
|
+
async function getAddressAndSignature(components, awaitResponse, payload, displayLabel, targetUrl, linkOptions, signCallback) {
|
|
102
|
+
// If DCL_PRIVATE_KEY is set, sign directly without the linker dapp
|
|
103
|
+
if (process.env.DCL_PRIVATE_KEY) {
|
|
104
|
+
const wallet = (0, account_1.createWallet)(process.env.DCL_PRIVATE_KEY);
|
|
105
|
+
const authChain = crypto_1.Authenticator.createSimpleAuthChain(payload, wallet.address, (0, crypto_2.ethSign)((0, eth_connect_1.hexToBytes)(wallet.privateKey), payload));
|
|
106
|
+
const linkerResponse = { authChain, address: wallet.address };
|
|
107
|
+
await signCallback(linkerResponse);
|
|
108
|
+
awaitResponse.resolve();
|
|
109
|
+
return {};
|
|
110
|
+
}
|
|
111
|
+
// Use linker dapp for signing - pass the payload as the rootCID
|
|
112
|
+
const { router: commonRouter } = (0, routes_1.setRoutes)(components, {
|
|
113
|
+
rootCID: payload,
|
|
114
|
+
baseParcel: '0,0',
|
|
115
|
+
parcels: ['0,0'],
|
|
116
|
+
skipValidations: true,
|
|
117
|
+
debug: !!process.env.DEBUG,
|
|
118
|
+
isWorld: true,
|
|
119
|
+
world: displayLabel,
|
|
120
|
+
targetUrl,
|
|
121
|
+
action: 'view-logs'
|
|
122
|
+
});
|
|
123
|
+
const router = setServerLogsRoutes(commonRouter, components, awaitResponse, signCallback);
|
|
124
|
+
components.logger.info('You need to sign to access server logs');
|
|
125
|
+
const { program } = await (0, run_dapp_1.runDapp)(components, router, { ...linkOptions, uri: `/` });
|
|
126
|
+
return { program };
|
|
127
|
+
}
|
|
128
|
+
async function streamLogs(components, logsUrl, authHeaders) {
|
|
129
|
+
const { logger, fetch: fetchComponent } = components;
|
|
130
|
+
logger.info('\nConnecting to server logs...');
|
|
131
|
+
try {
|
|
132
|
+
const response = await fetchComponent.fetch(logsUrl, {
|
|
133
|
+
method: 'GET',
|
|
134
|
+
headers: {
|
|
135
|
+
...authHeaders,
|
|
136
|
+
Accept: 'text/event-stream'
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
if (!response.ok) {
|
|
140
|
+
const errorText = await response.text();
|
|
141
|
+
throw new Error(`Server returned ${response.status}: ${errorText}`);
|
|
142
|
+
}
|
|
143
|
+
const contentType = response.headers.get('content-type') || '';
|
|
144
|
+
if (!contentType.includes('text/event-stream') && !contentType.includes('application/stream')) {
|
|
145
|
+
throw new Error('Server does not support SSE streaming');
|
|
146
|
+
}
|
|
147
|
+
logger.info('Streaming logs in real-time (press CTRL+C to stop)');
|
|
148
|
+
if (response.body) {
|
|
149
|
+
const decoder = new TextDecoder();
|
|
150
|
+
let buffer = '';
|
|
151
|
+
for await (const chunk of response.body) {
|
|
152
|
+
buffer += decoder.decode(chunk, { stream: true });
|
|
153
|
+
const lines = buffer.split('\n');
|
|
154
|
+
buffer = lines.pop() || '';
|
|
155
|
+
for (const line of lines) {
|
|
156
|
+
if (line.trim()) {
|
|
157
|
+
formatAndPrintLog(logger, line);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
logger.info('\n======================= End Scene Logs =======================');
|
|
163
|
+
}
|
|
164
|
+
catch (e) {
|
|
165
|
+
(0, beautiful_logs_1.printError)(logger, 'Failed to stream logs:', e);
|
|
166
|
+
process.exit(1);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function formatAndPrintLog(logger, log) {
|
|
170
|
+
// If log is a string, try to parse as JSON
|
|
171
|
+
let logObj = log;
|
|
172
|
+
if (typeof log === 'string') {
|
|
173
|
+
try {
|
|
174
|
+
logObj = JSON.parse(log);
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
// If not JSON, just print the string
|
|
178
|
+
logger.log(log);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
// Extract common log fields
|
|
183
|
+
const timestamp = logObj.timestamp || logObj.time || new Date().toISOString();
|
|
184
|
+
const level = (logObj.level || logObj.severity || 'INFO').toUpperCase();
|
|
185
|
+
const message = logObj.message || logObj.msg || JSON.stringify(logObj);
|
|
186
|
+
// Format timestamp
|
|
187
|
+
const date = new Date(timestamp);
|
|
188
|
+
const formattedTime = date.toISOString().replace('T', ' ').substring(0, 19);
|
|
189
|
+
// Format the log message with timestamp
|
|
190
|
+
const formattedMessage = `[${formattedTime}] [${level}] ${message}`;
|
|
191
|
+
// Map log levels to logger methods
|
|
192
|
+
const normalizedLevel = level.toLowerCase();
|
|
193
|
+
switch (normalizedLevel) {
|
|
194
|
+
case 'error':
|
|
195
|
+
logger.error(formattedMessage);
|
|
196
|
+
break;
|
|
197
|
+
case 'warn':
|
|
198
|
+
case 'warning':
|
|
199
|
+
logger.warn(formattedMessage);
|
|
200
|
+
break;
|
|
201
|
+
case 'debug':
|
|
202
|
+
logger.debug(formattedMessage);
|
|
203
|
+
break;
|
|
204
|
+
case 'info':
|
|
205
|
+
case 'trace':
|
|
206
|
+
default:
|
|
207
|
+
logger.info(formattedMessage);
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
// If there are additional fields, print them
|
|
211
|
+
const additionalFields = Object.keys(logObj).filter((key) => !['timestamp', 'time', 'level', 'severity', 'message', 'msg'].includes(key));
|
|
212
|
+
if (additionalFields.length > 0) {
|
|
213
|
+
const additional = {};
|
|
214
|
+
additionalFields.forEach((key) => {
|
|
215
|
+
additional[key] = logObj[key];
|
|
216
|
+
});
|
|
217
|
+
logger.log(` ${JSON.stringify(additional)}`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
function normalizePosition(raw) {
|
|
221
|
+
const match = raw.trim().match(/^(-?\d+)\s*,\s*(-?\d+)$/);
|
|
222
|
+
if (!match) {
|
|
223
|
+
throw new error_1.CliError('SERVER_LOGS_INVALID_POSITION', `Invalid --position "${raw}"; expected "x,y" with integer coordinates`);
|
|
224
|
+
}
|
|
225
|
+
return `${parseInt(match[1], 10)},${parseInt(match[2], 10)}`;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Build the HTTP request shape for the multiplayer-server `/logs` endpoint.
|
|
229
|
+
*
|
|
230
|
+
* Every call targets the same `/logs` route; the server picks the scene from
|
|
231
|
+
* the signed metadata:
|
|
232
|
+
* - worlds → `sceneId: "<world>.dcl.eth"` (+ `parcel` for multi-scene worlds)
|
|
233
|
+
* - Genesis → `parcel: "x,y"` only
|
|
234
|
+
*
|
|
235
|
+
* `parcel` and `realmName` are always set. `realmName` defaults to `"main"` for
|
|
236
|
+
* Genesis, matching the convention used by other signed-fetch emitters
|
|
237
|
+
* (hammurabi worker, unity explorer, kernel).
|
|
238
|
+
*/
|
|
239
|
+
function buildLogsRequest(baseURL, world, position) {
|
|
240
|
+
const metadata = JSON.stringify({
|
|
241
|
+
parcel: position ?? '0,0',
|
|
242
|
+
realmName: world ? `${world}.dcl.eth` : 'main',
|
|
243
|
+
...(world && { sceneId: `${world}.dcl.eth` })
|
|
244
|
+
});
|
|
245
|
+
return {
|
|
246
|
+
logsUrl: `${baseURL}/logs`,
|
|
247
|
+
pathname: '/logs',
|
|
248
|
+
metadata
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
async function main(options) {
|
|
252
|
+
const { logger } = options.components;
|
|
253
|
+
const projectRoot = (0, path_1.resolve)(process.cwd(), options.args['--dir'] || '.');
|
|
254
|
+
const positionArg = options.args['--position'];
|
|
255
|
+
const worldArg = options.args['--world'];
|
|
256
|
+
const position = positionArg ? normalizePosition(positionArg) : undefined;
|
|
257
|
+
let world;
|
|
258
|
+
if (worldArg) {
|
|
259
|
+
world = worldArg.replace(/\.dcl\.eth$/i, '');
|
|
260
|
+
}
|
|
261
|
+
else if (!position) {
|
|
262
|
+
// no --world nor --position: fall back to scene.json in the current directory
|
|
263
|
+
await (0, workspace_validations_1.getValidWorkspace)(options.components, projectRoot);
|
|
264
|
+
const sceneJson = await (0, scene_validations_1.getValidSceneJson)(options.components, projectRoot);
|
|
265
|
+
const worldName = sceneJson.worldConfiguration?.name;
|
|
266
|
+
if (!worldName) {
|
|
267
|
+
throw new error_1.CliError('SERVER_LOGS_MISSING_WORLD', 'Provide --world (with optional --position) for worlds, or --position alone for Genesis City scenes. ' +
|
|
268
|
+
'Alternatively, run from a project whose scene.json defines worldConfiguration.name.');
|
|
269
|
+
}
|
|
270
|
+
world = worldName.replace(/\.dcl\.eth$/i, '');
|
|
271
|
+
}
|
|
272
|
+
const displayLabel = world
|
|
273
|
+
? position
|
|
274
|
+
? `${world}.dcl.eth ${position}`
|
|
275
|
+
: `${world}.dcl.eth`
|
|
276
|
+
: `Genesis City ${position}`;
|
|
277
|
+
logger.info(`Viewing logs for ${displayLabel}`);
|
|
278
|
+
const baseURL = options.args['--target'] || DEFAULT_SERVER;
|
|
279
|
+
const { logsUrl, pathname, metadata } = buildLogsRequest(baseURL, world, position);
|
|
280
|
+
// Linker dApp options
|
|
281
|
+
const linkerPort = options.args['--port'];
|
|
282
|
+
const openBrowser = !options.args['--no-browser'];
|
|
283
|
+
const isHttps = !!options.args['--https'];
|
|
284
|
+
const linkOptions = { linkerPort, openBrowser, isHttps };
|
|
285
|
+
const awaitResponse = (0, fp_future_1.default)();
|
|
286
|
+
const timestamp = String(Date.now());
|
|
287
|
+
// Build the payload to sign: method:path:timestamp:metadata
|
|
288
|
+
const payload = ['get', pathname, timestamp, metadata].join(':').toLowerCase();
|
|
289
|
+
let authHeaders = {};
|
|
290
|
+
const { program } = await getAddressAndSignature(options.components, awaitResponse, payload, displayLabel, baseURL, linkOptions, async (linkerResponse) => {
|
|
291
|
+
authHeaders = (0, auth_chain_headers_1.createAuthChainHeaders)(linkerResponse.authChain, timestamp, metadata);
|
|
292
|
+
});
|
|
293
|
+
try {
|
|
294
|
+
await awaitResponse;
|
|
295
|
+
logger.info('Authentication successful!');
|
|
296
|
+
// Close the browser window
|
|
297
|
+
if (program) {
|
|
298
|
+
await program.stop();
|
|
299
|
+
}
|
|
300
|
+
// Start streaming logs
|
|
301
|
+
await streamLogs(options.components, logsUrl, authHeaders);
|
|
302
|
+
}
|
|
303
|
+
catch (e) {
|
|
304
|
+
(0, beautiful_logs_1.printError)(logger, 'Failed to authenticate:', e);
|
|
305
|
+
throw e;
|
|
306
|
+
}
|
|
307
|
+
finally {
|
|
308
|
+
if (program) {
|
|
309
|
+
void program.stop();
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/sdk-server-logs/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,6 +66,7 @@ const beautiful_logs_1 = require("../../logic/beautiful-logs");
|
|
|
66
66
|
const project_validations_1 = require("../../logic/project-validations");
|
|
67
67
|
const explorer_alpha_1 = require("./explorer-alpha");
|
|
68
68
|
const utils_1 = require("./utils");
|
|
69
|
+
const multiplayer_server_1 = require("./multiplayer-server");
|
|
69
70
|
exports.args = (0, args_1.declareArgs)({
|
|
70
71
|
'--dir': String,
|
|
71
72
|
'--help': Boolean,
|
|
@@ -197,9 +198,12 @@ async function main(options) {
|
|
|
197
198
|
const config = (0, env_config_provider_1.createRecordConfigComponent)({
|
|
198
199
|
HTTP_SERVER_PORT: port.toString(),
|
|
199
200
|
HTTP_SERVER_HOST: '0.0.0.0',
|
|
201
|
+
// the embedded comms server (RoomsComponent/LinearProtocol) logs every
|
|
202
|
+
// connect/disconnect at DEBUG; LOG_LEVEL=DEBUG in the env re-enables it
|
|
203
|
+
LOG_LEVEL: 'INFO',
|
|
200
204
|
...process.env
|
|
201
205
|
});
|
|
202
|
-
const logs = await (0, logger_1.createConsoleLogComponent)({});
|
|
206
|
+
const logs = await (0, logger_1.createConsoleLogComponent)({ config });
|
|
203
207
|
const ws = await (0, ws_1.createWsComponent)({ logs });
|
|
204
208
|
const server = await (0, http_server_1.createServerComponent)({ config, ws: ws.ws, logs }, { cors: {} });
|
|
205
209
|
const rooms = await (0, rooms_1.createRoomsComponent)({
|
|
@@ -239,6 +243,20 @@ async function main(options) {
|
|
|
239
243
|
}
|
|
240
244
|
}
|
|
241
245
|
await startComponents();
|
|
246
|
+
// Start the multiplayer server if needed (kept outside the components object to avoid lifecycle management)
|
|
247
|
+
const project = workspace.projects[0];
|
|
248
|
+
if (project) {
|
|
249
|
+
const realm = `http://localhost:${port}`;
|
|
250
|
+
const multiplayerServer = (0, multiplayer_server_1.spawnAuthServer)(components, project, realm);
|
|
251
|
+
if (multiplayerServer) {
|
|
252
|
+
const cleanup = () => {
|
|
253
|
+
if (!multiplayerServer.killed) {
|
|
254
|
+
multiplayerServer.kill('SIGTERM');
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
components.signaler.programClosed.then(cleanup).catch(() => { });
|
|
258
|
+
}
|
|
259
|
+
}
|
|
242
260
|
const networkInterfaces = os.networkInterfaces();
|
|
243
261
|
const availableURLs = [];
|
|
244
262
|
(0, beautiful_logs_1.printProgressInfo)(options.components.logger, 'Preview server is now running!');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/start/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/start/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ChildProcess } from 'child_process';
|
|
2
|
+
import { CliComponents } from '../../components';
|
|
3
|
+
import { PreviewComponents } from './types';
|
|
4
|
+
import { ProjectUnion } from '../../logic/project-validations';
|
|
5
|
+
type ServerEngine = 'bevy' | 'hammurabi';
|
|
6
|
+
/**
|
|
7
|
+
* Starts the Multiplayer Server process using npx to install and run in one step
|
|
8
|
+
*/
|
|
9
|
+
export declare function startMultiplayerServer(components: Pick<CliComponents, 'logger' | 'analytics'>, workingDir: string, realm: string, engine?: ServerEngine): ChildProcess;
|
|
10
|
+
/**
|
|
11
|
+
* Spawns the multiplayer server for the project.
|
|
12
|
+
* In the auth-server SDK, all scenes are authoritative multiplayer.
|
|
13
|
+
* Uses npx to handle installation and execution in a single step (works in Electron).
|
|
14
|
+
*
|
|
15
|
+
* Which implementation runs is chosen by DCL_SERVER_ENGINE (bevy | hammurabi), defaulting
|
|
16
|
+
* to bevy. When bevy reports itself unavailable on this machine (exit 78) the preview is
|
|
17
|
+
* aborted with instructions to opt into hammurabi — there is no automatic fallback.
|
|
18
|
+
*
|
|
19
|
+
* @param components - Preview components including logger
|
|
20
|
+
* @param project - The project to start the multiplayer server for
|
|
21
|
+
* @param realm - The realm URL to pass to the server
|
|
22
|
+
* @returns The ChildProcess if started, undefined otherwise
|
|
23
|
+
*/
|
|
24
|
+
export declare function spawnAuthServer(components: PreviewComponents, project: ProjectUnion, realm: string): ChildProcess | undefined;
|
|
25
|
+
export {};
|