@forge/cli 6.4.2-next.1 → 6.4.2-next.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/npm-shrinkwrap.json +3948 -71
- package/out/command-line/controller/tunnel-controller.d.ts +4 -2
- package/out/command-line/controller/tunnel-controller.d.ts.map +1 -1
- package/out/command-line/controller/tunnel-controller.js +6 -1
- package/out/command-line/dependency-injection.d.ts.map +1 -1
- package/out/command-line/dependency-injection.js +12 -3
- package/out/service/tunnel-service.d.ts +18 -5
- package/out/service/tunnel-service.d.ts.map +1 -1
- package/out/service/tunnel-service.js +42 -8
- package/package.json +4 -2
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { CommandLineUI, PersonalApiCredentialsValidated } from '@forge/cli-shared';
|
|
1
|
+
import { CommandLineUI, FeatureFlagReader, PersonalApiCredentialsValidated } from '@forge/cli-shared';
|
|
2
2
|
import { TunnelAnalyticsService } from '../../service/tunnel-analytics-service';
|
|
3
3
|
import { DockerTunnelService, TunnelOptions, TunnelService } from '../../service/tunnel-service';
|
|
4
4
|
import { TunnelView } from '../view/tunnel-view';
|
|
5
5
|
export declare class TunnelController {
|
|
6
6
|
private readonly analyticsService;
|
|
7
|
+
private readonly nodeTunnelService;
|
|
7
8
|
private readonly localTunnelService;
|
|
8
9
|
private readonly dockerTunnelService;
|
|
9
10
|
private readonly tunnelView;
|
|
10
|
-
|
|
11
|
+
private readonly featureFlags;
|
|
12
|
+
constructor(analyticsService: TunnelAnalyticsService, nodeTunnelService: TunnelService, localTunnelService: TunnelService, dockerTunnelService: DockerTunnelService, tunnelView: TunnelView, featureFlags: FeatureFlagReader);
|
|
11
13
|
run(tunnelOptions: TunnelOptions, ui: CommandLineUI): Promise<void>;
|
|
12
14
|
runDockerTunnel(tunnelOptions: TunnelOptions, creds: PersonalApiCredentialsValidated, debugEnabled: boolean): Promise<void>;
|
|
13
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/tunnel-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,
|
|
1
|
+
{"version":3,"file":"tunnel-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/tunnel-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,iBAAiB,EAGjB,+BAA+B,EAChC,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBALZ,gBAAgB,EAAE,sBAAsB,EACxC,iBAAiB,EAAE,aAAa,EAChC,kBAAkB,EAAE,aAAa,EACjC,mBAAmB,EAAE,mBAAmB,EACxC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,iBAAiB;IAGrC,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAenE,eAAe,CAC1B,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,+BAA+B,EACtC,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,IAAI,CAAC;CAyBjB"}
|
|
@@ -4,15 +4,20 @@ exports.TunnelController = void 0;
|
|
|
4
4
|
const cli_shared_1 = require("@forge/cli-shared");
|
|
5
5
|
const docker_service_1 = require("../../service/docker-service");
|
|
6
6
|
class TunnelController {
|
|
7
|
-
constructor(analyticsService, localTunnelService, dockerTunnelService, tunnelView) {
|
|
7
|
+
constructor(analyticsService, nodeTunnelService, localTunnelService, dockerTunnelService, tunnelView, featureFlags) {
|
|
8
8
|
this.analyticsService = analyticsService;
|
|
9
|
+
this.nodeTunnelService = nodeTunnelService;
|
|
9
10
|
this.localTunnelService = localTunnelService;
|
|
10
11
|
this.dockerTunnelService = dockerTunnelService;
|
|
11
12
|
this.tunnelView = tunnelView;
|
|
13
|
+
this.featureFlags = featureFlags;
|
|
12
14
|
}
|
|
13
15
|
async run(tunnelOptions, ui) {
|
|
14
16
|
const creds = await (0, cli_shared_1.getCredentialStore)(ui).getCredentials();
|
|
15
17
|
const errorCallback = this.tunnelView.getTunnelErrorHandler(cli_shared_1.exitOnError);
|
|
18
|
+
if (await this.featureFlags.isNodeRuntime()) {
|
|
19
|
+
return await this.nodeTunnelService.run(tunnelOptions, creds, ui.debugEnabled, errorCallback);
|
|
20
|
+
}
|
|
16
21
|
if (process.env.FORGE_DEV_TUNNEL) {
|
|
17
22
|
return await this.localTunnelService.run(tunnelOptions, creds, ui.debugEnabled, errorCallback);
|
|
18
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-injection.d.ts","sourceRoot":"","sources":["../../src/command-line/dependency-injection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dependency-injection.d.ts","sourceRoot":"","sources":["../../src/command-line/dependency-injection.ts"],"names":[],"mappings":"AAMA,OAAO,EASL,UAAU,EACV,aAAa,EAEb,UAAU,EAGV,gBAAgB,EAGhB,kBAAkB,EAUlB,YAAY,EACZ,aAAa,EAOb,kBAAkB,EAIlB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAc3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAML,0BAA0B,EAG3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,gCAAgC,EAAE,MAAM,sDAAsD,CAAC;AAExG,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAIlG,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAMhF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAQtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAIzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAWlE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAKhF,eAAO,MAAM,eAAe,eAAsB,UAAU,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiSvE,CAAC;AAGF,aAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3D,oBAAY,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC"}
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getDependencies = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const node_fetch_1 = tslib_1.__importDefault(require("node-fetch"));
|
|
5
7
|
const bundler_1 = require("@forge/bundler");
|
|
6
8
|
const cli_shared_1 = require("@forge/cli-shared");
|
|
7
|
-
const
|
|
9
|
+
const tunnel_1 = require("@forge/tunnel");
|
|
10
|
+
const runtime_1 = require("@forge/runtime");
|
|
8
11
|
const analytics_client_1 = require("../analytics-client/analytics-client");
|
|
9
12
|
const deploy_1 = require("../deploy");
|
|
10
13
|
const delete_environment_variable_1 = require("../environment-variables/delete-environment-variable");
|
|
@@ -153,13 +156,19 @@ const getDependencies = async (cliDetails) => {
|
|
|
153
156
|
const resourcePackagingService = new resource_packaging_service_1.ResourcePackagingService(archiverFactory, fileReader, process.cwd(), bridgeScriptService, iframeResizerScriptService);
|
|
154
157
|
const packageUploadDeployCommand = new deploy_1.PackageUploadDeployCommand(appPackager, archiveUploader, deployer, resourcePackagingService);
|
|
155
158
|
const deployController = new deploy_controller_1.DeployController(assertiveAppConfigReader, configFile, lintService, installationsService, migrationKeysService, deployView, packageUploadDeployCommand);
|
|
156
|
-
const
|
|
159
|
+
const createSandbox = async (cfg) => new runtime_1.NodeSandbox(cfg);
|
|
160
|
+
const functionHost = new tunnel_1.LocalFunctionHost(configFile, ui, null, createSandbox, fs_1.promises, featureFlagService);
|
|
161
|
+
const localInvocationService = new tunnel_1.LocalInvocationService(configFile, ui, runtime_1.notImplementedInspector);
|
|
162
|
+
const startTunnelCommand = new tunnel_1.StartTunnelCommand(assertiveAppConfigReader, new tunnel_1.LocalDevelopmentServer(localInvocationService, ui, configFile, featureFlagService), new tunnel_1.NgrokCreateTunnelService(ui), new tunnel_1.RegisterTunnelServiceImpl(new tunnel_1.TunnelGraphqlClient(graphQLClient)), functionHost, runtime_1.notImplementedInspector, ui, configFile);
|
|
163
|
+
const tunnelInteractor = new tunnel_1.TunnelInteractor(ui);
|
|
157
164
|
const configFilePortFindingService = new port_finding_service_1.ConfigFilePortFindingService(configFile);
|
|
165
|
+
const nodeTunnelService = new tunnel_service_1.InProcessTunnelService(ui, startTunnelCommand, tunnelInteractor, configFilePortFindingService);
|
|
166
|
+
const tunnelView = new tunnel_view_1.TunnelView(ui);
|
|
158
167
|
const localTunnelService = new tunnel_service_1.LocalTunnelService(configFilePortFindingService);
|
|
159
168
|
const dockerService = new docker_service_1.DockerService();
|
|
160
169
|
const tunnelAnalyticsService = new tunnel_analytics_service_1.TunnelAnalyticsService(analyticsClientReporter);
|
|
161
170
|
const dockerTunnelService = new tunnel_service_1.DockerTunnelService(configFilePortFindingService, dockerService, tunnelAnalyticsService);
|
|
162
|
-
const tunnelController = new tunnel_controller_1.TunnelController(tunnelAnalyticsService, localTunnelService, dockerTunnelService, tunnelView);
|
|
171
|
+
const tunnelController = new tunnel_controller_1.TunnelController(tunnelAnalyticsService, nodeTunnelService, localTunnelService, dockerTunnelService, tunnelView, featureFlagService);
|
|
163
172
|
const stubController = new stubController_1.StubController();
|
|
164
173
|
const prerequisitesController = new prerequisites_controller_1.PrerequisitesController(ui, featureFlagService, cliDetails);
|
|
165
174
|
return {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { HiddenError, PersonalApiCredentials, PersonalApiCredentialsValidated } from '@forge/cli-shared';
|
|
2
1
|
import { spawn } from 'cross-spawn';
|
|
2
|
+
import { HiddenError, PersonalApiCredentials, PersonalApiCredentialsValidated, UI } from '@forge/cli-shared';
|
|
3
|
+
import { StartTunnelCommand, TunnelInteractor } from '@forge/tunnel';
|
|
3
4
|
import { DockerService } from './docker-service';
|
|
4
5
|
import { ConfigFilePortFindingService } from './port-finding-service';
|
|
5
6
|
import { TunnelAnalyticsService } from './tunnel-analytics-service';
|
|
@@ -10,7 +11,18 @@ export declare const CONTAINER_NAME = "forge-tunnel-docker";
|
|
|
10
11
|
export declare const IMAGE_NAME: string;
|
|
11
12
|
export declare class HiddenDockerTunnelError extends HiddenError {
|
|
12
13
|
}
|
|
13
|
-
export declare
|
|
14
|
+
export declare type TunnelService = {
|
|
15
|
+
run(tunnelOptions: TunnelOptions, creds: PersonalApiCredentialsValidated, debugEnabled: boolean, onError?: (err: Error) => Promise<void>): Promise<void>;
|
|
16
|
+
};
|
|
17
|
+
export declare class InProcessTunnelService implements TunnelService {
|
|
18
|
+
private readonly ui;
|
|
19
|
+
private readonly startTunnelCommand;
|
|
20
|
+
private readonly tunnelInteractor;
|
|
21
|
+
private readonly configFilePortFindingService;
|
|
22
|
+
constructor(ui: UI, startTunnelCommand: StartTunnelCommand, tunnelInteractor: TunnelInteractor, configFilePortFindingService: ConfigFilePortFindingService);
|
|
23
|
+
run(tunnelOptions: TunnelOptions, creds: PersonalApiCredentials, debugEnabled: boolean, onError?: (err: Error) => Promise<void>): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
declare abstract class TunnelServiceBase implements TunnelService {
|
|
14
26
|
protected readonly configFilePortFindingService: ConfigFilePortFindingService;
|
|
15
27
|
constructor(configFilePortFindingService: ConfigFilePortFindingService);
|
|
16
28
|
abstract run(tunnelOptions: TunnelOptions, creds: PersonalApiCredentialsValidated, debugEnabled: boolean, onError?: (err: Error) => Promise<void>): Promise<void>;
|
|
@@ -27,10 +39,10 @@ export declare abstract class TunnelService {
|
|
|
27
39
|
protected getInteractiveOptions(): string[];
|
|
28
40
|
protected getVolumeOptions(): string[];
|
|
29
41
|
}
|
|
30
|
-
export declare class LocalTunnelService extends
|
|
31
|
-
run(tunnelOptions: TunnelOptions, creds: PersonalApiCredentials, debugEnabled: boolean, onError
|
|
42
|
+
export declare class LocalTunnelService extends TunnelServiceBase {
|
|
43
|
+
run(tunnelOptions: TunnelOptions, creds: PersonalApiCredentials, debugEnabled: boolean, onError?: (err: Error) => Promise<void>): Promise<void>;
|
|
32
44
|
}
|
|
33
|
-
export declare class DockerTunnelService extends
|
|
45
|
+
export declare class DockerTunnelService extends TunnelServiceBase {
|
|
34
46
|
private readonly dockerService;
|
|
35
47
|
private readonly analyticsService;
|
|
36
48
|
constructor(configFilePortFindingService: ConfigFilePortFindingService, dockerService: DockerService, analyticsService: TunnelAnalyticsService);
|
|
@@ -38,4 +50,5 @@ export declare class DockerTunnelService extends TunnelService {
|
|
|
38
50
|
bootstrapDocker(): Promise<ReturnType<typeof spawn>>;
|
|
39
51
|
private validateDockerVersion;
|
|
40
52
|
}
|
|
53
|
+
export {};
|
|
41
54
|
//# sourceMappingURL=tunnel-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-service.d.ts","sourceRoot":"","sources":["../../src/service/tunnel-service.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"tunnel-service.d.ts","sourceRoot":"","sources":["../../src/service/tunnel-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DockerTunnelService = exports.LocalTunnelService = exports.
|
|
3
|
+
exports.DockerTunnelService = exports.LocalTunnelService = exports.InProcessTunnelService = exports.HiddenDockerTunnelError = exports.IMAGE_NAME = exports.CONTAINER_NAME = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const cli_shared_1 = require("@forge/cli-shared");
|
|
6
5
|
const cross_spawn_1 = require("cross-spawn");
|
|
7
6
|
const os_1 = tslib_1.__importDefault(require("os"));
|
|
8
7
|
const path_1 = require("path");
|
|
9
8
|
const portfinder_1 = require("portfinder");
|
|
10
9
|
const semver_1 = require("semver");
|
|
10
|
+
const cli_shared_1 = require("@forge/cli-shared");
|
|
11
11
|
const version_info_1 = require("../command-line/version-info");
|
|
12
12
|
const DISABLE_TTY = process.env.DISABLE_TTY === 'true';
|
|
13
13
|
const CUR_WORK_APP_DIR = process.env.CUR_WORK_APP_DIR;
|
|
@@ -31,7 +31,39 @@ exports.IMAGE_NAME = process.env.FORGE_DEV_DOCKER_TUNNEL
|
|
|
31
31
|
class HiddenDockerTunnelError extends cli_shared_1.HiddenError {
|
|
32
32
|
}
|
|
33
33
|
exports.HiddenDockerTunnelError = HiddenDockerTunnelError;
|
|
34
|
-
class
|
|
34
|
+
class InProcessTunnelService {
|
|
35
|
+
constructor(ui, startTunnelCommand, tunnelInteractor, configFilePortFindingService) {
|
|
36
|
+
this.ui = ui;
|
|
37
|
+
this.startTunnelCommand = startTunnelCommand;
|
|
38
|
+
this.tunnelInteractor = tunnelInteractor;
|
|
39
|
+
this.configFilePortFindingService = configFilePortFindingService;
|
|
40
|
+
}
|
|
41
|
+
async run(tunnelOptions, creds, debugEnabled, onError) {
|
|
42
|
+
try {
|
|
43
|
+
this.ui.info(cli_shared_1.Text.tunnel.preamble);
|
|
44
|
+
this.ui.info(cli_shared_1.Text.ctrlC);
|
|
45
|
+
this.ui.emptyLine();
|
|
46
|
+
const resourcePortMap = await this.configFilePortFindingService.findPorts();
|
|
47
|
+
const tunnel = await this.startTunnelCommand.execute({
|
|
48
|
+
environmentKey: process.env.ENVIRONMENT_KEY || 'default',
|
|
49
|
+
resourcePortMap,
|
|
50
|
+
host: 'localhost'
|
|
51
|
+
});
|
|
52
|
+
const monitor = await this.tunnelInteractor.watchApp(tunnel);
|
|
53
|
+
await this.tunnelInteractor.handleUserExitEvent(tunnel.stopFunction, monitor);
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
if (onError) {
|
|
57
|
+
await onError(e);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
await (0, cli_shared_1.exitOnError)(this.ui, e);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.InProcessTunnelService = InProcessTunnelService;
|
|
66
|
+
class TunnelServiceBase {
|
|
35
67
|
constructor(configFilePortFindingService) {
|
|
36
68
|
this.configFilePortFindingService = configFilePortFindingService;
|
|
37
69
|
}
|
|
@@ -130,8 +162,7 @@ class TunnelService {
|
|
|
130
162
|
return options;
|
|
131
163
|
}
|
|
132
164
|
}
|
|
133
|
-
|
|
134
|
-
class LocalTunnelService extends TunnelService {
|
|
165
|
+
class LocalTunnelService extends TunnelServiceBase {
|
|
135
166
|
async run(tunnelOptions, creds, debugEnabled, onError) {
|
|
136
167
|
const dockerOptions = await this.getDockerOptions(tunnelOptions, debugEnabled, creds);
|
|
137
168
|
const port = await (0, portfinder_1.getPortPromise)();
|
|
@@ -146,14 +177,17 @@ class LocalTunnelService extends TunnelService {
|
|
|
146
177
|
...envVariablesOptions,
|
|
147
178
|
...resourcePortEnvVarOption
|
|
148
179
|
]));
|
|
149
|
-
(0, cross_spawn_1.spawn)('forge-tunnel', [], {
|
|
180
|
+
const process = (0, cross_spawn_1.spawn)('forge-tunnel', [], {
|
|
150
181
|
stdio: 'inherit',
|
|
151
182
|
env: Object.assign(Object.assign({}, env), { FORGE_DEV_TUNNEL: 'true' })
|
|
152
|
-
})
|
|
183
|
+
});
|
|
184
|
+
if (onError) {
|
|
185
|
+
process.on('error', onError);
|
|
186
|
+
}
|
|
153
187
|
}
|
|
154
188
|
}
|
|
155
189
|
exports.LocalTunnelService = LocalTunnelService;
|
|
156
|
-
class DockerTunnelService extends
|
|
190
|
+
class DockerTunnelService extends TunnelServiceBase {
|
|
157
191
|
constructor(configFilePortFindingService, dockerService, analyticsService) {
|
|
158
192
|
super(configFilePortFindingService);
|
|
159
193
|
this.dockerService = dockerService;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/cli",
|
|
3
|
-
"version": "6.4.2-next.
|
|
3
|
+
"version": "6.4.2-next.5",
|
|
4
4
|
"description": "A command line interface for managing Atlassian-hosted apps",
|
|
5
5
|
"author": "Atlassian",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -18,11 +18,13 @@
|
|
|
18
18
|
"postinstall": "node -e \"process.exitCode = fs.existsSync('./out/bin/postinstall.js')\" || node ./out/bin/postinstall.js"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@forge/bundler": "4.
|
|
21
|
+
"@forge/bundler": "4.4.0-next.3",
|
|
22
22
|
"@forge/cli-shared": "3.5.1",
|
|
23
23
|
"@forge/egress": "^1.1.2-next.0",
|
|
24
24
|
"@forge/lint": "3.2.14-next.0",
|
|
25
25
|
"@forge/manifest": "4.6.0",
|
|
26
|
+
"@forge/runtime": "4.0.1-next.0",
|
|
27
|
+
"@forge/tunnel": "3.1.0-next.4",
|
|
26
28
|
"@forge/util": "1.2.0",
|
|
27
29
|
"@sentry/node": "^7.29.0",
|
|
28
30
|
"ajv": "^6.12.5",
|