npm package diff

Package: @forge/bundler

Versions: 6.1.4-next.6 - 6.1.4-next.7

Modified: package/out/metadata.js

Index: package/out/metadata.js
===================================================================
--- package/out/metadata.js
+++ package/out/metadata.js
@@ -7,88 +7,101 @@
 const parser = tslib_1.__importStar(require("@babel/parser"));
 const traverse_1 = tslib_1.__importDefault(require("@babel/traverse"));
 const text_1 = require("./text");
 const types_1 = require("./types");
-async function getMetadata(logger, files) {
-    const metadata = (0, types_1.emptyMetadata)();
-    const packageJson = await warnIfFailed(logger, async () => {
+class MetadataCollector {
+    logger;
+    metadata = (0, types_1.emptyMetadata)();
+    constructor(logger) {
+        this.logger = logger;
+    }
+    async processPackageJson() {
         try {
             await (0, promises_1.access)('package.json');
         }
         catch {
             return undefined;
         }
         const packageFile = await (0, promises_1.readFile)('package.json', 'utf8');
-        return JSON.parse(packageFile);
-    });
-    if (packageJson?.type === 'module') {
-        metadata.esm = true;
+        const packageJson = JSON.parse(packageFile);
+        if (packageJson.type === 'module') {
+            this.metadata.esm = true;
+        }
     }
-    await Promise.all(files.map((filePath) => warnIfFailed(logger, async () => processFile(metadata, filePath))));
-    return metadata;
-}
-exports.getMetadata = getMetadata;
-function packageFromImport(name) {
-    const parts = name.split('/');
-    if (parts.length === 0 || parts[0] === '') {
-        return '';
+    static packageFromImport(name) {
+        const parts = name.split('/');
+        if (parts.length === 0 || parts[0] === '') {
+            return '';
+        }
+        if (parts[0].startsWith('@')) {
+            return `${parts[0]}/${parts[1]}`;
+        }
+        if (parts[0].startsWith('node:')) {
+            return parts[0].substring(5);
+        }
+        return parts[0];
     }
-    if (parts[0].startsWith('@')) {
-        return `${parts[0]}/${parts[1]}`;
+    async processSourceFile(filePath) {
+        const ext = path_1.default.extname(filePath);
+        if (ext.match(/^\.[cm]?jsx?$/)) {
+            this.metadata.jsFiles++;
+        }
+        else if (ext.match(/^\.[cm]?tsx?$/)) {
+            this.metadata.tsFiles++;
+        }
+        else if (ext === '.json') {
+            return;
+        }
+        const source = await (0, promises_1.readFile)(filePath, 'utf8');
+        const ast = parser.parse(source, {
+            sourceType: 'module',
+            plugins: ['typescript', 'jsx']
+        });
+        (0, traverse_1.default)(ast, {
+            ImportDeclaration: ({ node }) => this.processImport(node)
+        });
     }
-    if (parts[0].startsWith('node:')) {
-        return parts[0].substring(5);
-    }
-    return parts[0];
-}
-async function processFile(metadata, filePath) {
-    const ext = path_1.default.extname(filePath);
-    if (ext.match(/^\.[cm]?jsx?$/)) {
-        metadata.jsFiles++;
-    }
-    else if (ext.match(/^\.[cm]?tsx?$/)) {
-        metadata.tsFiles++;
-    }
-    else if (ext === '.json') {
-        return;
-    }
-    const source = await (0, promises_1.readFile)(filePath, 'utf8');
-    const ast = parser.parse(source, {
-        sourceType: 'module',
-        plugins: ['typescript', 'jsx']
-    });
-    (0, traverse_1.default)(ast, {
-        ImportDeclaration: ({ node }) => {
-            const packageName = packageFromImport(node.source.value);
-            metadata.dependencies.add(packageName);
-            if (packageName.startsWith('@forge/')) {
-                for (const specifier of node.specifiers) {
-                    let member;
-                    switch (specifier.type) {
-                        case 'ImportDefaultSpecifier':
-                        case 'ImportNamespaceSpecifier':
-                            member = '*';
-                            break;
-                        case 'ImportSpecifier':
-                            switch (specifier.imported.type) {
-                                case 'Identifier':
-                                    member = specifier.imported.name;
-                                    break;
-                                case 'StringLiteral':
-                                    member = specifier.imported.value;
-                                    break;
-                            }
-                    }
-                    metadata.sdkImports.add(`${packageName}.${member}`);
+    processImport(node) {
+        const packageName = MetadataCollector.packageFromImport(node.source.value);
+        this.metadata.dependencies.add(packageName);
+        if (packageName.startsWith('@forge/')) {
+            for (const specifier of node.specifiers) {
+                let member;
+                switch (specifier.type) {
+                    case 'ImportDefaultSpecifier':
+                    case 'ImportNamespaceSpecifier':
+                        member = '*';
+                        break;
+                    case 'ImportSpecifier':
+                        switch (specifier.imported.type) {
+                            case 'Identifier':
+                                member = specifier.imported.name;
+                                break;
+                            case 'StringLiteral':
+                                member = specifier.imported.value;
+                                break;
+                        }
                 }
+                this.metadata.sdkImports.add(`${packageName}.${member}`);
             }
         }
-    });
-}
-async function warnIfFailed(logger, action) {
-    try {
-        return await action();
     }
-    catch (error) {
-        logger.warn(text_1.Text.metadataFailed(error));
+    async collect({ files }) {
+        await this.warnIfFailed(() => this.processPackageJson());
+        await Promise.all(files.map((filePath) => this.warnIfFailed(() => this.processSourceFile(filePath))));
+        return this.metadata;
     }
+    async warnIfFailed(action) {
+        try {
+            return await action();
+        }
+        catch (error) {
+            this.logger.debug(text_1.Text.metadataFailed(error));
+            this.metadata.errors++;
+        }
+    }
 }
+async function getMetadata(logger, files) {
+    const collector = new MetadataCollector(logger);
+    return collector.collect({ files });
+}
+exports.getMetadata = getMetadata;

Modified: package/out/types.js

Index: package/out/types.js
===================================================================
--- package/out/types.js
+++ package/out/types.js
@@ -7,9 +7,10 @@
         jsFiles: 0,
         tsFiles: 0,
         esm: false,
         dependencies: new Set(),
-        sdkImports: new Set()
+        sdkImports: new Set(),
+        errors: 0
     };
 }
 exports.emptyMetadata = emptyMetadata;
 function mergeMetadata(metadata1, metadata2) {
@@ -20,9 +21,10 @@
         jsFiles: metadata1.jsFiles + metadata2.jsFiles,
         tsFiles: metadata1.tsFiles + metadata2.tsFiles,
         esm: metadata1.esm || metadata2.esm,
         dependencies: new Set([...metadata1.dependencies, ...metadata2.dependencies]),
-        sdkImports: new Set([...metadata1.sdkImports, ...metadata2.sdkImports])
+        sdkImports: new Set([...metadata1.sdkImports, ...metadata2.sdkImports]),
+        errors: metadata1.errors + metadata2.errors
     };
 }
 exports.mergeMetadata = mergeMetadata;
 class BundlerError extends cli_shared_1.UserError {

Modified: package/package.json

Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@forge/bundler",
-  "version": "6.1.4-next.6",
+  "version": "6.1.4-next.7",
   "description": "Default bundler for Forge apps",
   "license": "SEE LICENSE IN LICENSE.txt",
   "author": "Atlassian",
   "main": "out/index.js",
@@ -19,8 +19,9 @@
     "@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/traverse": "^7.24.0",
+    "@babel/types": "^7.24.0",
     "@forge/cli-shared": "8.5.0-next.6",
     "@forge/i18n": "0.0.7",
     "@forge/lint": "5.11.0-next.6",
     "@forge/manifest": "10.4.0-next.3",

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

Index: package/out/metadata.d.ts.map
===================================================================
--- package/out/metadata.d.ts.map
+++ package/out/metadata.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAiB,MAAM,SAAS,CAAC;AASvE,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAqBjG"}
\ No newline at end of file
+{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAiB,MAAM,SAAS,CAAC;AAqJzD,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAG3F"}
\ No newline at end of file

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

Index: package/out/runtime.d.ts.map
===================================================================
--- package/out/runtime.d.ts.map
+++ package/out/runtime.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAqD,MAAM,mBAAmB,CAAC;AAGpG,OAAO,EACL,YAAY,EACZ,OAAO,EAMR,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAiB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAMpE,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AAoBtD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAsJD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EACpB,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,GACzB,OAAO,CAET"}
\ No newline at end of file
+{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAsB,MAAM,EAAiC,MAAM,mBAAmB,CAAC;AAG5G,OAAO,EAAE,OAAO,EAAkF,MAAM,SAAS,CAAC;AAGlH,OAAO,EAAiB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAMpE,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AAoBtD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAsJD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAEpH"}
\ 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,kBAAkB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,oBAAY,eAAe,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzB,CAAC;AAEF,wBAAgB,aAAa,IAAI,eAAe,CAQ/C;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,GAAG,eAAe,CAWrG;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,oBAAY,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAEvF,oBAAY,gBAAgB,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjD,oBAAY,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,oBAAY,WAAW,GAAG;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC,CAAC;AAEF,oBAAY,gBAAgB,GAAG,WAAW,GACxC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,GAAG;IACzC,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEJ,oBAAY,YAAY,GAAG;IACzB,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,eAAe,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;CAC1G,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,IAAI,IAAI,IAAI,CAAC;CACd;AAED,oBAAY,kBAAkB,GAAG,cAAc,GAAG;IAChD,MAAM,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,oBAAY,OAAO,GAAG;IACpB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAClD,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACjF,CAAC;AAEF,qBAAa,YAAa,SAAQ,SAAS;CAAG"}
\ No newline at end of file
+{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,oBAAY,eAAe,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,aAAa,IAAI,eAAe,CAS/C;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,GAAG,eAAe,CAYrG;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,oBAAY,gBAAgB,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjD,oBAAY,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,oBAAY,WAAW,GAAG;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC,CAAC;AAEF,oBAAY,gBAAgB,GAAG,WAAW,GACxC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,GAAG;IACzC,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEJ,oBAAY,YAAY,GAAG;IACzB,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,eAAe,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;CAC1G,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,IAAI,IAAI,IAAI,CAAC;CACd;AAED,oBAAY,kBAAkB,GAAG,cAAc,GAAG;IAChD,MAAM,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,oBAAY,OAAO,GAAG;IACpB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAClD,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACjF,CAAC;AAEF,qBAAa,YAAa,SAAQ,SAAS;CAAG"}
\ No newline at end of file

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

Index: package/out/typescript.d.ts.map
===================================================================
--- package/out/typescript.d.ts.map
+++ package/out/typescript.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../src/typescript.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAIpD,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AASlC,OAAO,EACL,OAAO,EACP,YAAY,EACZ,aAAa,EACb,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,SAAS,CAAC;AAGjB,aAAK,aAAa,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AA6B/D,8BAAsB,iBAAkB,YAAW,OAAO;IAC5C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;gBAApB,MAAM,EAAE,YAAY;IAEnD,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa;IAwB5E,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAWnD,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;cAUhC,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAiBlG,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IA6BjD,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA2DtF"}
\ No newline at end of file
+{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../src/typescript.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAIpD,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAIlC,OAAO,EAA4B,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAKrE,OAAO,EACL,OAAO,EACP,aAAa,EACb,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,SAAS,CAAC;AAGjB,aAAK,aAAa,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AA6B/D,8BAAsB,iBAAkB,YAAW,OAAO;IAC5C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;IAE7C,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa;IAwB5E,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAWnD,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;cAUhC,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAiBlG,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IA6BjD,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA2DtF"}
\ 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":"AAEA,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,EACL,OAAO,EACP,YAAY,EAEZ,aAAa,EACb,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,EAC7B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,GAAG,QAAQ,CAAC,GAAG,SAAS,GAC7E,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAkChC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,QAAQ,CAE3E;AAqBD,oBAAY,gBAAgB,GAAG,OAAO,CAAC,aAAa,GAAG;IAAE,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAEvF,8BAAsB,cAAe,YAAW,OAAO;IACzC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;gBAApB,MAAM,EAAE,YAAY;cAEnC,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC;IAkBjG,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAyB9C,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,MAAM,EAAE;cA0BtC,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAsB7E,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAE1D,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAKjD,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAsCtF"}
\ No newline at end of file
+{"version":3,"file":"webpack.d.ts","sourceRoot":"","sources":["../src/webpack.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,EAA4B,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,EACL,OAAO,EAEP,aAAa,EACb,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,EAC7B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,GAAG,QAAQ,CAAC,GAAG,SAAS,GAC7E,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAkChC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,QAAQ,CAE3E;AAqBD,oBAAY,gBAAgB,GAAG,OAAO,CAAC,aAAa,GAAG;IAAE,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAEvF,8BAAsB,cAAe,YAAW,OAAO;IACzC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;cAE7B,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC;IAkBjG,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAyB9C,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,MAAM,EAAE;cA0BtC,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAsB7E,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAE1D,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAKjD,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAsCtF"}
\ No newline at end of file

Modified: package/CHANGELOG.md

Large diffs are not rendered by default.

Modified: package/out/metadata.d.ts

Index: package/out/metadata.d.ts
===================================================================
--- package/out/metadata.d.ts
+++ package/out/metadata.d.ts
@@ -1,3 +1,4 @@
-import { BundleLogger, BundlerMetadata } from './types';
-export declare function getMetadata(logger: BundleLogger, files: string[]): Promise<BundlerMetadata>;
+import { Logger } from '@forge/cli-shared';
+import { BundlerMetadata } from './types';
+export declare function getMetadata(logger: Logger, files: string[]): Promise<BundlerMetadata>;
 //# sourceMappingURL=metadata.d.ts.map
\ No newline at end of file

Modified: package/out/runtime.d.ts

Index: package/out/runtime.d.ts
===================================================================
--- package/out/runtime.d.ts
+++ package/out/runtime.d.ts
@@ -1,7 +1,7 @@
-import { ConfigReader } from '@forge/cli-shared';
-import { BundleLogger, Bundler } from './types';
+import { ConfigReader, Logger } from '@forge/cli-shared';
+import { Bundler } from './types';
 import { WrapperProvider } from './wrapper-provider';
 export declare const NODE_RUNTIME_CODE_FILE = "__forge__.cjs";
 export declare function userCodePath(entryKey: string): string;
-export declare function getNodeBundler(logger: BundleLogger, wrapperProvider: WrapperProvider, configReader: ConfigReader): Bundler;
+export declare function getNodeBundler(logger: Logger, wrapperProvider: WrapperProvider, configReader: ConfigReader): Bundler;
 //# sourceMappingURL=runtime.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,21 +1,21 @@
-import { I18nResourceBundle, Logger, UserError } from '@forge/cli-shared';
+import { I18nResourceBundle, UserError } from '@forge/cli-shared';
 import { Translations } from '@forge/manifest';
 export declare type BundlerMetadata = {
     modules?: string[];
     jsFiles: number;
     tsFiles: number;
     esm: boolean;
     dependencies: Set<string>;
     sdkImports: Set<string>;
+    errors: number;
 };
 export declare function emptyMetadata(): BundlerMetadata;
 export declare function mergeMetadata(metadata1: BundlerMetadata, metadata2: BundlerMetadata): BundlerMetadata;
 export interface BundlerOutput {
     outputDir: string;
     metadata?: BundlerMetadata;
 }
-export declare type BundleLogger = Pick<Logger, 'trace' | 'debug' | 'info' | 'warn' | 'error'>;
 export declare type BundlerWatchMode = 'watch' | 'debug';
 export declare type EntryPoint = {
     name: string;
     path: string;

Modified: package/out/typescript.d.ts

Index: package/out/typescript.d.ts
===================================================================
--- package/out/typescript.d.ts
+++ package/out/typescript.d.ts
@@ -1,13 +1,14 @@
 /// <reference types="node" />
 /// <reference types="node" />
 import { ChildProcessByStdio } from 'child_process';
 import { Readable } from 'stream';
-import { Bundler, BundleLogger, BundlerOutput, BundlerArgs, BundlerWatch, BundlerWatchArgs, BundlerWatchOutput } from './types';
+import { Logger } from '@forge/cli-shared';
+import { Bundler, BundlerOutput, BundlerArgs, BundlerWatch, BundlerWatchArgs, BundlerWatchOutput } from './types';
 declare type OutputProcess = ChildProcessByStdio<null, Readable, null>;
 export declare abstract class TypeScriptBundler implements Bundler {
-    protected readonly logger: BundleLogger;
-    constructor(logger: BundleLogger);
+    protected readonly logger: Logger;
+    constructor(logger: Logger);
     protected runTypeScript(args: BundlerArgs, outputDir: string): OutputProcess;
     protected isListedFile(line: string): string | null;
     protected isAppFile(line: string): string | null;
     protected getResult(args: BundlerArgs, outputDir: string, output?: string): Promise<BundlerOutput>;

Modified: package/out/webpack.d.ts

Index: package/out/webpack.d.ts
===================================================================
--- package/out/webpack.d.ts
+++ package/out/webpack.d.ts
@@ -1,15 +1,16 @@
 import webpack from 'webpack';
+import { Logger } from '@forge/cli-shared';
 import { CommonOutputOptions } from './config/common';
-import { Bundler, BundleLogger, BundlerOutput, BundlerArgs, BundlerWatch, BundlerWatchArgs, BundlerWatchOutput } from './types';
-export declare function handleWebpackCompilationResult(logger: BundleLogger, err: Error | null | undefined, stats: Pick<webpack.Stats, 'hasErrors' | 'hasWarnings' | 'toJson'> | undefined): asserts stats is webpack.Stats;
+import { Bundler, BundlerOutput, BundlerArgs, BundlerWatch, BundlerWatchArgs, BundlerWatchOutput } from './types';
+export declare function handleWebpackCompilationResult(logger: Logger, err: Error | null | undefined, stats: Pick<webpack.Stats, 'hasErrors' | 'hasWarnings' | 'toJson'> | undefined): asserts stats is webpack.Stats;
 export declare function getCompiler(config: webpack.Configuration): webpack.Compiler;
 export declare type ConfigWithOutput = webpack.Configuration & {
     output: CommonOutputOptions;
 };
 export declare abstract class WebpackBundler implements Bundler {
-    protected readonly logger: BundleLogger;
-    constructor(logger: BundleLogger);
+    protected readonly logger: Logger;
+    constructor(logger: Logger);
     protected getOutput(config: ConfigWithOutput, stats: webpack.Stats): Promise<BundlerOutput>;
     protected isLocalModule(name: string): boolean;
     protected localModules(stats: webpack.Stats): string[];
     protected runCompiler(config: ConfigWithOutput): Promise<BundlerOutput>;