diff --git a/package.json b/package.json index d78ae9f..c733a27 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "@types/sharp": "^0.28.0", "babel-polyfill": "^6.26.0", "clooney": "^0.6.6", + "comlink-loader": "^2.0.0", "express": "^4.17.1", "fs-extra": "^9.1.0", "imghash": "^0.0.8", diff --git a/src/client/components/Import.tsx b/src/client/components/Import.tsx index f3c35d0..e3062f4 100644 --- a/src/client/components/Import.tsx +++ b/src/client/components/Import.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import _ from "lodash"; import { connect } from "react-redux"; import * as Comlink from "comlink"; -import ExpensiveProcessor from "worker-loader!../workers/extractCovers.worker"; +import ExpensiveProcessor from "comlink-loader!../workers/extractCovers.worker"; interface IProps { matches: unknown; diff --git a/src/client/types/index.d.ts b/src/client/types/index.d.ts index c33c05e..2ce23eb 100644 --- a/src/client/types/index.d.ts +++ b/src/client/types/index.d.ts @@ -9,12 +9,12 @@ declare module "*.png" { // export default ImportComicBooksWorker; // } -declare module "worker-loader!*" { - class WebpackWorker extends Worker { - constructor(); - } - export default WebpackWorker; -} +// declare module "worker-loader!*" { +// class WebpackWorker extends Worker { +// constructor(); +// } +// export default WebpackWorker; +// } declare module "*.jpg"; declare module "*.gif"; diff --git a/src/client/workers/extractCovers.worker.ts b/src/client/workers/extractCovers.worker.ts index b16d897..dd5d0b7 100644 --- a/src/client/workers/extractCovers.worker.ts +++ b/src/client/workers/extractCovers.worker.ts @@ -1,19 +1,3 @@ -// const worker: DedicatedWorkerGlobalScope = self as any; - -// worker.onmessage = ({ data }) => { -// if (data instanceof Array) { -// worker.postMessage(data.join(" ") + "!"); -// } -// }; - -import { expose } from "comlink"; - -class ExpensiveProcessor { - _foo: string; - /* ... async methods here ... */ - constructor() { - this._foo = "rishi"; - } -} - -expose(ExpensiveProcessor, self); +export async function greet(subject: string): string { + return `Hello, ${subject}!`; +} \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index 2ad5ea5..6a29964 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -13,9 +13,20 @@ module.exports = { devtool: "source-map", module: { rules: [ + // { + // test: /\.worker\.ts$/, + // use: { loader: "worker-loader" }, + // }, { - test: /\.worker\.ts$/, - use: { loader: "worker-loader" }, + test: /\.worker\.(js|ts)$/i, + use: [ + { + loader: "comlink-loader", + options: { + singleton: true, + }, + }, + ], }, { test: [/\.js?$/, /\.jsx?$/, /\.tsx?$/], diff --git a/yarn.lock b/yarn.lock index c1a13e8..bb5b1de 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3595,7 +3595,17 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -comlink@^4.3.0: +comlink-loader@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/comlink-loader/-/comlink-loader-2.0.0.tgz#a1f4b59a6bdb9b774f4d51dd90324d3844a0ee62" + integrity sha512-106/k0JSssSCo2QO4ucbgbyWsb2zAEOSXFAVH2A+EO8kOz3n2BkvmkToxsoo+SWKUIKy8qubhAOLCS5mpFUvHw== + dependencies: + comlink "^4.2.0" + loader-utils "^1.1.0" + slash "^3.0.0" + worker-loader "^2.0.0" + +comlink@^4.2.0, comlink@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/comlink/-/comlink-4.3.0.tgz#80b3366baccd87897dab3638ebfcfae28b2f87c7" integrity sha512-mu4KKKNuW8TvkfpW/H88HBPeILubBS6T94BdD1VWBXNXfiyqVtwUCVNO1GeNOBTsIswzsMjWlycYr+77F5b84g== @@ -7764,7 +7774,7 @@ loader-runner@^4.2.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== -loader-utils@^1.1.0, loader-utils@^1.4.0: +loader-utils@^1.0.0, loader-utils@^1.1.0, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -10522,6 +10532,14 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" +schema-utils@^0.4.0: + version "0.4.7" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" + integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" @@ -12483,6 +12501,14 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +worker-loader@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/worker-loader/-/worker-loader-2.0.0.tgz#45fda3ef76aca815771a89107399ee4119b430ac" + integrity sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw== + dependencies: + loader-utils "^1.0.0" + schema-utils "^0.4.0" + worker-loader@^3.0.8: version "3.0.8" resolved "https://registry.yarnpkg.com/worker-loader/-/worker-loader-3.0.8.tgz#5fc5cda4a3d3163d9c274a4e3a811ce8b60dbb37"