npm package diff
Package: @forge/tunnel
Versions: 5.3.3-next.0-experimental-10722bc - 5.5.0-next.13
Modified:package/out/services/create-tunnel-service.js
Index: package/out/services/create-tunnel-service.js
===================================================================
--- package/out/services/create-tunnel-service.js
+++ package/out/services/create-tunnel-service.js
@@ -1,68 +1,13 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-exports.NgrokCreateTunnelService = exports.CloudflareCreateTunnelService = exports.TunnelServiceFacade = exports.CloudflareError = exports.NgrokError = exports.USER_NGROK_ERRORS = void 0;
-const tslib_1 = require("tslib");
-const ngrok = tslib_1.__importStar(require("ngrok"));
+exports.CloudflareCreateTunnelService = exports.CloudflareError = void 0;
const cloudflared_1 = require("cloudflared");
const url_1 = require("url");
const cli_shared_1 = require("@forge/cli-shared");
-const path_1 = tslib_1.__importDefault(require("path"));
-exports.USER_NGROK_ERRORS = [
- 'ERR_NGROK_105',
- 'ERR_NGROK_108',
- 'ERR_NGROK_120',
- 'ERR_NGROK_714',
- 'ERR_NGROK_715',
- 'ERR_NGROK_718',
- 'ERR_NGROK_720',
- 'ERR_NGROK_725',
- 'ERR_NGROK_726',
- 'ERR_NGROK_727',
- 'ERR_NGROK_728',
- 'ERR_NGROK_734',
- 'ERR_NGROK_1226',
- 'ERR_NGROK_3208',
- 'no such file or directory',
- 'The system cannot find the file specified',
- 'context canceled'
-];
-class NgrokError extends cli_shared_1.BaseError {
- constructor(message) {
- super(undefined, cli_shared_1.Text.tunnel.error.ngrok(message));
- }
- isUserError() {
- return exports.USER_NGROK_ERRORS.some((err) => this.message.includes(err));
- }
-}
-exports.NgrokError = NgrokError;
class CloudflareError extends cli_shared_1.BaseError {
}
exports.CloudflareError = CloudflareError;
-class TunnelServiceFacade {
- featureFlagService;
- logger;
- instance;
- constructor(featureFlagService, logger) {
- this.featureFlagService = featureFlagService;
- this.logger = logger;
- }
- async getInstance() {
- if (!this.instance) {
- this.instance = (await this.featureFlagService.isCloudflareTunnelEnabled())
- ? new CloudflareCreateTunnelService(this.logger)
- : new NgrokCreateTunnelService(this.logger);
- }
- return this.instance;
- }
- async establishTunnel({ port, tunnelConfigPath, id, token, tunnelUrl }) {
- return (await this.getInstance()).establishTunnel({ port, tunnelConfigPath, id, token, tunnelUrl });
- }
- async closeTunnel() {
- return (await this.getInstance()).closeTunnel();
- }
-}
-exports.TunnelServiceFacade = TunnelServiceFacade;
class CloudflareCreateTunnelService {
logger;
stopFunction;
constructor(logger) {
@@ -95,52 +40,4 @@
}
}
}
exports.CloudflareCreateTunnelService = CloudflareCreateTunnelService;
-class NgrokCreateTunnelService {
- logger;
- endpoint;
- constructor(logger) {
- this.logger = logger;
- }
- async establishTunnel({ port, tunnelConfigPath }) {
- const defaultConfigPath = path_1.default.join(__dirname, '..', '..', 'config', 'ngrok.yml');
- let ngrokErrorMessage = undefined;
- try {
- const options = {
- addr: port,
- configPath: tunnelConfigPath ?? defaultConfigPath,
- onStatusChange: (status) => {
- this.logger.debug(cli_shared_1.Text.tunnel.tunnelStatusChange(status));
- },
- onLogEvent: (data) => {
- const errorMatch = /err=(".+")$/m.exec(data);
- if (errorMatch && !data.includes('obj=updater')) {
- ngrokErrorMessage = errorMatch[1];
- try {
- ngrokErrorMessage = JSON.parse(ngrokErrorMessage);
- }
- catch { }
- }
- this.logger.debug(data);
- }
- };
- this.endpoint = await ngrok.connect(options);
- this.logger.debug(cli_shared_1.Text.tunnel.startedTunnel(this.endpoint));
- return new url_1.URL(this.endpoint);
- }
- catch (e) {
- throw new NgrokError(ngrokErrorMessage);
- }
- }
- async closeTunnel() {
- if (this.endpoint) {
- try {
- await ngrok.disconnect();
- await ngrok.kill();
- }
- catch { }
- this.endpoint = undefined;
- }
- }
-}
-exports.NgrokCreateTunnelService = NgrokCreateTunnelService;
Modified:package/out/servers/csp-reporter-server.js
Index: package/out/servers/csp-reporter-server.js
===================================================================
--- package/out/servers/csp-reporter-server.js
+++ package/out/servers/csp-reporter-server.js
@@ -35,9 +35,17 @@
}
async start() {
return new Promise((resolve, reject) => {
this.server = this.app.listen(this.port, resolve);
- this.server.on('error', reject);
+ this.server.on('error', (err) => {
+ const error = err;
+ if (error.code === 'EADDRINUSE') {
+ reject(new cli_shared_1.UserError(`Port ${this.port} is already in use. Please select a different port by setting the CSP_REPORTER_PORT environment variable`));
+ }
+ else {
+ reject(err);
+ }
+ });
});
}
async stop() {
return new Promise((resolve, reject) => {
Modified:package/out/servers/custom-ui-tunnel-server.js
Index: package/out/servers/custom-ui-tunnel-server.js
===================================================================
--- package/out/servers/custom-ui-tunnel-server.js
+++ package/out/servers/custom-ui-tunnel-server.js
@@ -21,10 +21,13 @@
socket;
constructor(tunnelArgs) {
super(tunnelArgs);
this.tunnelArgs = tunnelArgs;
- const { tunnel, permissions, remotes } = tunnelArgs;
+ const { tunnel, permissions, remotes, i18nConfig } = tunnelArgs;
this.app = (0, express_1.default)();
+ if (i18nConfig) {
+ this.app.use(this.getI18nResourcesMiddleware(i18nConfig));
+ }
this.app.use(this.getCustomUIHtmlTransformMiddleware(permissions, remotes));
if (tunnel) {
net_1.default.setDefaultAutoSelectFamily?.(true);
const { port: tunnelPort } = tunnel;
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
@@ -12,9 +12,9 @@
server;
constructor(tunnelArgs) {
super(tunnelArgs);
this.tunnelArgs = tunnelArgs;
- const { key, path, port, permissions, remotes } = tunnelArgs;
+ const { key, path, port, permissions, remotes, i18nConfig } = tunnelArgs;
const entrypoint = { name: key, path, functions: [] };
const config = (0, bundler_1.getNativeUiBuildConfig)([entrypoint]);
const compiler = (0, bundler_1.getCompiler)({
...config,
@@ -36,8 +36,14 @@
middlewares.splice(index, 0, {
name: 'custom-ui-scripts-middleware',
middleware: this.getCustomUIHtmlTransformMiddleware(permissions, remotes)
});
+ if (i18nConfig) {
+ middlewares.unshift({
+ name: 'i18n-resources-middleware',
+ middleware: this.getI18nResourcesMiddleware(i18nConfig)
+ });
+ }
middlewares.unshift({
name: 'logging-middleware',
middleware: (req, _, next) => {
this.logFileServed(req.url, (input) => cli_shared_1.Text.tunnel.customUI.fileServed(input, this.key));
Modified:package/out/services/register-tunnel-service.js
Index: package/out/services/register-tunnel-service.js
===================================================================
--- package/out/services/register-tunnel-service.js
+++ package/out/services/register-tunnel-service.js
@@ -3,12 +3,10 @@
exports.RegisterTunnelServiceImpl = void 0;
const ONE_DAY = 1000 * 60 * 60 * 24;
class RegisterTunnelServiceImpl {
tunnelClient;
- featureFlagService;
- constructor(tunnelClient, featureFlagService) {
+ constructor(tunnelClient) {
this.tunnelClient = tunnelClient;
- this.featureFlagService = featureFlagService;
this.keepAliveActive = true;
}
keepAliveHandler;
keepAliveActive;
@@ -19,16 +17,9 @@
const expiry = await this.tunnelClient.createAppTunnels(appId, environmentKey, tunnelDefinitions);
await this.keepTunnelsAlive(appId, environmentKey, tunnelDefinitions, expiry);
}
async setupTunnel(appId, environmentKey) {
- if (await this.featureFlagService.isCloudflareTunnelEnabled()) {
- return await this.tunnelClient.setupTunnel(appId, environmentKey);
- }
- return {
- token: undefined,
- id: undefined,
- url: undefined
- };
+ return await this.tunnelClient.setupTunnel(appId, environmentKey);
}
async unregisterTunnels(appId, environmentKey) {
if (this.keepAliveHandler) {
clearTimeout(this.keepAliveHandler);
Modified:package/out/servers/resource-tunnel-server.js
Index: package/out/servers/resource-tunnel-server.js
===================================================================
--- package/out/servers/resource-tunnel-server.js
+++ package/out/servers/resource-tunnel-server.js
@@ -34,9 +34,9 @@
}
getCspHeader = (existingCsp) => new csp_1.CSPInjectionService()
.getInjectableCSP({
existingCSPDetails: existingCsp,
- microsEnv: (0, cli_shared_1.getEnvironment)(cli_shared_1.CDNEnvironments),
+ microsEnv: (0, cli_shared_1.getEnvironmentConfig)(cli_shared_1.CDNEnvironments),
tunnelCSPReporterUri: `http://localhost:${this.cspReporterServerPort}`
})
.join('; ');
injectGlobalBridgeScript = (htmlContent) => new cli_shared_1.BridgeScriptService().injectBridgeCore(htmlContent, () => {
@@ -55,6 +55,20 @@
const cspDetails = new csp_1.CSPProcessingService({ info: () => { } }).getCspDetails(htmlContentWithBridgeScript, ResourceTunnelServer.transformPermissionsWithRemotes(permissions, remotes));
res.setHeader('Content-Security-Policy', this.getCspHeader(cspDetails));
return htmlContentWithBridgeScript;
});
+ getI18nResourcesMiddleware = (i18nConfig) => {
+ const i18nResourcesPathRegex = /^\/__LOCALES__\/(.+)\.json$/i;
+ const i18nResourceFileAccessor = new cli_shared_1.I18nResourceBundlingService().createFileAccessor(i18nConfig);
+ return async (req, resp, next) => {
+ const locale = i18nResourcesPathRegex.exec(req.path)?.[1];
+ if (!locale)
+ return next();
+ const file = await i18nResourceFileAccessor(locale);
+ if (!file)
+ return next();
+ resp.setHeader('Content-Type', 'application/json');
+ resp.status(200).send(file);
+ };
+ };
}
exports.ResourceTunnelServer = ResourceTunnelServer;
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
@@ -4,8 +4,9 @@
const tslib_1 = require("tslib");
const cli_shared_1 = require("@forge/cli-shared");
const runtime_1 = require("@forge/runtime");
const node_cache_1 = tslib_1.__importDefault(require("node-cache"));
+const portfinder_1 = require("portfinder");
const servers_1 = require("../servers");
const index_1 = require("../index");
class StartTunnelCommand {
getAppConfig;
@@ -38,15 +39,14 @@
...Object.values(this.tunnelServers).map((server) => server.stop()),
this.cspReporterServer?.stop()
]);
};
- startFaaSTunnelServer = async ({ port, tunnelConfigPath, appId, environmentKey }) => {
+ startFaaSTunnelServer = async ({ port, appId, environmentKey }) => {
const { permissions = {}, remotes = [] } = await this.configFile.readConfig();
const serverInfo = await this.devServer.start(port, permissions, remotes);
const { id, token, url } = await this.tunnelClient.setupTunnel(appId, environmentKey);
const faasTunnelUrl = await this.tunnelFactory.establishTunnel({
port: serverInfo.port,
- tunnelConfigPath,
id,
token,
tunnelUrl: url
});
@@ -56,10 +56,11 @@
};
};
startResourceBasedTunnelsServers = async (resourceDetails, options) => {
const portMap = options.resourcePortMap ?? JSON.parse(process.env.RESOURCE_PORT_MAP ?? '{}');
- const { permissions = {}, remotes = [] } = await this.configFile.readConfig();
- const cspReporterPort = parseInt(process.env.CSP_REPORTER_PORT ?? '4000', 10);
+ const { permissions = {}, remotes = [], translations: i18nConfig } = await this.configFile.readConfig();
+ const availablePort = await (0, portfinder_1.getPortPromise)({ port: 4000 });
+ const cspReporterPort = process.env.CSP_REPORTER_PORT ? parseInt(process.env.CSP_REPORTER_PORT, 10) : availablePort;
if (resourceDetails.length === 0)
return [];
this.cspReporterServer = new servers_1.CspReporterServer(cspReporterPort, this.logger, new node_cache_1.default());
await this.cspReporterServer.start();
@@ -73,9 +74,10 @@
host: options.host,
logger: this.logger,
cspReporterServerPort: cspReporterPort,
permissions,
- remotes
+ remotes,
+ i18nConfig
});
return this.tunnelServers[key].start();
}));
};
@@ -85,9 +87,8 @@
const allResources = await this.configFile.getResources();
try {
const faasTunnelServer = await this.startFaaSTunnelServer({
port,
- tunnelConfigPath: options.ngrokConfig,
appId,
environmentKey
});
const customUITunnelsServers = await this.startResourceBasedTunnelsServers(allResources, options);
Modified:package/package.json
Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
{
"name": "@forge/tunnel",
- "version": "5.3.3-next.0-experimental-10722bc",
+ "version": "5.5.0-next.13",
"description": "Tunnel functionality for Forge CLI",
"author": "Atlassian",
"license": "UNLICENSED",
"main": "out/index.js",
@@ -10,27 +10,27 @@
"clean": "rm -rf ./out && rm -f tsconfig.tsbuildinfo",
"compile": "tsc -b -v"
},
"dependencies": {
- "@forge/bundler": "4.17.4-next.0-experimental-10722bc",
- "@forge/cli-shared": "5.3.1-next.0-experimental-10722bc",
- "@forge/csp": "3.2.2-experimental-10722bc",
- "@forge/runtime": "5.9.0",
+ "@forge/bundler": "4.19.0-next.13",
+ "@forge/cli-shared": "5.5.0-next.12",
+ "@forge/csp": "3.3.0",
+ "@forge/runtime": "5.10.1",
"chokidar": "^3.6.0",
"cloudflared": "^0.5.2",
"express": "^4.18.3",
"express-intercept": "^1.1.0",
"http-proxy-middleware": "^2.0.6",
- "ngrok": "^5.0.0-beta.2",
"node-cache": "^5.1.2",
+ "portfinder": "^1.0.32",
"tmp": "^0.2.3",
"tslib": "^2.6.2",
"uuid": "^9.0.1",
"webpack-dev-server": "^4.15.1"
},
"devDependencies": {
"@atlassian/xen-test-util": "^4.2.0",
- "@forge/manifest": "7.5.2-next.0-experimental-10722bc",
+ "@forge/manifest": "7.7.0-next.12",
"@types/express": "^4.17.21",
"@types/jest": "^29.5.12",
"@types/node": "14.18.63",
"@types/supertest": "^2.0.16",
Modified:package/out/services/create-tunnel-service.d.ts.map
Index: package/out/services/create-tunnel-service.d.ts.map
===================================================================
--- package/out/services/create-tunnel-service.d.ts.map
+++ package/out/services/create-tunnel-service.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"create-tunnel-service.d.ts","sourceRoot":"","sources":["../../src/services/create-tunnel-service.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AAGhF,oBAAY,iBAAiB,GAAG;IAC9B,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,oBAAY,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACjC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,iBAAiB,GACnB,sBAAsB,CAAC;AAEzB,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9F,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAGD,eAAO,MAAM,iBAAiB,UAkB7B,CAAC;AACF,qBAAa,UAAW,SAAQ,SAAS;gBAC3B,OAAO,CAAC,EAAE,MAAM;IAIrB,WAAW;CAGnB;AAED,qBAAa,eAAgB,SAAQ,SAAS;CAAG;AAKjD,qBAAa,mBAAoB,YAAW,mBAAmB;IAI3D,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,OAAO,CAAC,QAAQ,CAAkC;gBAG/B,kBAAkB,EAAE,kBAAkB,EACtC,MAAM,EAAE,MAAM;YAGnB,WAAW;IASZ,eAAe,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;IAI7F,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAG1C;AAED,qBAAa,6BAA8B,YAAW,mBAAmB;IAG3D,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,YAAY,CAA0E;gBAEjE,MAAM,EAAE,MAAM;IAE9B,eAAe,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;IAwB3E,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ1C;AAED,qBAAa,wBAAyB,YAAW,mBAAmB;IAGtD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAqB;gBAER,MAAM,EAAE,MAAM;IAE9B,eAAe,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;IAsCvE,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAkB1C"}
\ No newline at end of file
+{"version":3,"file":"create-tunnel-service.d.ts","sourceRoot":"","sources":["../../src/services/create-tunnel-service.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AAE5D,oBAAY,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACjC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,sBAAsB,CAAC;AAE3B,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5E,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,qBAAa,eAAgB,SAAQ,SAAS;CAAG;AAEjD,qBAAa,6BAA8B,YAAW,mBAAmB;IAG3D,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,YAAY,CAA0E;gBAEjE,MAAM,EAAE,MAAM;IAE9B,eAAe,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;IAwB3E,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ1C"}
\ No newline at end of file
Modified:package/out/servers/csp-reporter-server.d.ts.map
Index: package/out/servers/csp-reporter-server.d.ts.map
===================================================================
--- package/out/servers/csp-reporter-server.d.ts.map
+++ package/out/servers/csp-reporter-server.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"csp-reporter-server.d.ts","sourceRoot":"","sources":["../../src/servers/csp-reporter-server.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAQ,MAAM,mBAAmB,CAAC;AAEjD,OAAO,SAAS,MAAM,YAAY,CAAC;AAYnC,qBAAa,iBAAiB;IAM1B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAPxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAU;IAC9B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAM;gBAGhB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,SAAS;IAwBnC,MAAM,IAAI,OAAO;IAIX,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAK5B"}
\ No newline at end of file
+{"version":3,"file":"csp-reporter-server.d.ts","sourceRoot":"","sources":["../../src/servers/csp-reporter-server.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAmB,MAAM,mBAAmB,CAAC;AAE5D,OAAO,SAAS,MAAM,YAAY,CAAC;AAYnC,qBAAa,iBAAiB;IAM1B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAPxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAU;IAC9B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAM;gBAGhB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,SAAS;IAwBnC,MAAM,IAAI,OAAO;IAIX,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAK5B"}
\ No newline at end of file
Modified:package/out/servers/custom-ui-tunnel-server.d.ts.map
Index: package/out/servers/custom-ui-tunnel-server.d.ts.map
===================================================================
--- package/out/servers/custom-ui-tunnel-server.d.ts.map
+++ package/out/servers/custom-ui-tunnel-server.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"custom-ui-tunnel-server.d.ts","sourceRoot":"","sources":["../../src/servers/custom-ui-tunnel-server.ts"],"names":[],"mappings":"AAGA,OAAgB,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;AAG9D,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAE1F,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAc,MAAM,cAAc,CAAC;AASnF,qBAAa,oBAAqB,SAAQ,oBAAqB,YAAW,iBAAiB;IAM7E,OAAO,CAAC,QAAQ,CAAC,UAAU;IALvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAU;IAC9B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IACnD,OAAO,CAAC,MAAM,CAAqB;gBAEN,UAAU,EAAE,wBAAwB;IAyD3D,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAkBhD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IASd,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC;IAK5C,MAAM,IAAI,OAAO;IAIjB,OAAO,CAAC,gCAAgC;IAoBxC,OAAO,CAAC,sBAAsB;CAO/B"}
\ No newline at end of file
+{"version":3,"file":"custom-ui-tunnel-server.d.ts","sourceRoot":"","sources":["../../src/servers/custom-ui-tunnel-server.ts"],"names":[],"mappings":"AAGA,OAAgB,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;AAG9D,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAE1F,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAc,MAAM,cAAc,CAAC;AASnF,qBAAa,oBAAqB,SAAQ,oBAAqB,YAAW,iBAAiB;IAM7E,OAAO,CAAC,QAAQ,CAAC,UAAU;IALvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAU;IAC9B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IACnD,OAAO,CAAC,MAAM,CAAqB;gBAEN,UAAU,EAAE,wBAAwB;IA4D3D,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAkBhD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IASd,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC;IAK5C,MAAM,IAAI,OAAO;IAIjB,OAAO,CAAC,gCAAgC;IAoBxC,OAAO,CAAC,sBAAsB;CAO/B"}
\ 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;IAoD3D,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;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
Modified:package/out/services/register-tunnel-service.d.ts.map
Index: package/out/services/register-tunnel-service.d.ts.map
===================================================================
--- package/out/services/register-tunnel-service.d.ts.map
+++ package/out/services/register-tunnel-service.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"register-tunnel-service.d.ts","sourceRoot":"","sources":["../../src/services/register-tunnel-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIvD,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5G,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE;AAED,qBAAa,yBAA0B,YAAW,qBAAqB;IAEnE,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBADlB,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,kBAAkB;IAKzD,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,eAAe,CAAU;IAEpB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB;IAQ3F,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAWjD,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;YAQtD,gBAAgB;IAoB9B,OAAO,CAAC,MAAM;CAaf"}
\ No newline at end of file
+{"version":3,"file":"register-tunnel-service.d.ts","sourceRoot":"","sources":["../../src/services/register-tunnel-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI1E,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5G,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE;AAED,qBAAa,yBAA0B,YAAW,qBAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,YAAY;IAIvD,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,eAAe,CAAU;IAEpB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB;IAQ3F,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAIjD,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;YAQtD,gBAAgB;IAoB9B,OAAO,CAAC,MAAM;CAaf"}
\ No newline at end of file
Modified:package/out/servers/resource-tunnel-server.d.ts.map
Index: package/out/servers/resource-tunnel-server.d.ts.map
===================================================================
--- package/out/servers/resource-tunnel-server.d.ts.map
+++ package/out/servers/resource-tunnel-server.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"resource-tunnel-server.d.ts","sourceRoot":"","sources":["../../src/servers/resource-tunnel-server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,QAAQ,EAMR,MAAM,EAEP,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAA6C,MAAM,YAAY,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG5D,MAAM,WAAW,wBAAyB,SAAQ,QAAQ;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,8BAAsB,oBAAoB;IACxC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC;gBAE5B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,wBAAwB;IAQxF,MAAM,CAAC,+BAA+B,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;;;IAajF,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI;IAMvF,SAAS,CAAC,YAAY,gBAAiB,UAAU,KAAG,MAAM,CAO1C;IAEhB,SAAS,CAAC,wBAAwB,gBAAiB,MAAM,YAGpD;IAEL,SAAS,CAAC,yBAAyB,gBAAiB,MAAM,YAGrD;IAEL,SAAS,CAAC,kCAAkC,gBAAiB,WAAW,uBAAqB,cAAc,CAqBpG;CACR"}
\ No newline at end of file
+{"version":3,"file":"resource-tunnel-server.d.ts","sourceRoot":"","sources":["../../src/servers/resource-tunnel-server.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,QAAQ,EAMR,MAAM,EAGP,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAA6C,MAAM,YAAY,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG1E,MAAM,WAAW,wBAAyB,SAAQ,QAAQ;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,YAAY,CAAC;CAC3B;AAED,8BAAsB,oBAAoB;IACxC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC;gBAE5B,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,wBAAwB;IAQxF,MAAM,CAAC,+BAA+B,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;;;IAajF,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI;IAMvF,SAAS,CAAC,YAAY,gBAAiB,UAAU,KAAG,MAAM,CAO1C;IAEhB,SAAS,CAAC,wBAAwB,gBAAiB,MAAM,YAGpD;IAEL,SAAS,CAAC,yBAAyB,gBAAiB,MAAM,YAGrD;IAEL,SAAS,CAAC,kCAAkC,gBAAiB,WAAW,uBAAqB,cAAc,CAqBpG;IAEP,SAAS,CAAC,0BAA0B,eAAgB,YAAY,WAI3C,OAAO,QAAQ,QAAQ,QAAQ,YAAY,mBAU9D;CACH"}
\ 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;AAG9D,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,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,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,CA0B3B;IAEF,OAAO,CAAC,gCAAgC,CAmCtC;IAEW,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAyD9E"}
\ 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,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
Modified:package/CHANGELOG.md
too-big
Modified:package/out/services/create-tunnel-service.d.ts
Index: package/out/services/create-tunnel-service.d.ts
===================================================================
--- package/out/services/create-tunnel-service.d.ts
+++ package/out/services/create-tunnel-service.d.ts
@@ -1,49 +1,25 @@
/// <reference types="node" resolution-mode="require"/>
import { URL } from 'url';
-import { BaseError, FeatureFlagService, Logger } from '@forge/cli-shared';
-export declare type NgrokTunnelConfig = {
- tunnelConfigPath: string | undefined;
-};
+import { BaseError, Logger } from '@forge/cli-shared';
export declare type CloudflareTunnelConfig = {
token: string | null | undefined;
id: string | null | undefined;
tunnelUrl: string | null | undefined;
};
export declare type TunnelConfig = {
port: number;
-} & NgrokTunnelConfig & CloudflareTunnelConfig;
+} & CloudflareTunnelConfig;
export interface CreateTunnelService {
- establishTunnel({ port, tunnelConfigPath, token, id, tunnelUrl }: TunnelConfig): Promise<URL>;
+ establishTunnel({ port, token, id, tunnelUrl }: TunnelConfig): Promise<URL>;
closeTunnel(): Promise<void>;
}
-export declare const USER_NGROK_ERRORS: string[];
-export declare class NgrokError extends BaseError {
- constructor(message?: string);
- isUserError(): boolean;
-}
export declare class CloudflareError extends BaseError {
}
-export declare class TunnelServiceFacade implements CreateTunnelService {
- private readonly featureFlagService;
- private readonly logger;
- private instance;
- constructor(featureFlagService: FeatureFlagService, logger: Logger);
- private getInstance;
- establishTunnel({ port, tunnelConfigPath, id, token, tunnelUrl }: TunnelConfig): Promise<URL>;
- closeTunnel(): Promise<void>;
-}
export declare class CloudflareCreateTunnelService implements CreateTunnelService {
private readonly logger;
private stopFunction;
constructor(logger: Logger);
establishTunnel({ port, id, token, tunnelUrl }: TunnelConfig): Promise<URL>;
closeTunnel(): Promise<void>;
}
-export declare class NgrokCreateTunnelService implements CreateTunnelService {
- private readonly logger;
- private endpoint;
- constructor(logger: Logger);
- establishTunnel({ port, tunnelConfigPath }: TunnelConfig): Promise<URL>;
- closeTunnel(): Promise<void>;
-}
//# sourceMappingURL=create-tunnel-service.d.ts.map
\ No newline at end of file
Modified:package/out/services/register-tunnel-service.d.ts
Index: package/out/services/register-tunnel-service.d.ts
===================================================================
--- package/out/services/register-tunnel-service.d.ts
+++ package/out/services/register-tunnel-service.d.ts
@@ -1,15 +1,13 @@
import { TunnelClient, TunnelDefinitions, TunnelSetup } from '../graphql';
-import { FeatureFlagService } from '@forge/cli-shared';
export interface RegisterTunnelService {
setupTunnel(appId: string, environmentKey: string): Promise<TunnelSetup>;
registerTunnels(appId: string, environmentKey: string, tunnelDefinitions: TunnelDefinitions): Promise<void>;
unregisterTunnels(appId: string, environmentKey: string): Promise<void>;
}
export declare class RegisterTunnelServiceImpl implements RegisterTunnelService {
private readonly tunnelClient;
- private readonly featureFlagService;
- constructor(tunnelClient: TunnelClient, featureFlagService: FeatureFlagService);
+ constructor(tunnelClient: TunnelClient);
private keepAliveHandler;
private keepAliveActive;
registerTunnels(appId: string, environmentKey: string, tunnelDefinitions: TunnelDefinitions): Promise<void>;
setupTunnel(appId: string, environmentKey: string): Promise<TunnelSetup>;
Modified:package/out/servers/resource-tunnel-server.d.ts
Index: package/out/servers/resource-tunnel-server.d.ts
===================================================================
--- package/out/servers/resource-tunnel-server.d.ts
+++ package/out/servers/resource-tunnel-server.d.ts
@@ -1,16 +1,18 @@
/// <reference types="node" resolution-mode="require"/>
+import { NextFunction, Request, Response } from 'express';
import { RequestHandler } from 'http-proxy-middleware';
import { Resource, Logger } from '@forge/cli-shared';
import { CSPDetails } from '@forge/csp';
-import type { Permissions, Remotes } from '@forge/manifest';
+import type { Permissions, Remotes, Translations } from '@forge/manifest';
export interface ResourceTunnelServerArgs extends Resource {
port: number;
host: string;
logger: Logger;
permissions: Permissions;
cspReporterServerPort: number;
remotes: Remotes;
+ i18nConfig?: Translations;
}
export declare abstract class ResourceTunnelServer {
protected readonly port: number;
protected readonly key: string;
@@ -39,6 +41,7 @@
protected getCspHeader: (existingCsp: CSPDetails) => string;
protected injectGlobalBridgeScript: (htmlContent: Buffer) => Buffer;
protected injectIframeResizerScript: (htmlContent: Buffer) => Buffer;
protected getCustomUIHtmlTransformMiddleware: (permissions: Permissions, remotes: Remotes) => RequestHandler;
+ protected getI18nResourcesMiddleware: (i18nConfig: Translations) => (req: Request, resp: Response, next: NextFunction) => Promise<void>;
}
//# sourceMappingURL=resource-tunnel-server.d.ts.map
\ No newline at end of file
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
@@ -8,9 +8,8 @@
export interface StartTunnelOptions {
port?: number;
host: string;
environmentKey: string;
- ngrokConfig: string | undefined;
resourcePortMap?: Record<string, number>;
}
export interface StartTunnelResult {
localPort: number;