[tgui] dependencies + css loading switch (#90840)

<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request
a) updates some dependencies in the project, hopefully fixing this
server lockup bug
b) if a. does not fix it, this uses two separate build methods for tgui.
it's kind of gross, I really dislike that this needs to exist, but
experimental css breaks tgui-dev and css-extract breaks tgui live.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

## Why It's Good For The Game
So the server doesn't lock up sometimes
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and its effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
This commit is contained in:
Jeremiah
2025-04-29 18:29:02 -06:00
committed by Shadow-Quill
parent c8159195b7
commit 28fd71b7ec
26 changed files with 1402 additions and 1110 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+14 -2
View File
@@ -1,20 +1,32 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire} = require(`module`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
const relPnpApiPath = "../../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);
const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require eslint/bin/eslint.js
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}
const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
// Defer to the real eslint/bin/eslint.js your application uses
module.exports = absRequire(`eslint/bin/eslint.js`);
module.exports = wrapWithUserWrapper(absRequire(`eslint/bin/eslint.js`));
+14 -2
View File
@@ -1,20 +1,32 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire} = require(`module`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
const relPnpApiPath = "../../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);
const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require eslint
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}
const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
// Defer to the real eslint your application uses
module.exports = absRequire(`eslint`);
module.exports = wrapWithUserWrapper(absRequire(`eslint`));
+14 -2
View File
@@ -1,20 +1,32 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire} = require(`module`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
const relPnpApiPath = "../../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);
const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require eslint/use-at-your-own-risk
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}
const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
// Defer to the real eslint/use-at-your-own-risk your application uses
module.exports = absRequire(`eslint/use-at-your-own-risk`);
module.exports = wrapWithUserWrapper(absRequire(`eslint/use-at-your-own-risk`));
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "eslint",
"version": "8.57.0-sdk",
"version": "8.57.1-sdk",
"main": "./lib/api.js",
"type": "commonjs",
"bin": {
+14 -2
View File
@@ -1,20 +1,32 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire} = require(`module`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
const relPnpApiPath = "../../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);
const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require prettier/bin/prettier.cjs
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}
const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
// Defer to the real prettier/bin/prettier.cjs your application uses
module.exports = absRequire(`prettier/bin/prettier.cjs`);
module.exports = wrapWithUserWrapper(absRequire(`prettier/bin/prettier.cjs`));
+14 -2
View File
@@ -1,20 +1,32 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire} = require(`module`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
const relPnpApiPath = "../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);
const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require prettier
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}
const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
// Defer to the real prettier your application uses
module.exports = absRequire(`prettier`);
module.exports = wrapWithUserWrapper(absRequire(`prettier`));
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "prettier",
"version": "3.2.5-sdk",
"version": "3.5.3-sdk",
"main": "./index.cjs",
"type": "commonjs",
"bin": "./bin/prettier.cjs"
+14 -2
View File
@@ -1,20 +1,32 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire} = require(`module`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
const relPnpApiPath = "../../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);
const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require typescript/bin/tsc
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}
const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
// Defer to the real typescript/bin/tsc your application uses
module.exports = absRequire(`typescript/bin/tsc`);
module.exports = wrapWithUserWrapper(absRequire(`typescript/bin/tsc`));
+14 -2
View File
@@ -1,20 +1,32 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire} = require(`module`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
const relPnpApiPath = "../../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);
const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require typescript/bin/tsserver
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}
const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
// Defer to the real typescript/bin/tsserver your application uses
module.exports = absRequire(`typescript/bin/tsserver`);
module.exports = wrapWithUserWrapper(absRequire(`typescript/bin/tsserver`));
+14 -2
View File
@@ -1,20 +1,32 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire} = require(`module`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
const relPnpApiPath = "../../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);
const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require typescript/lib/tsc.js
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}
const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
// Defer to the real typescript/lib/tsc.js your application uses
module.exports = absRequire(`typescript/lib/tsc.js`);
module.exports = wrapWithUserWrapper(absRequire(`typescript/lib/tsc.js`));
+30 -7
View File
@@ -1,15 +1,38 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire} = require(`module`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
const relPnpApiPath = "../../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);
const moduleWrapper = tsserver => {
const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require typescript/lib/tsserver.js
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}
const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
const moduleWrapper = exports => {
return wrapWithUserWrapper(moduleWrapperFn(exports));
};
const moduleWrapperFn = tsserver => {
if (!process.versions.pnp) {
return tsserver;
}
@@ -214,11 +237,11 @@ const moduleWrapper = tsserver => {
return tsserver;
};
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require typescript/lib/tsserver.js
require(absPnpApiPath).setup();
}
const [major, minor] = absRequire(`typescript/package.json`).version.split(`.`, 2).map(value => parseInt(value, 10));
// In TypeScript@>=5.5 the tsserver uses the public TypeScript API so that needs to be patched as well.
// Ref https://github.com/microsoft/TypeScript/pull/55326
if (major > 5 || (major === 5 && minor >= 5)) {
moduleWrapper(absRequire(`typescript`));
}
// Defer to the real typescript/lib/tsserver.js your application uses
+30 -7
View File
@@ -1,15 +1,38 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire} = require(`module`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
const relPnpApiPath = "../../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);
const moduleWrapper = tsserver => {
const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require typescript/lib/tsserverlibrary.js
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}
const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
const moduleWrapper = exports => {
return wrapWithUserWrapper(moduleWrapperFn(exports));
};
const moduleWrapperFn = tsserver => {
if (!process.versions.pnp) {
return tsserver;
}
@@ -214,11 +237,11 @@ const moduleWrapper = tsserver => {
return tsserver;
};
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require typescript/lib/tsserverlibrary.js
require(absPnpApiPath).setup();
}
const [major, minor] = absRequire(`typescript/package.json`).version.split(`.`, 2).map(value => parseInt(value, 10));
// In TypeScript@>=5.5 the tsserver uses the public TypeScript API so that needs to be patched as well.
// Ref https://github.com/microsoft/TypeScript/pull/55326
if (major > 5 || (major === 5 && minor >= 5)) {
moduleWrapper(absRequire(`typescript`));
}
// Defer to the real typescript/lib/tsserverlibrary.js your application uses
+14 -2
View File
@@ -1,20 +1,32 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire} = require(`module`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
const relPnpApiPath = "../../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);
const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require typescript
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}
const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
// Defer to the real typescript your application uses
module.exports = absRequire(`typescript`);
module.exports = wrapWithUserWrapper(absRequire(`typescript`));
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "typescript",
"version": "5.4.3-sdk",
"version": "5.8.3-sdk",
"main": "./lib/typescript.js",
"type": "commonjs",
"bin": {
+3 -3
View File
@@ -11,11 +11,11 @@ logFilters:
level: discard
- code: YN0002
level: discard
pattern: 'css-loader@*'
pattern: css-loader@*
- code: YN0002
level: discard
pattern: 'url-loader@*'
pattern: url-loader@*
preferInteractive: true
yarnPath: .yarn/releases/yarn-4.8.1.cjs
yarnPath: .yarn/releases/yarn-4.9.1.cjs
+5 -5
View File
@@ -2,7 +2,7 @@
"private": true,
"name": "tgui-workspace",
"version": "6.0.0",
"packageManager": "yarn@4.8.1",
"packageManager": "yarn@4.9.1",
"workspaces": [
"packages/*"
],
@@ -22,8 +22,8 @@
"tgui:eslint-fix": "eslint --fix packages --ext .js,.cjs,.ts,.jsx,.tsx"
},
"dependencies": {
"@rspack/cli": "^1.3.5",
"@rspack/core": "^1.3.5",
"@rspack/cli": "^1.3.7",
"@rspack/core": "^1.3.7",
"@typescript-eslint/parser": "^8.13.0",
"@typescript-eslint/utils": "^8.13.0",
"css-loader": "^7.1.2",
@@ -34,11 +34,11 @@
"eslint-plugin-sonarjs": "^0.25.0",
"eslint-plugin-unused-imports": "^3.1.0",
"jsdom": "^26.0.0",
"prettier": "^3.2.5",
"prettier": "^3.5.3",
"sass": "^1.80.6",
"sass-embedded": "^1.85.1",
"sass-loader": "^16.0.3",
"typescript": "^5.6.3",
"typescript": "^5.8.3",
"url-loader": "^4.1.1"
},
"devDependencies": {
+1 -1
View File
@@ -3,7 +3,7 @@
"name": "tgui-bench",
"version": "6.0.0",
"dependencies": {
"@fastify/static": "^8.0.2",
"@fastify/static": "^8.1.1",
"common": "workspace:*",
"fastify": "^5.1.0",
"lodash": "^4.17.21",
-2
View File
@@ -13,9 +13,7 @@ const reloadOnce = process.argv.includes('--reload');
async function setupServer() {
const compiler = await createCompiler({
mode: 'development',
hot: !noHot,
devServer: true,
useTmpFolder: !noTmp,
});
+1 -1
View File
@@ -4,7 +4,7 @@
"version": "6.0.0",
"type": "module",
"dependencies": {
"@rspack/core": "^1.3.5",
"@rspack/core": "^1.3.7",
"axios": "^1.8.4",
"source-map": "^0.7.4",
"stacktrace-parser": "^0.1.11",
+9 -2
View File
@@ -32,14 +32,21 @@ class RspackCompiler {
const requireFromRoot = createRequire(import.meta.dirname + '/../../..');
/** @type {typeof import('@rspack/core')} */
const rspack = await requireFromRoot('@rspack/core');
const createConfig = await requireFromRoot('./rspack.config.cjs');
const createDevConfig = await requireFromRoot('./rspack.config-dev.cjs');
const config = createConfig({}, options);
const devConfig = createDevConfig({}, options);
const mergedConfig = { ...config, ...devConfig };
// Inject the HMR plugin into the config if we're using it
if (options.hot) {
config.plugins.push(new rspack.HotModuleReplacementPlugin());
mergedConfig.plugins.push(new rspack.HotModuleReplacementPlugin());
}
this.rspack = rspack;
this.config = config;
this.config = mergedConfig;
this.bundleDir = config.output.path;
}
+1 -1
View File
@@ -7,7 +7,7 @@
"dateformat": "^5.0.3",
"dompurify": "^3.2.5",
"file-extension-icon-js": "^1.1.6",
"highlight.js": "^11.10.0",
"highlight.js": "^11.11.1",
"jest": "^29.7.0",
"js-yaml": "^4.1.0",
"marked": "^4.3.0",
+137
View File
@@ -0,0 +1,137 @@
const { defineConfig } = require('@rspack/cli');
const { rspack } = require('@rspack/core');
const createStats = (verbose) => ({
assets: verbose,
builtAt: verbose,
cached: false,
children: false,
chunks: false,
colors: true,
entrypoints: true,
hash: false,
modules: false,
performance: false,
timings: verbose,
version: verbose,
});
/**
* 04/25/2025
* There is a bug in rspack, possibly only ours, with the experimental css
* feature that throws an error in tgui-dev. This prevents hot reloading from
* working properly and there doesn't seem to be any way to fix it.
*
* This config exists to switch to the old css loader during development.
*
* `TypeError: Cannot read properties of null (reading 'removeChild')`
*/
module.exports = (env = {}, argv) => {
/** @type {import('@rspack/core').Configuration} */
const config = defineConfig({
cache: false,
experiments: undefined,
mode: 'development',
module: {
rules: [
{
test: /\.([tj]s(x)?|cjs)$/,
use: [
{
loader: 'builtin:swc-loader',
options: {
isModule: 'unknown',
jsc: {
parser: {
syntax: 'typescript',
tsx: true,
},
transform: {
react: {
runtime: 'automatic',
},
},
},
},
},
],
type: 'javascript/auto',
},
{
test: /\.(s)?css$/,
use: [
{
loader: rspack.CssExtractRspackPlugin.loader,
},
{
loader: require.resolve('css-loader'),
},
{
loader: require.resolve('sass-loader'),
options: {
api: 'modern-compiler',
implementation: 'sass-embedded',
},
},
],
type: 'javascript/auto',
},
{
test: /\.(png|jpg)$/,
use: [
{
loader: require.resolve('url-loader'),
options: {
esModule: false,
outputPath: 'assets/',
publicPath: '/assets/',
},
},
],
},
{
test: /\.svg$/,
oneOf: [
{
issuer: /\.(s)?css$/,
type: 'asset/inline',
},
{
use: [
{
loader: require.resolve('url-loader'),
options: {
esModule: false,
outputPath: 'assets/',
publicPath: '/assets/',
},
},
],
},
],
},
],
},
plugins: [
new rspack.EnvironmentPlugin({
NODE_ENV: 'development',
WEBPACK_HMR_ENABLED: env.WEBPACK_HMR_ENABLED || argv.hot || false,
DEV_SERVER_IP: env.DEV_SERVER_IP || null,
}),
new rspack.CssExtractRspackPlugin({
filename: '[name].bundle.css',
chunkFilename: '[name].bundle.css',
}),
],
});
config.devtool = 'cheap-module-source-map';
config.devServer = {
progress: false,
quiet: false,
noInfo: false,
clientLogLevel: 'silent',
stats: createStats(false),
};
return config;
};
+2 -12
View File
@@ -38,6 +38,7 @@ module.exports = (env = {}, argv) => {
directory: path.resolve(__dirname, '.yarn/rspack'),
},
},
css: true,
},
mode: mode === 'production' ? 'production' : 'development',
context: path.resolve(__dirname),
@@ -78,7 +79,6 @@ module.exports = (env = {}, argv) => {
{
loader: 'builtin:swc-loader',
options: {
isModule: 'unknown',
jsc: {
parser: {
syntax: 'typescript',
@@ -98,12 +98,6 @@ module.exports = (env = {}, argv) => {
{
test: /\.(s)?css$/,
use: [
{
loader: rspack.CssExtractRspackPlugin.loader,
},
{
loader: require.resolve('css-loader'),
},
{
loader: require.resolve('sass-loader'),
options: {
@@ -112,7 +106,7 @@ module.exports = (env = {}, argv) => {
},
},
],
type: 'javascript/auto',
type: 'css',
},
{
test: /\.(png|jpg)$/,
@@ -165,10 +159,6 @@ module.exports = (env = {}, argv) => {
WEBPACK_HMR_ENABLED: env.WEBPACK_HMR_ENABLED || argv.hot || false,
DEV_SERVER_IP: env.DEV_SERVER_IP || null,
}),
new rspack.CssExtractRspackPlugin({
filename: '[name].bundle.css',
chunkFilename: '[name].bundle.css',
}),
],
});
+106 -113
View File
@@ -2004,7 +2004,7 @@ __metadata:
languageName: node
linkType: hard
"@fastify/static@npm:^8.0.2":
"@fastify/static@npm:^8.1.1":
version: 8.1.1
resolution: "@fastify/static@npm:8.1.1"
dependencies:
@@ -2728,58 +2728,58 @@ __metadata:
languageName: node
linkType: hard
"@module-federation/error-codes@npm:0.11.2":
version: 0.11.2
resolution: "@module-federation/error-codes@npm:0.11.2"
checksum: 10c0/a083de905d8613bf9fcd1a7b4db9cef5e82585842f8324b90c2e817bafcad87a27a52fd6b07608155bb34dba42c4975f181ae0014bed91ee65b789e5c8299798
"@module-federation/error-codes@npm:0.13.0":
version: 0.13.0
resolution: "@module-federation/error-codes@npm:0.13.0"
checksum: 10c0/a8aec3037dbc2b093266a5861d1ac8fb6b766d2d4167cb9bbd31165cbd26c89ee34d39536c6c39ae37198ae51761867e585fc530f63ea66b16841ad281975857
languageName: node
linkType: hard
"@module-federation/runtime-core@npm:0.11.2":
version: 0.11.2
resolution: "@module-federation/runtime-core@npm:0.11.2"
"@module-federation/runtime-core@npm:0.13.0":
version: 0.13.0
resolution: "@module-federation/runtime-core@npm:0.13.0"
dependencies:
"@module-federation/error-codes": "npm:0.11.2"
"@module-federation/sdk": "npm:0.11.2"
checksum: 10c0/4bd0b81b282c659fc4467fd6582ce68232b6eaeef1310c957122da38c989b87f3a3c5b3d5a003443c1143c8242297c5c914cf55e23f620c921ab19e674985212
"@module-federation/error-codes": "npm:0.13.0"
"@module-federation/sdk": "npm:0.13.0"
checksum: 10c0/36aeeb616115213d5be731c81c42f8982a8d0bd1a523b4a46804f2eb6e215f25c071764c85a9435a7680d86ae047149cc52d8bd6def79a48184b6397679dc4ad
languageName: node
linkType: hard
"@module-federation/runtime-tools@npm:0.11.2":
version: 0.11.2
resolution: "@module-federation/runtime-tools@npm:0.11.2"
"@module-federation/runtime-tools@npm:0.13.0":
version: 0.13.0
resolution: "@module-federation/runtime-tools@npm:0.13.0"
dependencies:
"@module-federation/runtime": "npm:0.11.2"
"@module-federation/webpack-bundler-runtime": "npm:0.11.2"
checksum: 10c0/d92c7897960d15fe98f16bcb2d0569647deaec6bec81c9da1d041a90c74815caa7981fb2dd252390ea1239b9a512985efbbab104f9a9c54de22b91adcee58eb5
"@module-federation/runtime": "npm:0.13.0"
"@module-federation/webpack-bundler-runtime": "npm:0.13.0"
checksum: 10c0/bcd17af41e70be71fa481dc2432e55e6ed92b1c55431ea73f40bb31027e603777de1e85e6eea1af11606834201c78f43b31c18f9045c2b5cd6bb29eb4d23b696
languageName: node
linkType: hard
"@module-federation/runtime@npm:0.11.2":
version: 0.11.2
resolution: "@module-federation/runtime@npm:0.11.2"
"@module-federation/runtime@npm:0.13.0":
version: 0.13.0
resolution: "@module-federation/runtime@npm:0.13.0"
dependencies:
"@module-federation/error-codes": "npm:0.11.2"
"@module-federation/runtime-core": "npm:0.11.2"
"@module-federation/sdk": "npm:0.11.2"
checksum: 10c0/ce9bf84ad7dbaca10351195948b193a0befc4f1d247939a02ff5e64d90dfed7351c157c1ab214f1c7974054e4552a734d96801ce082a0a0389d6fd6f1a4c8135
"@module-federation/error-codes": "npm:0.13.0"
"@module-federation/runtime-core": "npm:0.13.0"
"@module-federation/sdk": "npm:0.13.0"
checksum: 10c0/d7690ecc498c81638b23c75d512051edb0de4d3a004e0c6915d0fe9497a1f3d204856f15fbf91be3044e0d5752dfdf332d611cc32ae9c84a89815be17e4b3440
languageName: node
linkType: hard
"@module-federation/sdk@npm:0.11.2":
version: 0.11.2
resolution: "@module-federation/sdk@npm:0.11.2"
checksum: 10c0/00b2b2b7f11c154f36987c60f21dd295b5a6b9284541ee8a9e5959487bd5ee7c22ea1809fc8937f1021aaf85dafed8487232a9221f37809bf074d9b38713ba83
"@module-federation/sdk@npm:0.13.0":
version: 0.13.0
resolution: "@module-federation/sdk@npm:0.13.0"
checksum: 10c0/45c05b28caf8fdbd052d43e63b5df85f71fea83dfa7b6631cdbad6dc60a53de2cc145a8ecc9770db9701f115f2d1de9bce58fe23f41eb6c3da5f81c23dc1eefb
languageName: node
linkType: hard
"@module-federation/webpack-bundler-runtime@npm:0.11.2":
version: 0.11.2
resolution: "@module-federation/webpack-bundler-runtime@npm:0.11.2"
"@module-federation/webpack-bundler-runtime@npm:0.13.0":
version: 0.13.0
resolution: "@module-federation/webpack-bundler-runtime@npm:0.13.0"
dependencies:
"@module-federation/runtime": "npm:0.11.2"
"@module-federation/sdk": "npm:0.11.2"
checksum: 10c0/8ed01aa7b97ee715c7786c9cf0517e1d4be760ad63e76917355c551960c4f7989a1819e2304422a6e8e8591d7939cdd0bb38266b254d6b720cf576fa39581610
"@module-federation/runtime": "npm:0.13.0"
"@module-federation/sdk": "npm:0.13.0"
checksum: 10c0/db08e586930f307c5258bc4233f4dfe95981d9518dcd546d57adc0bb97ada991e1f1696e6a3dfa372db37df08dfe6d1c603aa6d13615b6a46867f2e7638243e7
languageName: node
linkType: hard
@@ -3246,82 +3246,82 @@ __metadata:
languageName: node
linkType: hard
"@rspack/binding-darwin-arm64@npm:1.3.5":
version: 1.3.5
resolution: "@rspack/binding-darwin-arm64@npm:1.3.5"
"@rspack/binding-darwin-arm64@npm:1.3.7":
version: 1.3.7
resolution: "@rspack/binding-darwin-arm64@npm:1.3.7"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@rspack/binding-darwin-x64@npm:1.3.5":
version: 1.3.5
resolution: "@rspack/binding-darwin-x64@npm:1.3.5"
"@rspack/binding-darwin-x64@npm:1.3.7":
version: 1.3.7
resolution: "@rspack/binding-darwin-x64@npm:1.3.7"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@rspack/binding-linux-arm64-gnu@npm:1.3.5":
version: 1.3.5
resolution: "@rspack/binding-linux-arm64-gnu@npm:1.3.5"
"@rspack/binding-linux-arm64-gnu@npm:1.3.7":
version: 1.3.7
resolution: "@rspack/binding-linux-arm64-gnu@npm:1.3.7"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"@rspack/binding-linux-arm64-musl@npm:1.3.5":
version: 1.3.5
resolution: "@rspack/binding-linux-arm64-musl@npm:1.3.5"
"@rspack/binding-linux-arm64-musl@npm:1.3.7":
version: 1.3.7
resolution: "@rspack/binding-linux-arm64-musl@npm:1.3.7"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
"@rspack/binding-linux-x64-gnu@npm:1.3.5":
version: 1.3.5
resolution: "@rspack/binding-linux-x64-gnu@npm:1.3.5"
"@rspack/binding-linux-x64-gnu@npm:1.3.7":
version: 1.3.7
resolution: "@rspack/binding-linux-x64-gnu@npm:1.3.7"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"@rspack/binding-linux-x64-musl@npm:1.3.5":
version: 1.3.5
resolution: "@rspack/binding-linux-x64-musl@npm:1.3.5"
"@rspack/binding-linux-x64-musl@npm:1.3.7":
version: 1.3.7
resolution: "@rspack/binding-linux-x64-musl@npm:1.3.7"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"@rspack/binding-win32-arm64-msvc@npm:1.3.5":
version: 1.3.5
resolution: "@rspack/binding-win32-arm64-msvc@npm:1.3.5"
"@rspack/binding-win32-arm64-msvc@npm:1.3.7":
version: 1.3.7
resolution: "@rspack/binding-win32-arm64-msvc@npm:1.3.7"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"@rspack/binding-win32-ia32-msvc@npm:1.3.5":
version: 1.3.5
resolution: "@rspack/binding-win32-ia32-msvc@npm:1.3.5"
"@rspack/binding-win32-ia32-msvc@npm:1.3.7":
version: 1.3.7
resolution: "@rspack/binding-win32-ia32-msvc@npm:1.3.7"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
"@rspack/binding-win32-x64-msvc@npm:1.3.5":
version: 1.3.5
resolution: "@rspack/binding-win32-x64-msvc@npm:1.3.5"
"@rspack/binding-win32-x64-msvc@npm:1.3.7":
version: 1.3.7
resolution: "@rspack/binding-win32-x64-msvc@npm:1.3.7"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@rspack/binding@npm:1.3.5":
version: 1.3.5
resolution: "@rspack/binding@npm:1.3.5"
"@rspack/binding@npm:1.3.7":
version: 1.3.7
resolution: "@rspack/binding@npm:1.3.7"
dependencies:
"@rspack/binding-darwin-arm64": "npm:1.3.5"
"@rspack/binding-darwin-x64": "npm:1.3.5"
"@rspack/binding-linux-arm64-gnu": "npm:1.3.5"
"@rspack/binding-linux-arm64-musl": "npm:1.3.5"
"@rspack/binding-linux-x64-gnu": "npm:1.3.5"
"@rspack/binding-linux-x64-musl": "npm:1.3.5"
"@rspack/binding-win32-arm64-msvc": "npm:1.3.5"
"@rspack/binding-win32-ia32-msvc": "npm:1.3.5"
"@rspack/binding-win32-x64-msvc": "npm:1.3.5"
"@rspack/binding-darwin-arm64": "npm:1.3.7"
"@rspack/binding-darwin-x64": "npm:1.3.7"
"@rspack/binding-linux-arm64-gnu": "npm:1.3.7"
"@rspack/binding-linux-arm64-musl": "npm:1.3.7"
"@rspack/binding-linux-x64-gnu": "npm:1.3.7"
"@rspack/binding-linux-x64-musl": "npm:1.3.7"
"@rspack/binding-win32-arm64-msvc": "npm:1.3.7"
"@rspack/binding-win32-ia32-msvc": "npm:1.3.7"
"@rspack/binding-win32-x64-msvc": "npm:1.3.7"
dependenciesMeta:
"@rspack/binding-darwin-arm64":
optional: true
@@ -3341,13 +3341,13 @@ __metadata:
optional: true
"@rspack/binding-win32-x64-msvc":
optional: true
checksum: 10c0/7657e6f9ed575d202316a289a836c8d4fb407f3fec154f77321401f51fc7c030308952a5dff92d4cda6b2feab37e2ac310d996a3d77473b6f13582f7f50137e4
checksum: 10c0/25815036e126de8c8101cf4de83287906bfeb47d8e8332687ed770ab36450cda93b52293be840f8fd7fca50bde29dbc4dd50917b1ef156708183183f79966edc
languageName: node
linkType: hard
"@rspack/cli@npm:^1.3.5":
version: 1.3.5
resolution: "@rspack/cli@npm:1.3.5"
"@rspack/cli@npm:^1.3.7":
version: 1.3.7
resolution: "@rspack/cli@npm:1.3.7"
dependencies:
"@discoveryjs/json-ext": "npm:^0.5.7"
"@rspack/dev-server": "npm:1.1.1"
@@ -3359,33 +3359,26 @@ __metadata:
yargs: "npm:17.7.2"
peerDependencies:
"@rspack/core": ^1.0.0-alpha || ^1.x
"@rspack/tracing": ^1.x
peerDependenciesMeta:
"@rspack/tracing":
optional: true
bin:
rspack: bin/rspack.js
checksum: 10c0/2dc0d161f45badfd67d83e2448e4c01dae85675e1d25883495be435f5bc5726ea26a9c0e1e663a87f6c394cf5a4d4ba949a430aa7141525d4e62f9e0f976e6a8
checksum: 10c0/86c2e85f16d6797eabcf062642c1acc5eff437f7f575b978250e2aefb19ce5285c48f28b8f0aee7246fd881a2f88bc677f7eba5197a7b307f51f16ca7422d41f
languageName: node
linkType: hard
"@rspack/core@npm:^1.3.5":
version: 1.3.5
resolution: "@rspack/core@npm:1.3.5"
"@rspack/core@npm:^1.3.7":
version: 1.3.7
resolution: "@rspack/core@npm:1.3.7"
dependencies:
"@module-federation/runtime-tools": "npm:0.11.2"
"@rspack/binding": "npm:1.3.5"
"@module-federation/runtime-tools": "npm:0.13.0"
"@rspack/binding": "npm:1.3.7"
"@rspack/lite-tapable": "npm:1.0.1"
caniuse-lite: "npm:^1.0.30001707"
caniuse-lite: "npm:^1.0.30001715"
peerDependencies:
"@rspack/tracing": ^1.x
"@swc/helpers": ">=0.5.1"
peerDependenciesMeta:
"@rspack/tracing":
optional: true
"@swc/helpers":
optional: true
checksum: 10c0/18f1e51f80b8d9579c31712dd51793b1ae1f286ef7aab5b4c5115c52abeb33de21447731ef149a5263dd170b2aa066745e562364714af3370052411ba0d786f2
checksum: 10c0/ef68a54638dc7349bec52b48fbdc4ac9b8d2cfd1be20dfacf2cfdd2760c6a6aba80aa790207782a22c7960d225294d5b16b6e652fe7ad8495d16e51cd507ec5f
languageName: node
linkType: hard
@@ -6420,10 +6413,10 @@ __metadata:
languageName: node
linkType: hard
"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30000981, caniuse-lite@npm:^1.0.30001109, caniuse-lite@npm:^1.0.30001125, caniuse-lite@npm:^1.0.30001688, caniuse-lite@npm:^1.0.30001707":
version: 1.0.30001712
resolution: "caniuse-lite@npm:1.0.30001712"
checksum: 10c0/b3df8bdcc3335969380c2e47acb36c89bfc7f8fb4ef7ee2a5380e30ba46aa69e9d411654bc29894a06c201a1d60d490ab9b92787f3b66d7a7a38d71360e68215
"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30000981, caniuse-lite@npm:^1.0.30001109, caniuse-lite@npm:^1.0.30001125, caniuse-lite@npm:^1.0.30001688, caniuse-lite@npm:^1.0.30001715":
version: 1.0.30001715
resolution: "caniuse-lite@npm:1.0.30001715"
checksum: 10c0/0109a7da797ffbe1aa197baa5242b205011098eecec1087ef3d0c58ceea19be325ab6679b2751a78660adc3051a9f77e99d5789938fd1eb1235e6fdf6a1dbf8e
languageName: node
linkType: hard
@@ -10786,7 +10779,7 @@ __metadata:
languageName: node
linkType: hard
"highlight.js@npm:^11.10.0":
"highlight.js@npm:^11.11.1":
version: 11.11.1
resolution: "highlight.js@npm:11.11.1"
checksum: 10c0/40f53ac19dac079891fcefd5bd8a21cf2e8931fd47da5bd1dca73b7e4375c1defed0636fc39120c639b9c44119b7d110f7f0c15aa899557a5a1c8910f3c0144c
@@ -16494,7 +16487,7 @@ __metadata:
languageName: node
linkType: hard
"prettier@npm:^3.2.5":
"prettier@npm:^3.5.3":
version: 3.5.3
resolution: "prettier@npm:3.5.3"
bin:
@@ -19780,7 +19773,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "tgui-bench@workspace:packages/tgui-bench"
dependencies:
"@fastify/static": "npm:^8.0.2"
"@fastify/static": "npm:^8.1.1"
"@types/react": "npm:^19.1.0"
"@types/react-dom": "npm:^19.1.2"
common: "workspace:*"
@@ -19810,7 +19803,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "tgui-dev-server@workspace:packages/tgui-dev-server"
dependencies:
"@rspack/core": "npm:^1.3.5"
"@rspack/core": "npm:^1.3.7"
"@types/ws": "npm:^8.18.1"
axios: "npm:^1.8.4"
source-map: "npm:^0.7.4"
@@ -19863,8 +19856,8 @@ __metadata:
version: 0.0.0-use.local
resolution: "tgui-workspace@workspace:."
dependencies:
"@rspack/cli": "npm:^1.3.5"
"@rspack/core": "npm:^1.3.5"
"@rspack/cli": "npm:^1.3.7"
"@rspack/core": "npm:^1.3.7"
"@types/node": "npm:^22.14.0"
"@types/webpack-env": "npm:^1.18.8"
"@types/wicg-file-system-access": "npm:^2023.10.6"
@@ -19878,11 +19871,11 @@ __metadata:
eslint-plugin-sonarjs: "npm:^0.25.0"
eslint-plugin-unused-imports: "npm:^3.1.0"
jsdom: "npm:^26.0.0"
prettier: "npm:^3.2.5"
prettier: "npm:^3.5.3"
sass: "npm:^1.80.6"
sass-embedded: "npm:^1.85.1"
sass-loader: "npm:^16.0.3"
typescript: "npm:^5.6.3"
typescript: "npm:^5.8.3"
url-loader: "npm:^4.1.1"
vitest: "npm:^3.1.1"
languageName: unknown
@@ -19899,7 +19892,7 @@ __metadata:
dateformat: "npm:^5.0.3"
dompurify: "npm:^3.2.5"
file-extension-icon-js: "npm:^1.1.6"
highlight.js: "npm:^11.10.0"
highlight.js: "npm:^11.11.1"
jest: "npm:^29.7.0"
js-yaml: "npm:^4.1.0"
marked: "npm:^4.3.0"
@@ -20426,23 +20419,23 @@ __metadata:
languageName: node
linkType: hard
"typescript@npm:^5.6.3":
version: 5.8.2
resolution: "typescript@npm:5.8.2"
"typescript@npm:^5.8.3":
version: 5.8.3
resolution: "typescript@npm:5.8.3"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: 10c0/5c4f6fbf1c6389b6928fe7b8fcd5dc73bb2d58cd4e3883f1d774ed5bd83b151cbac6b7ecf11723de56d4676daeba8713894b1e9af56174f2f9780ae7848ec3c6
checksum: 10c0/5f8bb01196e542e64d44db3d16ee0e4063ce4f3e3966df6005f2588e86d91c03e1fb131c2581baf0fb65ee79669eea6e161cd448178986587e9f6844446dbb48
languageName: node
linkType: hard
"typescript@patch:typescript@npm%3A^5.6.3#optional!builtin<compat/typescript>":
version: 5.8.2
resolution: "typescript@patch:typescript@npm%3A5.8.2#optional!builtin<compat/typescript>::version=5.8.2&hash=5786d5"
"typescript@patch:typescript@npm%3A^5.8.3#optional!builtin<compat/typescript>":
version: 5.8.3
resolution: "typescript@patch:typescript@npm%3A5.8.3#optional!builtin<compat/typescript>::version=5.8.3&hash=5786d5"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: 10c0/5448a08e595cc558ab321e49d4cac64fb43d1fa106584f6ff9a8d8e592111b373a995a1d5c7f3046211c8a37201eb6d0f1566f15cdb7a62a5e3be01d087848e2
checksum: 10c0/39117e346ff8ebd87ae1510b3a77d5d92dae5a89bde588c747d25da5c146603a99c8ee588c7ef80faaf123d89ed46f6dbd918d534d641083177d5fac38b8a1cb
languageName: node
linkType: hard