feat: initialize sunrise with 100-player shared rooms

This commit is contained in:
2026-10-30 16:36:35 +09:00
commit 31d6eac4c2
257 changed files with 66063 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
import assert from 'node:assert/strict';
import test from 'node:test';
import { readFileSync } from 'node:fs';
import { gunzipSync } from 'node:zlib';
import { createServer } from 'node:http';
import { once } from 'node:events';
import { buildingCompressionMiddleware } from '../scripts/building-compression.ts';
test('building transfer uses lossless gzip with automatic client decoding and identity fallback', async () => {
const raw = readFileSync(new URL('../public/buildings/gwacheon.baked.bin', import.meta.url));
const gzip = readFileSync(new URL('../public/buildings/gwacheon.baked.bin.gz', import.meta.url));
assert.deepEqual(gunzipSync(gzip), raw);
assert.ok(gzip.length < raw.length * 0.3);
const middleware = buildingCompressionMiddleware(new URL('../public/', import.meta.url));
const server = createServer((req, res) => middleware(req, res, () => {
res.setHeader('Content-Length', raw.length);
res.end(req.method === 'HEAD' ? undefined : raw);
}));
server.listen(0, '127.0.0.1');
await once(server, 'listening');
const url = `http://127.0.0.1:${(server.address() as {port: number}).port}/buildings/gwacheon.baked.bin?v=test`;
try {
const response = await fetch(url, { headers: { 'Accept-Encoding': 'gzip' } });
assert.equal(response.headers.get('content-encoding'), 'gzip');
assert.equal(Number(response.headers.get('content-length')), gzip.length);
assert.match(response.headers.get('vary')!, /Accept-Encoding/i);
assert.deepEqual(Buffer.from(await response.arrayBuffer()), raw);
const head = await fetch(url, { method: 'HEAD', headers: { 'Accept-Encoding': 'gzip' } });
assert.equal(head.headers.get('content-encoding'), 'gzip');
assert.equal((await head.arrayBuffer()).byteLength, 0);
for (const encoding of ['identity', 'gzip;q=0', '*;q=1, gzip;q=0']) {
const plain = await fetch(url, { headers: { 'Accept-Encoding': encoding } });
assert.equal(plain.headers.get('content-encoding'), null);
assert.deepEqual(Buffer.from(await plain.arrayBuffer()), raw);
}
} finally { server.closeAllConnections(); await new Promise<void>(resolve => server.close(() => resolve())); }
});