diff options
Diffstat (limited to 'src/crypto/emscLoader.js')
-rw-r--r-- | src/crypto/emscLoader.js | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/src/crypto/emscLoader.js b/src/crypto/emscLoader.js index ed8662818..7251a5984 100644 --- a/src/crypto/emscLoader.js +++ b/src/crypto/emscLoader.js @@ -24,6 +24,8 @@ * the right way to load the library. */ +let cachedLib = undefined; + /** * Load the taler emscripten lib. * @@ -31,6 +33,11 @@ * be globally available. Inside node, require is used. */ export function getLib() { + console.log("in getLib"); + if (cachedLib) { + console.log("lib is cached"); + return Promise.resolve({ lib: cachedLib }); + } if (typeof require !== "undefined") { // Make sure that TypeScript doesn't try // to check the taler-emscripten-lib. @@ -45,7 +52,8 @@ export function getLib() { const lib = indirectRequire("../../../emscripten/taler-emscripten-lib.js"); g.importScripts = savedImportScripts; if (lib) { - return lib; + cachedLib = lib; + return Promise.resolve({ lib: cachedLib }); } // When we're running as a webpack bundle, the above require might // have failed and returned 'undefined', so we try other ways to import. @@ -57,7 +65,22 @@ export function getLib() { if (!self.TalerEmscriptenLib) { throw Error("can't import taler emscripten lib"); } - return self.TalerEmscriptenLib + const locateFile = (path, scriptDir) => { + console.log("locating file", "path", path, "scriptDir", scriptDir); + // This is quite hacky and assumes that our scriptDir is dist/ + return scriptDir + "../emscripten/" + path; + }; + console.log("instantiating TalerEmscriptenLib"); + //const lib = self.TalerEmscriptenLib({ locateFile }); + const lib = self.TalerEmscriptenLib; + cachedLib = lib; + return Promise.resolve({ lib: lib }); + //return new Promise((resolve, reject) => { + // lib.then(mod => { + // console.log("emscripten module fully loaded"); + // resolve({ lib: mod }); + // }); + //}); } // Last resort, we don't have require, we're not running in a webworker. @@ -66,7 +89,7 @@ export function getLib() { if (typeof window !== "undefined") { if (window.TalerEmscriptenLib) { - return TalerEmscriptenLib; + return Promise.resolve(TalerEmscriptenLib); } throw Error("Looks like running in browser, but TalerEmscriptenLib is not defined"); } |