npm package diff

Package: @forge/bundler

Versions: 6.1.2-next.0-experimental-8a53773 - 6.1.2-next.2

File: package/out/webpack.js

Index: package/out/webpack.js
===================================================================
--- package/out/webpack.js
+++ package/out/webpack.js
@@ -1,16 +1,11 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.WebpackBundler = exports.getCompiler = exports.handleWebpackCompilationResult = void 0;
 const tslib_1 = require("tslib");
-const fs_1 = require("fs");
-const path_1 = tslib_1.__importDefault(require("path"));
-const parser = tslib_1.__importStar(require("@babel/parser"));
-const traverse_1 = tslib_1.__importDefault(require("@babel/traverse"));
 const webpack_1 = tslib_1.__importDefault(require("webpack"));
 const cli_shared_1 = require("@forge/cli-shared");
 const text_1 = require("./text");
-const types_1 = require("./types");
 function handleWebpackCompilationResult(logger, err, stats) {
     if (err) {
         throw err;
     }
@@ -40,113 +35,38 @@
 function getCompiler(config) {
     return (0, webpack_1.default)(config);
 }
 exports.getCompiler = getCompiler;
-function moduleFromPath(name) {
-    const depMatch = name.match(/^\.\/node_modules\/([^/]+)\/([^/]+)/);
-    if (depMatch) {
-        const moduleName = depMatch[1][0] === '@' ? `${depMatch[1]}/${depMatch[2]}` : depMatch[1];
-        return { type: 'dependency', package: moduleName };
-    }
-    const externalMatch = name.match(/^external "(?:node:)?([^:"]+)"$/);
-    if (externalMatch) {
-        return { type: 'dependency', package: externalMatch[1].split('/')[0] };
-    }
-    if (name.startsWith('webpack/runtime/')) {
-        return { type: 'internal' };
-    }
-    if (!name.includes('.js') && !name.includes('.ts')) {
-        throw new Error(`Unknown module type for ${JSON.stringify(name)}.`);
-    }
-    return { type: 'local', path: name };
-}
-function processModule(metadata, module) {
-    if (module.modules) {
-        for (const subModule of module.modules) {
-            processModule(metadata, subModule);
-        }
-        return;
-    }
-    if (!module.name) {
-        throw new Error('Module name is missing');
-    }
-    const packedModule = moduleFromPath(module.name);
-    const issuerModule = module.issuerName ? moduleFromPath(module.issuerName) : undefined;
-    if (packedModule.type === 'local') {
-        const ext = path_1.default.extname(packedModule.path);
-        if (ext.match(/^\.[cm]?jsx?$/)) {
-            metadata.jsFiles++;
-        }
-        else if (ext.match(/^\.[cm]?tsx?$/)) {
-            metadata.tsFiles++;
-        }
-        else if (ext === '.json') {
-            return;
-        }
-        const source = (0, fs_1.readFileSync)(packedModule.path, 'utf8');
-        const ast = parser.parse(source, {
-            sourceType: 'module',
-            plugins: ['typescript', 'jsx']
-        });
-        (0, traverse_1.default)(ast, {
-            ImportDeclaration: (path) => {
-                let from = path.node.source.value;
-                if (from.startsWith('@forge/')) {
-                    from = from.replace('@forge/', '');
-                    for (const specifier of path.node.specifiers) {
-                        let member;
-                        switch (specifier.type) {
-                            case 'ImportDefaultSpecifier':
-                                member = specifier.local.name;
-                                break;
-                            case 'ImportNamespaceSpecifier':
-                                member = specifier.local.name;
-                                break;
-                            case 'ImportSpecifier':
-                                switch (specifier.imported.type) {
-                                    case 'Identifier':
-                                        member = specifier.imported.name;
-                                        break;
-                                    case 'StringLiteral':
-                                        member = specifier.imported.value;
-                                        break;
-                                }
-                        }
-                        metadata.sdkImports.add(`${from}.${member}`);
-                    }
-                }
+function getNodeModuleNames(stats) {
+    const { modules } = stats.toJson({ modules: true });
+    if (modules) {
+        const filteredModuleNames = new Set();
+        modules
+            .map((m) => m.name || '')
+            .forEach((name) => {
+            const parts = name.match(/^\.\/node_modules\/([^/]+)\/([^/]+)/);
+            if (parts) {
+                const module = parts[1][0] === '@' ? `${parts[1]}/${parts[2]}` : parts[1];
+                filteredModuleNames.add(module);
             }
+            else if (name.includes('unsupported.js')) {
+                filteredModuleNames.add(name.slice(name.indexOf('?')));
+            }
         });
+        return Array.from(filteredModuleNames);
     }
-    if (issuerModule?.type === 'local' && packedModule.type === 'dependency') {
-        metadata.dependencies.add(packedModule.package);
-    }
 }
-function getMetadata(stats) {
-    const { modules } = stats.toJson({ modules: true });
-    const metadata = (0, types_1.emptyMetadata)();
-    for (const module of modules ?? []) {
-        processModule(metadata, module);
-    }
-    let packageJson;
-    try {
-        const packageFile = (0, fs_1.readFileSync)('package.json', 'utf8');
-        packageJson = JSON.parse(packageFile);
-    }
-    catch { }
-    if (packageJson?.type === 'module') {
-        metadata.esm = true;
-    }
-    return metadata;
-}
 class WebpackBundler {
     logger;
     constructor(logger) {
         this.logger = logger;
     }
     async getOutput(config, stats) {
         const outputDir = config.output.path;
-        const metadata = getMetadata(stats);
+        const metadata = {};
+        if (stats) {
+            metadata.modules = getNodeModuleNames(stats);
+        }
         return { outputDir, metadata };
     }
     async runCompiler(config) {
         const compiler = getCompiler(config);