From 293076710dcfcb02031202611d2d39a8ee7befc8 Mon Sep 17 00:00:00 2001 From: tsukino <0xtsukino@gmail.com> Date: Tue, 26 Dec 2023 03:08:21 -0800 Subject: [PATCH] feat: add basic virtual dom lib --- packages/web/src/state/node.ts | 2 +- packages/web/src/utils/misc.ts | 35 ++++++++++++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/packages/web/src/state/node.ts b/packages/web/src/state/node.ts index 85f41f3..169b763 100644 --- a/packages/web/src/state/node.ts +++ b/packages/web/src/state/node.ts @@ -1,6 +1,6 @@ import Store, { - ObservableMap, Observable, + ObservableMap, type StateOptions, } from '../../lib/state.ts'; import { Autism } from '@autismjs/protocol/src/services/browser.ts'; diff --git a/packages/web/src/utils/misc.ts b/packages/web/src/utils/misc.ts index 29c17e1..64ef89e 100644 --- a/packages/web/src/utils/misc.ts +++ b/packages/web/src/utils/misc.ts @@ -1,6 +1,5 @@ import dayjs from 'dayjs'; import relativeTime from 'dayjs/plugin/relativeTime'; -import console from 'console'; dayjs.extend(relativeTime); export function userId(pubkey?: string) { @@ -70,7 +69,6 @@ export function debounce(delay: number) { fn = rootArgs[2].value; } - console.log(rootArgs); return { configurable: true, enumerable: false, @@ -117,3 +115,36 @@ export function debounce(delay: number) { }; }; } + +export function perf(...rootArgs: any[]): any { + let fn: any; + let patchedFn: any; + + if (rootArgs[2]) { + fn = rootArgs[2].value; + } + + return { + configurable: true, + enumerable: false, + get() { + if (!patchedFn) { + patchedFn = async function (...args: any[]) { + const t0 = performance.now(); + // @ts-ignore + const res = await fn.call(this, ...args); + const t1 = performance.now(); + console.log( + `Execution time: ${t1 - t0} milliseconds (${rootArgs[1]})`, + ); + return res; + }; + } + return patchedFn; + }, + set(newFn: any) { + patchedFn = undefined; + fn = newFn; + }, + }; +}