diff --git a/import_map.json b/import_map.json index 4eec8367..01e97110 100644 --- a/import_map.json +++ b/import_map.json @@ -9,6 +9,6 @@ "preact-render-to-string": "https://esm.sh/*preact-render-to-string@6.1.0", "@preact/signals": "https://esm.sh/*@preact/signals@1.1.3", "@preact/signals-core": "https://esm.sh/@preact/signals-core@1.3.0", - "std/": "https://deno.land/std@0.182.0/" + "std/": "https://deno.land/std@0.211.0/" } } diff --git a/utils/pool.ts b/utils/pool.ts index bfd4f841..073fc808 100644 --- a/utils/pool.ts +++ b/utils/pool.ts @@ -1,15 +1,18 @@ -import { Deferred, deferred } from "std/async/deferred.ts"; - export const createPool = (resources: T[]) => { const taken = new Set(); const free = new Set(resources.map((_, i) => i)); - const waiting: Deferred[] = []; + const waiting: Array<{ + promise: Promise; + resolve: (value: T | PromiseLike) => void; + // deno-lint-ignore no-explicit-any + reject: (reason?: any) => void; + }> = []; return { acquire: () => { if (free.size === 0) { - const p = deferred(); + const p = Promise.withResolvers(); waiting.push(p); return p; diff --git a/utils/worker.ts b/utils/worker.ts index 7b467182..2cdceca8 100644 --- a/utils/worker.ts +++ b/utils/worker.ts @@ -1,6 +1,4 @@ // deno-lint-ignore-file no-explicit-any -import { Deferred, deferred } from "std/async/deferred.ts"; - /** * Deco labs: 🐁🐁🐁 * @@ -52,9 +50,13 @@ export const createWorker = ( url: URL, options?: WorkerOptions | undefined, ): Promise => { - const setup = deferred(); + const setup = Promise.withResolvers(); const worker = new Worker(new URL(import.meta.url), options); - const invokes = new Map>([]); + const invokes = new Map; + resolve: (value: any | PromiseLike) => void; + reject: (reason?: any) => void; + }>([]); worker.postMessage({ type: "setup", payload: url.href }); @@ -65,7 +67,7 @@ export const createWorker = ( case "setup:fulfill": { const mod = payload.reduce((acc, curr) => { acc[curr] = (...args: any[]) => { - const run = deferred(); + const run = Promise.withResolvers(); const id = crypto.randomUUID(); invokes.set(id, run); @@ -116,7 +118,7 @@ export const createWorker = ( } }); - return setup; + return setup.promise; }; if (IS_WORKER) {