npm package diff

Package: @forge/tunnel

Versions: 5.5.0-next.13 - 5.5.0-next.14

Modified:package/out/servers/dev-server.js

Index: package/out/servers/dev-server.js
===================================================================
--- package/out/servers/dev-server.js
+++ package/out/servers/dev-server.js
@@ -1,14 +1,15 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.LocalDevelopmentServer = exports.stopServer = void 0;
 const tslib_1 = require("tslib");
+const path_1 = tslib_1.__importDefault(require("path"));
 const express_1 = tslib_1.__importDefault(require("express"));
 const bundler_1 = require("@forge/bundler");
 const cli_shared_1 = require("@forge/cli-shared");
 const runtime_1 = require("@forge/runtime");
-const util_1 = require("../util");
 const bundler_2 = require("@forge/bundler");
+const util_1 = require("../util");
 async function stopServer(server) {
     if (!server) {
         return;
     }
@@ -50,20 +51,23 @@
     async stop() {
         await stopServer(this.httpServer);
     }
     async compileAndWatch({ onBuildWillStart, onBuildFinished }, tunnelOptions = cli_shared_1.defaultNoDebugTunnelOptions) {
+        const isNodeJsRuntime = (await this.configFile.runtimeType()) === cli_shared_1.RuntimeType.nodejs;
+        const outputDir = isNodeJsRuntime && tunnelOptions.debug ? path_1.default.resolve(cli_shared_1.TUNNEL_BUNDLE_DIRECTORY) : (0, cli_shared_1.tmpDir)('tunnel');
         const handlers = await this.configFile.getAppHandlers();
         const entryPoints = (0, bundler_1.getEntryPoints)(handlers);
         if (!entryPoints.length) {
-            return { output: {} };
+            return { outputDir };
         }
-        const getConfig = (await this.configFile.runtimeType()) === cli_shared_1.RuntimeType.nodejs
+        const getConfig = isNodeJsRuntime
             ? (0, bundler_2.getNodeRuntimeBuildConfig)((0, bundler_1.getWrapperProvider)({ fileSystemReader: this.fileSystemReader }))
             : bundler_2.getSandboxedRuntimeBuildConfig;
         const config = getConfig(entryPoints, {
             isWatchMode: true,
             isDebugMode: tunnelOptions.debug,
-            appDirectory: process.cwd()
+            appDirectory: process.cwd(),
+            outputDir
         });
         const compiler = (0, bundler_2.getCompiler)(config);
         let isFirstRun = true;
         compiler.hooks.watchRun.tapAsync('watchRun', async (_, watchRunCallback) => {
@@ -76,14 +80,13 @@
             compiler.watch({ poll: 1000 }, async (compilerError, stats) => {
                 try {
                     (0, bundler_2.handleWebpackCompilationResult)(this.logger, compilerError, stats);
                     this.logger.info(cli_shared_1.LogColor.trace(cli_shared_1.Text.tunnel.functionsBundlingSucceeded));
-                    const bundle = (0, bundler_2.getInMemoryBundle)(config);
                     if (!isFirstRun) {
-                        await onBuildFinished(null, bundle);
+                        await onBuildFinished(null, { outputDir });
                     }
                     isFirstRun = false;
-                    resolve(bundle);
+                    resolve({ outputDir });
                 }
                 catch (err) {
                     await onBuildFinished(err);
                     isFirstRun = false;

Modified:package/out/command/interactors/function-change-watcher.js

Index: package/out/command/interactors/function-change-watcher.js
===================================================================
--- package/out/command/interactors/function-change-watcher.js
+++ package/out/command/interactors/function-change-watcher.js
@@ -1,11 +1,10 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.LocalFunctionHost = exports.MEMORY_LIMIT = void 0;
 const tslib_1 = require("tslib");
-const path_1 = tslib_1.__importStar(require("path"));
-const fs_1 = require("fs");
-const tmp_1 = tslib_1.__importDefault(require("tmp"));
+const path_1 = tslib_1.__importDefault(require("path"));
+const promises_1 = require("fs/promises");
 const cli_shared_1 = require("@forge/cli-shared");
 const runtime_1 = require("@forge/runtime");
 const util_1 = require("../../util");
 exports.MEMORY_LIMIT = 256;
@@ -20,54 +19,37 @@
         this.logger = logger;
         this.snapshot = snapshot;
         this.createSandbox = createSandbox;
     }
-    async generateBundleFiles(bundle, withSnapshot) {
-        await fs_1.promises.mkdir((0, path_1.dirname)(bundle.bundleFilePath), { recursive: true });
-        if (withSnapshot) {
-            if (!this.snapshot) {
-                throw new Error('Snapshot requested but snapshot creator not provided.');
-            }
-            const snapshotOutput = await this.snapshot({ isolateMemory: exports.MEMORY_LIMIT }, Buffer.from(bundle.bundleFileContent), bundle.bundleFilePath, bundle.bundleFileSourceMap ? Buffer.from(bundle.bundleFileSourceMap) : undefined);
-            await fs_1.promises.writeFile(bundle.bundleFilePath + '.snapshot', Buffer.from(snapshotOutput.buffer));
-            if (snapshotOutput.logs.length > 0) {
-                this.snapshotLogs.push(snapshotOutput.logs);
-            }
+    async generateSnapshot(filePath) {
+        if (!this.snapshot) {
+            throw new Error('Snapshot requested but snapshot creator not provided.');
         }
-        else {
-            await fs_1.promises.writeFile(bundle.bundleFilePath, bundle.bundleFileContent);
+        const script = await (0, promises_1.readFile)(filePath);
+        const sourceMap = await (0, promises_1.readFile)(filePath + '.map').catch(() => undefined);
+        const snapshotOutput = await this.snapshot({ isolateMemory: exports.MEMORY_LIMIT }, script, filePath, sourceMap);
+        await (0, promises_1.writeFile)(filePath + '.snapshot', Buffer.from(snapshotOutput.buffer));
+        if (snapshotOutput.logs.length > 0) {
+            this.snapshotLogs.push(snapshotOutput.logs);
         }
-        if (bundle.bundleFileSourceMap) {
-            await fs_1.promises.writeFile(bundle.bundleFileSourceMapPath, bundle.bundleFileSourceMap);
-        }
     }
     async startWatching(bundledCode, tunnelOptions = cli_shared_1.defaultNoDebugTunnelOptions) {
         const isNodeJsRuntime = (await this.configFile.runtimeType()) === cli_shared_1.RuntimeType.nodejs;
-        let directory = tmp_1.default.dirSync({ prefix: 'tunnel' }).name;
-        if (isNodeJsRuntime && tunnelOptions.debug) {
-            directory = path_1.default.resolve(cli_shared_1.defaultDebugBundleOutputPath);
-        }
+        const pathTo = (relativePath) => path_1.default.resolve(bundledCode.outputDir, relativePath);
         const isSnapshotEnabled = (await this.configFile.snapshotsEnabled()) && !isNodeJsRuntime;
         if (isSnapshotEnabled) {
             this.logger.info('');
             this.logger.info(cli_shared_1.Text.tunnel.preBundleTask(cli_shared_1.Text.tunnel.snapshotting));
             this.snapshotLogs = [];
+            const modules = new Set((await this.configFile.getAppHandlers()).map(({ module }) => module));
+            for (const module of modules) {
+                const handlerPath = pathTo(`${module}.js`);
+                await this.generateSnapshot(handlerPath);
+            }
         }
-        const bundles = Object.keys(bundledCode.output).map((bundlePath) => {
-            const sourceMapPath = `${bundlePath}.map`;
-            return {
-                bundleFilePath: (0, path_1.resolve)(directory, bundlePath),
-                bundleFileContent: bundledCode.output[bundlePath],
-                bundleFileSourceMapPath: (0, path_1.resolve)(directory, sourceMapPath),
-                bundleFileSourceMap: bundledCode.sourceMap?.[sourceMapPath]
-            };
-        });
-        const manifestFilePath = (0, path_1.resolve)(directory, cli_shared_1.manifestFileName);
+        const manifestFilePath = pathTo(cli_shared_1.manifestFileName);
         const manifestContents = JSON.stringify(await this.configFile.readConfig());
-        const allPromises = [];
-        bundles.forEach((bundle) => allPromises.push(this.generateBundleFiles(bundle, isSnapshotEnabled)));
-        allPromises.push(fs_1.promises.writeFile(manifestFilePath, manifestContents));
-        await Promise.all(allPromises);
+        await (0, promises_1.writeFile)(manifestFilePath, manifestContents);
         if (isSnapshotEnabled) {
             if (this.snapshotLogs.length > 0) {
                 this.logger.info('');
                 this.snapshotLogs.forEach((snapshotLog) => {
@@ -81,9 +63,9 @@
                 this.logger.info(cli_shared_1.LogColor.trace(cli_shared_1.Text.tunnel.snapshottingNoLogs));
                 this.logger.info('');
             }
         }
-        await this.initializeSandboxes(directory, tunnelOptions);
+        await this.initializeSandboxes(bundledCode.outputDir, tunnelOptions);
         runtime_1.StaticInvocationEventEmitter.addListener(runtime_1.EVENT_P3_LOG, this.onRuntimeLog);
     }
     async stopWatching() {
         runtime_1.StaticInvocationEventEmitter.removeAllListeners();

Modified:package/out/command/interactors/multi-compiler-watcher.js

Index: package/out/command/interactors/multi-compiler-watcher.js
===================================================================
--- package/out/command/interactors/multi-compiler-watcher.js
+++ package/out/command/interactors/multi-compiler-watcher.js
@@ -2,37 +2,25 @@
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.MultiCompilerWatcher = void 0;
 const cli_shared_1 = require("@forge/cli-shared");
 class MultiCompilerWatcher {
-    servers;
-    constructor(servers) {
-        this.servers = servers;
+    faasServer;
+    uiServers;
+    constructor(faasServer, uiServers) {
+        this.faasServer = faasServer;
+        this.uiServers = uiServers;
     }
+    allServers() {
+        return [this.faasServer, ...this.uiServers];
+    }
     async compileAndWatch({ onChange: { onBuildWillStart, onBuildFinished } }, tunnelOptions = cli_shared_1.defaultNoDebugTunnelOptions) {
-        const results = await Promise.all(this.servers.map((server) => server.compileAndWatch({
+        const [faasResult] = await Promise.all(this.allServers().map((server) => server.compileAndWatch({
             onBuildWillStart,
             onBuildFinished
         }, tunnelOptions)));
-        const multiResult = {
-            output: {}
-        };
-        for (const result of results) {
-            multiResult.output = {
-                ...multiResult.output,
-                ...result.output
-            };
-            multiResult.sourceMap = {
-                ...multiResult.sourceMap,
-                ...result.sourceMap
-            };
-            multiResult.metadata = {
-                ...multiResult.metadata,
-                ...result.metadata
-            };
-        }
-        return multiResult;
+        return faasResult;
     }
     async stop() {
-        await Promise.all(this.servers.map((server) => server.stop()));
+        await Promise.all(this.allServers().map((server) => server.stop()));
     }
 }
 exports.MultiCompilerWatcher = MultiCompilerWatcher;

Modified:package/out/servers/native-ui-tunnel-server.js

Index: package/out/servers/native-ui-tunnel-server.js
===================================================================
--- package/out/servers/native-ui-tunnel-server.js
+++ package/out/servers/native-ui-tunnel-server.js
@@ -9,14 +9,16 @@
 const url_1 = require("url");
 class NativeUITunnelServer extends resource_tunnel_server_1.ResourceTunnelServer {
     tunnelArgs;
     server;
+    outputDir;
     constructor(tunnelArgs) {
         super(tunnelArgs);
         this.tunnelArgs = tunnelArgs;
         const { key, path, port, permissions, remotes, i18nConfig } = tunnelArgs;
         const entrypoint = { name: key, path, functions: [] };
         const config = (0, bundler_1.getNativeUiBuildConfig)([entrypoint]);
+        this.outputDir = config.output.path;
         const compiler = (0, bundler_1.getCompiler)({
             ...config,
             infrastructureLogging: {
                 level: 'error'
@@ -82,11 +84,9 @@
                     }
                     else {
                         isFirstCompilation = false;
                     }
-                    resolve({
-                        output: {}
-                    });
+                    resolve({ outputDir: this.outputDir });
                 }
                 catch (err) {
                     await onBuildFinished(err);
                     isFirstCompilation = false;

Modified:package/out/command/start-tunnel-command.js

Index: package/out/command/start-tunnel-command.js
===================================================================
--- package/out/command/start-tunnel-command.js
+++ package/out/command/start-tunnel-command.js
@@ -121,9 +121,10 @@
                 tunnelDefinitions,
                 inspectorAddress,
                 stopFunction,
                 reloadSandboxes,
-                devServers: [faasTunnelServer.devServer, ...customUITunnelsServers.map(({ devServer }) => devServer)]
+                faasServer: faasTunnelServer.devServer,
+                uiServers: customUITunnelsServers.map(({ devServer }) => devServer)
             };
         }
         catch (e) {
             try {

Modified:package/out/command/interactors/tunnel-interactor.js

Index: package/out/command/interactors/tunnel-interactor.js
===================================================================
--- package/out/command/interactors/tunnel-interactor.js
+++ package/out/command/interactors/tunnel-interactor.js
@@ -54,9 +54,9 @@
             }
         });
     }
     watchApp = async (startTunnelResult, tunnelOptions = cli_shared_1.defaultNoDebugTunnelOptions) => {
-        const { localPort, inspectorAddress, reloadSandboxes, devServers } = startTunnelResult;
+        const { localPort, inspectorAddress, reloadSandboxes, faasServer, uiServers } = startTunnelResult;
         if (inspectorAddress) {
             this.logger.info(cli_shared_1.Text.tunnel.startedInspector(inspectorAddress));
         }
         const onBundlingStart = async () => {
@@ -80,26 +80,24 @@
             }
             this.logger.info('');
             this.logger.info(cli_shared_1.Text.tunnel.startedServer(localPort, this.logger.debugEnabled) + '\n');
         };
-        if (devServers.length > 0) {
-            const multiCompiler = new multi_compiler_watcher_1.MultiCompilerWatcher(devServers);
-            await (0, bundler_1.runLinter)();
-            this.logger.info(cli_shared_1.Text.tunnel.preBundleTask(cli_shared_1.Text.tunnel.bundlingHeader));
-            try {
-                const output = await multiCompiler.compileAndWatch({
-                    onChange: {
-                        onBuildWillStart: onBundlingStart,
-                        onBuildFinished: onBundlingFinish
-                    }
-                }, tunnelOptions);
-                await reloadSandboxes(output, tunnelOptions);
-                this.logger.info('');
-                this.logger.info(cli_shared_1.Text.tunnel.startedServer(localPort, this.logger.debugEnabled) + '\n');
-            }
-            catch (_) {
-            }
-            return multiCompiler;
+        const multiCompiler = new multi_compiler_watcher_1.MultiCompilerWatcher(faasServer, uiServers);
+        await (0, bundler_1.runLinter)();
+        this.logger.info(cli_shared_1.Text.tunnel.preBundleTask(cli_shared_1.Text.tunnel.bundlingHeader));
+        try {
+            const output = await multiCompiler.compileAndWatch({
+                onChange: {
+                    onBuildWillStart: onBundlingStart,
+                    onBuildFinished: onBundlingFinish
+                }
+            }, tunnelOptions);
+            await reloadSandboxes(output, tunnelOptions);
+            this.logger.info('');
+            this.logger.info(cli_shared_1.Text.tunnel.startedServer(localPort, this.logger.debugEnabled) + '\n');
         }
+        catch (_) {
+        }
+        return multiCompiler;
     };
 }
 exports.TunnelInteractor = TunnelInteractor;

Modified:package/package.json

Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@forge/tunnel",
-  "version": "5.5.0-next.13",
+  "version": "5.5.0-next.14",
   "description": "Tunnel functionality for Forge CLI",
   "author": "Atlassian",
   "license": "UNLICENSED",
   "main": "out/index.js",
@@ -10,10 +10,10 @@
     "clean": "rm -rf ./out && rm -f tsconfig.tsbuildinfo",
     "compile": "tsc -b -v"
   },
   "dependencies": {
-    "@forge/bundler": "4.19.0-next.13",
-    "@forge/cli-shared": "5.5.0-next.12",
+    "@forge/bundler": "4.19.0-next.14",
+    "@forge/cli-shared": "5.5.0-next.13",
     "@forge/csp": "3.3.0",
     "@forge/runtime": "5.10.1",
     "chokidar": "^3.6.0",
     "cloudflared": "^0.5.2",
@@ -28,9 +28,9 @@
     "webpack-dev-server": "^4.15.1"
   },
   "devDependencies": {
     "@atlassian/xen-test-util": "^4.2.0",
-    "@forge/manifest": "7.7.0-next.12",
+    "@forge/manifest": "7.7.0-next.13",
     "@types/express": "^4.17.21",
     "@types/jest": "^29.5.12",
     "@types/node": "14.18.63",
     "@types/supertest": "^2.0.16",

Modified:package/out/servers/dev-server.d.ts.map

Index: package/out/servers/dev-server.d.ts.map
===================================================================
--- package/out/servers/dev-server.d.ts.map
+++ package/out/servers/dev-server.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/servers/dev-server.ts"],"names":[],"mappings":";;AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAG1B,OAAO,EACL,UAAU,EAEV,gBAAgB,EAEhB,MAAM,EAGN,aAAa,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAe,MAAM,gBAAgB,CAAC;AAElE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,aAAa,EAMd,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,GAAG;IACjC,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,eAAe,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnE;AACD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC1G;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,iBAAiB,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CACrE;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/E;AAED,qBAAa,sBAAuB,YAAW,iBAAiB;IAO5D,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IATnC,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,OAAO,CAAsB;gBAGlB,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB;IAQxC,KAAK,CAAC,IAAI,SAAI,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAe5F,IAAI;IAIJ,eAAe,CAC1B,EAAE,gBAAgB,EAAE,eAAe,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,EAChE,aAAa,GAAE,aAA2C,GACzD,OAAO,CAAC,aAAa,CAAC;IAsDlB,MAAM,IAAI,OAAO,CAAC,WAAW;IAI7B,gBAAgB,EAAE,OAAO,CAAC,OAAO,CA2CtC;CACH"}
\ No newline at end of file
+{"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/servers/dev-server.ts"],"names":[],"mappings":";;AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,EACL,UAAU,EAEV,gBAAgB,EAEhB,MAAM,EAKN,aAAa,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAe,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,aAAa,EAKd,MAAM,gBAAgB,CAAC;AAIxB,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,GAAG;IACjC,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,eAAe,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACnE;AACD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC1G;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,iBAAiB,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CACrE;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/E;AAED,qBAAa,sBAAuB,YAAW,iBAAiB;IAO5D,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IATnC,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,OAAO,CAAsB;gBAGlB,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB;IAQxC,KAAK,CAAC,IAAI,SAAI,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAe5F,IAAI;IAIJ,eAAe,CAC1B,EAAE,gBAAgB,EAAE,eAAe,EAAE,EAAE,UAAU,CAAC,aAAa,CAAC,EAChE,aAAa,GAAE,aAA2C,GACzD,OAAO,CAAC,aAAa,CAAC;IAuDlB,MAAM,IAAI,OAAO,CAAC,WAAW;IAI7B,gBAAgB,EAAE,OAAO,CAAC,OAAO,CA2CtC;CACH"}
\ No newline at end of file

Modified:package/out/command/interactors/function-change-watcher.d.ts.map

Index: package/out/command/interactors/function-change-watcher.d.ts.map
===================================================================
--- package/out/command/interactors/function-change-watcher.d.ts.map
+++ package/out/command/interactors/function-change-watcher.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"function-change-watcher.d.ts","sourceRoot":"","sources":["../../../src/command/interactors/function-change-watcher.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,UAAU,EAGV,MAAM,EAGN,aAAa,EAGd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAIL,OAAO,EACP,aAAa,EACb,eAAe,EAChB,MAAM,gBAAgB,CAAC;AAIxB,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,MAAM;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uBAAuB,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,YAAY,MAAM,CAAC;AAEhC,qBAAa,iBAAkB,YAAW,qBAAqB;IAI3D,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IANhC,OAAO,CAAC,YAAY,CAA8C;gBAG/C,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,eAAe,GAAG,IAAI,EAChC,aAAa,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC;YAG5D,mBAAmB;IA2BpB,aAAa,CACxB,WAAW,EAAE,aAAa,EAC1B,aAAa,GAAE,aAA2C,GACzD,OAAO,CAAC,IAAI,CAAC;IAsDH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C,OAAO,CAAC,YAAY,CAElB;YAEY,mBAAmB;WAwBnB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa;CAY7F"}
\ No newline at end of file
+{"version":3,"file":"function-change-watcher.d.ts","sourceRoot":"","sources":["../../../src/command/interactors/function-change-watcher.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EAGV,MAAM,EAGN,aAAa,EAEd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAIL,OAAO,EACP,aAAa,EACb,eAAe,EAChB,MAAM,gBAAgB,CAAC;AAIxB,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,eAAO,MAAM,YAAY,MAAM,CAAC;AAEhC,qBAAa,iBAAkB,YAAW,qBAAqB;IAI3D,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IANhC,OAAO,CAAC,YAAY,CAA8C;gBAG/C,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,eAAe,GAAG,IAAI,EAChC,aAAa,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC;YAG5D,gBAAgB;IAgBjB,aAAa,CACxB,WAAW,EAAE,aAAa,EAC1B,aAAa,GAAE,aAA2C,GACzD,OAAO,CAAC,IAAI,CAAC;IA2CH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C,OAAO,CAAC,YAAY,CAElB;YAEY,mBAAmB;WAwBnB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa;CAY7F"}
\ No newline at end of file

Modified:package/out/command/interactors/multi-compiler-watcher.d.ts.map

Index: package/out/command/interactors/multi-compiler-watcher.d.ts.map
===================================================================
--- package/out/command/interactors/multi-compiler-watcher.d.ts.map
+++ package/out/command/interactors/multi-compiler-watcher.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"multi-compiler-watcher.d.ts","sourceRoot":"","sources":["../../../src/command/interactors/multi-compiler-watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAA+B,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE/E,qBAAa,oBAAqB,YAAW,cAAc;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,iBAAiB,EAAE;IAE5C,eAAe,CAC1B,EACE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,eAAe,EAAE,EAChD,EAAE;QACD,QAAQ,EAAE,UAAU,CAAC;KACtB,EACD,aAAa,GAAE,aAA2C,GACzD,OAAO,CAAC,aAAa,CAAC;IAmCZ,IAAI;CAGlB"}
\ No newline at end of file
+{"version":3,"file":"multi-compiler-watcher.d.ts","sourceRoot":"","sources":["../../../src/command/interactors/multi-compiler-watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAA+B,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE/E,qBAAa,oBAAqB,YAAW,cAAc;IAEvD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,UAAU,EAAE,iBAAiB,EAC7B,SAAS,EAAE,iBAAiB,EAAE;IAG1C,UAAU,IAAI,iBAAiB,EAAE;IAI3B,eAAe,CAC1B,EACE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,eAAe,EAAE,EAChD,EAAE;QACD,QAAQ,EAAE,UAAU,CAAC;KACtB,EACD,aAAa,GAAE,aAA2C,GACzD,OAAO,CAAC,aAAa,CAAC;IAgBZ,IAAI;CAGlB"}
\ No newline at end of file

Modified:package/out/servers/native-ui-tunnel-server.d.ts.map

Index: package/out/servers/native-ui-tunnel-server.d.ts.map
===================================================================
--- package/out/servers/native-ui-tunnel-server.d.ts.map
+++ package/out/servers/native-ui-tunnel-server.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"native-ui-tunnel-server.d.ts","sourceRoot":"","sources":["../../src/servers/native-ui-tunnel-server.ts"],"names":[],"mappings":"AAAA,OAAO,gBAA+D,MAAM,oBAAoB,CAAC;AACjG,OAAO,EAAE,aAAa,EAAuE,MAAM,gBAAgB,CAAC;AACpH,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAG1F,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEnF,qBAAa,oBAAqB,SAAQ,oBAAqB,YAAW,iBAAiB;IAG7E,OAAO,CAAC,QAAQ,CAAC,UAAU;IAFvC,SAAgB,MAAM,EAAE,gBAAgB,CAAC;gBAEZ,UAAU,EAAE,wBAAwB;IA2D3D,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAWzC,eAAe,CAAC,EAAE,gBAAgB,EAAE,eAAe,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAwCjG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
\ No newline at end of file
+{"version":3,"file":"native-ui-tunnel-server.d.ts","sourceRoot":"","sources":["../../src/servers/native-ui-tunnel-server.ts"],"names":[],"mappings":"AAAA,OAAO,gBAA+D,MAAM,oBAAoB,CAAC;AACjG,OAAO,EAAE,aAAa,EAAuE,MAAM,gBAAgB,CAAC;AACpH,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAG1F,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEnF,qBAAa,oBAAqB,SAAQ,oBAAqB,YAAW,iBAAiB;IAI7E,OAAO,CAAC,QAAQ,CAAC,UAAU;IAHvC,SAAgB,MAAM,EAAE,gBAAgB,CAAC;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEN,UAAU,EAAE,wBAAwB;IA4D3D,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAWzC,eAAe,CAAC,EAAE,gBAAgB,EAAE,eAAe,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAsCjG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
\ No newline at end of file

Modified:package/out/command/start-tunnel-command.d.ts.map

Index: package/out/command/start-tunnel-command.d.ts.map
===================================================================
--- package/out/command/start-tunnel-command.d.ts.map
+++ package/out/command/start-tunnel-command.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"start-tunnel-command.d.ts","sourceRoot":"","sources":["../../src/command/start-tunnel-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,EAAyB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChH,OAAO,EAAE,SAAS,EAAqB,MAAM,gBAAgB,CAAC;AAI9D,OAAO,EACL,iBAAiB,EAKlB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAsC,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACzE,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,eAAe,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1F;AAED,qBAAa,kBAAkB;IAK3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAX7B,OAAO,CAAC,aAAa,CAAmE;IACxF,OAAO,CAAC,iBAAiB,CAAgC;gBAGtC,YAAY,EAAE,iBAAiB,EAC/B,SAAS,EAAE,iBAAiB,EAC5B,aAAa,EAAE,mBAAmB,EAClC,YAAY,EAAE,qBAAqB,EACnC,YAAY,EAAE,qBAAqB,EACnC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU;IAGzC,OAAO,CAAC,YAAY,CAUlB;IAEF,OAAO,CAAC,qBAAqB,CAuB3B;IAEF,OAAO,CAAC,gCAAgC,CAoCtC;IAEW,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAwD9E"}
\ No newline at end of file
+{"version":3,"file":"start-tunnel-command.d.ts","sourceRoot":"","sources":["../../src/command/start-tunnel-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,EAAyB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChH,OAAO,EAAE,SAAS,EAAqB,MAAM,gBAAgB,CAAC;AAI9D,OAAO,EACL,iBAAiB,EAKlB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAsC,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACzE,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,eAAe,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1F;AAED,qBAAa,kBAAkB;IAK3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAX7B,OAAO,CAAC,aAAa,CAAmE;IACxF,OAAO,CAAC,iBAAiB,CAAgC;gBAGtC,YAAY,EAAE,iBAAiB,EAC/B,SAAS,EAAE,iBAAiB,EAC5B,aAAa,EAAE,mBAAmB,EAClC,YAAY,EAAE,qBAAqB,EACnC,YAAY,EAAE,qBAAqB,EACnC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU;IAGzC,OAAO,CAAC,YAAY,CAUlB;IAEF,OAAO,CAAC,qBAAqB,CAuB3B;IAEF,OAAO,CAAC,gCAAgC,CAoCtC;IAEW,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAyD9E"}
\ No newline at end of file

Modified:package/out/command/interactors/tunnel-interactor.d.ts.map

Index: package/out/command/interactors/tunnel-interactor.d.ts.map
===================================================================
--- package/out/command/interactors/tunnel-interactor.d.ts.map
+++ package/out/command/interactors/tunnel-interactor.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"tunnel-interactor.d.ts","sourceRoot":"","sources":["../../../src/command/interactors/tunnel-interactor.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAyC,MAAM,EAAQ,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/C,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAEpC,mBAAmB,CACxB,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACjC,aAAa,EAAE,cAAc,GAAG,SAAS,EACzC,mBAAmB,EAAE,SAAS,GAC7B,OAAO,CAAC,IAAI,CAAC;IAsCT,6BAA6B,CAAC,gBAAgB,EAAE,MAAM;IAUtD,QAAQ,sBACM,iBAAiB,kBACrB,aAAa,KAC3B,QAAQ,cAAc,GAAG,SAAS,CAAC,CAgEpC;CACH"}
\ No newline at end of file
+{"version":3,"file":"tunnel-interactor.d.ts","sourceRoot":"","sources":["../../../src/command/interactors/tunnel-interactor.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAyC,MAAM,EAAQ,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/C,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAEpC,mBAAmB,CACxB,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACjC,aAAa,EAAE,cAAc,GAAG,SAAS,EACzC,mBAAmB,EAAE,SAAS,GAC7B,OAAO,CAAC,IAAI,CAAC;IAsCT,6BAA6B,CAAC,gBAAgB,EAAE,MAAM;IAUtD,QAAQ,sBACM,iBAAiB,kBACrB,aAAa,KAC3B,QAAQ,cAAc,GAAG,SAAS,CAAC,CA8DpC;CACH"}
\ No newline at end of file

Modified:package/CHANGELOG.md

too-big

Modified:package/out/servers/dev-server.d.ts

Index: package/out/servers/dev-server.d.ts
===================================================================
--- package/out/servers/dev-server.d.ts
+++ package/out/servers/dev-server.d.ts
@@ -1,9 +1,9 @@
 /// <reference types="node" resolution-mode="require"/>
 /// <reference types="node" resolution-mode="require"/>
-import express from 'express';
-import * as http from 'http';
+import http from 'http';
 import { URL } from 'url';
+import express from 'express';
 import { ConfigFile, FileSystemReader, Logger, TunnelOptions } from '@forge/cli-shared';
 import { ExternalRequestBody } from '@forge/runtime';
 import { Permissions, Remotes } from '@forge/manifest';
 import { BundlerOutput } from '@forge/bundler';

Modified:package/out/command/interactors/function-change-watcher.d.ts

Index: package/out/command/interactors/function-change-watcher.d.ts
===================================================================
--- package/out/command/interactors/function-change-watcher.d.ts
+++ package/out/command/interactors/function-change-watcher.d.ts
@@ -4,23 +4,17 @@
 export interface FunctionChangeWatcher {
     startWatching(bundledCode: BundlerOutput, tunnelOptions: TunnelOptions): Promise<void>;
     stopWatching(): Promise<void>;
 }
-export interface Bundle {
-    bundleFilePath: string;
-    bundleFileContent: string;
-    bundleFileSourceMapPath: string;
-    bundleFileSourceMap?: string;
-}
 export declare const MEMORY_LIMIT = 256;
 export declare class LocalFunctionHost implements FunctionChangeWatcher {
     private readonly configFile;
     private readonly logger;
     private readonly snapshot;
     private readonly createSandbox;
     private snapshotLogs;
     constructor(configFile: ConfigFile, logger: Logger, snapshot: SnapshotCreator | null, createSandbox: (cfg: SandboxConfig) => Promise<Sandbox>);
-    private generateBundleFiles;
+    private generateSnapshot;
     startWatching(bundledCode: BundlerOutput, tunnelOptions?: TunnelOptions): Promise<void>;
     stopWatching(): Promise<void>;
     private onRuntimeLog;
     private initializeSandboxes;

Modified:package/out/command/interactors/multi-compiler-watcher.d.ts

Index: package/out/command/interactors/multi-compiler-watcher.d.ts
===================================================================
--- package/out/command/interactors/multi-compiler-watcher.d.ts
+++ package/out/command/interactors/multi-compiler-watcher.d.ts
@@ -1,10 +1,12 @@
 import { BundlerOutput, WatcherMonitor } from '@forge/bundler';
 import { DevelopmentServer, WatchHooks } from '../../servers';
 import { TunnelOptions } from '@forge/cli-shared';
 export declare class MultiCompilerWatcher implements WatcherMonitor {
-    private readonly servers;
-    constructor(servers: DevelopmentServer[]);
+    private readonly faasServer;
+    private readonly uiServers;
+    constructor(faasServer: DevelopmentServer, uiServers: DevelopmentServer[]);
+    allServers(): DevelopmentServer[];
     compileAndWatch({ onChange: { onBuildWillStart, onBuildFinished } }: {
         onChange: WatchHooks;
     }, tunnelOptions?: TunnelOptions): Promise<BundlerOutput>;
     stop(): Promise<void>;

Modified:package/out/servers/native-ui-tunnel-server.d.ts

Index: package/out/servers/native-ui-tunnel-server.d.ts
===================================================================
--- package/out/servers/native-ui-tunnel-server.d.ts
+++ package/out/servers/native-ui-tunnel-server.d.ts
@@ -4,8 +4,9 @@
 import { DevelopmentServer, StartDevServerResult, WatchHooks } from './dev-server';
 export declare class NativeUITunnelServer extends ResourceTunnelServer implements DevelopmentServer {
     private readonly tunnelArgs;
     readonly server: WebpackDevServer;
+    private readonly outputDir;
     constructor(tunnelArgs: ResourceTunnelServerArgs);
     start(): Promise<Required<StartDevServerResult>>;
     compileAndWatch({ onBuildWillStart, onBuildFinished }: WatchHooks): Promise<BundlerOutput>;
     stop(): Promise<void>;

Modified:package/out/command/start-tunnel-command.d.ts

Index: package/out/command/start-tunnel-command.d.ts
===================================================================
--- package/out/command/start-tunnel-command.d.ts
+++ package/out/command/start-tunnel-command.d.ts
@@ -14,9 +14,10 @@
 export interface StartTunnelResult {
     localPort: number;
     tunnelDefinitions: TunnelDefinitions;
     inspectorAddress?: string;
-    devServers: DevelopmentServer[];
+    faasServer: DevelopmentServer;
+    uiServers: DevelopmentServer[];
     stopFunction(): Promise<void>;
     reloadSandboxes(bundledCode: BundlerOutput, tunnelOptions: TunnelOptions): Promise<void>;
 }
 export declare class StartTunnelCommand {