@vielzeug/sourcerer 1.0.6 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -74
- package/dist/_dev.cjs +2 -0
- package/dist/_dev.cjs.map +1 -0
- package/dist/_dev.d.ts +2 -0
- package/dist/_dev.d.ts.map +1 -0
- package/dist/_dev.js +6 -0
- package/dist/_dev.js.map +1 -0
- package/dist/asyncSource.cjs +1 -1
- package/dist/asyncSource.cjs.map +1 -1
- package/dist/asyncSource.d.ts +14 -58
- package/dist/asyncSource.d.ts.map +1 -1
- package/dist/asyncSource.js +28 -27
- package/dist/asyncSource.js.map +1 -1
- package/dist/cursorSource.cjs +1 -1
- package/dist/cursorSource.cjs.map +1 -1
- package/dist/cursorSource.d.ts +3 -3
- package/dist/cursorSource.d.ts.map +1 -1
- package/dist/cursorSource.js +77 -110
- package/dist/cursorSource.js.map +1 -1
- package/dist/devtools.cjs +2 -0
- package/dist/devtools.cjs.map +1 -0
- package/dist/devtools.d.ts +6 -0
- package/dist/devtools.d.ts.map +1 -0
- package/dist/devtools.js +8 -0
- package/dist/devtools.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -14
- package/dist/infiniteSource.cjs +1 -1
- package/dist/infiniteSource.cjs.map +1 -1
- package/dist/infiniteSource.d.ts +3 -3
- package/dist/infiniteSource.d.ts.map +1 -1
- package/dist/infiniteSource.js +72 -107
- package/dist/infiniteSource.js.map +1 -1
- package/dist/localSource.cjs +1 -1
- package/dist/localSource.cjs.map +1 -1
- package/dist/localSource.d.ts +2 -22
- package/dist/localSource.d.ts.map +1 -1
- package/dist/localSource.js +58 -114
- package/dist/localSource.js.map +1 -1
- package/dist/pageSource.cjs +2 -0
- package/dist/pageSource.cjs.map +1 -0
- package/dist/pageSource.d.ts +4 -0
- package/dist/pageSource.d.ts.map +1 -0
- package/dist/pageSource.js +96 -0
- package/dist/pageSource.js.map +1 -0
- package/dist/pagination.cjs +1 -1
- package/dist/pagination.cjs.map +1 -1
- package/dist/pagination.d.ts +5 -30
- package/dist/pagination.d.ts.map +1 -1
- package/dist/pagination.js +21 -27
- package/dist/pagination.js.map +1 -1
- package/dist/requestController.cjs +2 -0
- package/dist/requestController.cjs.map +1 -0
- package/dist/requestController.d.ts +13 -0
- package/dist/requestController.d.ts.map +1 -0
- package/dist/requestController.js +29 -0
- package/dist/requestController.js.map +1 -0
- package/dist/sourceStore.cjs +2 -0
- package/dist/sourceStore.cjs.map +1 -0
- package/dist/sourceStore.d.ts +10 -0
- package/dist/sourceStore.d.ts.map +1 -0
- package/dist/sourceStore.js +38 -0
- package/dist/sourceStore.js.map +1 -0
- package/dist/sourcerer.cjs +1 -1
- package/dist/sourcerer.cjs.map +1 -1
- package/dist/sourcerer.iife.js +1 -1
- package/dist/sourcerer.iife.js.map +1 -1
- package/dist/sourcerer.js +1 -1
- package/dist/sourcerer.js.map +1 -1
- package/dist/types.d.ts +128 -345
- package/dist/types.d.ts.map +1 -1
- package/package.json +10 -7
- package/dist/_utils.cjs +0 -2
- package/dist/_utils.cjs.map +0 -1
- package/dist/_utils.d.ts +0 -8
- package/dist/_utils.d.ts.map +0 -1
- package/dist/_utils.js +0 -7
- package/dist/_utils.js.map +0 -1
- package/dist/applyQuery.cjs +0 -2
- package/dist/applyQuery.cjs.map +0 -1
- package/dist/applyQuery.d.ts +0 -20
- package/dist/applyQuery.d.ts.map +0 -1
- package/dist/applyQuery.js +0 -8
- package/dist/applyQuery.js.map +0 -1
- package/dist/asyncSearch.cjs +0 -2
- package/dist/asyncSearch.cjs.map +0 -1
- package/dist/asyncSearch.d.ts +0 -13
- package/dist/asyncSearch.d.ts.map +0 -1
- package/dist/asyncSearch.js +0 -28
- package/dist/asyncSearch.js.map +0 -1
- package/dist/codecs.cjs +0 -2
- package/dist/codecs.cjs.map +0 -1
- package/dist/codecs.d.ts +0 -30
- package/dist/codecs.d.ts.map +0 -1
- package/dist/codecs.js +0 -36
- package/dist/codecs.js.map +0 -1
- package/dist/core.cjs +0 -2
- package/dist/core.cjs.map +0 -1
- package/dist/core.d.ts +0 -47
- package/dist/core.d.ts.map +0 -1
- package/dist/core.js +0 -59
- package/dist/core.js.map +0 -1
- package/dist/derive.cjs +0 -2
- package/dist/derive.cjs.map +0 -1
- package/dist/derive.d.ts +0 -28
- package/dist/derive.d.ts.map +0 -1
- package/dist/derive.js +0 -40
- package/dist/derive.js.map +0 -1
- package/dist/errors.cjs +0 -2
- package/dist/errors.cjs.map +0 -1
- package/dist/errors.d.ts +0 -62
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -29
- package/dist/errors.js.map +0 -1
- package/dist/fetchManager.cjs +0 -2
- package/dist/fetchManager.cjs.map +0 -1
- package/dist/fetchManager.d.ts +0 -27
- package/dist/fetchManager.d.ts.map +0 -1
- package/dist/fetchManager.js +0 -41
- package/dist/fetchManager.js.map +0 -1
- package/dist/merge.cjs +0 -2
- package/dist/merge.cjs.map +0 -1
- package/dist/merge.d.ts +0 -30
- package/dist/merge.d.ts.map +0 -1
- package/dist/merge.js +0 -34
- package/dist/merge.js.map +0 -1
- package/dist/prefetch.cjs +0 -2
- package/dist/prefetch.cjs.map +0 -1
- package/dist/prefetch.d.ts +0 -32
- package/dist/prefetch.d.ts.map +0 -1
- package/dist/prefetch.js +0 -38
- package/dist/prefetch.js.map +0 -1
- package/dist/presets.cjs +0 -2
- package/dist/presets.cjs.map +0 -1
- package/dist/presets.d.ts +0 -17
- package/dist/presets.d.ts.map +0 -1
- package/dist/presets.js +0 -43
- package/dist/presets.js.map +0 -1
- package/dist/remoteSource.cjs +0 -2
- package/dist/remoteSource.cjs.map +0 -1
- package/dist/remoteSource.d.ts +0 -4
- package/dist/remoteSource.d.ts.map +0 -1
- package/dist/remoteSource.js +0 -165
- package/dist/remoteSource.js.map +0 -1
- package/dist/state.cjs +0 -2
- package/dist/state.cjs.map +0 -1
- package/dist/state.d.ts +0 -23
- package/dist/state.d.ts.map +0 -1
- package/dist/state.js +0 -14
- package/dist/state.js.map +0 -1
package/dist/types.d.ts
CHANGED
|
@@ -1,374 +1,157 @@
|
|
|
1
|
-
|
|
2
|
-
export type
|
|
3
|
-
export type
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
* The active search string. Absent (or empty string) when no search is active.
|
|
18
|
-
* Both representations are equivalent — treat `''` and `undefined` identically.
|
|
19
|
-
* `encodeQuery` omits this field when falsy; `decodeQuery` returns it only when present in the URL.
|
|
20
|
-
*/
|
|
21
|
-
search?: string;
|
|
1
|
+
export type Predicate<T> = (value: T, index: number, values: readonly T[]) => boolean;
|
|
2
|
+
export type Sorter<T> = (left: T, right: T) => number;
|
|
3
|
+
export type Disposable = {
|
|
4
|
+
[Symbol.dispose](): void;
|
|
5
|
+
readonly disposalSignal: AbortSignal;
|
|
6
|
+
dispose(): void;
|
|
7
|
+
readonly disposed: boolean;
|
|
8
|
+
};
|
|
9
|
+
export type PagePagination = Readonly<{
|
|
10
|
+
count: number;
|
|
11
|
+
hasNext: boolean;
|
|
12
|
+
hasPrevious: boolean;
|
|
13
|
+
index: number;
|
|
14
|
+
kind: 'page';
|
|
15
|
+
size: number;
|
|
16
|
+
total: number;
|
|
22
17
|
}>;
|
|
23
|
-
export type
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
18
|
+
export type CursorPagination<TCursor = string> = Readonly<{
|
|
19
|
+
hasNext: boolean;
|
|
20
|
+
hasPrevious: boolean;
|
|
21
|
+
kind: 'cursor';
|
|
22
|
+
nextCursor?: TCursor;
|
|
23
|
+
previousCursor?: TCursor;
|
|
24
|
+
total?: number;
|
|
29
25
|
}>;
|
|
30
|
-
export type
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
export type InfiniteSourceQuery = Readonly<{
|
|
37
|
-
limit: number;
|
|
38
|
-
page: number;
|
|
39
|
-
search?: string;
|
|
26
|
+
export type InfinitePagination = Readonly<{
|
|
27
|
+
hasMore: boolean;
|
|
28
|
+
isLoadingMore: boolean;
|
|
29
|
+
kind: 'infinite';
|
|
30
|
+
loaded: number;
|
|
31
|
+
total: number;
|
|
40
32
|
}>;
|
|
41
|
-
export
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
durationMs: number;
|
|
50
|
-
/** Structured error when `status` is `'error'`. */
|
|
51
|
-
error?: SourcererError;
|
|
52
|
-
/** The query object that was fetched. */
|
|
33
|
+
export type AnyPagination = CursorPagination<unknown> | InfinitePagination | PagePagination;
|
|
34
|
+
/** Loaded state remains internally consistent while pendingQuery describes newer work. */
|
|
35
|
+
export type SourceSnapshot<T, TQuery, TPagination extends AnyPagination = AnyPagination> = Readonly<{
|
|
36
|
+
data: readonly T[];
|
|
37
|
+
error: Error | null;
|
|
38
|
+
isFetching: boolean;
|
|
39
|
+
pagination: TPagination;
|
|
40
|
+
pendingQuery?: TQuery;
|
|
53
41
|
query: TQuery;
|
|
54
|
-
status: 'error' | 'success';
|
|
55
42
|
}>;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
export type
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
isLoading: boolean;
|
|
64
|
-
isSearchPending: boolean;
|
|
65
|
-
pageCount: number;
|
|
66
|
-
pageNumber: number;
|
|
43
|
+
export type Source<T, TQuery, TPagination extends AnyPagination = AnyPagination> = Disposable & {
|
|
44
|
+
readonly snapshot: SourceSnapshot<T, TQuery, TPagination>;
|
|
45
|
+
subscribe(listener: (snapshot: SourceSnapshot<T, TQuery, TPagination>) => void): () => void;
|
|
46
|
+
};
|
|
47
|
+
export type PageQuery<TFilter = unknown, TSort = unknown> = Readonly<{
|
|
48
|
+
filter?: TFilter;
|
|
49
|
+
page: number;
|
|
67
50
|
pageSize: number;
|
|
68
|
-
|
|
51
|
+
search: string;
|
|
52
|
+
sort?: TSort;
|
|
69
53
|
}>;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
* Safe to embed in HTML or pass over the network.
|
|
73
|
-
*/
|
|
74
|
-
export type SourceSnapshot<T> = Readonly<{
|
|
75
|
-
items: readonly T[];
|
|
54
|
+
export type PageQueryPatch<TFilter = unknown, TSort = unknown> = Readonly<{
|
|
55
|
+
filter?: TFilter | undefined;
|
|
76
56
|
page?: number;
|
|
57
|
+
pageSize?: number;
|
|
77
58
|
search?: string;
|
|
59
|
+
sort?: TSort | undefined;
|
|
60
|
+
}>;
|
|
61
|
+
export type PageResult<T> = Readonly<{
|
|
62
|
+
data: readonly T[];
|
|
78
63
|
total: number;
|
|
79
64
|
}>;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
readonly error: SourcererError;
|
|
94
|
-
readonly status: 'error';
|
|
95
|
-
} | {
|
|
96
|
-
readonly items: readonly T[];
|
|
97
|
-
readonly status: 'success';
|
|
98
|
-
} | {
|
|
99
|
-
readonly status: 'loading';
|
|
100
|
-
};
|
|
101
|
-
/**
|
|
102
|
-
* Minimal observable interface shared by all source and derived source types.
|
|
103
|
-
* Framework adapters should target this interface for maximum portability.
|
|
104
|
-
*/
|
|
105
|
-
export type ReactiveSource<T, TMeta = SourceMeta> = {
|
|
106
|
-
[Symbol.dispose](): void;
|
|
107
|
-
readonly current: readonly T[];
|
|
108
|
-
readonly disposalSignal: AbortSignal;
|
|
109
|
-
dispose(): void;
|
|
110
|
-
readonly disposed: boolean;
|
|
111
|
-
readonly meta: TMeta;
|
|
112
|
-
subscribe(listener: () => void): () => void;
|
|
113
|
-
};
|
|
114
|
-
/**
|
|
115
|
-
* Read-only reactive projection derived from a parent source.
|
|
116
|
-
* Returned by `deriveSource()`.
|
|
117
|
-
*/
|
|
118
|
-
export type DerivedSource<T, TMeta = SourceMeta> = ReactiveSource<T, TMeta>;
|
|
119
|
-
/**
|
|
120
|
-
* Read-only reactive view combining multiple sources.
|
|
121
|
-
* Returned by `mergeSource()` when sources have incompatible meta shapes.
|
|
122
|
-
*/
|
|
123
|
-
export type MergedSource<T> = {
|
|
124
|
-
[Symbol.dispose](): void;
|
|
125
|
-
readonly current: readonly T[];
|
|
126
|
-
readonly disposalSignal: AbortSignal;
|
|
127
|
-
dispose(): void;
|
|
128
|
-
readonly disposed: boolean;
|
|
129
|
-
subscribe(listener: () => void): () => void;
|
|
65
|
+
export type PageLoadContext<TQuery> = Readonly<{
|
|
66
|
+
query: TQuery;
|
|
67
|
+
signal: AbortSignal;
|
|
68
|
+
}>;
|
|
69
|
+
export type PageSource<T, TFilter = unknown, TSort = unknown> = Source<T, PageQuery<TFilter, TSort>, PagePagination> & {
|
|
70
|
+
readonly page: Readonly<{
|
|
71
|
+
go(index: number): Promise<void>;
|
|
72
|
+
last(): Promise<void>;
|
|
73
|
+
next(): Promise<void>;
|
|
74
|
+
previous(): Promise<void>;
|
|
75
|
+
}>;
|
|
76
|
+
reload(): Promise<void>;
|
|
77
|
+
setQuery(changes: PageQueryPatch<TFilter, TSort>): Promise<void>;
|
|
130
78
|
};
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
79
|
+
export type PageSourceConfig<T, TFilter = unknown, TSort = unknown> = Readonly<{
|
|
80
|
+
autoStart?: boolean;
|
|
81
|
+
initialQuery?: PageQueryPatch<TFilter, TSort>;
|
|
82
|
+
load(context: PageLoadContext<PageQuery<TFilter, TSort>>): Promise<PageResult<T>>;
|
|
135
83
|
}>;
|
|
136
|
-
|
|
137
|
-
export type PageNavigator<T> = ReactiveSource<T, SourceMeta> & {
|
|
138
|
-
goTo(page: number): Promise<void>;
|
|
139
|
-
goToLast(): Promise<void>;
|
|
140
|
-
next(): Promise<void>;
|
|
141
|
-
/**
|
|
142
|
-
* Applies one or more query changes atomically — a single fetch for any combination
|
|
143
|
-
* of limit, page, and search updates.
|
|
144
|
-
*
|
|
145
|
-
* @example
|
|
146
|
-
* ```ts
|
|
147
|
-
* // Change limit and search in one fetch
|
|
148
|
-
* await source.patch({ limit: 20, search: 'hello' });
|
|
149
|
-
* ```
|
|
150
|
-
*/
|
|
151
|
-
patch(changes: Partial<SourceQuery>): Promise<void>;
|
|
152
|
-
prev(): Promise<void>;
|
|
153
|
-
/**
|
|
154
|
-
* The current query state — limit, page, and optional search string.
|
|
155
|
-
* Use `encodeQuery(source.query)` to serialize to URL params.
|
|
156
|
-
*/
|
|
157
|
-
readonly query: SourceQuery;
|
|
158
|
-
/**
|
|
159
|
-
* Resolves when the source is idle (no pending async computation).
|
|
160
|
-
* Rejects with `SourceTimeoutError` after `timeout` ms if still busy.
|
|
161
|
-
*/
|
|
162
|
-
ready(timeout?: number): Promise<void>;
|
|
163
|
-
reset(): Promise<void>;
|
|
164
|
-
/**
|
|
165
|
-
* Updates the search query. Debounced by default.
|
|
166
|
-
* Always returns a `Promise<void>` that resolves when the triggered fetch completes.
|
|
167
|
-
* Pass `{ immediate: true }` to skip the debounce window.
|
|
168
|
-
*/
|
|
169
|
-
search(query: string, opts?: SearchOptions): Promise<void>;
|
|
170
|
-
};
|
|
171
|
-
/** Full set of fields patchable in one atomic recompute on a local source. */
|
|
172
|
-
export type LocalSourceQuery<T> = Partial<{
|
|
173
|
-
filter: Predicate<T> | undefined;
|
|
174
|
-
limit: number;
|
|
84
|
+
export type LocalQuery = Readonly<{
|
|
175
85
|
page: number;
|
|
86
|
+
pageSize: number;
|
|
176
87
|
search: string;
|
|
177
|
-
sort: Sorter<T> | undefined;
|
|
178
88
|
}>;
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
export type LocalSource<T> =
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
* ```
|
|
194
|
-
*/
|
|
195
|
-
patch(changes: LocalSourceQuery<T>): Promise<void>;
|
|
196
|
-
setData(data: readonly T[]): Promise<void>;
|
|
197
|
-
};
|
|
198
|
-
/**
|
|
199
|
-
* Full interface for remote page-based sources.
|
|
200
|
-
* `optimisticUpdate(mutator)` throws if a concurrent update is already pending.
|
|
201
|
-
*/
|
|
202
|
-
export type RemoteSource<T, TFilter = unknown, TSort = unknown> = Omit<PageNavigator<T>, 'patch' | 'query'> & {
|
|
203
|
-
/**
|
|
204
|
-
* Applies an optimistic update immediately before a fetch settles.
|
|
205
|
-
* Returns a rollback function. The optimistic state is automatically cleared
|
|
206
|
-
* on the next successful fetch, or rolled back on failure.
|
|
207
|
-
*
|
|
208
|
-
* @throws {Error} If an optimistic update is already active.
|
|
209
|
-
*/
|
|
210
|
-
optimisticUpdate(mutator: (current: readonly T[]) => readonly T[], options?: {
|
|
211
|
-
total?: number;
|
|
212
|
-
}): () => void;
|
|
213
|
-
/**
|
|
214
|
-
* Applies one or more query changes atomically — a single fetch for any combination
|
|
215
|
-
* of limit, page, search, filter, and sort updates.
|
|
216
|
-
*/
|
|
217
|
-
patch(changes: Partial<RemoteSourceQuery<TFilter, TSort>>): Promise<void>;
|
|
218
|
-
/**
|
|
219
|
-
* The current query state. Use `encodeQuery(source.query)` to serialize to URL params.
|
|
220
|
-
*/
|
|
221
|
-
readonly query: RemoteSourceQuery<TFilter, TSort>;
|
|
222
|
-
ready(timeout?: number): Promise<void>;
|
|
223
|
-
refresh(): Promise<void>;
|
|
89
|
+
export type LocalQueryPatch = Readonly<{
|
|
90
|
+
page?: number;
|
|
91
|
+
pageSize?: number;
|
|
92
|
+
search?: string;
|
|
93
|
+
}>;
|
|
94
|
+
export type LocalSource<T> = Source<T, LocalQuery, PagePagination> & {
|
|
95
|
+
readonly page: Readonly<{
|
|
96
|
+
go(index: number): boolean;
|
|
97
|
+
last(): boolean;
|
|
98
|
+
next(): boolean;
|
|
99
|
+
previous(): boolean;
|
|
100
|
+
}>;
|
|
101
|
+
setData(data: readonly T[]): boolean;
|
|
102
|
+
setQuery(changes: LocalQueryPatch): boolean;
|
|
224
103
|
};
|
|
225
104
|
export type LocalSourceConfig<T> = Readonly<{
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* Async filter applied after the sync `filter`, enabling Web Worker offloading
|
|
230
|
-
* via `@vielzeug/familiar`. Sets `meta.isLoading` to `true` during computation.
|
|
231
|
-
* The signal is aborted when a new computation supersedes this one.
|
|
232
|
-
*/
|
|
233
|
-
filterAsync?: (items: readonly T[], signal: AbortSignal) => Promise<readonly T[]>;
|
|
234
|
-
/** Initial data to populate the source. When provided, pass `[]` as the first arg. */
|
|
235
|
-
initialData?: readonly T[];
|
|
236
|
-
limit?: number;
|
|
237
|
-
/**
|
|
238
|
-
* Custom search function. Default: case-insensitive JSON substring match.
|
|
239
|
-
* Provide a domain-specific function for better relevance on large datasets.
|
|
240
|
-
*/
|
|
241
|
-
searchFn?: (items: readonly T[], query: string) => readonly T[];
|
|
242
|
-
sort?: Sorter<T>;
|
|
243
|
-
/**
|
|
244
|
-
* Async sort applied after the sync `sort`. Sets `meta.isLoading` to `true`
|
|
245
|
-
* during computation, enabling Web Worker offloading.
|
|
246
|
-
*/
|
|
247
|
-
sortAsync?: (items: readonly T[], signal: AbortSignal) => Promise<readonly T[]>;
|
|
248
|
-
}>;
|
|
249
|
-
export type RemoteConfig<T, TFilter = unknown, TSort = unknown> = Readonly<{
|
|
250
|
-
/** Automatically fetch on construction. Default: `true`. */
|
|
251
|
-
autoFetch?: boolean;
|
|
252
|
-
/** Debounce delay in ms for `search()` calls. Default: `300`. */
|
|
253
|
-
debounceMs?: number;
|
|
254
|
-
fetch: (q: RemoteSourceQuery<TFilter, TSort>, signal: AbortSignal) => Promise<Readonly<{
|
|
255
|
-
items: readonly T[];
|
|
256
|
-
total: number;
|
|
257
|
-
}>>;
|
|
258
|
-
filter?: TFilter;
|
|
259
|
-
limit?: number;
|
|
260
|
-
/**
|
|
261
|
-
* Called after each fetch attempt settles (success or failure).
|
|
262
|
-
* Useful for logging, telemetry, and debugging.
|
|
263
|
-
*/
|
|
264
|
-
onFetch?: (event: FetchEvent<RemoteSourceQuery<TFilter, TSort>>) => void;
|
|
265
|
-
queryKey?: (q: RemoteSourceQuery<TFilter, TSort>) => string;
|
|
266
|
-
/**
|
|
267
|
-
* Automatically re-fetch at this interval in ms. The timer is cancelled on `dispose()`.
|
|
268
|
-
* Useful for live dashboards and real-time data displays.
|
|
269
|
-
*/
|
|
270
|
-
refreshInterval?: number;
|
|
271
|
-
retry?: RetryConfig;
|
|
272
|
-
/**
|
|
273
|
-
* Pre-populate the source with server-fetched data (SSR / prefetch).
|
|
274
|
-
* The source starts in a loaded state — no initial loading flash.
|
|
275
|
-
* Set `autoFetch: false` to suppress the background re-fetch when the snapshot is fresh.
|
|
276
|
-
*/
|
|
277
|
-
snapshot?: SourceSnapshot<T>;
|
|
278
|
-
sort?: TSort;
|
|
279
|
-
/**
|
|
280
|
-
* Skip re-fetching if the last successful fetch was within this many ms.
|
|
281
|
-
* Returns cached data immediately. Combine with `refreshInterval` for
|
|
282
|
-
* stale-while-revalidate behaviour.
|
|
283
|
-
* Default: `0` (always re-fetch).
|
|
284
|
-
*/
|
|
285
|
-
staleTime?: number;
|
|
105
|
+
initialQuery?: LocalQueryPatch;
|
|
106
|
+
match?: (item: T, search: string) => boolean;
|
|
286
107
|
}>;
|
|
287
|
-
export type
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
hasPrevPage: boolean;
|
|
291
|
-
isLoading: boolean;
|
|
292
|
-
isSearchPending: boolean;
|
|
108
|
+
export type CursorQuery<TCursor = string> = Readonly<{
|
|
109
|
+
after?: TCursor;
|
|
110
|
+
before?: TCursor;
|
|
293
111
|
pageSize: number;
|
|
294
|
-
|
|
112
|
+
search: string;
|
|
295
113
|
}>;
|
|
296
|
-
export type
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
114
|
+
export type CursorQueryPatch<TCursor = string> = Readonly<{
|
|
115
|
+
after?: TCursor | undefined;
|
|
116
|
+
before?: TCursor | undefined;
|
|
117
|
+
pageSize?: number;
|
|
118
|
+
search?: string;
|
|
119
|
+
}>;
|
|
120
|
+
export type CursorResult<T, TCursor = string> = Readonly<{
|
|
121
|
+
data: readonly T[];
|
|
122
|
+
nextCursor?: TCursor;
|
|
123
|
+
previousCursor?: TCursor;
|
|
124
|
+
total?: number;
|
|
125
|
+
}>;
|
|
126
|
+
export type CursorSource<T, TCursor = string> = Source<T, CursorQuery<TCursor>, CursorPagination<TCursor>> & {
|
|
127
|
+
readonly page: Readonly<{
|
|
128
|
+
next(): Promise<void>;
|
|
129
|
+
previous(): Promise<void>;
|
|
130
|
+
}>;
|
|
131
|
+
reload(): Promise<void>;
|
|
132
|
+
setQuery(changes: CursorQueryPatch<TCursor>): Promise<void>;
|
|
310
133
|
};
|
|
311
|
-
export type
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
items: readonly T[];
|
|
316
|
-
nextCursor?: TCursor;
|
|
317
|
-
prevCursor?: TCursor;
|
|
318
|
-
total?: number;
|
|
319
|
-
}>>;
|
|
320
|
-
limit?: number;
|
|
321
|
-
/** Called after each fetch attempt settles. Useful for logging and telemetry. */
|
|
322
|
-
onFetch?: (event: FetchEvent<CursorSourceQuery<TCursor>>) => void;
|
|
323
|
-
queryKey?: (q: CursorSourceQuery<TCursor>) => string;
|
|
324
|
-
/** Automatically re-fetch at this interval in ms. Cancelled on `dispose()`. */
|
|
325
|
-
refreshInterval?: number;
|
|
326
|
-
retry?: RetryConfig;
|
|
134
|
+
export type CursorSourceConfig<T, TCursor = string> = Readonly<{
|
|
135
|
+
autoStart?: boolean;
|
|
136
|
+
initialQuery?: CursorQueryPatch<TCursor>;
|
|
137
|
+
load(context: PageLoadContext<CursorQuery<TCursor>>): Promise<CursorResult<T, TCursor>>;
|
|
327
138
|
}>;
|
|
328
|
-
export type
|
|
329
|
-
error: SourcererError | null;
|
|
330
|
-
hasMore: boolean;
|
|
331
|
-
isLoading: boolean;
|
|
332
|
-
/** `true` only during `loadMore()` fetches — distinct from the initial load. */
|
|
333
|
-
isLoadingMore: boolean;
|
|
334
|
-
isSearchPending: boolean;
|
|
335
|
-
/** Number of pages appended so far. Resets to 0 on `reset()` or `search()`. */
|
|
336
|
-
loadedPages: number;
|
|
139
|
+
export type InfiniteQuery = Readonly<{
|
|
337
140
|
pageSize: number;
|
|
338
|
-
|
|
141
|
+
search: string;
|
|
142
|
+
}>;
|
|
143
|
+
export type InfiniteQueryPatch = Readonly<{
|
|
144
|
+
pageSize?: number;
|
|
145
|
+
search?: string;
|
|
339
146
|
}>;
|
|
340
|
-
export type InfiniteSource<T> =
|
|
341
|
-
/** Appends the next page of results to `current`. No-op when `meta.hasMore` is false. */
|
|
147
|
+
export type InfiniteSource<T> = Source<T, InfiniteQuery, InfinitePagination> & {
|
|
342
148
|
loadMore(): Promise<void>;
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
* of limit and search updates. Resets accumulated pages.
|
|
346
|
-
*/
|
|
347
|
-
patch(changes: Partial<Pick<InfiniteSourceQuery, 'limit' | 'search'>>): Promise<void>;
|
|
348
|
-
/** The current query state. Use `encodeQuery(source.query)` to serialize to URL params. */
|
|
349
|
-
readonly query: InfiniteSourceQuery;
|
|
350
|
-
/**
|
|
351
|
-
* Resolves when no fetch is in progress (including `loadMore` fetches).
|
|
352
|
-
* Rejects after `timeout` ms if still loading.
|
|
353
|
-
*/
|
|
354
|
-
ready(timeout?: number): Promise<void>;
|
|
355
|
-
reset(): Promise<void>;
|
|
356
|
-
search(query: string, opts?: SearchOptions): Promise<void>;
|
|
149
|
+
reload(): Promise<void>;
|
|
150
|
+
setQuery(changes: InfiniteQueryPatch): Promise<void>;
|
|
357
151
|
};
|
|
358
|
-
export type
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
items: readonly T[];
|
|
363
|
-
total: number;
|
|
364
|
-
}>>;
|
|
365
|
-
limit?: number;
|
|
366
|
-
/** Called after each fetch attempt settles. Useful for logging and telemetry. */
|
|
367
|
-
onFetch?: (event: FetchEvent<InfiniteSourceQuery>) => void;
|
|
368
|
-
/** Custom cache key function. Used to deduplicate in-flight requests. Default: stable JSON stringify. */
|
|
369
|
-
queryKey?: (q: InfiniteSourceQuery) => string;
|
|
370
|
-
/** Automatically re-fetch (reset to page 1) at this interval in ms. Cancelled on `dispose()`. */
|
|
371
|
-
refreshInterval?: number;
|
|
372
|
-
retry?: RetryConfig;
|
|
152
|
+
export type InfiniteSourceConfig<T> = Readonly<{
|
|
153
|
+
autoStart?: boolean;
|
|
154
|
+
initialQuery?: InfiniteQueryPatch;
|
|
155
|
+
load(context: PageLoadContext<PageQuery>): Promise<PageResult<T>>;
|
|
373
156
|
}>;
|
|
374
157
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vielzeug/sourcerer",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Framework-agnostic reactive collection sources with local, page, cursor, and infinite pagination",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
7
7
|
"dist"
|
|
@@ -15,6 +15,12 @@
|
|
|
15
15
|
"types": "./dist/index.d.ts",
|
|
16
16
|
"import": "./dist/index.js",
|
|
17
17
|
"require": "./dist/index.cjs"
|
|
18
|
+
},
|
|
19
|
+
"./devtools": {
|
|
20
|
+
"source": "./src/devtools.ts",
|
|
21
|
+
"types": "./dist/devtools.d.ts",
|
|
22
|
+
"import": "./dist/devtools.js",
|
|
23
|
+
"require": "./dist/devtools.cjs"
|
|
18
24
|
}
|
|
19
25
|
},
|
|
20
26
|
"scripts": {
|
|
@@ -34,13 +40,10 @@
|
|
|
34
40
|
"engines": {
|
|
35
41
|
"node": ">=22"
|
|
36
42
|
},
|
|
37
|
-
"dependencies": {
|
|
38
|
-
"@vielzeug/arsenal": "1.1.2"
|
|
39
|
-
},
|
|
40
43
|
"devDependencies": {
|
|
41
|
-
"@types/node": "^26.1.
|
|
44
|
+
"@types/node": "^26.1.2",
|
|
42
45
|
"typescript": "^6.0.3",
|
|
43
|
-
"vite": "^8.
|
|
46
|
+
"vite": "^8.2.0",
|
|
44
47
|
"vitest": "^4.1.10"
|
|
45
48
|
}
|
|
46
49
|
}
|
package/dist/_utils.cjs
DELETED
package/dist/_utils.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_utils.cjs","names":[],"sources":["../src/_utils.ts"],"sourcesContent":["import { backoff, hash, retry } from '@vielzeug/arsenal';\n\nexport { retry };\n\n// Internal stable-key helper — used by source factories, not exposed as public API.\nexport const defaultKeyOf = hash;\n\n/** Extracts a user-facing error message from a caught exception. */\nexport const extractError = (reason: unknown): string => {\n if (reason instanceof Error) return reason.message;\n\n if (typeof reason === 'string' && reason.length > 0) return reason;\n\n return 'Request failed';\n};\n\n/** Default exponential backoff: 1 s, 2 s, 4 s, … capped at 30 s. Receives a 0-indexed failure count. */\nexport const defaultRetryDelay = (attempt: number): number => backoff(attempt);\n"],"mappings":"mCAKA,IAAa,EAAe,EAAA,KAGf,EAAgB,GACvB,aAAkB,MAAc,EAAO,QAEvC,OAAO,GAAW,UAAY,EAAO,OAAS,EAAU,EAErD,iBAII,EAAqB,IAAA,EAAA,EAAA,QAAA,CAAoC,CAAO"}
|
package/dist/_utils.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { hash, retry } from '@vielzeug/arsenal';
|
|
2
|
-
export { retry };
|
|
3
|
-
export declare const defaultKeyOf: typeof hash;
|
|
4
|
-
/** Extracts a user-facing error message from a caught exception. */
|
|
5
|
-
export declare const extractError: (reason: unknown) => string;
|
|
6
|
-
/** Default exponential backoff: 1 s, 2 s, 4 s, … capped at 30 s. Receives a 0-indexed failure count. */
|
|
7
|
-
export declare const defaultRetryDelay: (attempt: number) => number;
|
|
8
|
-
//# sourceMappingURL=_utils.d.ts.map
|
package/dist/_utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_utils.d.ts","sourceRoot":"","sources":["../src/_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,KAAK,EAAE,CAAC;AAGjB,eAAO,MAAM,YAAY,aAAO,CAAC;AAEjC,oEAAoE;AACpE,eAAO,MAAM,YAAY,GAAI,QAAQ,OAAO,KAAG,MAM9C,CAAC;AAEF,wGAAwG;AACxG,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM,KAAG,MAA0B,CAAC"}
|
package/dist/_utils.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { backoff as e, hash as t, retry as n } from "@vielzeug/arsenal";
|
|
2
|
-
//#region src/_utils.ts
|
|
3
|
-
var r = t, i = (e) => e instanceof Error ? e.message : typeof e == "string" && e.length > 0 ? e : "Request failed", a = (t) => e(t);
|
|
4
|
-
//#endregion
|
|
5
|
-
export { r as defaultKeyOf, a as defaultRetryDelay, i as extractError, n as retry };
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=_utils.js.map
|
package/dist/_utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_utils.js","names":[],"sources":["../src/_utils.ts"],"sourcesContent":["import { backoff, hash, retry } from '@vielzeug/arsenal';\n\nexport { retry };\n\n// Internal stable-key helper — used by source factories, not exposed as public API.\nexport const defaultKeyOf = hash;\n\n/** Extracts a user-facing error message from a caught exception. */\nexport const extractError = (reason: unknown): string => {\n if (reason instanceof Error) return reason.message;\n\n if (typeof reason === 'string' && reason.length > 0) return reason;\n\n return 'Request failed';\n};\n\n/** Default exponential backoff: 1 s, 2 s, 4 s, … capped at 30 s. Receives a 0-indexed failure count. */\nexport const defaultRetryDelay = (attempt: number): number => backoff(attempt);\n"],"mappings":";;AAKA,IAAa,IAAe,GAGf,KAAgB,MACvB,aAAkB,QAAc,EAAO,UAEvC,OAAO,KAAW,YAAY,EAAO,SAAS,IAAU,IAErD,kBAII,KAAqB,MAA4B,EAAQ,CAAO"}
|