From a77a14978306b9144d98c4a05b519ac77075e3d9 Mon Sep 17 00:00:00 2001 From: OJ Kwon Date: Sat, 26 Jan 2019 00:06:03 -0800 Subject: [PATCH 1/3] fix(createmoduleloader): fix non treeshakable import --- src/createModuleLoader.ts | 18 ++---------------- src/loadAsmModule.ts | 2 -- src/loadModule.ts | 23 +++++++++++++++++++++-- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/createModuleLoader.ts b/src/createModuleLoader.ts index adfadca..2ee7bd2 100644 --- a/src/createModuleLoader.ts +++ b/src/createModuleLoader.ts @@ -20,24 +20,10 @@ const createModuleLoader = async ( log(`module loader configured`, { env, timeout }); - //tslint:disable-next-line:no-require-imports no-var-requires - const lookupBinary = locateBinary || ((_filePath: string) => require('./lib/hunspell.wasm')); - //https://github.com/kwonoj/docker-hunspell-wasm/issues/63 - //apply overridden environment values to custom patched hunspell preamble. - const baseModule = { ENVIRONMENT: env }; - //Build module object to construct wasm binary module via emscripten preamble. - //This allows to override default wasm binary resolution in preamble. - //By default, hunspell-asm overrides to direct require to binary on *browser* environment to allow bundler like webpack resolves it. - //On node, it relies on default resolution logic. - const overriddenModule = - env === ENVIRONMENT.NODE && !locateBinary - ? baseModule - : { - ...baseModule, - locateFile: (filePath: string) => (filePath.endsWith('.wasm') ? lookupBinary(filePath) : filePath) - }; + //apply overridden environment values to custom patched hunspell preamble. + const overriddenModule = { locateFile: locateBinary, ENVIRONMENT: env }; const moduleLoader = await getModuleLoader( (runtime: HunspellAsmModule) => hunspellLoader(runtime, env), diff --git a/src/loadAsmModule.ts b/src/loadAsmModule.ts index 09398db..836b1c1 100644 --- a/src/loadAsmModule.ts +++ b/src/loadAsmModule.ts @@ -9,7 +9,6 @@ import { log } from './util/logger'; * * @param [InitOptions] Options to initialize cld3 asm binary. * @param {number} [InitOptions.timeout] - timeout to wait wasm binary compilation & load. - * @param {string | object} [InitOptions.locateBinary] - custom resolution logic for wasm binary. * @param {ENVIRONMENT} [InitOptions.environment] For overriding running environment * It could be either remote endpoint url, or loader-returned object for bundler. Check examples/browser_* for references. * @@ -18,7 +17,6 @@ import { log } from './util/logger'; const loadAsmModule = async ( initOptions: Partial<{ timeout: number; - locateBinary: (filePath: string) => string | object; environment?: ENVIRONMENT; }> = {} ) => { diff --git a/src/loadModule.ts b/src/loadModule.ts index 5e8359b..a1bb9b1 100644 --- a/src/loadModule.ts +++ b/src/loadModule.ts @@ -1,4 +1,4 @@ -import { ENVIRONMENT } from 'emscripten-wasm-loader'; +import { ENVIRONMENT, isNode } from 'emscripten-wasm-loader'; import { createModuleLoader } from './createModuleLoader'; import { log } from './util/logger'; @@ -26,7 +26,26 @@ const loadModule = async ( //tslint:disable-next-line:no-require-imports no-var-requires const runtime = require(`./lib/hunspell`); - return createModuleLoader(initOptions, runtime); + const { locateBinary, environment } = initOptions; + const env = environment ? environment : isNode() ? ENVIRONMENT.NODE : ENVIRONMENT.WEB; + + //Override default wasm binary resolution in preamble if needed. + //By default, hunspell-asm overrides to direct require to binary on *browser* environment to allow bundler like webpack resolves it. + //On node, it relies on default resolution logic. + const lookupBinary = + env === ENVIRONMENT.NODE && !locateBinary + ? undefined + : locateBinary || + //tslint:disable-next-line:no-require-imports no-var-requires + ((filePath: string) => (filePath.endsWith('.wasm') ? require('./lib/hunspell.wasm') : filePath)); + + return createModuleLoader( + { + locateBinary: lookupBinary, + ...initOptions + }, + runtime + ); }; export { loadModule }; From c241c8d95479ed256584e77572289c2a8e252078 Mon Sep 17 00:00:00 2001 From: OJ Kwon Date: Sat, 26 Jan 2019 00:06:45 -0800 Subject: [PATCH 2/3] build(package): bump up version --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8624a99..2ab03a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "hunspell-asm", - "version": "2.0.0-beta.4", + "version": "2.0.0-beta.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 3430771..264c882 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hunspell-asm", - "version": "2.0.0-beta.4", + "version": "2.0.0-beta.5", "description": "WebAssembly based Javascript bindings for hunspell spellchecker", "main": "./dist/cjs/index.js", "module": "./dist/esm/index.js", From c3d2d1ed458b659f557a3dbc2c65460cbef36f2b Mon Sep 17 00:00:00 2001 From: OJ Kwon Date: Sat, 26 Jan 2019 00:07:04 -0800 Subject: [PATCH 3/3] build(release): release 2.0.0-beta.5 --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index be08ef6..a05dda4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ + +# [2.0.0-beta.5](https://github.com/kwonoj/hunspell-asm/compare/v2.0.0-beta.4...v2.0.0-beta.5) (2019-01-26) + + +### Bug Fixes + +* **createmoduleloader:** fix non treeshakable import ([a77a149](https://github.com/kwonoj/hunspell-asm/commit/a77a149)) + + + # [2.0.0-beta.4](https://github.com/kwonoj/hunspell-asm/compare/v2.0.0-beta.3...v2.0.0-beta.4) (2019-01-26)