Browse Source

Fix async ops on Node w/ ESM

Arjun Barrett 4 years ago
parent
commit
3a5537523f
4 changed files with 5 additions and 3 deletions
  1. 2 0
      CHANGELOG.md
  2. 1 1
      package.json
  3. 1 1
      scripts/rewriteBuilds.ts
  4. 1 1
      src/node-worker.ts

+ 2 - 0
CHANGELOG.md

@@ -1,3 +1,5 @@
+## 0.6.10
+- Fixed async operations on Node.js with native ESM
 ## 0.6.5
 ## 0.6.5
 - Fixed streams not recognizing final chunk
 - Fixed streams not recognizing final chunk
 - Fixed streaming UTF-8 decoder bug
 - Fixed streaming UTF-8 decoder bug

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "fflate",
   "name": "fflate",
-  "version": "0.6.9",
+  "version": "0.6.10",
   "description": "High performance (de)compression in an 8kB package",
   "description": "High performance (de)compression in an 8kB package",
   "main": "./lib/index.cjs",
   "main": "./lib/index.cjs",
   "module": "./esm/browser.js",
   "module": "./esm/browser.js",

+ 1 - 1
scripts/rewriteBuilds.ts

@@ -26,7 +26,7 @@ unlinkSync(join(libDir, 'worker.d.ts')), unlinkSync(join(libDir, 'node-worker.d.
 const workerImport = /import (.*) from '\.\/node-worker';/;
 const workerImport = /import (.*) from '\.\/node-worker';/;
 const workerRequire = /var (.*) = require\("\.\/node-worker"\);/;
 const workerRequire = /var (.*) = require\("\.\/node-worker"\);/;
 const defaultExport = /export default/;
 const defaultExport = /export default/;
-writeFileSync(join(esmDir, 'index.mjs'), esm.replace(workerImport, name => nwk.replace(defaultExport, `var ${name.slice(7, name.indexOf(' ', 8))} =`)));
+writeFileSync(join(esmDir, 'index.mjs'), "import { createRequire } from 'module';\nvar require = createRequire('/');\n" + esm.replace(workerImport, name => nwk.replace(defaultExport, `var ${name.slice(7, name.indexOf(' ', 8))} =`)));
 writeFileSync(join(esmDir, 'browser.js'), esm.replace(workerImport, name => wk.replace(defaultExport, `var ${name.slice(7, name.indexOf(' ', 8))} =`)));
 writeFileSync(join(esmDir, 'browser.js'), esm.replace(workerImport, name => wk.replace(defaultExport, `var ${name.slice(7, name.indexOf(' ', 8))} =`)));
 writeFileSync(join(libDir, 'node.cjs'), lib.replace(workerRequire, name => {
 writeFileSync(join(libDir, 'node.cjs'), lib.replace(workerRequire, name => {
   name = name.slice(4, name.indexOf(' ', 5));
   name = name.slice(4, name.indexOf(' ', 5));

+ 1 - 1
src/node-worker.ts

@@ -3,7 +3,7 @@ let Worker: typeof import('worker_threads').Worker;
 const workerAdd = ";var __w=require('worker_threads');__w.parentPort.on('message',function(m){onmessage({data:m})}),postMessage=function(m,t){__w.parentPort.postMessage(m,t)},close=process.exit;self=global";
 const workerAdd = ";var __w=require('worker_threads');__w.parentPort.on('message',function(m){onmessage({data:m})}),postMessage=function(m,t){__w.parentPort.postMessage(m,t)},close=process.exit;self=global";
 
 
 try {
 try {
-  Worker = /*#__PURE__*/require('worker_threads').Worker;
+  Worker = require('worker_threads').Worker;
 } catch(e) {
 } catch(e) {
 }
 }
 export default Worker ? <T>(c: string, _: number, msg: unknown, transfer: ArrayBuffer[], cb: (err: Error, msg: T) => void) => {
 export default Worker ? <T>(c: string, _: number, msg: unknown, transfer: ArrayBuffer[], cb: (err: Error, msg: T) => void) => {