@arkstack/driver-express 0.14.2 → 0.14.14
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/app.d.ts +4 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.js +28 -3
- package/package.json +10 -9
package/dist/app.d.ts
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ interface ExpressDriverOptions {
|
|
|
27
27
|
*/
|
|
28
28
|
declare class ExpressDriver extends ArkstackKitDriver<Express, Handler> {
|
|
29
29
|
readonly name = "express";
|
|
30
|
+
private tunnel_url?;
|
|
30
31
|
private readonly options;
|
|
31
32
|
/**
|
|
32
33
|
* Creates an instance of ExpressDriver.
|
|
@@ -67,6 +68,12 @@ declare class ExpressDriver extends ArkstackKitDriver<Express, Handler> {
|
|
|
67
68
|
* @param app
|
|
68
69
|
*/
|
|
69
70
|
registerErrorHandler(app: Express): void;
|
|
71
|
+
/**
|
|
72
|
+
* If trafic has been proxied via ngrok, this will return the tunnel URL.
|
|
73
|
+
*
|
|
74
|
+
* @returns
|
|
75
|
+
*/
|
|
76
|
+
geTunnelUrl(): string | undefined;
|
|
70
77
|
/**
|
|
71
78
|
* Starts the Express server on the specified port.
|
|
72
79
|
*
|
|
@@ -78,7 +85,7 @@ declare class ExpressDriver extends ArkstackKitDriver<Express, Handler> {
|
|
|
78
85
|
* @param app
|
|
79
86
|
* @param port
|
|
80
87
|
*/
|
|
81
|
-
start(app: Express, port: number): void
|
|
88
|
+
start(app: Express, port: number): Promise<void>;
|
|
82
89
|
}
|
|
83
90
|
//#endregion
|
|
84
91
|
export { ExpressDriver, ExpressDriverOptions, Router, defaultErrorHandler };
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import express from "express";
|
|
|
2
2
|
import { Arkstack, ArkstackKitDriver } from "@arkstack/contract";
|
|
3
3
|
import { ErrorHandler, Logger, RequestException, env, renderError } from "@arkstack/common";
|
|
4
4
|
import { resolveMiddleware } from "@arkstack/http";
|
|
5
|
+
import ngrok from "@ngrok/ngrok";
|
|
5
6
|
import { Router as Router$2 } from "clear-router/express";
|
|
6
7
|
import { clearRouterExpressPlugin } from "@resora/plugin-clear-router";
|
|
7
8
|
import { join } from "node:path";
|
|
@@ -93,6 +94,7 @@ var Router = class extends Router$2 {
|
|
|
93
94
|
*/
|
|
94
95
|
var ExpressDriver = class extends ArkstackKitDriver {
|
|
95
96
|
name = "express";
|
|
97
|
+
tunnel_url;
|
|
96
98
|
options;
|
|
97
99
|
/**
|
|
98
100
|
* Creates an instance of ExpressDriver.
|
|
@@ -170,6 +172,14 @@ var ExpressDriver = class extends ArkstackKitDriver {
|
|
|
170
172
|
app.use(this.options.errorHandler ?? defaultErrorHandler);
|
|
171
173
|
}
|
|
172
174
|
/**
|
|
175
|
+
* If trafic has been proxied via ngrok, this will return the tunnel URL.
|
|
176
|
+
*
|
|
177
|
+
* @returns
|
|
178
|
+
*/
|
|
179
|
+
geTunnelUrl() {
|
|
180
|
+
return this.tunnel_url;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
173
183
|
* Starts the Express server on the specified port.
|
|
174
184
|
*
|
|
175
185
|
* The bind host can be overridden with the `APP_HOST` (or `HOST`) env
|
|
@@ -180,10 +190,25 @@ var ExpressDriver = class extends ArkstackKitDriver {
|
|
|
180
190
|
* @param app
|
|
181
191
|
* @param port
|
|
182
192
|
*/
|
|
183
|
-
start(app, port) {
|
|
193
|
+
async start(app, port) {
|
|
184
194
|
const host = env("APP_HOST", env("HOST", "0.0.0.0"));
|
|
185
|
-
|
|
186
|
-
|
|
195
|
+
const tunneled = env("TUNNEL", false);
|
|
196
|
+
app.listen(port, host, async () => {
|
|
197
|
+
let log = [Logger.log([["Server is running on", "white"], [`http://${host}:${port}`, "cyan"]], " ", false)];
|
|
198
|
+
if (tunneled === true) {
|
|
199
|
+
const url = (await ngrok.forward({
|
|
200
|
+
addr: port,
|
|
201
|
+
authtoken: env("NGROK_AUTHTOKEN"),
|
|
202
|
+
domain: env("NGROK_DOMAIN")
|
|
203
|
+
})).url();
|
|
204
|
+
if (url) {
|
|
205
|
+
log = log.concat(Logger.log([["Trafic has been tunnelled to", "white"], [url, "green"]], " ", false));
|
|
206
|
+
process.env.TUNNEL_URL = url;
|
|
207
|
+
this.tunnel_url = url;
|
|
208
|
+
globalThis.tunnelUrl = () => url;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
console.log(log.join("\n"));
|
|
187
212
|
});
|
|
188
213
|
}
|
|
189
214
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arkstack/driver-express",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.14",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Express driver for Arkstack, providing Express-based runtime integration for the framework.",
|
|
6
6
|
"homepage": "https://arkstack.toneflix.net",
|
|
@@ -37,18 +37,19 @@
|
|
|
37
37
|
"./package.json": "./package.json"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"
|
|
40
|
+
"@ngrok/ngrok": "^1.7.0",
|
|
41
|
+
"@resora/plugin-clear-router": "^1.0.63",
|
|
41
42
|
"clear-router": "^2.8.8",
|
|
42
43
|
"express-rate-limit": "^8.4.1",
|
|
43
|
-
"
|
|
44
|
+
"multer": "^2.1.1",
|
|
44
45
|
"resora": "^1.3.26",
|
|
45
|
-
"@arkstack/contract": "^0.14.
|
|
46
|
+
"@arkstack/contract": "^0.14.14"
|
|
46
47
|
},
|
|
47
48
|
"peerDependencies": {
|
|
48
49
|
"express": "^5.2.1",
|
|
49
|
-
"@arkstack/
|
|
50
|
-
"@arkstack/
|
|
51
|
-
"@arkstack/
|
|
50
|
+
"@arkstack/foundry": "^0.14.14",
|
|
51
|
+
"@arkstack/auth": "^0.14.14",
|
|
52
|
+
"@arkstack/common": "^0.14.14"
|
|
52
53
|
},
|
|
53
54
|
"peerDependenciesMeta": {
|
|
54
55
|
"@arkstack/auth": {
|
|
@@ -56,8 +57,8 @@
|
|
|
56
57
|
}
|
|
57
58
|
},
|
|
58
59
|
"devDependencies": {
|
|
59
|
-
"@types/
|
|
60
|
-
"@types/
|
|
60
|
+
"@types/express": "^5.0.6",
|
|
61
|
+
"@types/multer": "^2.1.0"
|
|
61
62
|
},
|
|
62
63
|
"scripts": {
|
|
63
64
|
"build": "tsdown --config-loader unrun",
|