npm package diff

Package: @forge/cli

Versions: 12.0.0-next.9 - 12.0.0-next.15

File: package/out/service/tunnel-service.js

Index: package/out/service/tunnel-service.js
===================================================================
--- package/out/service/tunnel-service.js
+++ package/out/service/tunnel-service.js
@@ -1,34 +1,9 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.DockerTunnelService = exports.LocalTunnelService = exports.InProcessTunnelService = exports.InvalidDebugStartingPortNumber = exports.DebugArgumentNameMismatch = exports.FunctionHandlersMustBeDefinedInDebugMode = exports.IMAGE_NAME = exports.CONTAINER_NAME = void 0;
-const tslib_1 = require("tslib");
-const cross_spawn_1 = require("cross-spawn");
-const os_1 = tslib_1.__importDefault(require("os"));
-const path_1 = require("path");
-const portfinder_1 = require("portfinder");
-const semver_1 = require("semver");
+exports.InProcessTunnelService = exports.InvalidDebugStartingPortNumber = exports.DebugArgumentNameMismatch = exports.FunctionHandlersMustBeDefinedInDebugMode = void 0;
 const manifest_1 = require("@forge/manifest");
 const cli_shared_1 = require("@forge/cli-shared");
-const version_info_1 = require("../command-line/version-info");
-const DISABLE_TTY = process.env.DISABLE_TTY === 'true';
-exports.CONTAINER_NAME = `forge-tunnel-docker-${process.pid}`;
-const cliDetails = (0, version_info_1.getCLIDetails)();
-let versionTags;
-if (cliDetails?.version !== undefined) {
-    if (process.env.FORGE_IN_LOCAL_E2E === 'true') {
-        versionTags = ['e2e'];
-    }
-    else {
-        versionTags = (0, semver_1.prerelease)(cliDetails.version) || ['latest'];
-    }
-}
-else {
-    versionTags = ['latest'];
-}
-exports.IMAGE_NAME = process.env.FORGE_DEV_DOCKER_TUNNEL
-    ? 'local/forge-tunnel:test'
-    : `atlassian/forge-tunnel:${versionTags[0]}`;
 class FunctionHandlersMustBeDefinedInDebugMode extends cli_shared_1.UserError {
     constructor() {
         super(cli_shared_1.Text.tunnel.functionHandlersMustBeDefined);
     }
@@ -89,178 +64,5 @@
         }
     }
 }
 exports.InProcessTunnelService = InProcessTunnelService;
