Skip to content

Commit

Permalink
perf: cache everything
Browse files Browse the repository at this point in the history
  • Loading branch information
schoero committed Jan 29, 2025
1 parent 8c73683 commit 7adcbe4
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 8 deletions.
6 changes: 4 additions & 2 deletions src/tailwind/async/class-order.async.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ import type { GetClassOrderRequest } from "../api/interface.js";
import type { SupportedTailwindVersion } from "../utils/version.js";


let getClassOrderModule: typeof import("../v3/index.js") | typeof import("../v4/index.js");

runAsWorker(async (version: SupportedTailwindVersion, request: GetClassOrderRequest) => {
const { getClassOrder } = await import(`../v${version}/index.js`);
return getClassOrder(request);
getClassOrderModule ??= await import(`../v${version}/index.js`);
return getClassOrderModule.getClassOrder(request);
});
22 changes: 16 additions & 6 deletions src/tailwind/async/class-order.sync.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,32 @@ import type { GetClassOrderRequest, GetClassOrderResponse } from "../api/interfa
import type { SupportedTailwindVersion } from "../utils/version.js";


const getClassOrderSync = createSyncFn<(version: SupportedTailwindVersion, request: GetClassOrderRequest) => any>(resolve(getDirName(), "./class-order.async.js"), {
...env.NODE_ENV === "test" && { execArgv: ["--import", TsRunner.TSX] }
});
const workerPath = getWorkerPath();
const version = getTailwindcssVersion();
const workerOptions = getWorkerOptions();

const getClassOrderSync = createSyncFn<(version: SupportedTailwindVersion, request: GetClassOrderRequest) => any>(workerPath, workerOptions);

export function getClassOrder(request: GetClassOrderRequest): GetClassOrderResponse {

const version = getTailwindcssVersion();

export function getClassOrder(request: GetClassOrderRequest): GetClassOrderResponse {
if(!isSupportedVersion(version.major)){
throw new Error(`Unsupported Tailwind CSS version: ${version.major}`);
}

return getClassOrderSync(version.major, request) as GetClassOrderResponse;
}


function getWorkerPath() {
return resolve(getDirName(), "./class-order.async.js");
}

function getWorkerOptions() {
if(env.NODE_ENV === "test"){
return { execArgv: ["--import", TsRunner.TSX] };
}
}

function getDirName() {
// eslint-disable-next-line eslint-plugin-typescript/ban-ts-comment, eslint-plugin-typescript/prefer-ts-expect-error
// @ts-ignore
Expand Down

0 comments on commit 7adcbe4

Please sign in to comment.