@vhyxvoid/middleware 1.0.0

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.
@@ -0,0 +1,27 @@
1
+ export interface VhyxvoidConfig {
2
+ key?: string;
3
+ secret?: string;
4
+ port?: number;
5
+ label?: string;
6
+ hub?: string;
7
+ /** Write tunnel URL to this env file on connect. e.g. ".env.local" */
8
+ writeEnv?: string;
9
+ /** Env var name to write tunnel URL into. Default: NEXT_PUBLIC_TUNNEL_URL */
10
+ envKey?: string;
11
+ /** Called when tunnel is active with the public URL */
12
+ onConnect?: (tunnelUrl: string) => void;
13
+ /** Disable tunnel in production. Default: auto (disabled when NODE_ENV=production) */
14
+ enabled?: boolean;
15
+ }
16
+ export declare function resolveConfig(userConfig?: VhyxvoidConfig): {
17
+ key: string;
18
+ secret: string;
19
+ port: number;
20
+ label: string;
21
+ hub: string;
22
+ writeEnv?: string;
23
+ envKey: string;
24
+ onConnect?: (url: string) => void;
25
+ enabled: boolean;
26
+ };
27
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,sFAAsF;IACtF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,UAAU,GAAE,cAAmB,GAAG;IAC9D,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;CAClB,CA8BA"}
package/dist/config.js ADDED
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveConfig = resolveConfig;
4
+ function resolveConfig(userConfig = {}) {
5
+ const key = userConfig.key ?? process.env.VHYXVOID_API_KEY ?? "";
6
+ const secret = userConfig.secret ?? process.env.VHYXVOID_SECRET ?? "";
7
+ const port = userConfig.port ?? parseInt(process.env.VHYXVOID_PORT ?? "3000", 10);
8
+ const label = userConfig.label ?? process.env.VHYXVOID_LABEL ?? "default";
9
+ const hub = userConfig.hub ??
10
+ process.env.VHYXVOID_HUB_URL ??
11
+ "wss://hub.vhyxvoid.com/agent";
12
+ const envKey = userConfig.envKey ??
13
+ process.env.VHYXVOID_ENV_KEY ??
14
+ "NEXT_PUBLIC_TUNNEL_URL";
15
+ const writeEnv = userConfig.writeEnv ?? process.env.VHYXVOID_WRITE_ENV;
16
+ // Auto-disable in production unless explicitly enabled
17
+ const enabled = userConfig.enabled ?? process.env.NODE_ENV !== "production";
18
+ return {
19
+ key,
20
+ secret,
21
+ port,
22
+ label,
23
+ hub,
24
+ writeEnv,
25
+ envKey,
26
+ onConnect: userConfig.onConnect,
27
+ enabled,
28
+ };
29
+ }
30
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;AAgBA,sCAwCC;AAxCD,SAAgB,aAAa,CAAC,aAA6B,EAAE;IAW3D,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;IACjE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;IACtE,MAAM,IAAI,GACR,UAAU,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,SAAS,CAAC;IAC1E,MAAM,GAAG,GACP,UAAU,CAAC,GAAG;QACd,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAC5B,8BAA8B,CAAC;IACjC,MAAM,MAAM,GACV,UAAU,CAAC,MAAM;QACjB,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAC5B,wBAAwB,CAAC;IAC3B,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAEvE,uDAAuD;IACvD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IAE5E,OAAO;QACL,GAAG;QACH,MAAM;QACN,IAAI;QACJ,KAAK;QACL,GAAG;QACH,QAAQ;QACR,MAAM;QACN,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { FastifyPluginAsync } from "fastify";
2
+ import { VhyxvoidConfig } from "./config";
3
+ export declare const vhyxvoidPlugin: FastifyPluginAsync<VhyxvoidConfig>;
4
+ //# sourceMappingURL=fastify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fastify.d.ts","sourceRoot":"","sources":["../src/fastify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,OAAO,EAAiB,cAAc,EAAE,MAAM,UAAU,CAAC;AAsBzD,eAAO,MAAM,cAAc,oCAGzB,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.vhyxvoidPlugin = void 0;
7
+ const fastify_plugin_1 = __importDefault(require("fastify-plugin"));
8
+ const config_1 = require("./config");
9
+ const tunnel_1 = require("./tunnel");
10
+ /**
11
+ * Fastify plugin.
12
+ *
13
+ * @example
14
+ * import { vhyxvoidPlugin } from '@vhyxvoid/middleware/fastify'
15
+ * await app.register(vhyxvoidPlugin)
16
+ */
17
+ const plugin = async (fastify, opts) => {
18
+ const config = (0, config_1.resolveConfig)(opts);
19
+ if (config.enabled) {
20
+ (0, tunnel_1.startTunnel)(config);
21
+ }
22
+ fastify.addHook("onClose", async () => {
23
+ (0, tunnel_1.stopTunnel)();
24
+ });
25
+ };
26
+ exports.vhyxvoidPlugin = (0, fastify_plugin_1.default)(plugin, {
27
+ name: "vhyxvoid",
28
+ fastify: ">=4.0.0",
29
+ });
30
+ //# sourceMappingURL=fastify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fastify.js","sourceRoot":"","sources":["../src/fastify.ts"],"names":[],"mappings":";;;;;;AACA,oEAAgC;AAChC,qCAAyD;AACzD,qCAAmD;AAEnD;;;;;;GAMG;AACH,MAAM,MAAM,GAAuC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IACzE,MAAM,MAAM,GAAG,IAAA,sBAAa,EAAC,IAAI,CAAC,CAAC;IAEnC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QACpC,IAAA,mBAAU,GAAE,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEW,QAAA,cAAc,GAAG,IAAA,wBAAE,EAAC,MAAM,EAAE;IACvC,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,SAAS;CACnB,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { Request, Response, NextFunction } from "express";
2
+ import { VhyxvoidConfig } from "./config";
3
+ export type { VhyxvoidConfig };
4
+ export { stopTunnel } from "./tunnel";
5
+ /**
6
+ * Express middleware. Call once before your routes.
7
+ *
8
+ * @example
9
+ * import { vhyxvoid } from '@vhyxvoid/middleware'
10
+ * app.use(vhyxvoid())
11
+ *
12
+ * // or with explicit config:
13
+ * app.use(vhyxvoid({ port: 3000, label: 'api' }))
14
+ */
15
+ export declare function vhyxvoid(userConfig?: VhyxvoidConfig): (_req: Request, _res: Response, next: NextFunction) => void;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAiB,cAAc,EAAE,MAAM,UAAU,CAAC;AAGzD,YAAY,EAAE,cAAc,EAAE,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,UAAU,GAAE,cAAmB,IAQ9C,MAAM,OAAO,EAAE,MAAM,QAAQ,EAAE,MAAM,YAAY,UAC1D"}
package/dist/index.js ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stopTunnel = void 0;
4
+ exports.vhyxvoid = vhyxvoid;
5
+ const config_1 = require("./config");
6
+ const tunnel_1 = require("./tunnel");
7
+ var tunnel_2 = require("./tunnel");
8
+ Object.defineProperty(exports, "stopTunnel", { enumerable: true, get: function () { return tunnel_2.stopTunnel; } });
9
+ /**
10
+ * Express middleware. Call once before your routes.
11
+ *
12
+ * @example
13
+ * import { vhyxvoid } from '@vhyxvoid/middleware'
14
+ * app.use(vhyxvoid())
15
+ *
16
+ * // or with explicit config:
17
+ * app.use(vhyxvoid({ port: 3000, label: 'api' }))
18
+ */
19
+ function vhyxvoid(userConfig = {}) {
20
+ const config = (0, config_1.resolveConfig)(userConfig);
21
+ if (config.enabled) {
22
+ (0, tunnel_1.startTunnel)(config);
23
+ }
24
+ // Middleware is a no-op passthrough — tunnel runs in background
25
+ return (_req, _res, next) => next();
26
+ }
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAiBA,4BASC;AAzBD,qCAAyD;AACzD,qCAAuC;AAGvC,mCAAsC;AAA7B,oGAAA,UAAU,OAAA;AAEnB;;;;;;;;;GASG;AACH,SAAgB,QAAQ,CAAC,aAA6B,EAAE;IACtD,MAAM,MAAM,GAAG,IAAA,sBAAa,EAAC,UAAU,CAAC,CAAC;IAEzC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAED,gEAAgE;IAChE,OAAO,CAAC,IAAa,EAAE,IAAc,EAAE,IAAkB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AACvE,CAAC"}
package/dist/next.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ import { VhyxvoidConfig } from "./config";
2
+ /**
3
+ * Wraps Next.js config to start the tunnel when the dev server starts.
4
+ *
5
+ * @example
6
+ * // next.config.ts
7
+ * import { withVhyxvoid } from '@vhyxvoid/middleware/next'
8
+ * export default withVhyxvoid({
9
+ * // your existing next config
10
+ * })
11
+ *
12
+ * // with options:
13
+ * export default withVhyxvoid(nextConfig, { port: 3010, label: 'app' })
14
+ */
15
+ export declare function withVhyxvoid(nextConfig?: Record<string, unknown>, userConfig?: VhyxvoidConfig): Record<string, unknown>;
16
+ //# sourceMappingURL=next.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../src/next.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,cAAc,EAAE,MAAM,UAAU,CAAC;AAGzD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACxC,UAAU,GAAE,cAAmB,2BAUhC"}
package/dist/next.js ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withVhyxvoid = withVhyxvoid;
4
+ const config_1 = require("./config");
5
+ const tunnel_1 = require("./tunnel");
6
+ /**
7
+ * Wraps Next.js config to start the tunnel when the dev server starts.
8
+ *
9
+ * @example
10
+ * // next.config.ts
11
+ * import { withVhyxvoid } from '@vhyxvoid/middleware/next'
12
+ * export default withVhyxvoid({
13
+ * // your existing next config
14
+ * })
15
+ *
16
+ * // with options:
17
+ * export default withVhyxvoid(nextConfig, { port: 3010, label: 'app' })
18
+ */
19
+ function withVhyxvoid(nextConfig = {}, userConfig = {}) {
20
+ const config = (0, config_1.resolveConfig)(userConfig);
21
+ if (config.enabled) {
22
+ // next.config runs once when dev server starts — safe to start tunnel here
23
+ (0, tunnel_1.startTunnel)(config);
24
+ }
25
+ return nextConfig;
26
+ }
27
+ //# sourceMappingURL=next.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next.js","sourceRoot":"","sources":["../src/next.ts"],"names":[],"mappings":";;AAgBA,oCAYC;AA5BD,qCAAyD;AACzD,qCAAuC;AAEvC;;;;;;;;;;;;GAYG;AACH,SAAgB,YAAY,CAC1B,aAAsC,EAAE,EACxC,aAA6B,EAAE;IAE/B,MAAM,MAAM,GAAG,IAAA,sBAAa,EAAC,UAAU,CAAC,CAAC;IAEzC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,2EAA2E;QAC3E,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { AgentClient } from "@vhyxvoid/agent";
2
+ export interface TunnelOptions {
3
+ key: string;
4
+ secret: string;
5
+ port: number;
6
+ label: string;
7
+ hub: string;
8
+ writeEnv?: string;
9
+ envKey: string;
10
+ onConnect?: (tunnelUrl: string) => void;
11
+ }
12
+ export declare function startTunnel(opts: TunnelOptions): AgentClient;
13
+ export declare function stopTunnel(): void;
14
+ //# sourceMappingURL=tunnel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../src/tunnel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAK9C,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,WAAW,CAiE5D;AAED,wBAAgB,UAAU,IAAI,IAAI,CAGjC"}
package/dist/tunnel.js ADDED
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.startTunnel = startTunnel;
37
+ exports.stopTunnel = stopTunnel;
38
+ const fs = __importStar(require("fs"));
39
+ const agent_1 = require("@vhyxvoid/agent");
40
+ // Prevent multiple tunnel instances in the same process (e.g. Next.js hot reload)
41
+ let instance = null;
42
+ function startTunnel(opts) {
43
+ if (instance) {
44
+ console.log("[vhyxvoid] tunnel already running, skipping");
45
+ return instance;
46
+ }
47
+ if (!opts.key || !opts.secret) {
48
+ console.warn("[vhyxvoid] ⚠ Missing VHYXVOID_API_KEY or VHYXVOID_SECRET — tunnel not started.\n" +
49
+ " Run: vhyxvoid init");
50
+ // Return a no-op stub so callers don't crash
51
+ return { stop: () => { }, start: () => { } };
52
+ }
53
+ // Lazy-load package version
54
+ let agentVersion = "1.0.0";
55
+ try {
56
+ agentVersion = require("@vhyxvoid/agent/package.json").version;
57
+ }
58
+ catch {
59
+ /* ignore */
60
+ }
61
+ const agent = new agent_1.AgentClient({
62
+ hubUrl: opts.hub,
63
+ keyId: opts.key,
64
+ secret: opts.secret,
65
+ label: opts.label,
66
+ port: opts.port,
67
+ agentVersion,
68
+ localDiscovery: false, // disable in middleware mode — no separate CLI discovery
69
+ onStateChange: (state) => {
70
+ if (state === "RECONNECTING") {
71
+ console.log("[vhyxvoid] ⚠ Disconnected — reconnecting...");
72
+ }
73
+ },
74
+ onTunnelUrl: (tunnelUrl) => {
75
+ console.log(`\n [vhyxvoid] ✅ Tunnel active`);
76
+ console.log(` [vhyxvoid] Public: ${tunnelUrl}`);
77
+ console.log(` [vhyxvoid] Local: http://localhost:${opts.port}\n`);
78
+ if (opts.writeEnv) {
79
+ writeEnvVar(opts.writeEnv, opts.envKey, tunnelUrl);
80
+ console.log(` [vhyxvoid] Written ${opts.envKey}=${tunnelUrl} → ${opts.writeEnv}`);
81
+ }
82
+ opts.onConnect?.(tunnelUrl);
83
+ },
84
+ });
85
+ agent.start();
86
+ instance = agent;
87
+ // Clean up on process exit
88
+ const cleanup = () => {
89
+ instance?.stop();
90
+ instance = null;
91
+ };
92
+ process.once("SIGTERM", cleanup);
93
+ process.once("SIGINT", cleanup);
94
+ process.once("exit", cleanup);
95
+ return agent;
96
+ }
97
+ function stopTunnel() {
98
+ instance?.stop();
99
+ instance = null;
100
+ }
101
+ function writeEnvVar(filePath, key, value) {
102
+ try {
103
+ let content = fs.existsSync(filePath)
104
+ ? fs.readFileSync(filePath, "utf8")
105
+ : "";
106
+ const regex = new RegExp(`^${key}=.*$`, "m");
107
+ const line = `${key}=${value}`;
108
+ content = regex.test(content)
109
+ ? content.replace(regex, line)
110
+ : content.endsWith("\n")
111
+ ? content + line + "\n"
112
+ : content + "\n" + line + "\n";
113
+ fs.writeFileSync(filePath, content, "utf8");
114
+ }
115
+ catch (err) {
116
+ console.warn(`[vhyxvoid] could not write to ${filePath}:`, err.message);
117
+ }
118
+ }
119
+ //# sourceMappingURL=tunnel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../src/tunnel.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@vhyxvoid/middleware",
3
+ "version": "1.0.0",
4
+ "description": "Zero-config tunnel middleware for Express, Fastify, and Next.js",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": "./dist/index.js",
9
+ "./next": "./dist/next.js",
10
+ "./fastify": "./dist/fastify.js"
11
+ },
12
+ "files": [
13
+ "dist/**/*"
14
+ ],
15
+ "scripts": {
16
+ "build": "tsc -b",
17
+ "clean": "rm -rf dist tsconfig.tsbuildinfo"
18
+ },
19
+ "keywords": [
20
+ "tunnel",
21
+ "middleware",
22
+ "express",
23
+ "nextjs",
24
+ "fastify",
25
+ "vhyxvoid"
26
+ ],
27
+ "peerDependencies": {
28
+ "express": ">=4.0.0",
29
+ "fastify": ">=4.0.0",
30
+ "next": ">=13.0.0",
31
+ "fastify-plugin": ">=4.0.0"
32
+ },
33
+ "peerDependenciesMeta": {
34
+ "express": {
35
+ "optional": true
36
+ },
37
+ "fastify": {
38
+ "optional": true
39
+ },
40
+ "fastify-plugin": {
41
+ "optional": true
42
+ },
43
+ "next": {
44
+ "optional": true
45
+ }
46
+ },
47
+ "dependencies": {
48
+ "@vhyxvoid/agent": "workspace:*"
49
+ },
50
+ "devDependencies": {
51
+ "@types/express": "^5.0.0",
52
+ "@types/node": "^24.0.0",
53
+ "typescript": "^5.0.0"
54
+ }
55
+ }