@arkstack/driver-h3 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 CHANGED
@@ -18,4 +18,8 @@ declare module '@arkstack/foundry' {
18
18
  error: (error: unknown, event: H3Event) => void
19
19
  }
20
20
  }
21
+ }
22
+
23
+ declare global {
24
+ var tunnelUrl: () => string
21
25
  }
@@ -41,6 +41,7 @@ declare class H3EventResponse {
41
41
  */
42
42
  declare class H3Driver extends ArkstackKitDriver<H3, H3Middleware> {
43
43
  readonly name = "h3";
44
+ private tunnel_url?;
44
45
  private readonly options;
45
46
  /**
46
47
  * Creates an instance of H3Driver.
@@ -74,6 +75,12 @@ declare class H3Driver extends ArkstackKitDriver<H3, H3Middleware> {
74
75
  * @param middleware
75
76
  */
76
77
  applyMiddleware(app: H3, middleware: H3Middleware | Middleware$2 | MiddlewareConfig): void;
78
+ /**
79
+ * If trafic has been proxied via ngrok, this will return the tunnel URL.
80
+ *
81
+ * @returns
82
+ */
83
+ geTunnelUrl(): string | undefined;
77
84
  /**
78
85
  * Starts the H3 server on the specified port.
79
86
  *
@@ -85,7 +92,7 @@ declare class H3Driver extends ArkstackKitDriver<H3, H3Middleware> {
85
92
  * @param app
86
93
  * @param port
87
94
  */
88
- start(app: H3, port: number): void;
95
+ start(app: H3, port: number): Promise<void>;
89
96
  }
90
97
  //#endregion
91
98
  export { Router$1 as a, H3Middleware as i, H3DriverOptions as n, defaultErrorHandler as o, H3EventResponse as r, H3Driver as t };
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  /// <reference path="./app.d.ts" />
2
- import { a as Router, i as H3Middleware, n as H3DriverOptions, o as defaultErrorHandler, r as H3EventResponse, t as H3Driver } from "./index-CrRoMPZ1.js";
2
+ import { a as Router, i as H3Middleware, n as H3DriverOptions, o as defaultErrorHandler, r as H3EventResponse, t as H3Driver } from "./index-BZYQAccK.js";
3
3
  export { H3Driver, H3DriverOptions, H3EventResponse, H3Middleware, Router, defaultErrorHandler };
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@ import { t as staticAssetHandler } from "./middlewares-DWDWNHGY.js";
2
2
  import { Arkstack, ArkstackKitDriver } from "@arkstack/contract";
3
3
  import { H3, HTTPResponse, serve, toResponse } from "h3";
4
4
  import { ErrorHandler, Logger, env, renderError } from "@arkstack/common";
5
+ import ngrok from "@ngrok/ngrok";
5
6
  import { resolveMiddleware } from "@arkstack/http";
6
7
  import { registerPlugin } from "resora";
7
8
  import { join } from "node:path";
@@ -98,6 +99,7 @@ var H3EventResponse = class {
98
99
  */
99
100
  var H3Driver = class extends ArkstackKitDriver {
100
101
  name = "h3";
102
+ tunnel_url;
101
103
  options;
102
104
  /**
103
105
  * Creates an instance of H3Driver.
@@ -160,6 +162,14 @@ var H3Driver = class extends ArkstackKitDriver {
160
162
  }
161
163
  }
162
164
  /**
165
+ * If trafic has been proxied via ngrok, this will return the tunnel URL.
166
+ *
167
+ * @returns
168
+ */
169
+ geTunnelUrl() {
170
+ return this.tunnel_url;
171
+ }
172
+ /**
163
173
  * Starts the H3 server on the specified port.
164
174
  *
165
175
  * The bind host can be overridden with the `APP_HOST` (or `HOST`) env
@@ -170,15 +180,29 @@ var H3Driver = class extends ArkstackKitDriver {
170
180
  * @param app
171
181
  * @param port
172
182
  */
173
- start(app, port) {
183
+ async start(app, port) {
174
184
  const host = env("APP_HOST", env("HOST", "0.0.0.0"));
175
- serve(app, {
185
+ const tunneled = env("TUNNEL", false);
186
+ const server = await serve(app, {
176
187
  port,
177
188
  hostname: host,
178
189
  silent: true
179
- }).ready().then(() => {
180
- Logger.log([["Server is running on", "white"], [`http://${host}:${port}`, "cyan"]], " ");
181
- });
190
+ }).ready();
191
+ let log = [Logger.log([["Server is running on", "white"], [server.url ?? `http://${host}:${port}`, "cyan"]], " ", false)];
192
+ if (tunneled === true) {
193
+ const url = (await ngrok.forward({
194
+ addr: port,
195
+ authtoken: env("NGROK_AUTHTOKEN"),
196
+ domain: env("NGROK_DOMAIN")
197
+ })).url();
198
+ if (url) {
199
+ log = log.concat(Logger.log([["Trafic has been tunnelled to", "white"], [url, "green"]], " ", false));
200
+ process.env.TUNNEL_URL = url;
201
+ this.tunnel_url = url;
202
+ globalThis.tunnelUrl = () => url;
203
+ }
204
+ }
205
+ console.log(log.join("\n"));
182
206
  }
183
207
  };
184
208
  //#endregion
@@ -1,4 +1,4 @@
1
- import { i as H3Middleware } from "../index-CrRoMPZ1.js";
1
+ import { i as H3Middleware } from "../index-BZYQAccK.js";
2
2
  import * as _$h3 from "h3";
3
3
  import { EventHandlerRequest, H3Event } from "h3";
4
4
  import { NextFunction } from "clear-router/types/h3";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arkstack/driver-h3",
3
- "version": "0.14.2",
3
+ "version": "0.14.14",
4
4
  "type": "module",
5
5
  "description": "H3 driver for Arkstack, providing H3-based runtime integration for the framework.",
6
6
  "homepage": "https://arkstack.toneflix.net",
@@ -37,16 +37,17 @@
37
37
  "./package.json": "./package.json"
38
38
  },
39
39
  "dependencies": {
40
- "clear-router": "^2.8.8",
40
+ "@ngrok/ngrok": "^1.7.0",
41
41
  "@resora/plugin-clear-router": "^1.0.63",
42
+ "clear-router": "^2.8.8",
42
43
  "resora": "^1.3.26",
43
- "@arkstack/contract": "^0.14.2"
44
+ "@arkstack/contract": "^0.14.14"
44
45
  },
45
46
  "peerDependencies": {
46
47
  "h3": "2.0.1-rc.22",
47
- "@arkstack/foundry": "^0.14.2",
48
- "@arkstack/auth": "^0.14.2",
49
- "@arkstack/common": "^0.14.2"
48
+ "@arkstack/auth": "^0.14.14",
49
+ "@arkstack/foundry": "^0.14.14",
50
+ "@arkstack/common": "^0.14.14"
50
51
  },
51
52
  "peerDependenciesMeta": {
52
53
  "@arkstack/auth": {