npm package diff

Package: @forge/bundler

Versions: 4.19.0-next.13 - 4.19.0-next.14

Modified:package/out/config/common.js

Index: package/out/config/common.js
===================================================================
--- package/out/config/common.js
+++ package/out/config/common.js
@@ -1,27 +1,19 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.getCommonWebpackConfig = exports.geti18nRule = exports.getDevToolConfig = exports.resolveStubPath = exports.resolveModulePath = exports.getEntryPoints = void 0;
 const tslib_1 = require("tslib");
-const path_1 = require("path");
+const path_1 = tslib_1.__importDefault(require("path"));
 const webpack_1 = tslib_1.__importDefault(require("webpack"));
-const text_1 = require("../text");
 const cli_shared_1 = require("@forge/cli-shared");
 const i18n_1 = require("@forge/i18n");
+const text_1 = require("../text");
 const tsconfig_interactor_1 = require("../tsconfig-interactor");
 function getEntryPoints(handlers) {
-    const entryPointMap = new Map();
-    for (const { module, func } of handlers) {
-        if (!entryPointMap.has(module)) {
-            entryPointMap.set(module, []);
-        }
-        entryPointMap.get(module).push(func);
-    }
-    const currentDirectory = process.cwd();
-    return Array.from(entryPointMap.entries()).map(([module, functions]) => ({
+    const modules = new Set(handlers.map(({ module }) => module));
+    return Array.from(modules).map((module) => ({
         name: module,
-        path: (0, path_1.join)(currentDirectory, 'src', module),
-        functions
+        path: path_1.default.resolve('src', module)
     }));
 }
 exports.getEntryPoints = getEntryPoints;
 const resolveModulePath = (moduleName) => {
@@ -40,12 +32,12 @@
 };
 exports.getDevToolConfig = getDevToolConfig;
 const geti18nRule = (i18nConfig) => {
     const i18nResources = i18nConfig.resources || [];
-    const i18nResourcesMap = new Map(i18nResources.map(({ key, path }) => [(0, path_1.resolve)(path), key]));
+    const i18nResourcesMap = new Map(i18nResources.map(({ key, path: resource }) => [path_1.default.resolve(resource), key]));
     const getFilename = ({ module: { resource: i18nResourcePath } }) => {
         const i18nResourceKey = i18nResourcesMap.get(i18nResourcePath);
-        return (0, path_1.join)(i18n_1.I18N_BUNDLE_FOLDER_NAME, `${i18nResourceKey}.json`);
+        return path_1.default.join(i18n_1.I18N_BUNDLE_FOLDER_NAME, `${i18nResourceKey}.json`);
     };
     return {
         test: /\.json$/i,
         include: Array.from(i18nResourcesMap.keys()),
@@ -61,9 +53,9 @@
         throw new Error(text_1.Text.noExecutableFile);
     }
     const resolvedEntryPoints = {};
     for (const entrypoint of entrypoints) {
-        resolvedEntryPoints[entrypoint.name] = (0, path_1.resolve)(entrypoint.path);
+        resolvedEntryPoints[entrypoint.name] = path_1.default.resolve(entrypoint.path);
     }
     return {
         entry: resolvedEntryPoints,
         mode: 'production',
@@ -74,9 +66,9 @@
         output: {
             libraryTarget: 'commonjs',
             globalObject: 'this',
             filename: '[name].js',
-            path: '/'
+            path: config.outputDir
         },
         node: {
             __dirname: true
         },

Modified:package/out/index.js

Index: package/out/index.js
===================================================================
--- package/out/index.js
+++ package/out/index.js
@@ -1,14 +1,12 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.getSandboxedRuntimeBuildConfig = exports.LocalWrapperProvider = exports.getWrapperProvider = exports.getNodeRuntimeBuildConfig = exports.getNativeUiBuildConfig = exports.getEntryPoints = exports.runLinter = exports.handleWebpackCompilationResult = exports.getInMemoryBundle = exports.getCompiler = exports.watch = exports.nativeUiBundle = exports.getNodeBundler = exports.getSandboxBundler = void 0;
+exports.getSandboxedRuntimeBuildConfig = exports.LocalWrapperProvider = exports.getWrapperProvider = exports.getNodeRuntimeBuildConfig = exports.getNativeUiBuildConfig = exports.getEntryPoints = exports.runLinter = exports.handleWebpackCompilationResult = exports.getCompiler = exports.nativeUiBundle = exports.getNodeBundler = exports.getSandboxBundler = void 0;
 var webpack_1 = require("./webpack");
 Object.defineProperty(exports, "getSandboxBundler", { enumerable: true, get: function () { return webpack_1.getSandboxBundler; } });
 Object.defineProperty(exports, "getNodeBundler", { enumerable: true, get: function () { return webpack_1.getNodeBundler; } });
 Object.defineProperty(exports, "nativeUiBundle", { enumerable: true, get: function () { return webpack_1.nativeUiBundle; } });
-Object.defineProperty(exports, "watch", { enumerable: true, get: function () { return webpack_1.watch; } });
 Object.defineProperty(exports, "getCompiler", { enumerable: true, get: function () { return webpack_1.getCompiler; } });
-Object.defineProperty(exports, "getInMemoryBundle", { enumerable: true, get: function () { return webpack_1.getInMemoryBundle; } });
 Object.defineProperty(exports, "handleWebpackCompilationResult", { enumerable: true, get: function () { return webpack_1.handleWebpackCompilationResult; } });
 Object.defineProperty(exports, "runLinter", { enumerable: true, get: function () { return webpack_1.runLinter; } });
 var common_1 = require("./config/common");
 Object.defineProperty(exports, "getEntryPoints", { enumerable: true, get: function () { return common_1.getEntryPoints; } });

Modified:package/out/config/nativeui.js

Index: package/out/config/nativeui.js
===================================================================
--- package/out/config/nativeui.js
+++ package/out/config/nativeui.js
@@ -1,17 +1,17 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.getNativeUiBuildConfig = void 0;
 const tslib_1 = require("tslib");
-const path_1 = require("path");
-const webpack_bundle_analyzer_1 = require("webpack-bundle-analyzer");
+const path_1 = tslib_1.__importDefault(require("path"));
 const html_webpack_plugin_1 = tslib_1.__importDefault(require("html-webpack-plugin"));
-const tmp_1 = tslib_1.__importDefault(require("tmp"));
+const webpack_bundle_analyzer_1 = require("webpack-bundle-analyzer");
+const cli_shared_1 = require("@forge/cli-shared");
 const common_1 = require("./common");
 const getNativeUiBuildConfig = (entrypoints, i18nConfig) => {
     const resolvedEntryPoints = {};
     for (const entrypoint of entrypoints) {
-        resolvedEntryPoints[entrypoint.name] = (0, path_1.resolve)(entrypoint.path);
+        resolvedEntryPoints[entrypoint.name] = path_1.default.resolve(entrypoint.path);
     }
     return {
         entry: {
             ...resolvedEntryPoints
@@ -20,9 +20,9 @@
         mode: 'production',
         devtool: 'source-map',
         output: {
             filename: '[name].js',
-            path: tmp_1.default.dirSync().name,
+            path: (0, cli_shared_1.tmpDir)('native-ui'),
             publicPath: 'auto'
         },
         node: {
             __dirname: true

Modified:package/out/webpack.js

Index: package/out/webpack.js
===================================================================
--- package/out/webpack.js
+++ package/out/webpack.js
@@ -1,21 +1,17 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.nativeUiBundle = exports.getNodeBundler = exports.getSandboxBundler = exports.createBundler = exports.watch = exports.runLinter = exports.getCompiler = exports.getInMemoryBundle = exports.handleWebpackCompilationResult = void 0;
+exports.nativeUiBundle = exports.getNodeBundler = exports.getSandboxBundler = exports.createBundler = exports.runLinter = exports.getMetadata = exports.getCompiler = exports.handleWebpackCompilationResult = void 0;
 const tslib_1 = require("tslib");
-const memfs_1 = require("memfs");
-const webpack_1 = tslib_1.__importDefault(require("webpack"));
+const fs_1 = require("fs");
 const path_1 = tslib_1.__importDefault(require("path"));
-const text_1 = require("./text");
+const webpack_1 = tslib_1.__importDefault(require("webpack"));
 const cli_shared_1 = require("@forge/cli-shared");
 const lint_1 = require("@forge/lint");
-const sandbox_1 = require("./config/sandbox");
-const node_1 = require("./config/node");
 const nativeui_1 = require("./config/nativeui");
-const compilerOutputFileSystem = (0, memfs_1.createFsFromVolume)(new memfs_1.Volume());
-const readMemoryFileSync = (outputFileSystem, filePath) => {
-    return outputFileSystem.readFileSync('/' + filePath, { encoding: 'utf8' }).toString();
-};
+const node_1 = require("./config/node");
+const sandbox_1 = require("./config/sandbox");
+const text_1 = require("./text");
 function handleWebpackCompilationResult(logger, err, stats) {
     if (err) {
         throw err;
     }
@@ -41,47 +37,13 @@
         }
     }
 }
 exports.handleWebpackCompilationResult = handleWebpackCompilationResult;
-function tryReadSourceMapSync(fileSystem, sourceMap, fileName) {
-    const mapFileName = `${fileName}.map`;
-    try {
-        sourceMap[mapFileName] = readMemoryFileSync(fileSystem, mapFileName);
-    }
-    catch (e) {
-    }
+function getCompiler(config) {
+    return (0, webpack_1.default)(config);
 }
-function getInMemoryBundle(config, fileSystem) {
-    const output = {}, sourceMap = {};
-    const outputFileSystem = fileSystem || compilerOutputFileSystem;
-    const fileNamePattern = config.output?.filename ?? '[name].js';
-    for (const name in config.entry) {
-        const fileName = fileNamePattern.replace('[name]', name);
-        output[fileName] = readMemoryFileSync(outputFileSystem, fileName);
-        if (config.name === node_1.NODE_WEBPACK_CONFIG_NAME && name.startsWith(node_1.NODE_WEBPACK_USER_CODE_DIR + '/')) {
-            const wrapperName = name.slice(node_1.NODE_WEBPACK_USER_CODE_DIR.length + 1);
-            const wrapperFileName = `${wrapperName}.cjs`;
-            output[wrapperFileName] = readMemoryFileSync(outputFileSystem, wrapperFileName);
-            tryReadSourceMapSync(outputFileSystem, sourceMap, wrapperFileName);
-        }
-        tryReadSourceMapSync(outputFileSystem, sourceMap, fileName);
-    }
-    const metadata = {};
-    if (config.name === node_1.NODE_WEBPACK_CONFIG_NAME) {
-        metadata.nodeRuntimeVersion = readMemoryFileSync(outputFileSystem, node_1.NODE_RUNTIME_VERSION_FILE);
-    }
-    return { output, sourceMap, metadata };
-}
-exports.getInMemoryBundle = getInMemoryBundle;
-const getCompiler = (webpackConfig, options) => {
-    const compiler = (0, webpack_1.default)(webpackConfig);
-    if (!options?.writeToDisk) {
-        compiler.outputFileSystem = compilerOutputFileSystem;
-    }
-    return compiler;
-};
 exports.getCompiler = getCompiler;
-const getNodeModuleNames = (stats) => {
+function getNodeModuleNames(stats) {
     const { modules } = stats.toJson({ modules: true });
     if (modules) {
         const filteredModuleNames = new Set();
         modules
@@ -97,18 +59,20 @@
             }
         });
         return Array.from(filteredModuleNames);
     }
-};
-class Monitor {
-    watcher;
-    constructor(watcher) {
-        this.watcher = watcher;
+}
+function getMetadata(config, stats) {
+    const metadata = {};
+    if (stats) {
+        metadata.modules = getNodeModuleNames(stats);
     }
-    stop() {
-        this.watcher.close(() => null);
+    if (config.name === node_1.NODE_WEBPACK_CONFIG_NAME && config.output?.path) {
+        metadata.nodeRuntimeVersion = (0, fs_1.readFileSync)(path_1.default.join(config.output.path, node_1.NODE_RUNTIME_VERSION_FILE)).toString();
     }
+    return metadata;
 }
+exports.getMetadata = getMetadata;
 const runLinter = async (logger = { info: console.log }, fileSystemReader = new cli_shared_1.FileSystemReader(), fileSystemWriter = new cli_shared_1.FileSystemWriter()) => {
     logger.info(`\n${cli_shared_1.Text.tunnel.preBundleTask(cli_shared_1.Text.lint.running)}`);
     const exclude = [...(await (0, cli_shared_1.listGitIgnoreFiles)(fileSystemReader)), '.git', 'node_modules'];
     const configFile = new cli_shared_1.ConfigFile(fileSystemReader, fileSystemWriter);
@@ -134,54 +98,26 @@
         logger.info(cli_shared_1.Text.tunnel.lintFailed + '\n');
     }
 };
 exports.runLinter = runLinter;
-const watch = (logger, entryPoints, debugMode, callback, watchRun) => {
-    const config = (0, sandbox_1.getSandboxedRuntimeBuildConfig)(entryPoints, {
-        isWatchMode: true,
-        isDebugMode: debugMode,
-        appDirectory: process.cwd()
-    });
-    const compiler = (0, exports.getCompiler)(config);
-    if (typeof watchRun === 'function') {
-        compiler.hooks.watchRun.tapAsync('watchRun', (watchRunCompiler, watchRunCallback) => {
-            watchRun(watchRunCompiler, exports.runLinter, watchRunCallback);
-        });
-    }
-    const watcher = compiler.watch({ poll: 1000 }, (compilerError, stats) => {
-        try {
-            handleWebpackCompilationResult(logger, compilerError, stats);
-            callback(null, getInMemoryBundle(config));
-        }
-        catch (fileReadError) {
-            callback(fileReadError);
-        }
-    });
-    return new Monitor(watcher);
-};
-exports.watch = watch;
 function createBundler(getBuildConfig) {
     return (logger, appDirectory, endpoints) => {
-        const config = getBuildConfig(endpoints, { isWatchMode: false, appDirectory });
-        const compiler = (0, exports.getCompiler)(config);
+        const outputDir = (0, cli_shared_1.tmpDir)('dist');
+        const config = getBuildConfig(endpoints, { isWatchMode: false, appDirectory, outputDir });
+        const compiler = getCompiler(config);
         return new Promise((resolve, reject) => {
             compiler.run((compilerError, stats) => {
                 try {
                     handleWebpackCompilationResult(logger, compilerError, stats);
-                    const result = getInMemoryBundle(config);
                     compiler.close((closeError) => {
                         if (closeError) {
                             reject(closeError);
                         }
                     });
-                    result.metadata = {
-                        modules: getNodeModuleNames(stats),
-                        ...result.metadata
-                    };
-                    resolve(result);
+                    resolve({ outputDir, metadata: getMetadata(config, stats) });
                 }
-                catch (fileReadError) {
-                    reject(fileReadError);
+                catch (err) {
+                    reject(err);
                 }
             });
         });
     };
@@ -190,18 +126,16 @@
 const getSandboxBundler = () => createBundler(sandbox_1.getSandboxedRuntimeBuildConfig);
 exports.getSandboxBundler = getSandboxBundler;
 const getNodeBundler = (wrapperProvider) => createBundler((0, node_1.getNodeRuntimeBuildConfig)(wrapperProvider));
 exports.getNodeBundler = getNodeBundler;
-const nativeUiBundle = (logger, entrypoints, i18nConfig) => {
+const nativeUiBundle = (logger, appDirectory, entrypoints, i18nConfig) => {
     const config = (0, nativeui_1.getNativeUiBuildConfig)(entrypoints, i18nConfig);
-    const compiler = (0, exports.getCompiler)(config, { writeToDisk: true });
+    const compiler = getCompiler(config);
     return new Promise((resolve, reject) => {
         compiler.run((compilerError, stats) => {
             try {
                 handleWebpackCompilationResult(logger, compilerError, stats);
-                resolve({
-                    outputDir: config.output.path
-                });
+                resolve({ outputDir: config.output.path });
             }
             catch (err) {
                 reject(err);
             }

Modified:package/package.json

Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@forge/bundler",
-  "version": "4.19.0-next.13",
+  "version": "4.19.0-next.14",
   "description": "Default bundler for Forge apps",
   "license": "UNLICENSED",
   "author": "Atlassian",
   "main": "out/index.js",
@@ -18,14 +18,14 @@
     "@babel/plugin-transform-numeric-separator": "^7.23.4",
     "@babel/plugin-transform-optional-chaining": "^7.23.4",
     "@babel/plugin-transform-react-jsx": "^7.23.4",
     "@babel/preset-typescript": "^7.23.3",
-    "@forge/api": "3.9.2-next.1",
+    "@forge/api": "3.9.2-next.2",
     "@forge/babel-plugin-transform-ui": "1.1.18",
-    "@forge/cli-shared": "5.5.0-next.12",
-    "@forge/i18n": "0.0.1-next.11",
-    "@forge/lint": "5.3.3-next.12",
-    "@forge/manifest": "7.7.0-next.12",
+    "@forge/cli-shared": "5.5.0-next.13",
+    "@forge/i18n": "0.0.1-next.12",
+    "@forge/lint": "5.3.3-next.13",
+    "@forge/manifest": "7.7.0-next.13",
     "@forge/util": "1.4.4",
     "assert": "^2.1.0",
     "babel-loader": "^8.3.0",
     "browserify-zlib": "^0.2.0",

Modified:package/out/config/common.d.ts.map

Index: package/out/config/common.d.ts.map
===================================================================
--- package/out/config/common.d.ts.map
+++ package/out/config/common.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/config/common.ts"],"names":[],"mappings":";AACA,OAAgB,EAAE,aAAa,IAAI,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEjF,OAAO,EAAE,OAAO,EAAoB,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI/C,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,oBAAY,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,oBAAY,mBAAmB,GAAG,UAAU,GAAG;IAC7C,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,mBAAmB,EAAE,CAiBzE;AAED,eAAO,MAAM,iBAAiB,eAAgB,MAAM,KAAG,MAEtD,CAAC;AAEF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,eAAO,MAAM,gBAAgB,WAAY,aAAa,KAAG,MASxD,CAAC;AAEF,aAAK,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,aAAK,mBAAmB,GAAG,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAClE,oBAAY,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACpD,oBAAY,mBAAmB,GAAG,cAAc,CAAC,aAAa,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC,GAC9F,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC,GACrC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAElC,eAAO,MAAM,WAAW,eAAgB,YAAY;;;;;+DAIe;YAAE,QAAQ;gBAAE,QAAQ,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE;;CAalG,CAAC;AAEF,eAAO,MAAM,sBAAsB,gBAAiB,UAAU,EAAE,UAAU,aAAa,KAAG,mBAwGzF,CAAC"}
\ No newline at end of file
+{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/config/common.ts"],"names":[],"mappings":";AAEA,OAAgB,EAAE,aAAa,IAAI,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEjF,OAAO,EAAE,OAAO,EAAoB,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/C,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,oBAAY,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAOhE;AAED,eAAO,MAAM,iBAAiB,eAAgB,MAAM,KAAG,MAEtD,CAAC;AAEF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,eAAO,MAAM,gBAAgB,WAAY,aAAa,KAAG,MASxD,CAAC;AAEF,oBAAY,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5E,oBAAY,mBAAmB,GAAG,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;AAC5F,aAAK,mBAAmB,GAAG,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAClE,oBAAY,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACpD,oBAAY,mBAAmB,GAAG,cAAc,CAAC,aAAa,EAAE,QAAQ,GAAG,SAAS,CAAC,GACnF,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC,GACrC,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC,GACrC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAElC,eAAO,MAAM,WAAW,eAAgB,YAAY;;;;;+DAIe;YAAE,QAAQ;gBAAE,QAAQ,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE;;CAalG,CAAC;AAEF,eAAO,MAAM,sBAAsB,gBAAiB,UAAU,EAAE,UAAU,aAAa,KAAG,mBAwGzF,CAAC"}
\ No newline at end of file

Modified:package/out/index.d.ts.map

Index: package/out/index.d.ts.map
===================================================================
--- package/out/index.d.ts.map
+++ package/out/index.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,KAAK,EACL,WAAW,EACX,iBAAiB,EACjB,8BAA8B,EAC9B,SAAS,EACV,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC"}
\ No newline at end of file
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,WAAW,EACX,8BAA8B,EAC9B,SAAS,EACV,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC"}
\ No newline at end of file

Modified:package/out/config/nativeui.d.ts.map

Index: package/out/config/nativeui.d.ts.map
===================================================================
--- package/out/config/nativeui.d.ts.map
+++ package/out/config/nativeui.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"nativeui.d.ts","sourceRoot":"","sources":["../../src/config/nativeui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAKzD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAe,MAAM,UAAU,CAAC;AAEnD,eAAO,MAAM,sBAAsB,gBAAiB,UAAU,EAAE,eAAe,YAAY,KAAG,aAyE7F,CAAC"}
\ No newline at end of file
+{"version":3,"file":"nativeui.d.ts","sourceRoot":"","sources":["../../src/config/nativeui.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAIzD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAe,MAAM,UAAU,CAAC;AAExE,aAAK,cAAc,GAAG,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAE5E,eAAO,MAAM,sBAAsB,gBAAiB,UAAU,EAAE,eAAe,YAAY,KAAG,cAyE7F,CAAC"}
\ No newline at end of file

Modified:package/out/config/node.d.ts.map

Index: package/out/config/node.d.ts.map
===================================================================
--- package/out/config/node.d.ts.map
+++ package/out/config/node.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/config/node.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAA6C,MAAM,mBAAmB,CAAC;AAEtH,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EAGpB,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AACvD,eAAO,MAAM,0BAA0B,YAAY,CAAC;AACpD,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AAWxD,qBAAa,yBAA0B,SAAQ,SAAS;;CAIvD;AAED,qBAAa,mBAAoB,SAAQ,SAAS;gBACpC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAGhD;AAED,qBAAa,yBAA0B,SAAQ,SAAS;gBAC1C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS;CAG3D;AAED,oBAAY,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,qBAAqB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;CACjD;AAED,qBAAa,oBAAqB,YAAW,eAAe;IAExD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBADJ,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,MAAM;IAEzB,qBAAqB,IAAI,OAAO,CAAC,aAAa,CAAC;CAUtD;AAED,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,OAAO,CAAC,OAAO,CAA4B;IAC3C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;;YAKX,uBAAuB;IAS/B,qBAAqB,IAAI,OAAO,CAAC,aAAa,CAAC;CAuCtD;AAED,eAAO,MAAM,kBAAkB;sBAA8C,gBAAgB;mDAQ5F,CAAC;AAEF,eAAO,MAAM,yBAAyB,oBAClB,eAAe,mBACnB,mBAAmB,EAAE,UAAU,aAAa,KAAG,mBA4D5D,CAAC"}
\ No newline at end of file
+{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/config/node.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAA6C,MAAM,mBAAmB,CAAC;AAEtH,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,UAAU,EAA0C,MAAM,UAAU,CAAC;AAElH,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AACvD,eAAO,MAAM,0BAA0B,YAAY,CAAC;AACpD,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AAWxD,qBAAa,yBAA0B,SAAQ,SAAS;;CAIvD;AAED,qBAAa,mBAAoB,SAAQ,SAAS;gBACpC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;CAGhD;AAED,qBAAa,yBAA0B,SAAQ,SAAS;gBAC1C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS;CAG3D;AAED,oBAAY,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,qBAAqB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;CACjD;AAED,qBAAa,oBAAqB,YAAW,eAAe;IAExD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBADJ,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,MAAM;IAEzB,qBAAqB,IAAI,OAAO,CAAC,aAAa,CAAC;CAUtD;AAED,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,OAAO,CAAC,OAAO,CAA4B;IAC3C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;;YAKX,uBAAuB;IAS/B,qBAAqB,IAAI,OAAO,CAAC,aAAa,CAAC;CAuCtD;AAED,eAAO,MAAM,kBAAkB;sBAA8C,gBAAgB;mDAQ5F,CAAC;AAEF,eAAO,MAAM,yBAAyB,oBAClB,eAAe,mBACnB,UAAU,EAAE,UAAU,aAAa,KAAG,mBA4DnD,CAAC"}
\ No newline at end of file

Modified:package/out/types.d.ts.map

Index: package/out/types.d.ts.map
===================================================================
--- package/out/types.d.ts.map
+++ package/out/types.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAIvC,oBAAY,YAAY,GAAG;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAE1D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,QAAQ,CAAC,EAAE;QACT,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;CACH;AAED,oBAAY,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAEzD,oBAAY,OAAO,CAAC,EAAE,GAAG,UAAU,IAAI,CACrC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,EAAE,EAAE,EAClB,UAAU,CAAC,EAAE,YAAY,KACtB,OAAO,CAAC,aAAa,CAAC,CAAC;AAC5B,oBAAY,aAAa,GAAG,CAC1B,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,UAAU,EAAE,EACzB,UAAU,CAAC,EAAE,YAAY,KACtB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEpC,oBAAY,eAAe,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;AAClF,MAAM,WAAW,cAAc;IAC7B,IAAI,IAAI,IAAI,CAAC;CACd;AAED,oBAAY,QAAQ,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAEpE,oBAAY,OAAO,GAAG,CACpB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,UAAU,EAAE,EAC1B,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,eAAe,EACzB,QAAQ,CAAC,EAAE,QAAQ,KAChB,cAAc,CAAC"}
\ No newline at end of file
+{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,oBAAY,eAAe,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,oBAAY,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAEzD,oBAAY,OAAO,GAAG,CACpB,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,UAAU,EAAE,EAC1B,UAAU,CAAC,EAAE,YAAY,KACtB,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,MAAM,WAAW,cAAc;IAC7B,IAAI,IAAI,IAAI,CAAC;CACd"}
\ No newline at end of file

Modified:package/out/webpack.d.ts.map

Index: package/out/webpack.d.ts.map
===================================================================
--- package/out/webpack.d.ts.map
+++ package/out/webpack.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"webpack.d.ts","sourceRoot":"","sources":["../src/webpack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,GAAG,EAAU,MAAM,OAAO,CAAC;AACxD,OAAO,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAG5E,OAAO,EAAE,OAAO,EAAgB,OAAO,EAAkB,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrH,OAAO,EAEL,gBAAgB,EAGhB,gBAAgB,EAGjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAA2B,UAAU,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtG,OAAO,EAKL,eAAe,EAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,UAAU,EAAE,CAAC;AAQtB,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,EAC7B,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,SAAS,GAC/B,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAkChC;AAYD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,EAAE,UAAU,CAAC,EAAE,GAAG,GAAG,aAAa,CA6B9F;AAED,UAAU,eAAe;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,WAAW,kBAAmB,aAAa,YAAY,eAAe,KAAG,QAOrF,CAAC;AA6BF,eAAO,MAAM,SAAS,YAEZ,UAAU,+EAGjB,QAAQ,IAAI,CA+Bd,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,OAwBnB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAAE,SAAS,UAAU,GAAG,UAAU,EAC9D,cAAc,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,aAAa,KAAK,mBAAmB,GACvF,OAAO,CAAC,EAAE,CAAC,CA+Bb;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,OAA6D,CAAC;AACpG,eAAO,MAAM,cAAc,EAAE,CAAC,eAAe,EAAE,eAAe,KAAK,OAAO,CAAC,mBAAmB,CACnC,CAAC;AAE5D,eAAO,MAAM,cAAc,EAAE,aAsB5B,CAAC"}
\ No newline at end of file
+{"version":3,"file":"webpack.d.ts","sourceRoot":"","sources":["../src/webpack.ts"],"names":[],"mappings":"AAGA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAEL,gBAAgB,EAGhB,gBAAgB,EAIjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAA2B,UAAU,EAAE,MAAM,aAAa,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEjF,OAAO,EAIL,eAAe,EAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEjE,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,EAC7B,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,SAAS,GAC/B,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAkChC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,QAAQ,CAE3E;AAqBD,wBAAgB,WAAW,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,eAAe,CAY/F;AAED,eAAO,MAAM,SAAS,YAEZ,UAAU,+EAGjB,QAAQ,IAAI,CA+Bd,CAAC;AAEF,wBAAgB,aAAa,CAC3B,cAAc,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,aAAa,KAAK,mBAAmB,GAC/F,OAAO,CAyBT;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,OAA6D,CAAC;AACpG,eAAO,MAAM,cAAc,EAAE,CAAC,eAAe,EAAE,eAAe,KAAK,OACR,CAAC;AAE5D,eAAO,MAAM,cAAc,EAAE,OAqB5B,CAAC"}
\ No newline at end of file

Modified:package/CHANGELOG.md

too-big

Modified:package/out/config/common.d.ts

Index: package/out/config/common.d.ts
===================================================================
--- package/out/config/common.d.ts
+++ package/out/config/common.d.ts
@@ -5,24 +5,23 @@
 export interface ConfigBuilder {
     isWatchMode: boolean;
     isDebugMode?: boolean;
     appDirectory: string;
+    outputDir: string;
 }
 export declare type EntryPoint = {
     name: string;
     path: string;
 };
-export declare type FunctionsEntryPoint = EntryPoint & {
-    functions: string[];
-};
-export declare function getEntryPoints(handlers: Handler[]): FunctionsEntryPoint[];
+export declare function getEntryPoints(handlers: Handler[]): EntryPoint[];
 export declare const resolveModulePath: (moduleName: string) => string;
 export declare function resolveStubPath(stubName: string): string;
 export declare const getDevToolConfig: (config: ConfigBuilder) => string;
-declare type RequiredFields<T, F extends keyof T> = T & Required<Pick<T, F>>;
+export declare type RequiredFields<T, F extends keyof T> = T & Required<Pick<T, F>>;
+export declare type CommonOutputOptions = RequiredFields<Required<WebpackConfig>['output'], 'path'>;
 declare type CommonModuleOptions = RequiredFields<ModuleOptions, 'rules'>;
 export declare type WebpackEntries = Record<string, string>;
-export declare type CommonWebpackConfig = RequiredFields<WebpackConfig, 'module' | 'plugins' | 'output'> & Record<'module', CommonModuleOptions> & Record<'entry', WebpackEntries>;
+export declare type CommonWebpackConfig = RequiredFields<WebpackConfig, 'module' | 'plugins'> & Record<'output', CommonOutputOptions> & Record<'module', CommonModuleOptions> & Record<'entry', WebpackEntries>;
 export declare const geti18nRule: (i18nConfig: Translations) => {
     test: RegExp;
     include: string[];
     type: string;

Modified:package/out/index.d.ts

Index: package/out/index.d.ts
===================================================================
--- package/out/index.d.ts
+++ package/out/index.d.ts
@@ -1,7 +1,7 @@
-export { Bundler, InDiskBundler, Watcher, WatcherMonitor, BundlerOutput } from './types';
-export { getSandboxBundler, getNodeBundler, nativeUiBundle, watch, getCompiler, getInMemoryBundle, handleWebpackCompilationResult, runLinter } from './webpack';
-export { EntryPoint, FunctionsEntryPoint, getEntryPoints } from './config/common';
+export { Bundler, WatcherMonitor, BundlerOutput } from './types';
+export { getSandboxBundler, getNodeBundler, nativeUiBundle, getCompiler, handleWebpackCompilationResult, runLinter } from './webpack';
+export { EntryPoint, getEntryPoints } from './config/common';
 export { getNativeUiBuildConfig } from './config/nativeui';
 export { getNodeRuntimeBuildConfig, getWrapperProvider, LocalWrapperProvider } from './config/node';
 export { getSandboxedRuntimeBuildConfig } from './config/sandbox';
 //# sourceMappingURL=index.d.ts.map
\ No newline at end of file

Modified:package/out/config/nativeui.d.ts

Index: package/out/config/nativeui.d.ts
===================================================================
--- package/out/config/nativeui.d.ts
+++ package/out/config/nativeui.d.ts
@@ -1,5 +1,7 @@
 import { Configuration as WebpackConfig } from 'webpack';
 import { Translations } from '@forge/manifest';
-import { EntryPoint } from './common';
-export declare const getNativeUiBuildConfig: (entrypoints: EntryPoint[], i18nConfig?: Translations) => WebpackConfig;
+import { CommonOutputOptions, EntryPoint } from './common';
+declare type NativeUIConfig = WebpackConfig & Record<'output', CommonOutputOptions>;
+export declare const getNativeUiBuildConfig: (entrypoints: EntryPoint[], i18nConfig?: Translations) => NativeUIConfig;
+export {};
 //# sourceMappingURL=nativeui.d.ts.map
\ No newline at end of file

Modified:package/out/config/node.d.ts

Index: package/out/config/node.d.ts
===================================================================
--- package/out/config/node.d.ts
+++ package/out/config/node.d.ts
@@ -1,6 +1,6 @@
 import { BaseError, FileSystemReader, UserError } from '@forge/cli-shared';
-import { CommonWebpackConfig, ConfigBuilder, FunctionsEntryPoint } from './common';
+import { CommonWebpackConfig, ConfigBuilder, EntryPoint } from './common';
 export declare const NODE_WEBPACK_CONFIG_NAME = "node-runtime";
 export declare const NODE_WEBPACK_USER_CODE_DIR = "bundled";
 export declare const NODE_RUNTIME_VERSION_FILE = "runtime.json";
 export declare class LocalWrapperNotFoundError extends UserError {
@@ -34,6 +34,6 @@
 }
 export declare const getWrapperProvider: ({ fileSystemReader }: {
     fileSystemReader: FileSystemReader;
 }) => LocalWrapperProvider | NetworkWrapperProvider;
-export declare const getNodeRuntimeBuildConfig: (wrapperProvider: WrapperProvider) => (entrypoints: FunctionsEntryPoint[], config: ConfigBuilder) => CommonWebpackConfig;
+export declare const getNodeRuntimeBuildConfig: (wrapperProvider: WrapperProvider) => (entrypoints: EntryPoint[], config: ConfigBuilder) => CommonWebpackConfig;
 //# sourceMappingURL=node.d.ts.map
\ No newline at end of file

Modified:package/out/types.d.ts

Index: package/out/types.d.ts
===================================================================
--- package/out/types.d.ts
+++ package/out/types.d.ts
@@ -1,26 +1,17 @@
 import { Logger } from '@forge/cli-shared';
 import { Translations } from '@forge/manifest';
-import { Compiler } from 'webpack';
-import { EntryPoint } from './webpack';
-export declare type BundledFiles = {
-    [filename: string]: string;
+import { EntryPoint } from './config/common';
+export declare type BundlerMetadata = {
+    modules?: string[];
+    nodeRuntimeVersion?: string;
 };
 export interface BundlerOutput {
-    output: BundledFiles;
-    sourceMap?: BundledFiles;
-    metadata?: {
-        [key: string]: any;
-    };
+    outputDir: string;
+    metadata?: BundlerMetadata;
 }
 export declare type BundleLogger = Pick<Logger, 'info' | 'warn'>;
-export declare type Bundler<EP = EntryPoint> = (logger: BundleLogger, appDirectory: string, endpointPath: EP[], i18nConfig?: Translations) => Promise<BundlerOutput>;
-export declare type InDiskBundler = (logger: BundleLogger, entrypoints: EntryPoint[], i18nConfig?: Translations) => Promise<{
-    outputDir: string;
-}>;
-export declare type WatcherCallback = (err: Error | null, output?: BundlerOutput) => void;
+export declare type Bundler = (logger: BundleLogger, appDirectory: string, endpointPath: EntryPoint[], i18nConfig?: Translations) => Promise<BundlerOutput>;
 export interface WatcherMonitor {
     stop(): void;
 }
-export declare type WatchRun = (compiler: Compiler, ...args: any[]) => void;
-export declare type Watcher = (logger: Logger, endpointPath: EntryPoint[], isDebugMode: boolean, callback: WatcherCallback, watchRun?: WatchRun) => WatcherMonitor;
 //# sourceMappingURL=types.d.ts.map
\ No newline at end of file

Modified:package/out/webpack.d.ts

Index: package/out/webpack.d.ts
===================================================================
--- package/out/webpack.d.ts
+++ package/out/webpack.d.ts
@@ -1,21 +1,15 @@
-import { IFs } from 'memfs';
-import webpack, { Compiler, Configuration as WebpackConfig } from 'webpack';
-import { Bundler, Watcher, InDiskBundler, BundlerOutput, BundleLogger } from './types';
+import webpack from 'webpack';
 import { FileSystemReader, FileSystemWriter } from '@forge/cli-shared';
 import { LintLogger } from '@forge/lint';
-import { CommonWebpackConfig, ConfigBuilder, EntryPoint, FunctionsEntryPoint } from './config/common';
+import { CommonWebpackConfig, ConfigBuilder, EntryPoint } from './config/common';
 import { WrapperProvider } from './config/node';
-export { EntryPoint };
+import { Bundler, BundleLogger, BundlerMetadata } from './types';
 export declare function handleWebpackCompilationResult(logger: BundleLogger, err: Error | null | undefined, stats: webpack.Stats | undefined): asserts stats is webpack.Stats;
-export declare function getInMemoryBundle(config: CommonWebpackConfig, fileSystem?: IFs): BundlerOutput;
-interface CompilerOptions {
-    writeToDisk?: boolean;
-}
-export declare const getCompiler: (webpackConfig: WebpackConfig, options?: CompilerOptions) => Compiler;
+export declare function getCompiler(config: webpack.Configuration): webpack.Compiler;
+export declare function getMetadata(config: CommonWebpackConfig, stats?: webpack.Stats): BundlerMetadata;
 export declare const runLinter: (logger?: LintLogger, fileSystemReader?: FileSystemReader, fileSystemWriter?: FileSystemWriter) => Promise<void>;
-export declare const watch: Watcher;
-export declare function createBundler<EP extends EntryPoint = EntryPoint>(getBuildConfig: (entrypoints: EP[], configBuilder: ConfigBuilder) => CommonWebpackConfig): Bundler<EP>;
+export declare function createBundler(getBuildConfig: (entrypoints: EntryPoint[], configBuilder: ConfigBuilder) => CommonWebpackConfig): Bundler;
 export declare const getSandboxBundler: () => Bundler;
-export declare const getNodeBundler: (wrapperProvider: WrapperProvider) => Bundler<FunctionsEntryPoint>;
-export declare const nativeUiBundle: InDiskBundler;
+export declare const getNodeBundler: (wrapperProvider: WrapperProvider) => Bundler;
+export declare const nativeUiBundle: Bundler;
 //# sourceMappingURL=webpack.d.ts.map
\ No newline at end of file