frontend
This commit is contained in:
@@ -4,11 +4,12 @@
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
import axios from 'axios';
|
||||
import { exec } from 'child_process';
|
||||
import { createLogger } from 'common/logging.js';
|
||||
import { promisify } from 'util';
|
||||
import { createLogger } from './logging.js';
|
||||
import { require } from './require.js';
|
||||
|
||||
const axios = require('axios');
|
||||
const logger = createLogger('dreamseeker');
|
||||
|
||||
const instanceByPid = new Map();
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
const esmRequire = require('esm')(module, {
|
||||
cache: false,
|
||||
});
|
||||
|
||||
esmRequire('./index.js');
|
||||
+11
-4
@@ -37,7 +37,7 @@ if (process.env.NODE_ENV !== 'production') {
|
||||
window.onunload = () => socket && socket.close();
|
||||
}
|
||||
|
||||
export const subscribe = fn => subscribers.push(fn);
|
||||
const subscribe = fn => subscribers.push(fn);
|
||||
|
||||
/**
|
||||
* A json serializer which handles circular references and other junk.
|
||||
@@ -91,7 +91,7 @@ const serializeObject = obj => {
|
||||
return json;
|
||||
};
|
||||
|
||||
export const sendMessage = msg => {
|
||||
const sendMessage = msg => {
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
const json = serializeObject(msg);
|
||||
// Send message using WebSocket
|
||||
@@ -119,7 +119,7 @@ export const sendMessage = msg => {
|
||||
}
|
||||
};
|
||||
|
||||
export const sendLogEntry = (level, ns, ...args) => {
|
||||
const sendLogEntry = (level, ns, ...args) => {
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
try {
|
||||
sendMessage({
|
||||
@@ -135,7 +135,7 @@ export const sendLogEntry = (level, ns, ...args) => {
|
||||
}
|
||||
};
|
||||
|
||||
export const setupHotReloading = () => {
|
||||
const setupHotReloading = () => {
|
||||
if (process.env.NODE_ENV !== 'production'
|
||||
&& process.env.WEBPACK_HMR_ENABLED
|
||||
&& window.WebSocket) {
|
||||
@@ -168,3 +168,10 @@ export const setupHotReloading = () => {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
subscribe,
|
||||
sendMessage,
|
||||
sendLogEntry,
|
||||
setupHotReloading,
|
||||
};
|
||||
@@ -4,13 +4,15 @@
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
import { createLogger } from 'common/logging.js';
|
||||
import fs from 'fs';
|
||||
import { basename } from 'path';
|
||||
import SourceMap from 'source-map';
|
||||
import { parse as parseStackTrace } from 'stacktrace-parser';
|
||||
import { createLogger } from '../logging.js';
|
||||
import { require } from '../require.js';
|
||||
import { resolveGlob } from '../util.js';
|
||||
|
||||
const SourceMap = require('source-map');
|
||||
const { parse: parseStackTrace } = require('stacktrace-parser');
|
||||
|
||||
const logger = createLogger('retrace');
|
||||
|
||||
const { SourceMapConsumer } = SourceMap;
|
||||
|
||||
@@ -4,11 +4,13 @@
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
import { createLogger, directLog } from 'common/logging.js';
|
||||
import http from 'http';
|
||||
import { inspect } from 'util';
|
||||
import WebSocket from 'ws';
|
||||
import { retrace, loadSourceMaps } from './retrace.js';
|
||||
import { createLogger, directLog } from '../logging.js';
|
||||
import { require } from '../require.js';
|
||||
import { loadSourceMaps, retrace } from './retrace.js';
|
||||
|
||||
const WebSocket = require('ws');
|
||||
|
||||
const logger = createLogger('link');
|
||||
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
* @file
|
||||
* @copyright 2020 Aleksej Komarov
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
const inception = Date.now();
|
||||
|
||||
// Runtime detection
|
||||
const isNode = process && process.release && process.release.name === 'node';
|
||||
let isChrome = false;
|
||||
try {
|
||||
isChrome = window.navigator.userAgent.toLowerCase().includes('chrome');
|
||||
}
|
||||
catch {}
|
||||
|
||||
// Timestamping function
|
||||
const getTimestamp = () => {
|
||||
const timestamp = String(Date.now() - inception)
|
||||
.padStart(4, '0')
|
||||
.padStart(7, ' ');
|
||||
const seconds = timestamp.substr(0, timestamp.length - 3);
|
||||
const millis = timestamp.substr(-3);
|
||||
return `${seconds}.${millis}`;
|
||||
};
|
||||
|
||||
const getPrefix = (() => {
|
||||
if (isNode) {
|
||||
// Escape sequences
|
||||
const ESC = {
|
||||
dimmed: '\x1b[38;5;240m',
|
||||
bright: '\x1b[37;1m',
|
||||
reset: '\x1b[0m',
|
||||
};
|
||||
return ns => [
|
||||
`${ESC.dimmed}${getTimestamp()} ${ESC.bright}${ns}${ESC.reset}`,
|
||||
];
|
||||
}
|
||||
if (isChrome) {
|
||||
// Styles
|
||||
const styles = {
|
||||
dimmed: 'color: #888',
|
||||
bright: 'font-weight: bold',
|
||||
};
|
||||
return ns => [
|
||||
`%c${getTimestamp()}%c ${ns}`,
|
||||
styles.dimmed,
|
||||
styles.bright,
|
||||
];
|
||||
}
|
||||
return ns => [
|
||||
`${getTimestamp()} ${ns}`,
|
||||
];
|
||||
})();
|
||||
|
||||
/**
|
||||
* Creates a logger object.
|
||||
*/
|
||||
export const createLogger = ns => ({
|
||||
log: (...args) => console.log(...getPrefix(ns), ...args),
|
||||
trace: (...args) => console.trace(...getPrefix(ns), ...args),
|
||||
debug: (...args) => console.debug(...getPrefix(ns), ...args),
|
||||
info: (...args) => console.info(...getPrefix(ns), ...args),
|
||||
warn: (...args) => console.warn(...getPrefix(ns), ...args),
|
||||
error: (...args) => console.error(...getPrefix(ns), ...args),
|
||||
});
|
||||
|
||||
/**
|
||||
* Explicitly log with chosen namespace.
|
||||
*/
|
||||
export const directLog = (ns, ...args) =>
|
||||
console.log(...getPrefix(ns), ...args);
|
||||
@@ -2,13 +2,12 @@
|
||||
"private": true,
|
||||
"name": "tgui-dev-server",
|
||||
"version": "4.3.0",
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"axios": "^0.21.1",
|
||||
"common": "workspace:*",
|
||||
"esm": "^3.2.25",
|
||||
"glob": "^7.1.6",
|
||||
"glob": "^7.1.7",
|
||||
"source-map": "^0.7.3",
|
||||
"stacktrace-parser": "^0.1.10",
|
||||
"ws": "^7.4.6"
|
||||
"ws": "^7.5.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
import { createLogger } from 'common/logging.js';
|
||||
import fs from 'fs';
|
||||
import os from 'os';
|
||||
import { basename } from 'path';
|
||||
import { DreamSeeker } from './dreamseeker.js';
|
||||
import { createLogger } from './logging.js';
|
||||
import { resolveGlob, resolvePath } from './util.js';
|
||||
import { regQuery } from './winreg.js';
|
||||
import { DreamSeeker } from './dreamseeker.js';
|
||||
|
||||
const logger = createLogger('reloader');
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
/**
|
||||
* @file
|
||||
* @copyright 2020 Aleksej Komarov
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
import { createRequire } from 'module';
|
||||
|
||||
export const require = createRequire(import.meta.url);
|
||||
@@ -4,26 +4,26 @@
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
import glob from 'glob';
|
||||
import { resolve as resolvePath } from 'path';
|
||||
import fs from 'fs';
|
||||
import { promisify } from 'util';
|
||||
import path from 'path';
|
||||
import { require } from './require.js';
|
||||
|
||||
export { resolvePath };
|
||||
const globPkg = require('glob');
|
||||
|
||||
export const resolvePath = path.resolve;
|
||||
|
||||
/**
|
||||
* Combines path.resolve with glob patterns.
|
||||
*/
|
||||
export const resolveGlob = async (...sections) => {
|
||||
const unsafePaths = await promisify(glob)(
|
||||
resolvePath(...sections), {
|
||||
strict: false,
|
||||
silent: true,
|
||||
});
|
||||
export const resolveGlob = (...sections) => {
|
||||
const unsafePaths = globPkg.sync(path.resolve(...sections), {
|
||||
strict: false,
|
||||
silent: true,
|
||||
});
|
||||
const safePaths = [];
|
||||
for (let path of unsafePaths) {
|
||||
try {
|
||||
await promisify(fs.stat)(path);
|
||||
fs.statSync(path);
|
||||
safePaths.push(path);
|
||||
}
|
||||
catch {}
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
import { createLogger } from 'common/logging.js';
|
||||
import fs from 'fs';
|
||||
import { createRequire } from 'module';
|
||||
import { dirname } from 'path';
|
||||
import { loadSourceMaps, setupLink } from './link/server.js';
|
||||
import { createLogger } from './logging.js';
|
||||
import { reloadByondCache } from './reloader.js';
|
||||
import { resolveGlob } from './util.js';
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
*/
|
||||
|
||||
import { exec } from 'child_process';
|
||||
import { createLogger } from 'common/logging.js';
|
||||
import { promisify } from 'util';
|
||||
import { createLogger } from './logging.js';
|
||||
|
||||
const logger = createLogger('winreg');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user