From 07013035632e0e6e30e175de21db5b58db5f9b4e Mon Sep 17 00:00:00 2001 From: ZauberNerd Date: Sat, 8 Jul 2023 15:25:25 +0200 Subject: [PATCH] Use comlink without vite-plugin-comlink For some reason the vite-plugin-comlink doesn't seem to work in this constellation. I tried to reproduce in a new vite project and there it did work. But also, the plugin does some horrible magic by replacing a non-existant constructor `ComLinkWorker()` with the `wrap()` method and then the only real benefit is, that we wouldn't need to write the `expose()` method in the worker. So for that reason I'm removing the plugin and using the comlink package directly. --- app/package.json | 3 +-- app/src/core/tokenizer/worker.ts | 5 ++++- app/src/core/tokenizer/wrapper.ts | 5 +++-- app/vite.config.js | 5 ----- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/app/package.json b/app/package.json index 4303d166..d0eb0e85 100644 --- a/app/package.json +++ b/app/package.json @@ -69,7 +69,6 @@ "@vitejs/plugin-react": "^4.0.2", "babel-plugin-formatjs": "^10.5.3", "typescript": "^4.9.5", - "vite": "^4.4.1", - "vite-plugin-comlink": "^3.0.5" + "vite": "^4.4.1" } } diff --git a/app/src/core/tokenizer/worker.ts b/app/src/core/tokenizer/worker.ts index 3fa81f3d..ce79750b 100644 --- a/app/src/core/tokenizer/worker.ts +++ b/app/src/core/tokenizer/worker.ts @@ -1,3 +1,4 @@ +import { expose } from "comlink"; import * as methods from "."; import { OpenAIMessage } from "../chat/types"; import { ChatHistoryTrimmer, ChatHistoryTrimmerOptions } from "./chat-history-trimmer"; @@ -13,4 +14,6 @@ export function countTokensForText(text: string) { export function countTokensForMessages(messages: OpenAIMessage[]) { return methods.countTokensForMessages(messages); -} \ No newline at end of file +} + +expose({ runChatTrimmer, countTokensForText, countTokensForMessages }); diff --git a/app/src/core/tokenizer/wrapper.ts b/app/src/core/tokenizer/wrapper.ts index 0e4ca963..daa93944 100644 --- a/app/src/core/tokenizer/wrapper.ts +++ b/app/src/core/tokenizer/wrapper.ts @@ -1,10 +1,11 @@ +import { wrap } from "comlink"; import { OpenAIMessage } from "../chat/types"; import type { ChatHistoryTrimmerOptions } from "./chat-history-trimmer"; // @ts-ignore import tokenizer from "./worker?worker&url"; -const worker = new ComlinkWorker( - new URL(tokenizer, import.meta.url) +const worker = wrap( + new Worker(new URL(tokenizer, import.meta.url), { type: "module" }) ); export async function runChatTrimmer( diff --git a/app/vite.config.js b/app/vite.config.js index e8aefa18..9b66e326 100644 --- a/app/vite.config.js +++ b/app/vite.config.js @@ -1,6 +1,5 @@ import react from "@vitejs/plugin-react"; import { defineConfig } from "vite"; -import { comlink } from "vite-plugin-comlink"; export default defineConfig(() => { return { @@ -35,10 +34,6 @@ export default defineConfig(() => { ], }, }), - comlink(), ], - worker: { - plugins: [comlink()], - }, }; });