Skip to content

Commit 6080f04

Browse files
authored
feat: remove svelt from package (#85)
* refactor: remove Svelte integration and related documentation - Removed Svelte integration from the codebase, including all related files and tests. - Updated documentation to reflect the removal of Svelte support, including changelog, cheatsheet, and contributing guidelines. - Adjusted framework integration details to focus on React, Vue, Angular, SolidJS, and Preact. - Cleaned up package.json and index.ts to eliminate references to Svelte. * refactor: streamline pre-commit checks and update package.json scripts * chore: sync pnpm lockfile after svelte removal
1 parent fbf025e commit 6080f04

47 files changed

Lines changed: 54 additions & 2678 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.husky/pre-commit

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,7 @@ pnpm exec lint-staged
55

66
echo "📝 Type checking..."
77
pnpm run typecheck
8+
pnpm run test
9+
pnpm run test:docs
810

911
echo "✅ Pre-commit checks passed!"

.size-limit.json

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,6 @@
6565
"limit": "10 KB",
6666
"gzip": true
6767
},
68-
{
69-
"name": "Svelte integration",
70-
"path": "build/integrations/svelte/index.js",
71-
"limit": "10 KB",
72-
"gzip": true
73-
},
7468
{
7569
"name": "Angular integration",
7670
"path": "build/integrations/angular/index.js",

CLAUDE.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
44

55
## Project Overview
66

7-
**@mcabreradev/filter** is a TypeScript-first filtering engine for arrays with SQL-like wildcards, MongoDB-style operators, lazy evaluation, memoization, and framework integrations (React, Vue, Svelte, Angular, Preact, SolidJS). It provides 18+ operators for advanced filtering with zero dependencies (except Zod for validation).
7+
**@mcabreradev/filter** is a TypeScript-first filtering engine for arrays with SQL-like wildcards, MongoDB-style operators, lazy evaluation, memoization, and framework integrations (React, Vue, Angular, Preact, SolidJS). It provides 18+ operators for advanced filtering with zero dependencies (except Zod for validation).
88

99
## Development Commands
1010

@@ -132,7 +132,6 @@ pnpm run docs:api
132132
- **`src/integrations/`** - Framework integrations (all optional peer deps)
133133
- `react/` - React hooks (useFilter, useDebouncedFilter, useFilteredState, usePaginatedFilter)
134134
- `vue/` - Vue composables with reactivity
135-
- `svelte/` - Svelte stores
136135
- `angular/` - Angular integration
137136
- `preact/` - Preact hooks
138137
- `solidjs/` - SolidJS integration
@@ -213,7 +212,6 @@ To add new operators:
213212
Framework-specific code lives in `src/integrations/<framework>/`:
214213
- React uses hooks pattern
215214
- Vue uses Composition API
216-
- Svelte uses stores
217215
- Angular, Preact, SolidJS also supported
218216
- Shared utilities in `src/integrations/shared/`
219217
- All optional peer dependencies

__test__/modular-imports.test.ts

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,6 @@ describe('Modular Imports', () => {
2020
expect(vueModule.usePaginatedFilter).toBeDefined();
2121
});
2222

23-
it('should import Svelte stores from svelte path', async () => {
24-
const svelteModule = await import('../src/integrations/svelte/index.js');
25-
26-
expect(svelteModule.useFilter).toBeDefined();
27-
expect(svelteModule.useFilteredState).toBeDefined();
28-
expect(svelteModule.useDebouncedFilter).toBeDefined();
29-
expect(svelteModule.usePaginatedFilter).toBeDefined();
30-
});
31-
3223
it('should import React hooks from main index', async () => {
3324
const mainModule = await import('../src/index.js');
3425

@@ -43,7 +34,6 @@ describe('Modular Imports', () => {
4334

4435
expect(mainModule.useFilterReact).toBeDefined();
4536
expect(mainModule.useFilterVue).toBeDefined();
46-
expect(mainModule.useFilterSvelte).toBeDefined();
4737
});
4838
});
4939

docs/.vitepress/config.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ export default defineConfig({
118118
{ text: 'Overview', link: '/frameworks/' },
119119
{ text: 'React', link: '/frameworks/react' },
120120
{ text: 'Vue', link: '/frameworks/vue' },
121-
{ text: 'Svelte', link: '/frameworks/svelte' },
122121
{ text: 'Angular', link: '/frameworks/angular' },
123122
{ text: 'SolidJS', link: '/frameworks/solidjs' },
124123
{ text: 'Preact', link: '/frameworks/preact' },
@@ -130,7 +129,6 @@ export default defineConfig({
130129
items: [
131130
{ text: 'Next.js', link: '/frameworks/nextjs' },
132131
{ text: 'Nuxt', link: '/frameworks/nuxt' },
133-
{ text: 'SvelteKit', link: '/frameworks/sveltekit' },
134132
],
135133
},
136134
{

docs/CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ docs/
3737
│ └── theme/ # Custom theme (index.ts, style.css, components/)
3838
├── guide/ # Getting started, core features, configuration
3939
├── operators/ # Operator reference pages
40-
├── frameworks/ # React, Vue, Svelte, Angular, SolidJS, Preact, Next.js, Nuxt, etc.
40+
├── frameworks/ # React, Vue, Angular, SolidJS, Preact, Next.js, Nuxt, etc.
4141
├── api/ # API reference (reference.md, operators.md, types.md)
4242
├── advanced/ # Architecture, type system, performance, migration
4343
├── implementation/ # Deep-dive implementation details

docs/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ pnpm run docs:api
4242

4343
- `.vitepress/` - VitePress configuration and theme
4444
- `guide/` - Getting started and core feature guides
45-
- `frameworks/` - Framework integration guides (React, Vue, Svelte)
45+
- `frameworks/` - Framework integration guides (React, Vue)
4646
- `examples/` - Code examples and use cases
4747
- `api/` - API reference documentation
4848
- `public/` - Static assets (images, logos, etc.)

docs/advanced/architecture.md

Lines changed: 2 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Deep dive into the architecture of @mcabreradev/filter.
44

55
## Overview
66

7-
@mcabreradev/filter is built with a modular architecture that separates concerns and enables tree-shaking for optimal bundle sizes. The library has evolved through multiple versions, with v5.8.2 featuring MongoDB-style operators, framework integrations (React, Vue, Svelte, Angular, SolidJS, Preact), lazy evaluation, memoization, geospatial operators, datetime operators, and visual debugging.
7+
@mcabreradev/filter is built with a modular architecture that separates concerns and enables tree-shaking for optimal bundle sizes. The library has evolved through multiple versions, with v5.8.2 featuring MongoDB-style operators, framework integrations (React, Vue, Angular, SolidJS, Preact), lazy evaluation, memoization, geospatial operators, datetime operators, and visual debugging.
88

99
## Data Flow
1010

@@ -84,7 +84,6 @@ src/
8484
└── integrations/ # Framework integrations (v5.3.0+)
8585
├── react/ # useFilter, useFilteredState, useDebouncedFilter, usePaginatedFilter
8686
├── vue/ # Same 4 composables with Composition API
87-
├── svelte/ # Same 4 patterns with Svelte stores
8887
├── angular/ # Angular integration (v5.7.0+)
8988
├── preact/ # Preact hooks (v5.7.0+)
9089
├── solidjs/ # SolidJS integration (v5.7.0+)
@@ -863,54 +862,6 @@ export function useFilter<T>(
863862
}
864863
```
865864

866-
### Svelte Integration
867-
868-
Uses Svelte stores for reactive state management.
869-
870-
```typescript
871-
export function useFilter<T>(
872-
data: Writable<T[]> | Readable<T[]>,
873-
expression: MaybeStore<Expression<T>>,
874-
options?: FilterOptions,
875-
): UseFilterResult<T> {
876-
const expressionStore = toStore(expression);
877-
878-
const filtered = derived(
879-
[data, expressionStore],
880-
([$data, $expression]) => {
881-
if (!$data || $data.length === 0) {
882-
return [];
883-
}
884-
885-
try {
886-
return filter($data, $expression, options);
887-
} catch {
888-
return [];
889-
}
890-
}
891-
);
892-
893-
const isFiltering = derived(
894-
[data, filtered],
895-
([$data, $filtered]) => {
896-
return $filtered.length !== $data.length;
897-
}
898-
);
899-
900-
return {
901-
filtered,
902-
isFiltering,
903-
};
904-
}
905-
906-
function toStore<T>(value: MaybeStore<T>): Readable<T> {
907-
if (isStore(value)) {
908-
return value;
909-
}
910-
return readable(value);
911-
}
912-
```
913-
914865
## Type System
915866

916867
### Generic Type Constraints with Operator Autocomplete
@@ -1347,7 +1298,6 @@ export { filterDebug } from './debug/debug-filter';
13471298
// Framework integrations in separate entry points
13481299
export { useFilter, useDebouncedFilter } from './integrations/react';
13491300
export { useFilter as useFilterVue } from './integrations/vue';
1350-
export { useFilter as useFilterSvelte } from './integrations/svelte';
13511301
```
13521302

13531303
### Code Splitting Configuration
@@ -1368,10 +1318,6 @@ export { useFilter as useFilterSvelte } from './integrations/svelte';
13681318
"import": "./dist/integrations/vue/index.js",
13691319
"types": "./dist/integrations/vue/index.d.ts"
13701320
},
1371-
"./svelte": {
1372-
"import": "./dist/integrations/svelte/index.js",
1373-
"types": "./dist/integrations/svelte/index.d.ts"
1374-
}
13751321
}
13761322
}
13771323
```
@@ -1518,7 +1464,7 @@ describe('performance', () => {
15181464
- **v5.1.0**: Lazy evaluation with generators
15191465
- **v5.2.0**: Multi-layer memoization, logical operators
15201466
- **v5.3.0**: Initial framework integrations
1521-
- **v5.4.0**: Full React, Vue, Svelte support
1467+
- **v5.4.0**: Full React, Vue support
15221468
- **v5.5.0**: Array OR syntax, visual debugging, playground
15231469
- **v5.6.0**: Geospatial operators, datetime operators
15241470
- **v5.7.0**: Angular, SolidJS, Preact integrations

docs/advanced/bundle-size.md

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ For detailed import syntax and examples, see the [Modular Imports Guide](/guide/
1919
| Operators (granular) | ~5 KB | 58% | Specific operators |
2020
| React integration | ~3 KB | 75% | React hooks only |
2121
| Vue integration | ~3 KB | 75% | Vue composables only |
22-
| Svelte integration | ~3 KB | 75% | Svelte stores only |
2322
| Lazy evaluation | ~2 KB | 83% | Large dataset processing |
2423

2524
## Import Strategies
@@ -106,10 +105,6 @@ import { useFilter, useDebouncedFilter } from '@mcabreradev/filter/react';
106105
// Vue
107106
import { useFilter } from '@mcabreradev/filter/vue';
108107
// Bundle: ~3 KB (gzipped) - 70% reduction
109-
110-
// Svelte
111-
import { filterStore } from '@mcabreradev/filter/svelte';
112-
// Bundle: ~3 KB (gzipped) - 70% reduction
113108
```
114109

115110
**Use when:**

docs/advanced/type-system.md

Lines changed: 0 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -699,61 +699,6 @@ const { filtered: searchResults, isPending } = useDebouncedFilter(
699699
);
700700
```
701701

702-
### Svelte Types
703-
704-
```typescript
705-
import type { Readable, Writable } from 'svelte/store';
706-
707-
type MaybeStore<T> = T | Readable<T> | Writable<T>;
708-
709-
interface UseFilterResult<T> {
710-
filtered: Readable<T[]>;
711-
isFiltering: Readable<boolean>;
712-
}
713-
714-
interface UseFilteredStateResult<T> {
715-
data: Writable<T[]>;
716-
expression: Writable<Expression<T>>;
717-
filtered: Readable<T[]>;
718-
isFiltering: Readable<boolean>;
719-
}
720-
721-
interface UseDebouncedFilterResult<T> {
722-
filtered: Readable<T[]>;
723-
isFiltering: Readable<boolean>;
724-
isPending: Readable<boolean>;
725-
}
726-
727-
interface UsePaginatedFilterResult<T> {
728-
filtered: Readable<T[]>;
729-
isFiltering: Readable<boolean>;
730-
currentPage: Writable<number>;
731-
totalPages: Readable<number>;
732-
pageSize: Writable<number>;
733-
totalItems: Readable<number>;
734-
hasNextPage: Readable<boolean>;
735-
hasPreviousPage: Readable<boolean>;
736-
nextPage: () => void;
737-
previousPage: () => void;
738-
goToPage: (page: number) => void;
739-
setPageSize: (size: number) => void;
740-
}
741-
```
742-
743-
**Example**:
744-
```typescript
745-
import { writable } from 'svelte/store';
746-
import { useFilter } from '@mcabreradev/filter/svelte';
747-
748-
const users = writable([...]);
749-
const searchTerm = writable('');
750-
751-
const { filtered, isFiltering } = useFilter(
752-
users,
753-
{ name: { $contains: searchTerm } }
754-
);
755-
```
756-
757702
## Type Guards
758703

759704
### Expression Type Guard

0 commit comments

Comments
 (0)