@forge/tunnel 5.4.1-next.9 → 5.5.0-next.12
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 +27 -0
- package/out/command/start-tunnel-command.d.ts.map +1 -1
- package/out/command/start-tunnel-command.js +3 -2
- package/out/servers/custom-ui-tunnel-server.d.ts.map +1 -1
- package/out/servers/custom-ui-tunnel-server.js +4 -1
- package/out/servers/native-ui-tunnel-server.d.ts.map +1 -1
- package/out/servers/native-ui-tunnel-server.js +7 -1
- package/out/servers/resource-tunnel-server.d.ts +4 -1
- package/out/servers/resource-tunnel-server.d.ts.map +1 -1
- package/out/servers/resource-tunnel-server.js +14 -0
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# @forge/tunnel
|
|
2
2
|
|
|
3
|
+
## 5.5.0-next.12
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- @forge/bundler@4.19.0-next.12
|
|
8
|
+
- @forge/cli-shared@5.5.0-next.12
|
|
9
|
+
|
|
10
|
+
## 5.5.0-next.11
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- 33d77a4: Enable serving i18n resources in forge tunnel when `translations` section is defined in `manifest.yml`
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies [60a4b5b]
|
|
19
|
+
- Updated dependencies [1d04953]
|
|
20
|
+
- @forge/cli-shared@5.5.0-next.11
|
|
21
|
+
- @forge/bundler@4.19.0-next.11
|
|
22
|
+
|
|
23
|
+
## 5.4.1-next.10
|
|
24
|
+
|
|
25
|
+
### Patch Changes
|
|
26
|
+
|
|
27
|
+
- @forge/cli-shared@5.5.0-next.10
|
|
28
|
+
- @forge/bundler@4.18.1-next.10
|
|
29
|
+
|
|
3
30
|
## 5.4.1-next.9
|
|
4
31
|
|
|
5
32
|
### Patch Changes
|
|
@@ -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,
|
|
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"}
|
|
@@ -57,7 +57,7 @@ class StartTunnelCommand {
|
|
|
57
57
|
};
|
|
58
58
|
startResourceBasedTunnelsServers = async (resourceDetails, options) => {
|
|
59
59
|
const portMap = options.resourcePortMap ?? JSON.parse(process.env.RESOURCE_PORT_MAP ?? '{}');
|
|
60
|
-
const { permissions = {}, remotes = [] } = await this.configFile.readConfig();
|
|
60
|
+
const { permissions = {}, remotes = [], translations: i18nConfig } = await this.configFile.readConfig();
|
|
61
61
|
const availablePort = await (0, portfinder_1.getPortPromise)({ port: 4000 });
|
|
62
62
|
const cspReporterPort = process.env.CSP_REPORTER_PORT ? parseInt(process.env.CSP_REPORTER_PORT, 10) : availablePort;
|
|
63
63
|
if (resourceDetails.length === 0)
|
|
@@ -75,7 +75,8 @@ class StartTunnelCommand {
|
|
|
75
75
|
logger: this.logger,
|
|
76
76
|
cspReporterServerPort: cspReporterPort,
|
|
77
77
|
permissions,
|
|
78
|
-
remotes
|
|
78
|
+
remotes,
|
|
79
|
+
i18nConfig
|
|
79
80
|
});
|
|
80
81
|
return this.tunnelServers[key].start();
|
|
81
82
|
}));
|
|
@@ -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;
|
|
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;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"}
|
|
@@ -22,8 +22,11 @@ class CustomUITunnelServer extends resource_tunnel_server_1.ResourceTunnelServer
|
|
|
22
22
|
constructor(tunnelArgs) {
|
|
23
23
|
super(tunnelArgs);
|
|
24
24
|
this.tunnelArgs = tunnelArgs;
|
|
25
|
-
const { tunnel, permissions, remotes } = tunnelArgs;
|
|
25
|
+
const { tunnel, permissions, remotes, i18nConfig } = tunnelArgs;
|
|
26
26
|
this.app = (0, express_1.default)();
|
|
27
|
+
if (i18nConfig) {
|
|
28
|
+
this.app.use(this.getI18nResourcesMiddleware(i18nConfig));
|
|
29
|
+
}
|
|
27
30
|
this.app.use(this.getCustomUIHtmlTransformMiddleware(permissions, remotes));
|
|
28
31
|
if (tunnel) {
|
|
29
32
|
net_1.default.setDefaultAutoSelectFamily?.(true);
|
|
@@ -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;
|
|
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"}
|
|
@@ -13,7 +13,7 @@ class NativeUITunnelServer extends resource_tunnel_server_1.ResourceTunnelServer
|
|
|
13
13
|
constructor(tunnelArgs) {
|
|
14
14
|
super(tunnelArgs);
|
|
15
15
|
this.tunnelArgs = tunnelArgs;
|
|
16
|
-
const { key, path, port, permissions, remotes } = tunnelArgs;
|
|
16
|
+
const { key, path, port, permissions, remotes, i18nConfig } = tunnelArgs;
|
|
17
17
|
const entrypoint = { name: key, path, functions: [] };
|
|
18
18
|
const config = (0, bundler_1.getNativeUiBuildConfig)([entrypoint]);
|
|
19
19
|
const compiler = (0, bundler_1.getCompiler)({
|
|
@@ -37,6 +37,12 @@ class NativeUITunnelServer extends resource_tunnel_server_1.ResourceTunnelServer
|
|
|
37
37
|
name: 'custom-ui-scripts-middleware',
|
|
38
38
|
middleware: this.getCustomUIHtmlTransformMiddleware(permissions, remotes)
|
|
39
39
|
});
|
|
40
|
+
if (i18nConfig) {
|
|
41
|
+
middlewares.unshift({
|
|
42
|
+
name: 'i18n-resources-middleware',
|
|
43
|
+
middleware: this.getI18nResourcesMiddleware(i18nConfig)
|
|
44
|
+
});
|
|
45
|
+
}
|
|
40
46
|
middlewares.unshift({
|
|
41
47
|
name: 'logging-middleware',
|
|
42
48
|
middleware: (req, _, next) => {
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { NextFunction, Request, Response } from 'express';
|
|
2
3
|
import { RequestHandler } from 'http-proxy-middleware';
|
|
3
4
|
import { Resource, Logger } from '@forge/cli-shared';
|
|
4
5
|
import { CSPDetails } from '@forge/csp';
|
|
5
|
-
import type { Permissions, Remotes } from '@forge/manifest';
|
|
6
|
+
import type { Permissions, Remotes, Translations } from '@forge/manifest';
|
|
6
7
|
export interface ResourceTunnelServerArgs extends Resource {
|
|
7
8
|
port: number;
|
|
8
9
|
host: string;
|
|
@@ -10,6 +11,7 @@ export interface ResourceTunnelServerArgs extends Resource {
|
|
|
10
11
|
permissions: Permissions;
|
|
11
12
|
cspReporterServerPort: number;
|
|
12
13
|
remotes: Remotes;
|
|
14
|
+
i18nConfig?: Translations;
|
|
13
15
|
}
|
|
14
16
|
export declare abstract class ResourceTunnelServer {
|
|
15
17
|
protected readonly port: number;
|
|
@@ -40,5 +42,6 @@ export declare abstract class ResourceTunnelServer {
|
|
|
40
42
|
protected injectGlobalBridgeScript: (htmlContent: Buffer) => Buffer;
|
|
41
43
|
protected injectIframeResizerScript: (htmlContent: Buffer) => Buffer;
|
|
42
44
|
protected getCustomUIHtmlTransformMiddleware: (permissions: Permissions, remotes: Remotes) => RequestHandler;
|
|
45
|
+
protected getI18nResourcesMiddleware: (i18nConfig: Translations) => (req: Request, resp: Response, next: NextFunction) => Promise<void>;
|
|
43
46
|
}
|
|
44
47
|
//# sourceMappingURL=resource-tunnel-server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-tunnel-server.d.ts","sourceRoot":"","sources":["../../src/servers/resource-tunnel-server.ts"],"names":[],"mappings":";
|
|
1
|
+
{"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"}
|
|
@@ -56,5 +56,19 @@ class ResourceTunnelServer {
|
|
|
56
56
|
res.setHeader('Content-Security-Policy', this.getCspHeader(cspDetails));
|
|
57
57
|
return htmlContentWithBridgeScript;
|
|
58
58
|
});
|
|
59
|
+
getI18nResourcesMiddleware = (i18nConfig) => {
|
|
60
|
+
const i18nResourcesPathRegex = /^\/__LOCALES__\/(.+)\.json$/i;
|
|
61
|
+
const i18nResourceFileAccessor = new cli_shared_1.I18nResourceBundlingService().createFileAccessor(i18nConfig);
|
|
62
|
+
return async (req, resp, next) => {
|
|
63
|
+
const locale = i18nResourcesPathRegex.exec(req.path)?.[1];
|
|
64
|
+
if (!locale)
|
|
65
|
+
return next();
|
|
66
|
+
const file = await i18nResourceFileAccessor(locale);
|
|
67
|
+
if (!file)
|
|
68
|
+
return next();
|
|
69
|
+
resp.setHeader('Content-Type', 'application/json');
|
|
70
|
+
resp.status(200).send(file);
|
|
71
|
+
};
|
|
72
|
+
};
|
|
59
73
|
}
|
|
60
74
|
exports.ResourceTunnelServer = ResourceTunnelServer;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/tunnel",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.5.0-next.12",
|
|
4
4
|
"description": "Tunnel functionality for Forge CLI",
|
|
5
5
|
"author": "Atlassian",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"compile": "tsc -b -v"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@forge/bundler": "4.
|
|
15
|
-
"@forge/cli-shared": "5.5.0-next.
|
|
14
|
+
"@forge/bundler": "4.19.0-next.12",
|
|
15
|
+
"@forge/cli-shared": "5.5.0-next.12",
|
|
16
16
|
"@forge/csp": "3.3.0",
|
|
17
17
|
"@forge/runtime": "5.10.1",
|
|
18
18
|
"chokidar": "^3.6.0",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@atlassian/xen-test-util": "^4.2.0",
|
|
32
|
-
"@forge/manifest": "7.7.0-next.
|
|
32
|
+
"@forge/manifest": "7.7.0-next.12",
|
|
33
33
|
"@types/express": "^4.17.21",
|
|
34
34
|
"@types/jest": "^29.5.12",
|
|
35
35
|
"@types/node": "14.18.63",
|