npm package diff

Package: @forge/tunnel

Versions: 5.10.0-next.12 - 5.10.0-next.13

Modified: package/out/sandbox/node-sandbox.js

Index: package/out/sandbox/node-sandbox.js
===================================================================
--- package/out/sandbox/node-sandbox.js
+++ package/out/sandbox/node-sandbox.js
@@ -2,39 +2,58 @@
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.NodeSandbox = void 0;
 const tslib_1 = require("tslib");
 const child_process_1 = require("child_process");
-const path_1 = require("path");
+const path_1 = tslib_1.__importDefault(require("path"));
 const readline_1 = tslib_1.__importDefault(require("readline"));
 const uuid_1 = require("uuid");
 const runtime_1 = require("@forge/runtime");
-const RUNNER = (0, path_1.join)(__dirname, '..', '..', 'out', 'sandbox', 'sandbox-runner.js');
+const RUNNER = path_1.default.join(__dirname, '..', '..', 'out', 'sandbox', 'sandbox-runner.js');
 class NodeSandbox {
+    statsigService;
     name;
     process;
     callbacks;
-    constructor({ appPath, modName, handler, debugPort }) {
-        this.name = `${modName}.${handler}`;
-        const fileName = `${appPath}/${modName}.cjs`;
+    constructor({ appPath, modName, handler, debugPort }, statsigService) {
+        this.statsigService = statsigService;
+        const name = `${modName}.${handler}`;
+        this.name = name;
         this.callbacks = new Map();
-        this.process = (0, child_process_1.fork)(RUNNER, [fileName, handler], {
-            stdio: ['ignore', 'pipe', 2, 'ipc'],
-            env: {
-                _HANDLER: this.name,
-                FORGE_EFS_RUNTIME_PATH: appPath,
-                FORGE_CUSTOM_WRAPPER_FILE_NAME: '__forge_wrapper__.cjs'
-            },
-            execArgv: debugPort ? [`--inspect=0.0.0.0:${debugPort}`] : undefined
-        });
-        readline_1.default.createInterface(this.process.stdout).on('line', (line) => {
-            const message = JSON.parse(line);
-            this.handleOutput(message);
-        });
-        this.process.on('message', (message) => {
-            const requestId = message.requestId;
-            const result = message.result;
-            this.callbacks.get(requestId)?.(result);
-        });
+        this.process = (async () => {
+            const useSingleWrapper = await this.statsigService.packageSingleWrapper();
+            let fileName;
+            let handlerName;
+            let handlerEnv;
+            if (useSingleWrapper) {
+                fileName = path_1.default.join(appPath, '__forge__.js');
+                handlerName = 'main';
+                handlerEnv = '__forge__.main';
+            }
+            else {
+                fileName = path_1.default.join(appPath, `${modName}.cjs`);
+                handlerName = handler;
+                handlerEnv = `index.${handler}`;
+            }
+            const process = (0, child_process_1.fork)(RUNNER, [fileName, handlerName], {
+                stdio: ['ignore', 'pipe', 2, 'ipc'],
+                env: {
+                    _HANDLER: handlerEnv,
+                    FORGE_EFS_RUNTIME_PATH: appPath,
+                    FORGE_CUSTOM_WRAPPER_FILE_NAME: '__forge_wrapper__.cjs'
+                },
+                execArgv: debugPort ? [`--inspect=0.0.0.0:${debugPort}`] : undefined
+            });
+            readline_1.default.createInterface(process.stdout).on('line', (line) => {
+                const message = JSON.parse(line);
+                this.handleOutput(message);
+            });
+            process.on('message', (message) => {
+                const requestId = message.requestId;
+                const result = message.result;
+                this.callbacks.get(requestId)?.(result);
+            });
+            return process;
+        })();
     }
     handleOutput(output) {
         if (output.invocationId) {
             const p3LogEvent = output;
@@ -60,12 +79,12 @@
                 requestId,
                 deadline
             };
             const message = { lambdaEvent, tunnelContext };
-            this.process.send(message);
+            void this.process.then((process) => process.send(message));
         });
     }
     stop() {
-        this.process.kill();
+        void this.process.then((process) => process.kill());
     }
 }
 exports.NodeSandbox = NodeSandbox;

