hytopia 0.10.0-prerelease-7 → 0.10.0-prerelease-9
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/bin/scripts.js +16 -6
- package/package.json +1 -1
- package/server.js +1 -1
package/bin/scripts.js
CHANGED
@@ -87,14 +87,24 @@ async function build() {
|
|
87
87
|
function start() {
|
88
88
|
(async () => {
|
89
89
|
let child = null;
|
90
|
+
let restartTimer = null;
|
90
91
|
|
91
|
-
const
|
92
|
+
const stopNode = () => {
|
92
93
|
if (child && !child.killed) {
|
93
94
|
try { child.kill(); } catch {}
|
94
95
|
}
|
96
|
+
};
|
97
|
+
|
98
|
+
const startNode = () => {
|
99
|
+
stopNode();
|
95
100
|
child = spawn(process.execPath, ['index.mjs'], { stdio: 'inherit', shell: false });
|
96
101
|
};
|
97
102
|
|
103
|
+
const scheduleRestart = () => {
|
104
|
+
if (restartTimer) clearTimeout(restartTimer);
|
105
|
+
restartTimer = setTimeout(startNode, 100);
|
106
|
+
};
|
107
|
+
|
98
108
|
const ctx = await esbuild.context({
|
99
109
|
entryPoints: ['index.ts'],
|
100
110
|
outfile: './index.mjs',
|
@@ -104,23 +114,23 @@ function start() {
|
|
104
114
|
target: 'node24',
|
105
115
|
sourcemap: 'inline',
|
106
116
|
plugins: [{
|
107
|
-
name: '
|
117
|
+
name: 'restart-on-end',
|
108
118
|
setup(build) {
|
109
119
|
build.onEnd((result) => {
|
110
|
-
if (result.errors
|
120
|
+
if (!result.errors?.length) scheduleRestart();
|
111
121
|
});
|
112
122
|
}
|
113
123
|
}]
|
114
124
|
});
|
115
125
|
|
116
126
|
await ctx.rebuild();
|
127
|
+
startNode();
|
117
128
|
await ctx.watch();
|
118
129
|
|
119
130
|
const cleanup = async () => {
|
131
|
+
if (restartTimer) clearTimeout(restartTimer);
|
132
|
+
stopNode();
|
120
133
|
try { await ctx.dispose(); } catch {}
|
121
|
-
if (child && !child.killed) {
|
122
|
-
try { child.kill(); } catch {}
|
123
|
-
}
|
124
134
|
process.exit(0);
|
125
135
|
};
|
126
136
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "hytopia",
|
3
|
-
"version": "0.10.0-prerelease-
|
3
|
+
"version": "0.10.0-prerelease-9",
|
4
4
|
"description": "The HYTOPIA SDK makes it easy for developers to create massively multiplayer games using JavaScript or TypeScript.",
|
5
5
|
"type": "module",
|
6
6
|
"main": "./server.js",
|
package/server.js
CHANGED
@@ -442,7 +442,7 @@ qYGMwU/HBVHkLAn5XvT2a9xM0mzZ558d+ahbw8qAgRxg7BZ+2PW/bf7F2WRBUk1f
|
|
442
442
|
xauhAoGBALEspoxQozwohGQnP7EMF0/0JoKNpdNv0b0qCVvNiMo0+N297lI2mFQp
|
443
443
|
6xYlW/1l9afLokklF/J2IsyBrTCZoY7SaEk/lMMrQSyra+y0z71ogZ8A4ny9fxsj
|
444
444
|
0dDYJZGllL+3E/MQfd7k+KnOM/+A+cPoAnci76+L3vdkUb2P8SJk
|
445
|
-
-----END RSA PRIVATE KEY-----`;var IE=process.env.PORT??8080,fE="0.10.0-prerelease-
|
445
|
+
-----END RSA PRIVATE KEY-----`;var IE=process.env.PORT??8080,fE="0.10.0-prerelease-9",_E;((Y)=>{Y.READY="WEBSERVER.READY";Y.STOPPED="WEBSERVER.STOPPED";Y.ERROR="WEBSERVER.ERROR";Y.UPGRADE="WEBSERVER.UPGRADE"})(_E||={});class D3 extends L0{static instance=new D3;_webserver=k2.default();_internalHttpServer;constructor(){super();this._webserver.use((Z,J,X)=>{J.header("Access-Control-Allow-Origin","*"),X()}),this._webserver.get("/",(Z,J)=>{J.json({status:"OK",version:fE,runtime:"node"})}),this._webserver.use(k2.default.static("assets"));try{this._webserver.use(k2.default.static(tn1.dirname(p.resolve("/Users/arkdev/Desktop/HYTOPIA/hytopia/assets/release/index.js"))))}catch{}}start(){if(!this._internalHttpServer)this._internalHttpServer=process.env.NODE_ENV==="production"?on1.createServer(this._webserver):rn1.createServer({key:T2.existsSync("assets/certs/localhost.key")?T2.readFileSync("assets/certs/localhost.key"):cQ0,cert:T2.existsSync("assets/certs/localhost.crt")?T2.readFileSync("assets/certs/localhost.crt"):jQ0},this._webserver),this._internalHttpServer.on("upgrade",this._onUpgrade),this._internalHttpServer.on("error",this._onError),this._internalHttpServer.on("close",this._onStopped);else y.warning("WebServer.start(): server already started!");this._internalHttpServer.listen(IE,this._onStarted),console.info(`WebServer.start(): Server running on port ${IE}.`)}stop(){if(this._internalHttpServer)return new Promise((Z,J)=>{this._internalHttpServer.close((X)=>{if(X)J(X);else Z(!0)})});else return y.warning("WebServer.stop(): server not started."),Promise.resolve(!1)}_onStarted=()=>{this.emitWithGlobal("WEBSERVER.READY",{})};_onUpgrade=async(Z,J,X)=>{let $=en1.parse(Z.url??"",!0).query,Y=$.connectionId?.toString(),Q=$.sessionToken?.toString()??"";if(Y&&C7.instance.isValidConnectionId(Y))Z.connectionId=Y;else{let K=await x7.instance.getPlayerSession(Q);if(K?.error){let W=`${K.error.code}: ${K.error.message}`;J.write(`HTTP/1.1 401 Unauthorized\r
|
446
446
|
Content-Type: text/plain\r
|
447
447
|
Content-Length: ${W.length}\r
|
448
448
|
Connection: close\r
|