UNPKG

gowm

Version:

Go Wasm Manager - Loader system for Go WebAssembly modules with GitHub repository support. Features intelligent auto-detection and enhanced memory management.

102 lines (85 loc) 3.35 kB
/** * GoWM - Browser-specific exports * * Browser-optimized version of GoWM for client-side applications. * Provides ES6 module exports and browser-compatible functionality. * * @author devbyben * @license MIT */ // Browser-specific implementation using unified system (function (global) { 'use strict'; // Check if we're in a module system (CommonJS) or browser global const isModule = typeof module !== 'undefined' && module.exports; const isES6 = typeof window !== 'undefined' && typeof window.GoWM === 'undefined'; // Import classes - adapt based on environment let GoWM, UnifiedWasmLoader, UnifiedWasmBridge; if (isModule) { // CommonJS environment (Node.js with browser bundle) GoWM = require('./core/gowm'); UnifiedWasmLoader = require('./loaders/unified-loader'); UnifiedWasmBridge = require('./bridges/unified-bridge'); } else { // Browser global environment - classes should be available GoWM = global.GoWM; UnifiedWasmLoader = global.UnifiedWasmLoader; UnifiedWasmBridge = global.UnifiedWasmBridge; } // Create main instance for browser const gowm = new GoWM(); // Browser-specific optimizations gowm.isBrowser = true; // Override loadFromFile to throw error in browser const originalLoadFromFile = gowm.loadFromFile; gowm.loadFromFile = function (filePath, options = {}) { throw new Error('loadFromFile is not available in browser environment. Use loadFromUrl or loadFromGitHub instead.'); }; // Export object const GoWMBrowser = { // Main instance default: gowm, // Classes GoWM, UnifiedWasmLoader, UnifiedWasmBridge, // Legacy class exports for backward compatibility WasmLoader: UnifiedWasmLoader, WasmBridge: UnifiedWasmBridge, // Convenience methods bound to instance load: gowm.load.bind(gowm), loadFromGitHub: gowm.loadFromGitHub.bind(gowm), loadFromUrl: gowm.loadFromUrl.bind(gowm), get: gowm.get.bind(gowm), unload: gowm.unload.bind(gowm), unloadAll: gowm.unloadAll.bind(gowm), listModules: gowm.listModules.bind(gowm), getStats: gowm.getStats.bind(gowm), isLoaded: gowm.isLoaded.bind(gowm), getTotalMemoryUsage: gowm.getTotalMemoryUsage.bind(gowm), testAll: gowm.testAll.bind(gowm), getHelp: gowm.getHelp.bind(gowm), // Version info version: '1.1.0-browser', // Create new instance create: () => new GoWM() }; // Export based on environment if (isModule) { // CommonJS export module.exports = GoWMBrowser; } else { // Browser global registration global.GoWM = gowm; global.WasmLoader = UnifiedWasmLoader; global.WasmBridge = UnifiedWasmBridge; global.GoWMBrowser = GoWMBrowser; // Also support ES6 imports if available if (typeof window !== 'undefined' && typeof window.define === 'function' && window.define.amd) { // AMD support window.define('gowm', [], function () { return GoWMBrowser; }); } } })(typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : this);