Modified: package/package.json

Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@forge/tunnel",
-  "version": "5.10.0-next.12",
+  "version": "5.10.0-next.13",
   "description": "Tunnel functionality for Forge CLI",
   "author": "Atlassian",
   "license": "SEE LICENSE IN LICENSE.txt",
   "main": "out/index.js",
@@ -10,10 +10,10 @@
     "clean": "rm -rf ./out && rm -f tsconfig.tsbuildinfo",
     "compile": "tsc -b -v"
   },
   "dependencies": {
-    "@forge/bundler": "4.21.0-next.12",
-    "@forge/cli-shared": "6.7.0-next.10",
+    "@forge/bundler": "4.21.0-next.13",
+    "@forge/cli-shared": "6.7.0-next.11",
     "@forge/csp": "3.6.2",
     "@forge/runtime": "5.10.7-next.0",
     "cloudflared": "^0.7.0",
     "chokidar": "^3.6.0",

Modified: package/out/sandbox/node-sandbox.d.ts.map

Index: package/out/sandbox/node-sandbox.d.ts.map
===================================================================
--- package/out/sandbox/node-sandbox.d.ts.map
+++ package/out/sandbox/node-sandbox.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"node-sandbox.d.ts","sourceRoot":"","sources":["../../src/sandbox/node-sandbox.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,SAAS,EAIV,MAAM,gBAAgB,CAAC;AAMxB,qBAAa,WAAY,YAAW,OAAO;IACzC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkD;gBAEhE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,aAAa;IA6BnE,OAAO,CAAC,YAAY;IAOd,OAAO,CACX,oBAAoB,EAAE,oBAAoB,EAC1C,gBAAgB,EAAE,aAAa,EAC/B,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,GAChC,OAAO,CAAC,gBAAgB,CAAC;IA+B5B,IAAI,IAAI,IAAI;CAGb"}
\ No newline at end of file
+{"version":3,"file":"node-sandbox.d.ts","sourceRoot":"","sources":["../../src/sandbox/node-sandbox.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,SAAS,EAIV,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,qBAAa,WAAY,YAAW,OAAO;IAOvC,OAAO,CAAC,QAAQ,CAAC,cAAc;IANjC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkD;gBAG1E,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,aAAa,EACtC,cAAc,EAAE,cAAc;IAmDjD,OAAO,CAAC,YAAY;IAOd,OAAO,CACX,oBAAoB,EAAE,oBAAoB,EAC1C,gBAAgB,EAAE,aAAa,EAC/B,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,GAChC,OAAO,CAAC,gBAAgB,CAAC;IA+B5B,IAAI,IAAI,IAAI;CAGb"}
\ No newline at end of file

Modified: package/CHANGELOG.md

Large diffs are not rendered by default.

Modified: package/out/sandbox/node-sandbox.d.ts

Index: package/out/sandbox/node-sandbox.d.ts
===================================================================
--- package/out/sandbox/node-sandbox.d.ts
+++ package/out/sandbox/node-sandbox.d.ts
@@ -1,10 +1,12 @@
 import { XenInvocationRequest, LimitsTracker, InvocationResult, Sandbox, SandboxConfig, Inspector } from '@forge/runtime';
+import { StatsigService } from '@forge/cli-shared';
 export declare class NodeSandbox implements Sandbox {
+    private readonly statsigService;
     readonly name: string;
-    private readonly process;
+    private process;
     private readonly callbacks;
-    constructor({ appPath, modName, handler, debugPort }: SandboxConfig);
+    constructor({ appPath, modName, handler, debugPort }: SandboxConfig, statsigService: StatsigService);
     private handleOutput;
     execute(xenInvocationRequest: XenInvocationRequest, invocationLimits: LimitsTracker, inspector?: Inspector | undefined): Promise<InvocationResult>;
     stop(): void;
 }