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.
main
ZauberNerd 2023-07-08 15:25:25 +02:00
parent ff9f3517ec
commit 0701303563
No known key found for this signature in database
GPG Key ID: 9B617FBFF79E4F60
4 changed files with 8 additions and 10 deletions

View File

@ -69,7 +69,6 @@
"@vitejs/plugin-react": "^4.0.2", "@vitejs/plugin-react": "^4.0.2",
"babel-plugin-formatjs": "^10.5.3", "babel-plugin-formatjs": "^10.5.3",
"typescript": "^4.9.5", "typescript": "^4.9.5",
"vite": "^4.4.1", "vite": "^4.4.1"
"vite-plugin-comlink": "^3.0.5"
} }
} }

View File

@ -1,3 +1,4 @@
import { expose } from "comlink";
import * as methods from "."; import * as methods from ".";
import { OpenAIMessage } from "../chat/types"; import { OpenAIMessage } from "../chat/types";
import { ChatHistoryTrimmer, ChatHistoryTrimmerOptions } from "./chat-history-trimmer"; import { ChatHistoryTrimmer, ChatHistoryTrimmerOptions } from "./chat-history-trimmer";
@ -13,4 +14,6 @@ export function countTokensForText(text: string) {
export function countTokensForMessages(messages: OpenAIMessage[]) { export function countTokensForMessages(messages: OpenAIMessage[]) {
return methods.countTokensForMessages(messages); return methods.countTokensForMessages(messages);
} }
expose({ runChatTrimmer, countTokensForText, countTokensForMessages });

View File

@ -1,10 +1,11 @@
import { wrap } from "comlink";
import { OpenAIMessage } from "../chat/types"; import { OpenAIMessage } from "../chat/types";
import type { ChatHistoryTrimmerOptions } from "./chat-history-trimmer"; import type { ChatHistoryTrimmerOptions } from "./chat-history-trimmer";
// @ts-ignore // @ts-ignore
import tokenizer from "./worker?worker&url"; import tokenizer from "./worker?worker&url";
const worker = new ComlinkWorker<typeof import("./worker")>( const worker = wrap<typeof import("./worker")>(
new URL(tokenizer, import.meta.url) new Worker(new URL(tokenizer, import.meta.url), { type: "module" })
); );
export async function runChatTrimmer( export async function runChatTrimmer(

View File

@ -1,6 +1,5 @@
import react from "@vitejs/plugin-react"; import react from "@vitejs/plugin-react";
import { defineConfig } from "vite"; import { defineConfig } from "vite";
import { comlink } from "vite-plugin-comlink";
export default defineConfig(() => { export default defineConfig(() => {
return { return {
@ -35,10 +34,6 @@ export default defineConfig(() => {
], ],
}, },
}), }),
comlink(),
], ],
worker: {
plugins: [comlink()],
},
}; };
}); });