-class SandboxTunnelServiceBase extends TunnelServiceBase {
-    configFilePortFindingService;
-    cachedConfigService;
-    constructor(configFilePortFindingService, cachedConfigService) {
-        super(cachedConfigService);
-        this.configFilePortFindingService = configFilePortFindingService;
-        this.cachedConfigService = cachedConfigService;
-    }
-    async getTunnelProcessEnvironment(tunnelOptions, debugEnabled, { email, token }, port, cspReporterPort, resourcePorts) {
-        const graphqlGateway = (0, cli_shared_1.getGraphqlGateway)();
-        return [
-            { key: 'APP_FOLDER', value: '/app' },
-            { key: 'FORGE_EMAIL', value: email },
-            { key: 'FORGE_API_TOKEN', value: token },
-            { key: 'ENVIRONMENT_KEY', value: tunnelOptions.environment ?? 'default' },
-            { key: 'TUNNEL_INSPECTOR_ENABLED', value: (!!tunnelOptions.debug).toString() },
-            { key: 'FORGE_GRAPHQL_GATEWAY', value: graphqlGateway },
-            { key: 'VERBOSE_MODE', value: `${debugEnabled}` },
-            { key: 'CLI_DETAILS', value: JSON.stringify(cliDetails) },
-            ...this.getInspectorPortEnvironment(port),
-            ...this.getCspReporterPortEnvironment(cspReporterPort),
-            ...this.getResourcePortEnvironment(resourcePorts),
-            ...this.getUserEnvironmentVariables()
-        ];
-    }
-    getInspectorPortEnvironment(port) {
-        return [{ key: 'TUNNEL_INSPECTOR_PORT', value: port.toString() }];
-    }
-    getCspReporterPortEnvironment(cspReporterPort) {
-        if (cspReporterPort) {
-            return [{ key: 'CSP_REPORTER_PORT', value: cspReporterPort.toString() }];
-        }
-        return [];
-    }
-    getResourcePortEnvironment(resourcePorts) {
-        return [{ key: `RESOURCE_PORT_MAP`, value: JSON.stringify(resourcePorts) }];
-    }
-    getUserEnvironmentVariables() {
-        const vars = [];
-        Object.keys(process.env)
-            .filter((variable) => variable.startsWith('FORGE_USER_VAR_'))
-            .forEach((name) => {
-            vars.push({ key: name, value: process.env[name] ?? 'undefined' });
-        });
-        return vars;
-    }
-}
-class LocalTunnelService extends SandboxTunnelServiceBase {
-    async run(tunnelOptions, creds, debugEnabled, onError) {
-        const port = await (0, portfinder_1.getPortPromise)();
-        const resourcePorts = await this.configFilePortFindingService.findPorts();
-        const cspReporterPort = await this.configFilePortFindingService.findPortAfter(Object.values(resourcePorts));
-        const environment = await this.getTunnelProcessEnvironment(tunnelOptions, debugEnabled, creds, port, cspReporterPort, resourcePorts);
-        const env = this.formatEnvForLocalTunnel(environment);
-        const process = (0, cross_spawn_1.spawn)('forge-tunnel', [], {
-            stdio: 'inherit',
-            env: {
-                ...env,
-                FORGE_DEV_TUNNEL: 'true'
-            }
-        });
-        if (onError) {
-            process.on('error', onError);
-        }
-    }
-    formatEnvForLocalTunnel(environment) {
-        return Object.assign({}, {
-            PATH: process.env.PATH || '',
-            FORCE_COLOR: '1'
-        }, ...environment.map(({ key, value }) => ({ [key]: value })));
-    }
-}
-exports.LocalTunnelService = LocalTunnelService;
-class DockerTunnelService extends SandboxTunnelServiceBase {
-    dockerService;
-    analyticsService;
-    constructor(configFilePortFindingService, cachedConfigService, dockerService, analyticsService) {
-        super(configFilePortFindingService, cachedConfigService);
-        this.dockerService = dockerService;
-        this.analyticsService = analyticsService;
-    }
-    async run(tunnelOptions, creds, debugEnabled) {
-        await this.validateDockerVersion(creds, debugEnabled);
-        const startPort = 8000 + Math.round(Math.random() * 100);
-        const port = await (0, portfinder_1.getPortPromise)({ port: startPort });
-        const dockerOptions = await this.getCommonOptions();
-        const resourcePorts = await this.configFilePortFindingService.findPorts(port);
-        const cspReporterPort = await this.configFilePortFindingService.findPortAfter(Object.values(resourcePorts));
-        const environment = await this.getTunnelProcessEnvironment(tunnelOptions, debugEnabled, creds, port, cspReporterPort, resourcePorts);
-        const portOptions = this.getDockerPortOptions(port, resourcePorts, cspReporterPort);
-        const interactiveOptions = this.getInteractiveOptions();
-        const volumeOptions = await this.getVolumeOptions();
-        const env = this.formatEnvForDocker(environment);
-        const docker = this.dockerService.runContainer([
-            ...interactiveOptions,
-            ...volumeOptions,
-            ...portOptions,
-            ...dockerOptions,
-            ...env,
-            exports.IMAGE_NAME
-        ]);
-        docker.on('exit', () => this.analyticsService.reportTunnelClosed(creds));
-        docker.stderr?.on('data', async (error) => {
-            const errorMessage = error;
-            let errorJson;
-            try {
-                errorJson = JSON.parse(errorMessage);
-            }
-            catch (e) {
-            }
-            if (errorJson && errorJson.__tunnel_error__) {
-                const tunnelErrorDetails = errorJson;
-                await this.analyticsService.reportTunnelFailure(creds, tunnelErrorDetails.name, tunnelErrorDetails.attributes);
-            }
-            else {
-                process.stderr?.write(errorMessage);
-            }
-        });
-        if (docker.pid) {
-            this.dockerService.startCleanupWorker([docker.pid], exports.CONTAINER_NAME);
-        }
-    }
-    async bootstrapDocker() {
-        await this.dockerService.removeContainer(exports.CONTAINER_NAME);
-        if (!process.env.FORGE_DEV_DOCKER_TUNNEL) {
-            return this.dockerService.downloadImage(exports.IMAGE_NAME);
-        }
-    }
-    async validateDockerVersion(creds, debugEnabled) {
-        const version = await this.dockerService.getDockerVersion(debugEnabled);
-        this.analyticsService.reportDockerVersion(creds, version);
-    }
-    getDockerPortOptions(port, resourcePorts, cspReporterPort) {
-        const resourcePortOptions = (0, cli_shared_1.flatMap)(Object.values(resourcePorts), (resourcePort) => [
-            '-p',
-            `${resourcePort}:${resourcePort}`
-        ]);
-        const cspReporterPortOption = [];
-        if (cspReporterPort) {
-            cspReporterPortOption.push('-p', `${cspReporterPort}:${cspReporterPort}`);
-        }
-        const addHostOption = os_1.default.platform() === 'linux' ? ['--add-host', 'host.docker.internal:host-gateway'] : [];
-        return [`-p`, `${port}:${port}`, ...resourcePortOptions, ...addHostOption, ...cspReporterPortOption];
-    }
-    formatEnvForDocker(environment) {
-        return (0, cli_shared_1.flatMap)(environment, ({ key, value }) => ['--env', `${key}=${value}`]);
-    }
-    getInteractiveOptions() {
-        if (DISABLE_TTY) {
-            return [`-i`];
-        }
-        return [`-it`];
-    }
-    async getVolumeOptions() {
-        const options = [`-v=${process.cwd()}:/app:cached`];
-        if (process.env.FORGE_DEV_DOCKER_TUNNEL) {
-            const monorepoRoot = (0, path_1.join)(__dirname, '../../../..');
-            options.push(`-v=${monorepoRoot}:/monorepo:cached`);
-            options.push(`-v=${monorepoRoot}/node_modules/cloudflared/docker-bin:/monorepo/node_modules/cloudflared/bin`);
-        }
-        if (process.env.FORGE_TUNNEL_MOUNT_DIRECTORIES) {
-            const mounts = process.env.FORGE_TUNNEL_MOUNT_DIRECTORIES.split(',');
-            mounts.forEach((mount) => {
-                options.push(`-v=${mount}:cached`);
-            });
-        }
-        return options;
-    }
-    async getCommonOptions() {
-        return ['--rm', `--name`, exports.CONTAINER_NAME, '--platform', 'linux/amd64'];
-    }
-}
-exports.DockerTunnelService = DockerTunnelService;
 //# sourceMappingURL=tunnel-service.js.map
\ No newline at end of file