From 18a0854f329d2ead349b14ffb9f677b056f93ec1 Mon Sep 17 00:00:00 2001 From: Brendan Mullins Date: Fri, 27 Mar 2026 09:44:54 +0100 Subject: [PATCH 01/15] refactor: update imports from vitest to vite-plus/test Migrate vitest imports to vite-plus/test across all test files and updated useBloc hooks to use vite-plus APIs. Also updated tracking-proxy, vitest configuration files, and setup files to use new vite-plus imports. --- .../blac-adapter/src/__tests__/adapter.edge-cases.test.ts | 2 +- packages/blac-adapter/src/__tests__/adapter.test.ts | 2 +- packages/blac-core/src/core/Cubit.edge-cases.test.ts | 2 +- packages/blac-core/src/core/Cubit.test.ts | 2 +- .../src/core/StateContainer.depend-edge-cases.test.ts | 2 +- packages/blac-core/src/core/StateContainer.depend.test.ts | 2 +- .../blac-core/src/core/StateContainer.disposal.test.ts | 2 +- .../src/core/StateContainer.hydration-edge-cases.test.ts | 2 +- .../src/core/StateContainer.lifecycle-events.test.ts | 2 +- .../blac-core/src/core/StateContainer.registry.test.ts | 2 +- .../src/core/StateContainer.subscriptions.test.ts | 4 ++-- packages/blac-core/src/core/StateContainer.test.ts | 2 +- .../src/core/StateContainerRegistry.events.test.ts | 2 +- .../src/core/StateContainerRegistry.lifecycle.test.ts | 2 +- .../src/core/StateContainerRegistry.refcount.test.ts | 2 +- .../src/decorators/blac-decorator.edge-cases.test.ts | 2 +- packages/blac-core/src/decorators/blac.test.ts | 2 +- .../blac-core/src/plugin/PluginManager.edge-cases.test.ts | 2 +- packages/blac-core/src/plugin/PluginManager.test.ts | 2 +- .../blac-core/src/tracking/dependency-tracker.test.ts | 2 +- packages/blac-core/src/tracking/getter-tracker.test.ts | 2 +- packages/blac-core/src/tracking/path-utils.test.ts | 2 +- .../src/tracking/proxy-tracker.edge-cases.test.ts | 2 +- packages/blac-core/src/tracking/tracking-proxy.ts | 8 ++++---- .../blac-core/src/tracking/tracking.edge-cases.test.ts | 2 +- packages/blac-core/src/utils/idGenerator.test.ts | 2 +- packages/blac-core/src/watch/watch.edge-cases.test.ts | 2 +- packages/blac-core/src/watch/watch.test.ts | 2 +- packages/blac-preact/src/__tests__/useBloc.test.tsx | 2 +- packages/blac-preact/src/useBloc.ts | 4 ++-- packages/blac-preact/vitest-setup.ts | 2 +- packages/blac-react/src/__tests__/config.test.tsx | 2 +- .../src/__tests__/useBloc.array-methods-tracking.test.tsx | 2 +- .../src/__tests__/useBloc.array-tracking.test.tsx | 2 +- .../__tests__/useBloc.auto-track-optimization.test.tsx | 2 +- .../src/__tests__/useBloc.cross-bloc-edge-cases.test.tsx | 2 +- .../src/__tests__/useBloc.cross-bloc-react.test.tsx | 2 +- .../src/__tests__/useBloc.dependencies.test.tsx | 2 +- .../src/__tests__/useBloc.devtools-layout.test.tsx | 2 +- .../src/__tests__/useBloc.filteredList.test.tsx | 2 +- .../src/__tests__/useBloc.getter-advanced.test.tsx | 2 +- .../src/__tests__/useBloc.getter-tracking.test.tsx | 2 +- .../src/__tests__/useBloc.instance-isolation.test.tsx | 2 +- .../src/__tests__/useBloc.instanceId-types.test.tsx | 2 +- .../src/__tests__/useBloc.lifecycle-edge-cases.test.tsx | 2 +- .../src/__tests__/useBloc.manual-deps-edge-cases.test.tsx | 2 +- .../src/__tests__/useBloc.messenger-reproduction.test.tsx | 2 +- .../src/__tests__/useBloc.proxyTracking.test.tsx | 2 +- .../src/__tests__/useBloc.shared-instances.test.tsx | 2 +- packages/blac-react/src/__tests__/useBloc.ssr.test.tsx | 2 +- packages/blac-react/src/__tests__/useBloc.stress.test.tsx | 2 +- packages/blac-react/src/__tests__/useBloc.test.tsx | 2 +- packages/blac-react/src/useBloc.ts | 4 ++-- packages/blac-react/vitest-setup.ts | 2 +- packages/blac-react/vitest.config.compiler.ts | 2 +- packages/blac-react/vitest.config.performance.ts | 2 +- packages/blac-react/vitest.d.ts | 2 +- .../src/plugin/DevToolsBrowserPlugin.test.ts | 2 +- 58 files changed, 64 insertions(+), 64 deletions(-) diff --git a/packages/blac-adapter/src/__tests__/adapter.edge-cases.test.ts b/packages/blac-adapter/src/__tests__/adapter.edge-cases.test.ts index defa652d..535fbd3b 100644 --- a/packages/blac-adapter/src/__tests__/adapter.edge-cases.test.ts +++ b/packages/blac-adapter/src/__tests__/adapter.edge-cases.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; +import { describe, it, expect, vi, beforeEach, afterEach } from 'vite-plus/test'; import { Cubit, clearAll } from '@blac/core'; import { createGetterState } from '@blac/core/tracking'; import { diff --git a/packages/blac-adapter/src/__tests__/adapter.test.ts b/packages/blac-adapter/src/__tests__/adapter.test.ts index de076646..d95a10dd 100644 --- a/packages/blac-adapter/src/__tests__/adapter.test.ts +++ b/packages/blac-adapter/src/__tests__/adapter.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; +import { describe, it, expect, vi, beforeEach, afterEach } from 'vite-plus/test'; import { Cubit, clearAll } from '@blac/core'; import { autoTrackInit, diff --git a/packages/blac-core/src/core/Cubit.edge-cases.test.ts b/packages/blac-core/src/core/Cubit.edge-cases.test.ts index 225faab5..8c954951 100644 --- a/packages/blac-core/src/core/Cubit.edge-cases.test.ts +++ b/packages/blac-core/src/core/Cubit.edge-cases.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach, vi } from 'vite-plus/test'; import { Cubit } from './Cubit'; import { clearAll } from '../registry'; diff --git a/packages/blac-core/src/core/Cubit.test.ts b/packages/blac-core/src/core/Cubit.test.ts index 44c6e140..5938ba7f 100644 --- a/packages/blac-core/src/core/Cubit.test.ts +++ b/packages/blac-core/src/core/Cubit.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach, vi } from 'vite-plus/test'; import { Cubit } from './Cubit'; import { StateContainer } from './StateContainer'; import { clearAll } from '../registry'; diff --git a/packages/blac-core/src/core/StateContainer.depend-edge-cases.test.ts b/packages/blac-core/src/core/StateContainer.depend-edge-cases.test.ts index a0c11fdf..12f796d4 100644 --- a/packages/blac-core/src/core/StateContainer.depend-edge-cases.test.ts +++ b/packages/blac-core/src/core/StateContainer.depend-edge-cases.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, afterEach } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach } from 'vite-plus/test'; import { Cubit } from './Cubit'; import { acquire, getRefCount, hasInstance, clearAll } from '../registry'; diff --git a/packages/blac-core/src/core/StateContainer.depend.test.ts b/packages/blac-core/src/core/StateContainer.depend.test.ts index 99057b05..daa55b40 100644 --- a/packages/blac-core/src/core/StateContainer.depend.test.ts +++ b/packages/blac-core/src/core/StateContainer.depend.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach } from 'vitest'; +import { describe, it, expect, beforeEach } from 'vite-plus/test'; import { Cubit } from './Cubit'; import { acquire, clearAll, hasInstance, getRefCount } from '../registry'; diff --git a/packages/blac-core/src/core/StateContainer.disposal.test.ts b/packages/blac-core/src/core/StateContainer.disposal.test.ts index 50248d23..35de33ac 100644 --- a/packages/blac-core/src/core/StateContainer.disposal.test.ts +++ b/packages/blac-core/src/core/StateContainer.disposal.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach, vi } from 'vite-plus/test'; import { StateContainer } from './StateContainer'; import { acquire, release, clearAll } from '../registry'; import { EMIT, UPDATE } from './symbols'; diff --git a/packages/blac-core/src/core/StateContainer.hydration-edge-cases.test.ts b/packages/blac-core/src/core/StateContainer.hydration-edge-cases.test.ts index abbbdf01..3e13bdb9 100644 --- a/packages/blac-core/src/core/StateContainer.hydration-edge-cases.test.ts +++ b/packages/blac-core/src/core/StateContainer.hydration-edge-cases.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, afterEach } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach } from 'vite-plus/test'; import { StateContainer } from './StateContainer'; import { clearAll } from '../registry'; import { EMIT } from './symbols'; diff --git a/packages/blac-core/src/core/StateContainer.lifecycle-events.test.ts b/packages/blac-core/src/core/StateContainer.lifecycle-events.test.ts index 5b55dc35..cb9d7210 100644 --- a/packages/blac-core/src/core/StateContainer.lifecycle-events.test.ts +++ b/packages/blac-core/src/core/StateContainer.lifecycle-events.test.ts @@ -2,7 +2,7 @@ * Test to verify lifecycle events are emitted correctly for DevTools integration */ -import { describe, it, expect, beforeEach, vi } from 'vitest'; +import { describe, it, expect, beforeEach, vi } from 'vite-plus/test'; import { Cubit } from './Cubit'; import { acquire, release, clearAll, getRegistry } from '../registry'; diff --git a/packages/blac-core/src/core/StateContainer.registry.test.ts b/packages/blac-core/src/core/StateContainer.registry.test.ts index f2d89bd0..e88994f3 100644 --- a/packages/blac-core/src/core/StateContainer.registry.test.ts +++ b/packages/blac-core/src/core/StateContainer.registry.test.ts @@ -2,7 +2,7 @@ * Tests for StateContainer Registry Features */ -import { describe, it, expect, beforeEach } from 'vitest'; +import { describe, it, expect, beforeEach } from 'vite-plus/test'; import { StateContainer } from './StateContainer'; import { acquire, diff --git a/packages/blac-core/src/core/StateContainer.subscriptions.test.ts b/packages/blac-core/src/core/StateContainer.subscriptions.test.ts index edc69352..c23fff1c 100644 --- a/packages/blac-core/src/core/StateContainer.subscriptions.test.ts +++ b/packages/blac-core/src/core/StateContainer.subscriptions.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach, vi } from 'vite-plus/test'; import { StateContainer } from './StateContainer'; import { clearAll } from '../registry'; import { EMIT } from './symbols'; @@ -81,7 +81,7 @@ describe('StateContainer subscriptions', () => { it('unsubscribing during emission is safe', () => { const container = new SimpleContainer(); - // eslint-disable-next-line prefer-const + // oxlint-disable-next-line prefer-const let unsubscribe: () => void; const selfRemoving = vi.fn(() => unsubscribe()); unsubscribe = container.subscribe(selfRemoving); diff --git a/packages/blac-core/src/core/StateContainer.test.ts b/packages/blac-core/src/core/StateContainer.test.ts index 80e1a3ac..a4a741c3 100644 --- a/packages/blac-core/src/core/StateContainer.test.ts +++ b/packages/blac-core/src/core/StateContainer.test.ts @@ -3,7 +3,7 @@ * Testing the foundation of the entire state management system */ -import { describe, it, expect, beforeEach, vi } from 'vitest'; +import { describe, it, expect, beforeEach, vi } from 'vite-plus/test'; import { StateContainer } from './StateContainer'; import { acquire, diff --git a/packages/blac-core/src/core/StateContainerRegistry.events.test.ts b/packages/blac-core/src/core/StateContainerRegistry.events.test.ts index b89873e8..bca4e9a3 100644 --- a/packages/blac-core/src/core/StateContainerRegistry.events.test.ts +++ b/packages/blac-core/src/core/StateContainerRegistry.events.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach, vi } from 'vite-plus/test'; import { globalRegistry, StateContainerRegistry, diff --git a/packages/blac-core/src/core/StateContainerRegistry.lifecycle.test.ts b/packages/blac-core/src/core/StateContainerRegistry.lifecycle.test.ts index 88bf6f99..b7bbea09 100644 --- a/packages/blac-core/src/core/StateContainerRegistry.lifecycle.test.ts +++ b/packages/blac-core/src/core/StateContainerRegistry.lifecycle.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach, vi } from 'vite-plus/test'; import { StateContainer } from './StateContainer'; import { StateContainerRegistry, diff --git a/packages/blac-core/src/core/StateContainerRegistry.refcount.test.ts b/packages/blac-core/src/core/StateContainerRegistry.refcount.test.ts index 5ffd7da8..8939c2d9 100644 --- a/packages/blac-core/src/core/StateContainerRegistry.refcount.test.ts +++ b/packages/blac-core/src/core/StateContainerRegistry.refcount.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, afterEach } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach } from 'vite-plus/test'; import { acquire, release, diff --git a/packages/blac-core/src/decorators/blac-decorator.edge-cases.test.ts b/packages/blac-core/src/decorators/blac-decorator.edge-cases.test.ts index 6badd02a..682d35c5 100644 --- a/packages/blac-core/src/decorators/blac-decorator.edge-cases.test.ts +++ b/packages/blac-core/src/decorators/blac-decorator.edge-cases.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, afterEach } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach } from 'vite-plus/test'; import { blac } from './blac'; import { Cubit } from '../core/Cubit'; import { diff --git a/packages/blac-core/src/decorators/blac.test.ts b/packages/blac-core/src/decorators/blac.test.ts index dd84bbfe..aaa8e565 100644 --- a/packages/blac-core/src/decorators/blac.test.ts +++ b/packages/blac-core/src/decorators/blac.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect } from 'vitest'; +import { describe, it, expect } from 'vite-plus/test'; import { blac } from './blac'; import { Cubit } from '../core/Cubit'; import { diff --git a/packages/blac-core/src/plugin/PluginManager.edge-cases.test.ts b/packages/blac-core/src/plugin/PluginManager.edge-cases.test.ts index f21839ce..44a7b7ca 100644 --- a/packages/blac-core/src/plugin/PluginManager.edge-cases.test.ts +++ b/packages/blac-core/src/plugin/PluginManager.edge-cases.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach, vi } from 'vite-plus/test'; import { PluginManager, createPluginManager } from './PluginManager'; import { StateContainerRegistry, diff --git a/packages/blac-core/src/plugin/PluginManager.test.ts b/packages/blac-core/src/plugin/PluginManager.test.ts index d8717f92..c558fce2 100644 --- a/packages/blac-core/src/plugin/PluginManager.test.ts +++ b/packages/blac-core/src/plugin/PluginManager.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach, vi } from 'vite-plus/test'; import { PluginManager } from './PluginManager'; import { globalRegistry } from '../core/StateContainerRegistry'; import { Cubit } from '../core/Cubit'; diff --git a/packages/blac-core/src/tracking/dependency-tracker.test.ts b/packages/blac-core/src/tracking/dependency-tracker.test.ts index be9600c8..c653f062 100644 --- a/packages/blac-core/src/tracking/dependency-tracker.test.ts +++ b/packages/blac-core/src/tracking/dependency-tracker.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect } from 'vitest'; +import { describe, it, expect } from 'vite-plus/test'; import { createDependencyState, startDependency, diff --git a/packages/blac-core/src/tracking/getter-tracker.test.ts b/packages/blac-core/src/tracking/getter-tracker.test.ts index 14f458ef..9c11f0af 100644 --- a/packages/blac-core/src/tracking/getter-tracker.test.ts +++ b/packages/blac-core/src/tracking/getter-tracker.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach } from 'vitest'; +import { describe, it, expect, beforeEach } from 'vite-plus/test'; import { Cubit } from '../core/Cubit'; import { createGetterState, diff --git a/packages/blac-core/src/tracking/path-utils.test.ts b/packages/blac-core/src/tracking/path-utils.test.ts index 3171286a..25f8e8ae 100644 --- a/packages/blac-core/src/tracking/path-utils.test.ts +++ b/packages/blac-core/src/tracking/path-utils.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect } from 'vitest'; +import { describe, it, expect } from 'vite-plus/test'; import { parsePath, getValueAtPath, shallowEqual } from './path-utils'; describe('parsePath', () => { diff --git a/packages/blac-core/src/tracking/proxy-tracker.edge-cases.test.ts b/packages/blac-core/src/tracking/proxy-tracker.edge-cases.test.ts index da7eb0a7..70275c70 100644 --- a/packages/blac-core/src/tracking/proxy-tracker.edge-cases.test.ts +++ b/packages/blac-core/src/tracking/proxy-tracker.edge-cases.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect } from 'vitest'; +import { describe, it, expect } from 'vite-plus/test'; import { createProxyState, startProxy, diff --git a/packages/blac-core/src/tracking/tracking-proxy.ts b/packages/blac-core/src/tracking/tracking-proxy.ts index 5771fd20..04deb111 100644 --- a/packages/blac-core/src/tracking/tracking-proxy.ts +++ b/packages/blac-core/src/tracking/tracking-proxy.ts @@ -34,7 +34,7 @@ export interface ProxyState { trackedPaths: Set; isTracking: boolean; proxyCache: WeakMap; - // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type + // oxlint-disable-next-line @typescript-eslint/no-unsafe-function-type boundFunctionsCache: WeakMap | null; lastProxiedState: T | null; lastProxy: T | null; @@ -95,7 +95,7 @@ export function createArrayProxy( if (typeof value === 'function') { if (!state.boundFunctionsCache) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type + // oxlint-disable-next-line @typescript-eslint/no-unsafe-function-type state.boundFunctionsCache = new WeakMap(); } const cached = state.boundFunctionsCache.get(value); @@ -188,7 +188,7 @@ export function createInternal( if (typeof value === 'function') { if (!state.boundFunctionsCache) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type + // oxlint-disable-next-line @typescript-eslint/no-unsafe-function-type state.boundFunctionsCache = new WeakMap(); } const cached = state.boundFunctionsCache.get(value); @@ -477,7 +477,7 @@ export interface GetterState { } const descriptorCache = new WeakMap< - // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type + // oxlint-disable-next-line @typescript-eslint/no-unsafe-function-type Function, Map >(); diff --git a/packages/blac-core/src/tracking/tracking.edge-cases.test.ts b/packages/blac-core/src/tracking/tracking.edge-cases.test.ts index db18ed3b..04086202 100644 --- a/packages/blac-core/src/tracking/tracking.edge-cases.test.ts +++ b/packages/blac-core/src/tracking/tracking.edge-cases.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach, vi } from 'vite-plus/test'; import { tracked, createTrackedContext, diff --git a/packages/blac-core/src/utils/idGenerator.test.ts b/packages/blac-core/src/utils/idGenerator.test.ts index f32dcdad..5c9e02da 100644 --- a/packages/blac-core/src/utils/idGenerator.test.ts +++ b/packages/blac-core/src/utils/idGenerator.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, afterEach } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach } from 'vite-plus/test'; import { generateId, generateSimpleId, diff --git a/packages/blac-core/src/watch/watch.edge-cases.test.ts b/packages/blac-core/src/watch/watch.edge-cases.test.ts index 8430680b..3e30de24 100644 --- a/packages/blac-core/src/watch/watch.edge-cases.test.ts +++ b/packages/blac-core/src/watch/watch.edge-cases.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach, vi } from 'vite-plus/test'; import { watch, instance } from './watch'; import { Cubit } from '../core/Cubit'; import { acquire, release, clearAll } from '../registry'; diff --git a/packages/blac-core/src/watch/watch.test.ts b/packages/blac-core/src/watch/watch.test.ts index aded7bae..725bbd86 100644 --- a/packages/blac-core/src/watch/watch.test.ts +++ b/packages/blac-core/src/watch/watch.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, vi } from 'vitest'; +import { describe, it, expect, beforeEach, vi } from 'vite-plus/test'; import { watch, instance } from './watch'; import { Cubit } from '../core/Cubit'; import { clearAll, acquire } from '../registry'; diff --git a/packages/blac-preact/src/__tests__/useBloc.test.tsx b/packages/blac-preact/src/__tests__/useBloc.test.tsx index 2401736a..97501ef5 100644 --- a/packages/blac-preact/src/__tests__/useBloc.test.tsx +++ b/packages/blac-preact/src/__tests__/useBloc.test.tsx @@ -3,7 +3,7 @@ */ /// -import { describe, it, expect, vi, afterEach } from 'vitest'; +import { describe, it, expect, vi, afterEach } from 'vite-plus/test'; import { renderHook, act, waitFor } from '@testing-library/preact'; import { Cubit, clearAll } from '@blac/core'; import { useBloc } from '../useBloc'; diff --git a/packages/blac-preact/src/useBloc.ts b/packages/blac-preact/src/useBloc.ts index a7d49d4c..1f1a7369 100644 --- a/packages/blac-preact/src/useBloc.ts +++ b/packages/blac-preact/src/useBloc.ts @@ -151,7 +151,7 @@ export function useBloc< adapterState, instance, ]; - // eslint-disable-next-line react-hooks/exhaustive-deps + // oxlint-disable-next-line react-hooks/exhaustive-deps }, [BlocClass, instanceId]); const state = useSyncExternalStore(subscribe, getSnapshot); @@ -183,7 +183,7 @@ export function useBloc< release(BlocClass, instanceKey); }; - // eslint-disable-next-line react-hooks/exhaustive-deps + // oxlint-disable-next-line react-hooks/exhaustive-deps }, []); return [state, bloc, componentRef] as UseBlocReturn>; diff --git a/packages/blac-preact/vitest-setup.ts b/packages/blac-preact/vitest-setup.ts index 849a3542..9a565eb2 100644 --- a/packages/blac-preact/vitest-setup.ts +++ b/packages/blac-preact/vitest-setup.ts @@ -1,4 +1,4 @@ -import { expect, afterEach } from 'vitest'; +import { expect, afterEach } from 'vite-plus/test'; import { cleanup } from '@testing-library/preact'; import * as matchers from '@testing-library/jest-dom/matchers'; diff --git a/packages/blac-react/src/__tests__/config.test.tsx b/packages/blac-react/src/__tests__/config.test.tsx index 1d5037df..657d5c5e 100644 --- a/packages/blac-react/src/__tests__/config.test.tsx +++ b/packages/blac-react/src/__tests__/config.test.tsx @@ -1,4 +1,4 @@ -import { describe, it, expect, afterEach } from 'vitest'; +import { describe, it, expect, afterEach } from 'vite-plus/test'; import { configureBlacReact, getBlacReactConfig, diff --git a/packages/blac-react/src/__tests__/useBloc.array-methods-tracking.test.tsx b/packages/blac-react/src/__tests__/useBloc.array-methods-tracking.test.tsx index 5774ad84..134eb2bf 100644 --- a/packages/blac-react/src/__tests__/useBloc.array-methods-tracking.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.array-methods-tracking.test.tsx @@ -7,7 +7,7 @@ import { render, screen, act } from '@testing-library/react'; import { Cubit, clearAll, acquire } from '@blac/core'; import { useBloc } from '../useBloc'; -import { describe, it, expect, afterEach } from 'vitest'; +import { describe, it, expect, afterEach } from 'vite-plus/test'; interface TestState { items: number[]; diff --git a/packages/blac-react/src/__tests__/useBloc.array-tracking.test.tsx b/packages/blac-react/src/__tests__/useBloc.array-tracking.test.tsx index 96cbf67e..b4e84884 100644 --- a/packages/blac-react/src/__tests__/useBloc.array-tracking.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.array-tracking.test.tsx @@ -9,7 +9,7 @@ import { render, screen, act } from '@testing-library/react'; import { Cubit, clearAll, acquire } from '@blac/core'; import { useBloc } from '../useBloc'; -import { describe, it, expect } from 'vitest'; +import { describe, it, expect } from 'vite-plus/test'; // Message type similar to the messenger example interface Message { diff --git a/packages/blac-react/src/__tests__/useBloc.auto-track-optimization.test.tsx b/packages/blac-react/src/__tests__/useBloc.auto-track-optimization.test.tsx index beef9667..5fbfb374 100644 --- a/packages/blac-react/src/__tests__/useBloc.auto-track-optimization.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.auto-track-optimization.test.tsx @@ -1,4 +1,4 @@ -import { describe, it, expect, afterEach, vi } from 'vitest'; +import { describe, it, expect, afterEach, vi } from 'vite-plus/test'; import { render, act, screen, renderHook } from '@testing-library/react'; import { Cubit, clearAll } from '@blac/core'; import { useBloc } from '../useBloc'; diff --git a/packages/blac-react/src/__tests__/useBloc.cross-bloc-edge-cases.test.tsx b/packages/blac-react/src/__tests__/useBloc.cross-bloc-edge-cases.test.tsx index b6883c1f..f426ceef 100644 --- a/packages/blac-react/src/__tests__/useBloc.cross-bloc-edge-cases.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.cross-bloc-edge-cases.test.tsx @@ -1,4 +1,4 @@ -import { describe, it, expect, afterEach } from 'vitest'; +import { describe, it, expect, afterEach } from 'vite-plus/test'; import { render, screen, fireEvent, act } from '@testing-library/react'; import { Cubit, acquire, borrow, clearAll } from '@blac/core'; import { useBloc } from '../useBloc'; diff --git a/packages/blac-react/src/__tests__/useBloc.cross-bloc-react.test.tsx b/packages/blac-react/src/__tests__/useBloc.cross-bloc-react.test.tsx index ee427b50..b31cbf94 100644 --- a/packages/blac-react/src/__tests__/useBloc.cross-bloc-react.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.cross-bloc-react.test.tsx @@ -1,4 +1,4 @@ -import { describe, it, expect, afterEach } from 'vitest'; +import { describe, it, expect, afterEach } from 'vite-plus/test'; import { render, act, screen } from '@testing-library/react'; import { Cubit, clearAll, acquire, borrow, release } from '@blac/core'; import { useBloc } from '../useBloc'; diff --git a/packages/blac-react/src/__tests__/useBloc.dependencies.test.tsx b/packages/blac-react/src/__tests__/useBloc.dependencies.test.tsx index b04c1d86..d0af21ff 100644 --- a/packages/blac-react/src/__tests__/useBloc.dependencies.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.dependencies.test.tsx @@ -2,7 +2,7 @@ * Tests for useBloc with dependencies option */ -import { describe, it, expect, vi, afterEach } from 'vitest'; +import { describe, it, expect, vi, afterEach } from 'vite-plus/test'; import { render, screen, act } from '@testing-library/react'; import { Cubit, clearAll } from '@blac/core'; import { useBloc } from '../useBloc'; diff --git a/packages/blac-react/src/__tests__/useBloc.devtools-layout.test.tsx b/packages/blac-react/src/__tests__/useBloc.devtools-layout.test.tsx index 9024afd5..98094b09 100644 --- a/packages/blac-react/src/__tests__/useBloc.devtools-layout.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.devtools-layout.test.tsx @@ -2,7 +2,7 @@ * Simplified DevTools Layout Test - tests instance management and sorting */ import { render, screen, waitFor, act, cleanup } from '@testing-library/react'; -import { describe, it, expect, afterEach } from 'vitest'; +import { describe, it, expect, afterEach } from 'vite-plus/test'; import { useBloc } from '../useBloc'; import { Cubit, blac, clearAll, acquire } from '@blac/core'; import React from 'react'; diff --git a/packages/blac-react/src/__tests__/useBloc.filteredList.test.tsx b/packages/blac-react/src/__tests__/useBloc.filteredList.test.tsx index cfaed54b..3e4ce1f6 100644 --- a/packages/blac-react/src/__tests__/useBloc.filteredList.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.filteredList.test.tsx @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach } from 'vitest'; +import { describe, it, expect, beforeEach } from 'vite-plus/test'; import { render, screen, waitFor, act } from '@testing-library/react'; import { Cubit, clear } from '@blac/core'; import { useBloc } from '../useBloc'; diff --git a/packages/blac-react/src/__tests__/useBloc.getter-advanced.test.tsx b/packages/blac-react/src/__tests__/useBloc.getter-advanced.test.tsx index 80534f0b..101581e5 100644 --- a/packages/blac-react/src/__tests__/useBloc.getter-advanced.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.getter-advanced.test.tsx @@ -1,4 +1,4 @@ -import { describe, it, expect, afterEach, vi } from 'vitest'; +import { describe, it, expect, afterEach, vi } from 'vite-plus/test'; import { Component, type ReactNode } from 'react'; import { render, act, screen } from '@testing-library/react'; import { Cubit, clearAll } from '@blac/core'; diff --git a/packages/blac-react/src/__tests__/useBloc.getter-tracking.test.tsx b/packages/blac-react/src/__tests__/useBloc.getter-tracking.test.tsx index 679a1d1e..7bcba638 100644 --- a/packages/blac-react/src/__tests__/useBloc.getter-tracking.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.getter-tracking.test.tsx @@ -14,7 +14,7 @@ * 10. Memory cleanup */ -import { describe, it, expect, vi, afterEach } from 'vitest'; +import { describe, it, expect, vi, afterEach } from 'vite-plus/test'; import { render, screen, waitFor, renderHook } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { Cubit, clearAll } from '@blac/core'; diff --git a/packages/blac-react/src/__tests__/useBloc.instance-isolation.test.tsx b/packages/blac-react/src/__tests__/useBloc.instance-isolation.test.tsx index a7dc23a0..093e8f19 100644 --- a/packages/blac-react/src/__tests__/useBloc.instance-isolation.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.instance-isolation.test.tsx @@ -1,4 +1,4 @@ -import { describe, it, expect, afterEach, vi } from 'vitest'; +import { describe, it, expect, afterEach, vi } from 'vite-plus/test'; import { render, renderHook, act, screen } from '@testing-library/react'; import { Cubit, clearAll, hasInstance } from '@blac/core'; import { useBloc } from '../useBloc'; diff --git a/packages/blac-react/src/__tests__/useBloc.instanceId-types.test.tsx b/packages/blac-react/src/__tests__/useBloc.instanceId-types.test.tsx index 997d9670..2108e86e 100644 --- a/packages/blac-react/src/__tests__/useBloc.instanceId-types.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.instanceId-types.test.tsx @@ -3,7 +3,7 @@ * And rejects null and other invalid types */ -import { describe, it, expect } from 'vitest'; +import { describe, it, expect } from 'vite-plus/test'; import { render, screen } from '@testing-library/react'; import { Cubit } from '@blac/core'; import { useBloc } from '../useBloc'; diff --git a/packages/blac-react/src/__tests__/useBloc.lifecycle-edge-cases.test.tsx b/packages/blac-react/src/__tests__/useBloc.lifecycle-edge-cases.test.tsx index ac7a3f37..d2e6fcbe 100644 --- a/packages/blac-react/src/__tests__/useBloc.lifecycle-edge-cases.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.lifecycle-edge-cases.test.tsx @@ -1,4 +1,4 @@ -import { describe, it, expect, afterEach, vi } from 'vitest'; +import { describe, it, expect, afterEach, vi } from 'vite-plus/test'; import { renderHook, act } from '@testing-library/react'; import { StrictMode } from 'react'; import { Cubit, clearAll } from '@blac/core'; diff --git a/packages/blac-react/src/__tests__/useBloc.manual-deps-edge-cases.test.tsx b/packages/blac-react/src/__tests__/useBloc.manual-deps-edge-cases.test.tsx index 41bf10e3..dab263e8 100644 --- a/packages/blac-react/src/__tests__/useBloc.manual-deps-edge-cases.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.manual-deps-edge-cases.test.tsx @@ -1,4 +1,4 @@ -import { describe, it, expect, afterEach, vi } from 'vitest'; +import { describe, it, expect, afterEach, vi } from 'vite-plus/test'; import { render, act, screen, renderHook } from '@testing-library/react'; import { Cubit, clearAll } from '@blac/core'; import { useBloc } from '../useBloc'; diff --git a/packages/blac-react/src/__tests__/useBloc.messenger-reproduction.test.tsx b/packages/blac-react/src/__tests__/useBloc.messenger-reproduction.test.tsx index 45cdcc54..ff44d465 100644 --- a/packages/blac-react/src/__tests__/useBloc.messenger-reproduction.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.messenger-reproduction.test.tsx @@ -16,7 +16,7 @@ import { render, screen, act } from '@testing-library/react'; import { Cubit, clearAll, acquire } from '@blac/core'; import { useBloc } from '../useBloc'; -import { describe, it, expect, afterEach } from 'vitest'; +import { describe, it, expect, afterEach } from 'vite-plus/test'; // ============================================================================ // Types - Exactly as in messenger example diff --git a/packages/blac-react/src/__tests__/useBloc.proxyTracking.test.tsx b/packages/blac-react/src/__tests__/useBloc.proxyTracking.test.tsx index 75d1712d..78a9e4a8 100644 --- a/packages/blac-react/src/__tests__/useBloc.proxyTracking.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.proxyTracking.test.tsx @@ -2,7 +2,7 @@ * Tests for useBloc with automatic proxy tracking */ -import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { describe, it, expect, vi, beforeEach } from 'vite-plus/test'; import { renderHook, act, waitFor } from '@testing-library/react'; import { StrictMode } from 'react'; import { useBloc } from '../useBloc'; diff --git a/packages/blac-react/src/__tests__/useBloc.shared-instances.test.tsx b/packages/blac-react/src/__tests__/useBloc.shared-instances.test.tsx index ebd7ea1d..ee565f98 100644 --- a/packages/blac-react/src/__tests__/useBloc.shared-instances.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.shared-instances.test.tsx @@ -1,4 +1,4 @@ -import { describe, it, expect, afterEach } from 'vitest'; +import { describe, it, expect, afterEach } from 'vite-plus/test'; import { render, act, screen } from '@testing-library/react'; import { Cubit, clearAll, getRefCount, hasInstance } from '@blac/core'; import { useBloc } from '../useBloc'; diff --git a/packages/blac-react/src/__tests__/useBloc.ssr.test.tsx b/packages/blac-react/src/__tests__/useBloc.ssr.test.tsx index c01cb3aa..b4fa238d 100644 --- a/packages/blac-react/src/__tests__/useBloc.ssr.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.ssr.test.tsx @@ -1,4 +1,4 @@ -import { describe, it, expect, afterEach, vi } from 'vitest'; +import { describe, it, expect, afterEach, vi } from 'vite-plus/test'; import { renderToString } from 'react-dom/server'; import { createElement } from 'react'; import { Cubit, clearAll, acquire } from '@blac/core'; diff --git a/packages/blac-react/src/__tests__/useBloc.stress.test.tsx b/packages/blac-react/src/__tests__/useBloc.stress.test.tsx index b12b8ba4..a4013726 100644 --- a/packages/blac-react/src/__tests__/useBloc.stress.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.stress.test.tsx @@ -1,4 +1,4 @@ -import { describe, it, expect, afterEach } from 'vitest'; +import { describe, it, expect, afterEach } from 'vite-plus/test'; import { render, act, screen } from '@testing-library/react'; import { Cubit, clearAll, getRefCount, hasInstance, borrow } from '@blac/core'; import { useBloc } from '../useBloc'; diff --git a/packages/blac-react/src/__tests__/useBloc.test.tsx b/packages/blac-react/src/__tests__/useBloc.test.tsx index 4caf7438..8a062495 100644 --- a/packages/blac-react/src/__tests__/useBloc.test.tsx +++ b/packages/blac-react/src/__tests__/useBloc.test.tsx @@ -3,7 +3,7 @@ */ /// -import { describe, it, expect, vi, afterEach } from 'vitest'; +import { describe, it, expect, vi, afterEach } from 'vite-plus/test'; import { renderHook, act, waitFor } from '@testing-library/react'; import { renderToString } from 'react-dom/server'; import { Cubit, clearAll } from '@blac/core'; diff --git a/packages/blac-react/src/useBloc.ts b/packages/blac-react/src/useBloc.ts index 77ca4739..65a5b1d7 100644 --- a/packages/blac-react/src/useBloc.ts +++ b/packages/blac-react/src/useBloc.ts @@ -156,7 +156,7 @@ export function useBloc< adapterState, instance, ]; - // eslint-disable-next-line react-hooks/exhaustive-deps + // oxlint-disable-next-line react-hooks/exhaustive-deps }, [BlocClass, instanceId]); const state = useSyncExternalStore(subscribe, getSnapshot, getSnapshot); @@ -190,7 +190,7 @@ export function useBloc< release(BlocClass, instanceKey); }; - // eslint-disable-next-line react-hooks/exhaustive-deps + // oxlint-disable-next-line react-hooks/exhaustive-deps }, []); return [state, bloc, componentRef] as UseBlocReturn>; diff --git a/packages/blac-react/vitest-setup.ts b/packages/blac-react/vitest-setup.ts index 117b3a63..56cc8058 100644 --- a/packages/blac-react/vitest-setup.ts +++ b/packages/blac-react/vitest-setup.ts @@ -1,4 +1,4 @@ -import { expect, afterEach } from 'vitest'; +import { expect, afterEach } from 'vite-plus/test'; import { cleanup } from '@testing-library/react'; import * as matchers from '@testing-library/jest-dom/matchers'; diff --git a/packages/blac-react/vitest.config.compiler.ts b/packages/blac-react/vitest.config.compiler.ts index 147d17d3..45a5ee80 100644 --- a/packages/blac-react/vitest.config.compiler.ts +++ b/packages/blac-react/vitest.config.compiler.ts @@ -1,4 +1,4 @@ -import { defineConfig } from 'vite'; +import { defineConfig } from 'vite-plus'; import react from '@vitejs/plugin-react'; import path from 'path'; diff --git a/packages/blac-react/vitest.config.performance.ts b/packages/blac-react/vitest.config.performance.ts index c9186cb8..13dbba06 100644 --- a/packages/blac-react/vitest.config.performance.ts +++ b/packages/blac-react/vitest.config.performance.ts @@ -1,4 +1,4 @@ -import { defineConfig } from 'vite'; +import { defineConfig } from 'vite-plus'; import path from 'path'; // Vitest config for PERFORMANCE TESTING diff --git a/packages/blac-react/vitest.d.ts b/packages/blac-react/vitest.d.ts index edfa8b53..603d7cdc 100644 --- a/packages/blac-react/vitest.d.ts +++ b/packages/blac-react/vitest.d.ts @@ -1,2 +1,2 @@ -/// +/// /// diff --git a/packages/devtools-connect/src/plugin/DevToolsBrowserPlugin.test.ts b/packages/devtools-connect/src/plugin/DevToolsBrowserPlugin.test.ts index 0b7d7616..342d2554 100644 --- a/packages/devtools-connect/src/plugin/DevToolsBrowserPlugin.test.ts +++ b/packages/devtools-connect/src/plugin/DevToolsBrowserPlugin.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach, vi } from 'vite-plus/test'; import { Cubit, getPluginManager, From 85b67d59f1695ca286453b0a50c2ef924544310a Mon Sep 17 00:00:00 2001 From: Brendan Mullins Date: Fri, 27 Mar 2026 09:45:02 +0100 Subject: [PATCH 02/15] chore(packages): migrate to unified vite-plus config Replace tsdown.config.ts and vitest.config.ts with unified vite.config.ts files for all library packages. Update package.json scripts to use vp pack, vp test, vp lint, and vp fmt commands. Update .prettierignore to .oxfmtignore format in affected packages. --- packages/blac-adapter/package.json | 19 ++++--- packages/blac-adapter/tsdown.config.ts | 14 ------ packages/blac-adapter/vite.config.ts | 34 +++++++++++++ packages/blac-core/.oxfmtignore | 1 + packages/blac-core/package.json | 22 ++++---- packages/blac-core/tsdown.config.ts | 21 -------- packages/blac-core/vite.config.ts | 58 ++++++++++++++++++++++ packages/blac-preact/package.json | 20 ++++---- packages/blac-preact/tsdown.config.ts | 15 ------ packages/blac-preact/vite.config.ts | 44 ++++++++++++++++ packages/blac-react/.oxfmtignore | 1 + packages/blac-react/package.json | 29 +++++------ packages/blac-react/tsdown.config.ts | 15 ------ packages/blac-react/vite.config.ts | 46 +++++++++++++++++ packages/devtools-connect/.oxfmtignore | 4 ++ packages/devtools-connect/package.json | 13 +++-- packages/devtools-connect/tsdown.config.ts | 15 ------ packages/devtools-connect/vite.config.ts | 21 ++++++++ packages/devtools-ui/package.json | 8 +-- packages/devtools-ui/tsdown.config.ts | 17 ------- packages/devtools-ui/vite.config.ts | 19 +++++++ packages/logging-plugin/package.json | 13 +++-- packages/logging-plugin/tsdown.config.ts | 15 ------ packages/logging-plugin/vite.config.ts | 17 +++++++ packages/plugin-persist/package.json | 13 +++-- packages/plugin-persist/tsdown.config.ts | 15 ------ packages/plugin-persist/vite.config.ts | 17 +++++++ 27 files changed, 325 insertions(+), 201 deletions(-) delete mode 100644 packages/blac-adapter/tsdown.config.ts create mode 100644 packages/blac-adapter/vite.config.ts create mode 100644 packages/blac-core/.oxfmtignore delete mode 100644 packages/blac-core/tsdown.config.ts create mode 100644 packages/blac-core/vite.config.ts delete mode 100644 packages/blac-preact/tsdown.config.ts create mode 100644 packages/blac-preact/vite.config.ts create mode 100644 packages/blac-react/.oxfmtignore delete mode 100644 packages/blac-react/tsdown.config.ts create mode 100644 packages/blac-react/vite.config.ts create mode 100644 packages/devtools-connect/.oxfmtignore delete mode 100644 packages/devtools-connect/tsdown.config.ts create mode 100644 packages/devtools-connect/vite.config.ts delete mode 100644 packages/devtools-ui/tsdown.config.ts create mode 100644 packages/devtools-ui/vite.config.ts delete mode 100644 packages/logging-plugin/tsdown.config.ts create mode 100644 packages/logging-plugin/vite.config.ts delete mode 100644 packages/plugin-persist/tsdown.config.ts create mode 100644 packages/plugin-persist/vite.config.ts diff --git a/packages/blac-adapter/package.json b/packages/blac-adapter/package.json index 51d9758b..167a1764 100644 --- a/packages/blac-adapter/package.json +++ b/packages/blac-adapter/package.json @@ -45,14 +45,14 @@ "bloc" ], "scripts": { - "dev": "tsdown --watch", - "build": "tsdown && tsc -p tsconfig.build.json && cp dist/index.d.ts dist/index.d.cts", + "dev": "vp pack --watch", + "build": "vp pack && tsc -p tsconfig.build.json && cp dist/index.d.ts dist/index.d.cts", "clean": "rm -rf dist", - "format": "prettier --write \".\"", - "lint": "eslint src --ext .ts,.tsx", - "lint:fix": "eslint src --ext .ts,.tsx --fix", - "test": "vitest run", - "test:watch": "vitest --watch", + "format": "vp fmt \".\"", + "lint": "vp lint src", + "lint:fix": "vp lint src --fix", + "test": "vp test run", + "test:watch": "vp test --watch", "verify": "node ../../scripts/run-workspace-bin.mjs publint", "typecheck": "tsc --noEmit", "prepublishOnly": "echo 'Skipping prepublishOnly - build should be done at root level'", @@ -64,10 +64,9 @@ "devDependencies": { "@blac/core": "workspace:*", "jsdom": "catalog:", - "prettier": "catalog:", - "tsdown": "catalog:", "typescript": "catalog:", "publint": "catalog:", - "vitest": "catalog:" + "vitest": "catalog:", + "vite-plus": "catalog:" } } diff --git a/packages/blac-adapter/tsdown.config.ts b/packages/blac-adapter/tsdown.config.ts deleted file mode 100644 index 570b3652..00000000 --- a/packages/blac-adapter/tsdown.config.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { defineConfig } from 'tsdown'; - -export default defineConfig({ - entry: 'src/index.ts', - format: ['esm', 'cjs'], - clean: true, - dts: false, - sourcemap: true, - outExtensions({ format }) { - return { - js: format === 'es' ? '.js' : '.cjs', - }; - }, -}); diff --git a/packages/blac-adapter/vite.config.ts b/packages/blac-adapter/vite.config.ts new file mode 100644 index 00000000..9883db1e --- /dev/null +++ b/packages/blac-adapter/vite.config.ts @@ -0,0 +1,34 @@ +import { defineConfig } from 'vite-plus'; +import path from 'path'; + +export default defineConfig({ + resolve: { + alias: { + '@blac/core': path.resolve(__dirname, '../blac-core/src'), + '@blac/adapter': path.resolve(__dirname, './src'), + }, + }, + pack: { + entry: 'src/index.ts', + format: ['esm', 'cjs'], + clean: true, + dts: false, + sourcemap: true, + outExtensions({ format }) { + return { + js: format === 'es' ? '.js' : '.cjs', + }; + }, + }, + test: { + environment: 'jsdom', + globals: true, + coverage: { + provider: 'v8', + reporter: ['text', 'json', 'html'], + reportsDirectory: './coverage', + include: ['src/**/*.{ts,tsx}'], + exclude: ['src/index.ts', 'src/**/*.test.ts'], + }, + }, +}); diff --git a/packages/blac-core/.oxfmtignore b/packages/blac-core/.oxfmtignore new file mode 100644 index 00000000..1521c8b7 --- /dev/null +++ b/packages/blac-core/.oxfmtignore @@ -0,0 +1 @@ +dist diff --git a/packages/blac-core/package.json b/packages/blac-core/package.json index bc8639e7..f63dfc89 100644 --- a/packages/blac-core/package.json +++ b/packages/blac-core/package.json @@ -96,15 +96,15 @@ "bloc-pattern" ], "scripts": { - "dev": "tsdown --watch", - "build": "tsdown && tsc -p tsconfig.build.json && for f in dist/*.d.ts; do cp \"$f\" \"${f%.d.ts}.d.cts\"; done", + "dev": "vp pack --watch", + "build": "vp pack && tsc -p tsconfig.build.json && for f in dist/*.d.ts; do cp \"$f\" \"${f%.d.ts}.d.cts\"; done", "clean": "rm -rf dist", - "format": "prettier --write \".\"", - "lint": "eslint src --ext .ts,.tsx", - "lint:fix": "eslint src --ext .ts,.tsx --fix", - "test": "vitest run", - "test:watch": "vitest --watch", - "coverage": "vitest run --coverage", + "format": "vp fmt \".\"", + "lint": "vp lint src", + "lint:fix": "vp lint src --fix", + "test": "vp test run", + "test:watch": "vp test --watch", + "coverage": "vp test run --coverage", "verify": "node ../../scripts/run-workspace-bin.mjs publint", "typecheck": "tsc --noEmit", "prepublishOnly": "echo 'Skipping prepublishOnly - build should be done at root level'", @@ -113,16 +113,14 @@ "devDependencies": { "@testing-library/jest-dom": "catalog:", "@testing-library/user-event": "catalog:", - "@vitest/browser": "catalog:", "arktype": "^2.1.23", "fast-check": "^4.3.0", "jsdom": "catalog:", - "prettier": "catalog:", - "tsdown": "catalog:", "typescript": "catalog:", "valibot": "^1.1.0", "vitest": "catalog:", "publint": "catalog:", - "zod": "^4.1.12" + "zod": "^4.1.12", + "vite-plus": "catalog:" } } diff --git a/packages/blac-core/tsdown.config.ts b/packages/blac-core/tsdown.config.ts deleted file mode 100644 index f86adc35..00000000 --- a/packages/blac-core/tsdown.config.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { defineConfig } from 'tsdown'; - -export default defineConfig({ - entry: { - index: 'src/index.ts', - tracking: 'src/tracking.ts', - debug: 'src/debug.ts', - plugins: 'src/plugins.ts', - 'watch-entry': 'src/watch-entry.ts', - types: 'src/types.ts', - }, - format: ['esm', 'cjs'], - clean: true, - dts: false, - sourcemap: true, - outExtensions({ format }) { - return { - js: format === 'es' ? '.js' : '.cjs', - }; - }, -}); diff --git a/packages/blac-core/vite.config.ts b/packages/blac-core/vite.config.ts new file mode 100644 index 00000000..d410fe26 --- /dev/null +++ b/packages/blac-core/vite.config.ts @@ -0,0 +1,58 @@ +import { defineConfig } from 'vite-plus'; +import path from 'path'; + +export default defineConfig({ + resolve: { + alias: { + '@blac/core': path.resolve(__dirname, './src'), + '@blac/react': path.resolve(__dirname, '../blac-react/src'), + '@blac/devtools-connect': path.resolve( + __dirname, + '../devtools-connect/src', + ), + }, + }, + pack: { + entry: { + index: 'src/index.ts', + tracking: 'src/tracking.ts', + debug: 'src/debug.ts', + plugins: 'src/plugins.ts', + 'watch-entry': 'src/watch-entry.ts', + types: 'src/types.ts', + }, + format: ['esm', 'cjs'], + clean: true, + dts: false, + sourcemap: true, + outExtensions({ format }) { + return { + js: format === 'es' ? '.js' : '.cjs', + }; + }, + }, + test: { + environment: 'jsdom', + maxConcurrency: 2, + maxWorkers: 2, + globals: true, + coverage: { + provider: 'v8', + reporter: ['text', 'json', 'html', 'lcov'], + reportsDirectory: './coverage', + include: ['src/**/*.{ts,tsx}'], + exclude: [ + 'src/index.ts', + 'src/types.ts', + 'src/**/*.test.ts', + 'src/**/*.spec.ts', + ], + }, + onConsoleLog(log) { + if (log.startsWith('UNIT')) { + return true; + } + return false; + }, + }, +}); diff --git a/packages/blac-preact/package.json b/packages/blac-preact/package.json index 9cb7507b..9cde75f5 100644 --- a/packages/blac-preact/package.json +++ b/packages/blac-preact/package.json @@ -48,14 +48,14 @@ "bloc-pattern" ], "scripts": { - "dev": "tsdown --watch", - "build": "tsdown && tsc -p tsconfig.build.json && cp dist/index.d.ts dist/index.d.cts", + "dev": "vp pack --watch", + "build": "vp pack && tsc -p tsconfig.build.json && cp dist/index.d.ts dist/index.d.cts", "clean": "rm -rf dist", - "format": "prettier --write \".\"", - "lint": "eslint src --ext .ts,.tsx", - "lint:fix": "eslint src --ext .ts,.tsx --fix", - "test": "vitest run --config vitest.config.ts", - "test:watch": "vitest --watch --config vitest.config.ts", + "format": "vp fmt \".\"", + "lint": "vp lint src", + "lint:fix": "vp lint src --fix", + "test": "vp test run", + "test:watch": "vp test --watch", "verify": "node ../../scripts/run-workspace-bin.mjs publint", "typecheck": "tsc --noEmit", "prepublishOnly": "echo 'Skipping prepublishOnly - build should be done at root level'", @@ -75,14 +75,12 @@ "@testing-library/jest-dom": "catalog:", "@testing-library/preact": "^3.2.4", "@testing-library/user-event": "catalog:", - "@vitest/coverage-v8": "catalog:", "happy-dom": "catalog:", "preact": "^10.26.5", - "prettier": "catalog:", - "tsdown": "catalog:", "typescript": "catalog:", "vite": "catalog:", "publint": "catalog:", - "vitest": "catalog:" + "vitest": "catalog:", + "vite-plus": "catalog:" } } diff --git a/packages/blac-preact/tsdown.config.ts b/packages/blac-preact/tsdown.config.ts deleted file mode 100644 index 3df5df92..00000000 --- a/packages/blac-preact/tsdown.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { defineConfig } from 'tsdown'; - -export default defineConfig({ - entry: 'src/index.ts', - format: ['esm', 'cjs'], - clean: true, - dts: false, - sourcemap: true, - external: ['@blac/core', 'preact', 'preact/hooks', 'preact/compat'], - outExtensions({ format }) { - return { - js: format === 'es' ? '.js' : '.cjs', - }; - }, -}); diff --git a/packages/blac-preact/vite.config.ts b/packages/blac-preact/vite.config.ts new file mode 100644 index 00000000..3b5b83cd --- /dev/null +++ b/packages/blac-preact/vite.config.ts @@ -0,0 +1,44 @@ +import { defineConfig } from 'vite-plus'; +import preact from '@preact/preset-vite'; +import path from 'path'; + +export default defineConfig({ + plugins: [preact()], + resolve: { + alias: { + '@blac/core': path.resolve(__dirname, '../blac-core/src'), + '@blac/adapter': path.resolve(__dirname, '../blac-adapter/src'), + '@blac/preact': path.resolve(__dirname, './src'), + }, + }, + pack: { + entry: 'src/index.ts', + format: ['esm', 'cjs'], + clean: true, + dts: false, + sourcemap: true, + external: ['@blac/core', 'preact', 'preact/hooks', 'preact/compat'], + outExtensions({ format }) { + return { + js: format === 'es' ? '.js' : '.cjs', + }; + }, + }, + test: { + globals: true, + maxConcurrency: 2, + maxWorkers: 2, + environment: 'happy-dom', + setupFiles: './vitest-setup.ts', + hookTimeout: 30000, + exclude: [ + '**/node_modules/**', + '**/dist/**', + '**/__archived__/**', + '**/.*/**', + ], + onConsoleLog() { + return true; + }, + }, +}); diff --git a/packages/blac-react/.oxfmtignore b/packages/blac-react/.oxfmtignore new file mode 100644 index 00000000..1521c8b7 --- /dev/null +++ b/packages/blac-react/.oxfmtignore @@ -0,0 +1 @@ +dist diff --git a/packages/blac-react/package.json b/packages/blac-react/package.json index ec57ceea..5df96ed8 100644 --- a/packages/blac-react/package.json +++ b/packages/blac-react/package.json @@ -48,18 +48,18 @@ "bloc-pattern" ], "scripts": { - "dev": "tsdown --watch", - "build": "tsdown && tsc -p tsconfig.build.json && cp dist/index.d.ts dist/index.d.cts", + "dev": "vp pack --watch", + "build": "vp pack && tsc -p tsconfig.build.json && cp dist/index.d.ts dist/index.d.cts", "clean": "rm -rf dist", - "format": "prettier --write \".\"", - "lint": "eslint src --ext .ts,.tsx", - "lint:fix": "eslint src --ext .ts,.tsx --fix", - "test": "vitest run --config vitest.config.ts", - "test:watch": "vitest --watch --config vitest.config.ts", - "test:memory": "NODE_OPTIONS='--expose-gc' vitest run --config vitest.config.performance.ts", - "test:performance": "vitest run --config vitest.config.performance.ts", - "test:compiler": "vitest run --config vitest.config.compiler.ts", - "test:watch:compiler": "vitest --watch --config vitest.config.compiler.ts", + "format": "vp fmt \".\"", + "lint": "vp lint src", + "lint:fix": "vp lint src --fix", + "test": "vp test run", + "test:watch": "vp test --watch", + "test:memory": "NODE_OPTIONS='--expose-gc' vp test run --config vitest.config.performance.ts", + "test:performance": "vp test run --config vitest.config.performance.ts", + "test:compiler": "vp test run --config vitest.config.compiler.ts", + "test:watch:compiler": "vp test --watch --config vitest.config.compiler.ts", "test:both": "pnpm test && echo '\n\n=== Running tests WITH React Compiler ===\n' && pnpm test:compiler", "verify": "node ../../scripts/run-workspace-bin.mjs publint", "typecheck": "tsc --noEmit", @@ -91,19 +91,16 @@ "@types/react": "^19.1.9", "@types/react-dom": "^19.1.7", "@vitejs/plugin-react": "^4.7.0", - "@vitest/browser": "catalog:", - "@vitest/coverage-v8": "catalog:", "babel-plugin-react-compiler": "^1.0.0", "eslint-plugin-react-compiler": "19.1.0-rc.2", "happy-dom": "catalog:", "jsdom": "catalog:", - "prettier": "catalog:", "publint": "catalog:", "react": "^19.1.1", "react-dom": "^19.1.1", - "tsdown": "catalog:", "typescript": "catalog:", "vite": "catalog:", - "vitest": "catalog:" + "vitest": "catalog:", + "vite-plus": "catalog:" } } diff --git a/packages/blac-react/tsdown.config.ts b/packages/blac-react/tsdown.config.ts deleted file mode 100644 index 4373b9cd..00000000 --- a/packages/blac-react/tsdown.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { defineConfig } from 'tsdown'; - -export default defineConfig({ - entry: 'src/index.ts', - format: ['esm', 'cjs'], - clean: true, - dts: false, - sourcemap: true, - external: ['@blac/core'], - outExtensions({ format }) { - return { - js: format === 'es' ? '.js' : '.cjs', - }; - }, -}); diff --git a/packages/blac-react/vite.config.ts b/packages/blac-react/vite.config.ts new file mode 100644 index 00000000..1f3db32b --- /dev/null +++ b/packages/blac-react/vite.config.ts @@ -0,0 +1,46 @@ +import { defineConfig } from 'vite-plus'; +import path from 'path'; + +export default defineConfig({ + resolve: { + alias: { + '@blac/core': path.resolve(__dirname, '../blac-core/src'), + '@blac/adapter': path.resolve(__dirname, '../blac-adapter/src'), + '@blac/react': path.resolve(__dirname, './src'), + '@blac/devtools-connect': path.resolve( + __dirname, + '../devtools-connect/src', + ), + }, + }, + pack: { + entry: 'src/index.ts', + format: ['esm', 'cjs'], + clean: true, + dts: false, + sourcemap: true, + external: ['@blac/core'], + outExtensions({ format }) { + return { + js: format === 'es' ? '.js' : '.cjs', + }; + }, + }, + test: { + globals: true, + maxConcurrency: 2, + maxWorkers: 2, + environment: 'happy-dom', + setupFiles: './vitest-setup.ts', + hookTimeout: 30000, + exclude: [ + '**/node_modules/**', + '**/dist/**', + '**/__archived__/**', + '**/.*/**', + ], + onConsoleLog(log) { + return true; + }, + }, +}); diff --git a/packages/devtools-connect/.oxfmtignore b/packages/devtools-connect/.oxfmtignore new file mode 100644 index 00000000..b81cfdaf --- /dev/null +++ b/packages/devtools-connect/.oxfmtignore @@ -0,0 +1,4 @@ +dist +node_modules +coverage +*.log diff --git a/packages/devtools-connect/package.json b/packages/devtools-connect/package.json index 0ca75442..10a66702 100644 --- a/packages/devtools-connect/package.json +++ b/packages/devtools-connect/package.json @@ -46,12 +46,12 @@ "time-travel" ], "scripts": { - "dev": "tsdown --watch", - "build": "tsdown && tsc -p tsconfig.build.json && cp dist/index.d.ts dist/index.d.cts", + "dev": "vp pack --watch", + "build": "vp pack && tsc -p tsconfig.build.json && cp dist/index.d.ts dist/index.d.cts", "clean": "rm -rf dist", - "format": "prettier --write \".\"", - "lint": "eslint src --ext .ts,.tsx", - "lint:fix": "eslint src --ext .ts,.tsx --fix", + "format": "vp fmt \".\"", + "lint": "vp lint src", + "lint:fix": "vp lint src --fix", "test": "node ../../scripts/run-workspace-bin.mjs vitest run --passWithNoTests", "verify": "node ../../scripts/run-workspace-bin.mjs publint", "typecheck": "tsc --noEmit", @@ -63,10 +63,9 @@ }, "devDependencies": { "@blac/core": "workspace:*", - "prettier": "catalog:", "typescript": "catalog:", "vitest": "catalog:", "publint": "catalog:", - "tsdown": "catalog:" + "vite-plus": "catalog:" } } diff --git a/packages/devtools-connect/tsdown.config.ts b/packages/devtools-connect/tsdown.config.ts deleted file mode 100644 index 4373b9cd..00000000 --- a/packages/devtools-connect/tsdown.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { defineConfig } from 'tsdown'; - -export default defineConfig({ - entry: 'src/index.ts', - format: ['esm', 'cjs'], - clean: true, - dts: false, - sourcemap: true, - external: ['@blac/core'], - outExtensions({ format }) { - return { - js: format === 'es' ? '.js' : '.cjs', - }; - }, -}); diff --git a/packages/devtools-connect/vite.config.ts b/packages/devtools-connect/vite.config.ts new file mode 100644 index 00000000..8b70e7f9 --- /dev/null +++ b/packages/devtools-connect/vite.config.ts @@ -0,0 +1,21 @@ +import { defineConfig } from 'vite-plus'; + +export default defineConfig({ + pack: { + entry: 'src/index.ts', + format: ['esm', 'cjs'], + clean: true, + dts: false, + sourcemap: true, + external: ['@blac/core'], + outExtensions({ format }) { + return { + js: format === 'es' ? '.js' : '.cjs', + }; + }, + }, + test: { + globals: true, + environment: 'jsdom', + }, +}); diff --git a/packages/devtools-ui/package.json b/packages/devtools-ui/package.json index 7004db12..4dc7b550 100644 --- a/packages/devtools-ui/package.json +++ b/packages/devtools-ui/package.json @@ -42,8 +42,8 @@ }, "sideEffects": false, "scripts": { - "dev": "tsdown --watch", - "build": "tsdown && tsc -p tsconfig.build.json && cp dist/index.d.ts dist/index.d.cts", + "dev": "vp pack --watch", + "build": "vp pack && tsc -p tsconfig.build.json && cp dist/index.d.ts dist/index.d.cts", "clean": "rm -rf dist", "test": "node ../../scripts/run-workspace-bin.mjs vitest run --passWithNoTests", "verify": "node ../../scripts/run-workspace-bin.mjs publint", @@ -62,8 +62,8 @@ "@types/react-dom": "^19.1.7", "react": "^19.1.1", "react-dom": "^19.1.1", - "tsdown": "catalog:", - "typescript": "catalog:" + "typescript": "catalog:", + "vite-plus": "catalog:" }, "dependencies": { "@tanstack/react-virtual": "^3.13.0", diff --git a/packages/devtools-ui/tsdown.config.ts b/packages/devtools-ui/tsdown.config.ts deleted file mode 100644 index 5839b9ff..00000000 --- a/packages/devtools-ui/tsdown.config.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { defineConfig } from 'tsdown'; - -export default defineConfig({ - entry: ['src/index.tsx'], - format: ['esm', 'cjs'], - dts: false, // Disable tsdown's type generation - we'll use tsc instead - clean: true, - sourcemap: true, - fixedExtension: false, - external: ['react', 'react-dom', '@blac/core', '@blac/react'], - outExtensions({ format }) { - return { - js: format === 'es' ? '.js' : '.cjs', - dts: format === 'es' ? '.d.ts' : '.d.cts', - }; - }, -}); diff --git a/packages/devtools-ui/vite.config.ts b/packages/devtools-ui/vite.config.ts new file mode 100644 index 00000000..6b8af78e --- /dev/null +++ b/packages/devtools-ui/vite.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite-plus'; + +export default defineConfig({ + pack: { + entry: ['src/index.tsx'], + format: ['esm', 'cjs'], + dts: false, + clean: true, + sourcemap: true, + fixedExtension: false, + external: ['react', 'react-dom', '@blac/core', '@blac/react'], + outExtensions({ format }) { + return { + js: format === 'es' ? '.js' : '.cjs', + dts: format === 'es' ? '.d.ts' : '.d.cts', + }; + }, + }, +}); diff --git a/packages/logging-plugin/package.json b/packages/logging-plugin/package.json index 731a8169..4ba9c4c1 100644 --- a/packages/logging-plugin/package.json +++ b/packages/logging-plugin/package.json @@ -46,12 +46,12 @@ "devtools" ], "scripts": { - "dev": "tsdown --watch", - "build": "tsdown && tsc -p tsconfig.build.json && cp dist/index.d.ts dist/index.d.cts", + "dev": "vp pack --watch", + "build": "vp pack && tsc -p tsconfig.build.json && cp dist/index.d.ts dist/index.d.cts", "clean": "rm -rf dist", - "format": "prettier --write \".\"", - "lint": "eslint src --ext .ts,.tsx", - "lint:fix": "eslint src --ext .ts,.tsx --fix", + "format": "vp fmt \".\"", + "lint": "vp lint src", + "lint:fix": "vp lint src --fix", "test": "node ../../scripts/run-workspace-bin.mjs vitest run --passWithNoTests", "verify": "node ../../scripts/run-workspace-bin.mjs publint", "typecheck": "tsc --noEmit", @@ -63,10 +63,9 @@ }, "devDependencies": { "@blac/core": "workspace:*", - "prettier": "catalog:", "typescript": "catalog:", "vitest": "catalog:", "publint": "catalog:", - "tsdown": "catalog:" + "vite-plus": "catalog:" } } diff --git a/packages/logging-plugin/tsdown.config.ts b/packages/logging-plugin/tsdown.config.ts deleted file mode 100644 index 4373b9cd..00000000 --- a/packages/logging-plugin/tsdown.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { defineConfig } from 'tsdown'; - -export default defineConfig({ - entry: 'src/index.ts', - format: ['esm', 'cjs'], - clean: true, - dts: false, - sourcemap: true, - external: ['@blac/core'], - outExtensions({ format }) { - return { - js: format === 'es' ? '.js' : '.cjs', - }; - }, -}); diff --git a/packages/logging-plugin/vite.config.ts b/packages/logging-plugin/vite.config.ts new file mode 100644 index 00000000..227a3909 --- /dev/null +++ b/packages/logging-plugin/vite.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from 'vite-plus'; + +export default defineConfig({ + pack: { + entry: 'src/index.ts', + format: ['esm', 'cjs'], + clean: true, + dts: false, + sourcemap: true, + external: ['@blac/core'], + outExtensions({ format }) { + return { + js: format === 'es' ? '.js' : '.cjs', + }; + }, + }, +}); diff --git a/packages/plugin-persist/package.json b/packages/plugin-persist/package.json index dd1443f2..246ed152 100644 --- a/packages/plugin-persist/package.json +++ b/packages/plugin-persist/package.json @@ -46,12 +46,12 @@ "state-management" ], "scripts": { - "dev": "tsdown --watch", - "build": "tsdown && tsc -p tsconfig.build.json && cp dist/index.d.ts dist/index.d.cts", + "dev": "vp pack --watch", + "build": "vp pack && tsc -p tsconfig.build.json && cp dist/index.d.ts dist/index.d.cts", "clean": "rm -rf dist", - "format": "prettier --write \".\"", - "lint": "eslint src --ext .ts,.tsx", - "lint:fix": "eslint src --ext .ts,.tsx --fix", + "format": "vp fmt \".\"", + "lint": "vp lint src", + "lint:fix": "vp lint src --fix", "test": "node ../../scripts/run-workspace-bin.mjs vitest run --passWithNoTests", "verify": "node ../../scripts/run-workspace-bin.mjs publint", "typecheck": "tsc --noEmit", @@ -63,10 +63,9 @@ }, "devDependencies": { "@blac/core": "workspace:*", - "prettier": "catalog:", "typescript": "catalog:", "vitest": "catalog:", "publint": "catalog:", - "tsdown": "catalog:" + "vite-plus": "catalog:" } } diff --git a/packages/plugin-persist/tsdown.config.ts b/packages/plugin-persist/tsdown.config.ts deleted file mode 100644 index 4373b9cd..00000000 --- a/packages/plugin-persist/tsdown.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { defineConfig } from 'tsdown'; - -export default defineConfig({ - entry: 'src/index.ts', - format: ['esm', 'cjs'], - clean: true, - dts: false, - sourcemap: true, - external: ['@blac/core'], - outExtensions({ format }) { - return { - js: format === 'es' ? '.js' : '.cjs', - }; - }, -}); diff --git a/packages/plugin-persist/vite.config.ts b/packages/plugin-persist/vite.config.ts new file mode 100644 index 00000000..227a3909 --- /dev/null +++ b/packages/plugin-persist/vite.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from 'vite-plus'; + +export default defineConfig({ + pack: { + entry: 'src/index.ts', + format: ['esm', 'cjs'], + clean: true, + dts: false, + sourcemap: true, + external: ['@blac/core'], + outExtensions({ format }) { + return { + js: format === 'es' ? '.js' : '.cjs', + }; + }, + }, +}); From b0bd4522fe1aa6401d48e76e2bce5fa2d244e13c Mon Sep 17 00:00:00 2001 From: Brendan Mullins Date: Fri, 27 Mar 2026 09:45:07 +0100 Subject: [PATCH 03/15] chore(apps): update vite config imports and scripts for vite-plus Update all app packages to import from vite-plus in vite.config.ts. Update package.json scripts to use vp dev, vp build, and vp fmt commands. Update .prettierignore to .oxfmtignore format in affected apps. --- apps/devtools-extension/package.json | 9 +++++---- apps/devtools-extension/vite.config.ts | 2 +- apps/docs/package.json | 3 ++- apps/examples/.oxfmtignore | 3 +++ apps/examples/package.json | 18 +++++++++--------- apps/examples/vite.config.ts | 2 +- apps/perf/.oxfmtignore | 1 + apps/perf/package.json | 14 +++++++------- apps/perf/vite.config.ts | 2 +- apps/preact-examples/package.json | 12 ++++++------ apps/preact-examples/vite.config.ts | 2 +- 11 files changed, 37 insertions(+), 31 deletions(-) create mode 100644 apps/examples/.oxfmtignore create mode 100644 apps/perf/.oxfmtignore diff --git a/apps/devtools-extension/package.json b/apps/devtools-extension/package.json index 77d11193..0674c8ee 100644 --- a/apps/devtools-extension/package.json +++ b/apps/devtools-extension/package.json @@ -4,9 +4,9 @@ "description": "Chrome DevTools extension for BlaC state management", "private": true, "scripts": { - "dev": "vite", - "build:app": "vite build", - "preview": "vite preview", + "dev": "vp dev", + "build:app": "vp build", + "preview": "vp preview", "typecheck": "tsc --project tsconfig.typecheck.json --noEmit", "typecheck:all": "tsc --noEmit", "clean": "rm -rf dist", @@ -26,6 +26,7 @@ "react": "^19.1.1", "react-dom": "^19.1.1", "typescript": "^5.3.3", - "vite": "^5.0.10" + "vite": "catalog:", + "vite-plus": "catalog:" } } diff --git a/apps/devtools-extension/vite.config.ts b/apps/devtools-extension/vite.config.ts index 74bb9807..027fe92f 100644 --- a/apps/devtools-extension/vite.config.ts +++ b/apps/devtools-extension/vite.config.ts @@ -1,4 +1,4 @@ -import { defineConfig } from 'vite'; +import { defineConfig } from 'vite-plus'; import react from '@vitejs/plugin-react'; import { resolve } from 'path'; diff --git a/apps/docs/package.json b/apps/docs/package.json index 4bdeca23..04045b9e 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -14,6 +14,7 @@ "typescript": "catalog:", "vite": "catalog:", "vitepress": "^1.6.4", - "wrangler": "^4" + "wrangler": "^4", + "vite-plus": "catalog:" } } diff --git a/apps/examples/.oxfmtignore b/apps/examples/.oxfmtignore new file mode 100644 index 00000000..578fcf98 --- /dev/null +++ b/apps/examples/.oxfmtignore @@ -0,0 +1,3 @@ +node_modules +dist +.turbo diff --git a/apps/examples/package.json b/apps/examples/package.json index 593b0c41..39f93e14 100644 --- a/apps/examples/package.json +++ b/apps/examples/package.json @@ -8,13 +8,13 @@ "type": "module", "main": "index.js", "scripts": { - "format": "prettier --write \".\"", - "_lint": "eslint . --ext .ts,.tsx", - "_lint:fix": "eslint . --ext .ts,.tsx --fix", + "format": "vp fmt \".\"", + "_lint": "vp lint .", + "_lint:fix": "vp lint . --fix", "_typecheck": "tsc --noEmit", - "dev": "vite", - "build:app": "vite build", - "preview": "vite preview", + "dev": "vp dev", + "build:app": "vp build", + "preview": "vp preview", "deploy": "wrangler pages deploy", "deploy:preview": "wrangler pages deploy --branch preview" }, @@ -31,14 +31,14 @@ "@blac/logging-plugin": "workspace:*", "react": "^19.1.1", "react-dom": "^19.1.1", - "vite": "^8.0.3" + "vite": "catalog:" }, "devDependencies": { - "prettier": "catalog:", "@vitejs/plugin-react": "^6.0.1", "typescript": "catalog:", "@types/react": "^19.1.9", "@types/react-dom": "^19.1.7", - "wrangler": "^4" + "wrangler": "^4", + "vite-plus": "catalog:" } } diff --git a/apps/examples/vite.config.ts b/apps/examples/vite.config.ts index ab3734b4..35237b5f 100644 --- a/apps/examples/vite.config.ts +++ b/apps/examples/vite.config.ts @@ -1,6 +1,6 @@ import path from 'node:path'; import react from '@vitejs/plugin-react'; -import { defineConfig } from 'vite'; +import { defineConfig } from 'vite-plus'; // https://vitejs.dev/config/ export default defineConfig({ diff --git a/apps/perf/.oxfmtignore b/apps/perf/.oxfmtignore new file mode 100644 index 00000000..1521c8b7 --- /dev/null +++ b/apps/perf/.oxfmtignore @@ -0,0 +1 @@ +dist diff --git a/apps/perf/package.json b/apps/perf/package.json index 26068369..6e374352 100644 --- a/apps/perf/package.json +++ b/apps/perf/package.json @@ -8,11 +8,11 @@ "type": "module", "main": "index.js", "scripts": { - "format": "prettier --write \".\"", - "lint": "eslint . --ext .ts,.tsx", - "lint:fix": "eslint . --ext .ts,.tsx --fix", + "format": "vp fmt \".\"", + "lint": "vp lint .", + "lint:fix": "vp lint . --fix", "_typecheck": "tsc --noEmit", - "dev": "vite" + "dev": "vp dev" }, "keywords": [], "author": "", @@ -23,13 +23,13 @@ "@blac/react": "workspace:*", "react": "^19.1.1", "react-dom": "^19.1.1", - "vite": "^7.0.6" + "vite": "catalog:" }, "devDependencies": { - "prettier": "catalog:", "@vitejs/plugin-react": "^4.7.0", "typescript": "catalog:", "@types/react": "^19.1.9", - "@types/react-dom": "^19.1.7" + "@types/react-dom": "^19.1.7", + "vite-plus": "catalog:" } } diff --git a/apps/perf/vite.config.ts b/apps/perf/vite.config.ts index f92adfab..e386a23c 100644 --- a/apps/perf/vite.config.ts +++ b/apps/perf/vite.config.ts @@ -1,5 +1,5 @@ import react from '@vitejs/plugin-react'; -import { defineConfig } from 'vite'; +import { defineConfig } from 'vite-plus'; import path from 'path'; // https://vitejs.dev/config/ diff --git a/apps/preact-examples/package.json b/apps/preact-examples/package.json index acad23e8..f7983d14 100644 --- a/apps/preact-examples/package.json +++ b/apps/preact-examples/package.json @@ -8,10 +8,10 @@ "type": "module", "main": "index.js", "scripts": { - "format": "prettier --write \".\"", - "dev": "vite", - "build:app": "vite build", - "preview": "vite preview" + "format": "vp fmt \".\"", + "dev": "vp dev", + "build:app": "vp build", + "preview": "vp preview" }, "keywords": [], "author": "", @@ -24,8 +24,8 @@ }, "devDependencies": { "@preact/preset-vite": "^2.9.4", - "prettier": "catalog:", "typescript": "catalog:", - "vite": "catalog:" + "vite": "catalog:", + "vite-plus": "catalog:" } } diff --git a/apps/preact-examples/vite.config.ts b/apps/preact-examples/vite.config.ts index e70fd62a..360e8e53 100644 --- a/apps/preact-examples/vite.config.ts +++ b/apps/preact-examples/vite.config.ts @@ -1,5 +1,5 @@ import preact from '@preact/preset-vite'; -import { defineConfig } from 'vite'; +import { defineConfig } from 'vite-plus'; export default defineConfig({ plugins: [preact()], From f8dddeca2ff4faf5d579431ad4507007ef1cf10e Mon Sep 17 00:00:00 2001 From: Brendan Mullins Date: Fri, 27 Mar 2026 09:45:14 +0100 Subject: [PATCH 04/15] chore(root): add vite-plus config and remove legacy tooling Add unified vite.config.ts with lint, fmt, staged, and run task configs. Remove turbo.json (replaced by vite run config). Remove eslint.config.mjs and .prettierrc (handled by vite-plus). Rename .prettierignore to .oxfmtignore. Add AGENTS.md documentation. Add .vite-hooks/pre-commit git hook for staged checks. --- .prettierignore => .oxfmtignore | 0 .prettierrc | 3 - .vite-hooks/pre-commit.bak | 1 + AGENTS.md | 88 +++++++++ eslint.config.mjs | 180 ----------------- turbo.json | 64 ------ vite.config.ts | 334 ++++++++++++++++++++++++++++++++ 7 files changed, 423 insertions(+), 247 deletions(-) rename .prettierignore => .oxfmtignore (100%) delete mode 100644 .prettierrc create mode 100755 .vite-hooks/pre-commit.bak create mode 100644 AGENTS.md delete mode 100644 eslint.config.mjs delete mode 100644 turbo.json create mode 100644 vite.config.ts diff --git a/.prettierignore b/.oxfmtignore similarity index 100% rename from .prettierignore rename to .oxfmtignore diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 544138be..00000000 --- a/.prettierrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "singleQuote": true -} diff --git a/.vite-hooks/pre-commit.bak b/.vite-hooks/pre-commit.bak new file mode 100755 index 00000000..85fb65b4 --- /dev/null +++ b/.vite-hooks/pre-commit.bak @@ -0,0 +1 @@ +vp staged diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..adfdf836 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,88 @@ + + +# Using Vite+, the Unified Toolchain for the Web + +This project is using Vite+, a unified toolchain built on top of Vite, Rolldown, Vitest, tsdown, Oxlint, Oxfmt, and Vite Task. Vite+ wraps runtime management, package management, and frontend tooling in a single global CLI called `vp`. Vite+ is distinct from Vite, but it invokes Vite through `vp dev` and `vp build`. + +## Vite+ Workflow + +`vp` is a global binary that handles the full development lifecycle. Run `vp help` to print a list of commands and `vp --help` for information about a specific command. + +### Start + +- create - Create a new project from a template +- migrate - Migrate an existing project to Vite+ +- config - Configure hooks and agent integration +- staged - Run linters on staged files +- install (`i`) - Install dependencies +- env - Manage Node.js versions + +### Develop + +- dev - Run the development server +- check - Run format, lint, and TypeScript type checks +- lint - Lint code +- fmt - Format code +- test - Run tests + +### Execute + +- run - Run monorepo tasks +- exec - Execute a command from local `node_modules/.bin` +- dlx - Execute a package binary without installing it as a dependency +- cache - Manage the task cache + +### Build + +- build - Build for production +- pack - Build libraries +- preview - Preview production build + +### Manage Dependencies + +Vite+ automatically detects and wraps the underlying package manager such as pnpm, npm, or Yarn through the `packageManager` field in `package.json` or package manager-specific lockfiles. + +- add - Add packages to dependencies +- remove (`rm`, `un`, `uninstall`) - Remove packages from dependencies +- update (`up`) - Update packages to latest versions +- dedupe - Deduplicate dependencies +- outdated - Check for outdated packages +- list (`ls`) - List installed packages +- why (`explain`) - Show why a package is installed +- info (`view`, `show`) - View package information from the registry +- link (`ln`) / unlink - Manage local package links +- pm - Forward a command to the package manager + +### Maintain + +- upgrade - Update `vp` itself to the latest version + +These commands map to their corresponding tools. For example, `vp dev --port 3000` runs Vite's dev server and works the same as Vite. `vp test` runs JavaScript tests through the bundled Vitest. The version of all tools can be checked using `vp --version`. This is useful when researching documentation, features, and bugs. + +## Common Pitfalls + +- **Using the package manager directly:** Do not use pnpm, npm, or Yarn directly. Vite+ can handle all package manager operations. +- **Always use Vite commands to run tools:** Don't attempt to run `vp vitest` or `vp oxlint`. They do not exist. Use `vp test` and `vp lint` instead. +- **Running scripts:** Vite+ built-in commands (`vp dev`, `vp build`, `vp test`, etc.) always run the Vite+ built-in tool, not any `package.json` script of the same name. To run a custom script that shares a name with a built-in command, use `vp run