@epoch32/visage 0.0.0-stage → 0.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/LICENSE +373 -0
- package/README.md +110 -2
- package/dist/bundle.dev.js +4875 -0
- package/dist/index.js +9633 -0
- package/dist/src/api/index.js +4002 -0
- package/dist/src/charts/index.js +2717 -0
- package/dist/src/devtools/index.js +4677 -0
- package/dist/src/dom/index.js +1550 -0
- package/dist/src/form/index.js +1415 -0
- package/dist/src/index.js +11826 -0
- package/dist/src/jsx-runtime/index.js +1630 -0
- package/dist/src/query/index.js +2422 -0
- package/dist/src/router/index.js +1856 -0
- package/dist/src/rpc/index.js +3484 -0
- package/dist/src/server/index.js +1173 -0
- package/dist/src/signals/index.js +1077 -0
- package/dist/src/style/index.js +2340 -0
- package/dist/src/template/index.js +1149 -0
- package/dist/src/ui/index.js +4155 -0
- package/dist/src/virtual/index.js +1955 -0
- package/dist/src/vite/index.js +984 -0
- package/dist/vite/index.js +707 -0
- package/package.json +140 -4
- package/src/api/client.ts +371 -0
- package/src/api/file-router.ts +183 -0
- package/src/api/handler.ts +326 -0
- package/src/api/index.ts +71 -0
- package/src/api/middleware.ts +54 -0
- package/src/api/pragma.ts +155 -0
- package/src/api/procedure.ts +172 -0
- package/src/api/types.ts +249 -0
- package/src/charts/Area.tsx +111 -0
- package/src/charts/Axis.tsx +126 -0
- package/src/charts/Bar.tsx +86 -0
- package/src/charts/CartesianGrid.tsx +72 -0
- package/src/charts/Chart.tsx +269 -0
- package/src/charts/Cursor.tsx +42 -0
- package/src/charts/Legend.tsx +56 -0
- package/src/charts/Line.tsx +106 -0
- package/src/charts/Pie.tsx +88 -0
- package/src/charts/Tooltip.tsx +127 -0
- package/src/charts/context.ts +30 -0
- package/src/charts/index.ts +14 -0
- package/src/charts/path.ts +155 -0
- package/src/charts/scale.ts +133 -0
- package/src/charts/types.ts +50 -0
- package/src/devtools/DomTab.tsx +134 -0
- package/src/devtools/GraphInspector.tsx +196 -0
- package/src/devtools/GraphTab.tsx +315 -0
- package/src/devtools/QueryTab.tsx +200 -0
- package/src/devtools/RpcTab.tsx +190 -0
- package/src/devtools/SignalsTab.tsx +129 -0
- package/src/devtools/component.tsx +243 -0
- package/src/devtools/highlighter.ts +134 -0
- package/src/devtools/hub.ts +175 -0
- package/src/devtools/index.ts +20 -0
- package/src/devtools/styles.ts +313 -0
- package/src/devtools/types.ts +45 -0
- package/src/dom/async.ts +232 -0
- package/src/dom/control-flow.ts +353 -0
- package/src/dom/index.ts +32 -0
- package/src/dom/lazy.ts +82 -0
- package/src/dom/render.ts +286 -0
- package/src/dom/resource.ts +120 -0
- package/src/form/form.ts +218 -0
- package/src/form/index.ts +17 -0
- package/src/form/schema.ts +299 -0
- package/src/index.ts +413 -0
- package/src/jsx-dev-runtime/index.ts +1 -0
- package/src/jsx-runtime/index.ts +112 -0
- package/src/jsx-runtime/jsx.d.ts +278 -0
- package/src/query/create-mutation.ts +64 -0
- package/src/query/create-query.ts +426 -0
- package/src/query/focus-manager.ts +68 -0
- package/src/query/index.ts +63 -0
- package/src/query/mutation-cache.ts +138 -0
- package/src/query/online-manager.ts +67 -0
- package/src/query/query-cache.ts +369 -0
- package/src/query/query-client.ts +248 -0
- package/src/query/types.ts +221 -0
- package/src/query/utils.ts +132 -0
- package/src/router/index.ts +19 -0
- package/src/router/router.tsx +352 -0
- package/src/rpc/client.ts +317 -0
- package/src/rpc/error.ts +70 -0
- package/src/rpc/index.ts +52 -0
- package/src/rpc/procedure.ts +88 -0
- package/src/rpc/router.ts +105 -0
- package/src/rpc/server.ts +511 -0
- package/src/rpc/types.ts +328 -0
- package/src/server/hydrate.ts +21 -0
- package/src/server/index.ts +10 -0
- package/src/server/render-to-stream.ts +31 -0
- package/src/server/render-to-string.ts +125 -0
- package/src/signals/computed.ts +217 -0
- package/src/signals/context.ts +89 -0
- package/src/signals/effect.ts +161 -0
- package/src/signals/index.ts +57 -0
- package/src/signals/scope.ts +132 -0
- package/src/signals/signal.ts +203 -0
- package/src/signals/store.ts +163 -0
- package/src/signals/system.ts +124 -0
- package/src/signals/types.ts +64 -0
- package/src/style/component.tsx +122 -0
- package/src/style/create-style.ts +229 -0
- package/src/style/cx.ts +75 -0
- package/src/style/hash.ts +19 -0
- package/src/style/index.ts +8 -0
- package/src/style/layout.tsx +406 -0
- package/src/style/manager.ts +87 -0
- package/src/style/parser.ts +257 -0
- package/src/style/scale.ts +237 -0
- package/src/template/index.ts +4 -0
- package/src/template/template.ts +126 -0
- package/src/ui/accordion.tsx +286 -0
- package/src/ui/command-dialog.tsx +49 -0
- package/src/ui/command.tsx +400 -0
- package/src/ui/data-table.tsx +322 -0
- package/src/ui/dialog.tsx +362 -0
- package/src/ui/dropdown-menu.tsx +381 -0
- package/src/ui/icon.tsx +69 -0
- package/src/ui/index.ts +138 -0
- package/src/ui/layout.tsx +13 -0
- package/src/ui/popover.tsx +249 -0
- package/src/ui/switch.tsx +114 -0
- package/src/ui/tabs.tsx +297 -0
- package/src/ui/toast.tsx +280 -0
- package/src/ui/tooltip.tsx +262 -0
- package/src/ui/utils.ts +110 -0
- package/src/virtual/index.ts +12 -0
- package/src/virtual/virtual-list.tsx +185 -0
- package/src/virtual/virtualizer.ts +274 -0
- package/src/vite/hmr.ts +38 -0
- package/src/vite/index.ts +3 -0
- package/src/vite/lucide.ts +124 -0
- package/src/vite/plugin.ts +102 -0
- package/src/vite/rpc-middleware.ts +82 -0
- package/src/vite/types.ts +65 -0
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import type { ReadonlySignal } from "../signals";
|
|
2
|
+
|
|
3
|
+
export type QueryKey = readonly unknown[];
|
|
4
|
+
|
|
5
|
+
export interface QueryFunctionContext<TQueryKey extends QueryKey = QueryKey, TPageParam = any> {
|
|
6
|
+
queryKey: TQueryKey;
|
|
7
|
+
signal: AbortSignal;
|
|
8
|
+
pageParam?: TPageParam;
|
|
9
|
+
meta?: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export type QueryFunction<
|
|
13
|
+
TData = unknown,
|
|
14
|
+
TQueryKey extends QueryKey = QueryKey,
|
|
15
|
+
TPageParam = any
|
|
16
|
+
> = (context: QueryFunctionContext<TQueryKey, TPageParam>) => Promise<TData> | TData;
|
|
17
|
+
|
|
18
|
+
export type QueryStatus = "pending" | "success" | "error";
|
|
19
|
+
export type FetchStatus = "fetching" | "paused" | "idle";
|
|
20
|
+
export type MutationStatus = "idle" | "pending" | "success" | "error";
|
|
21
|
+
|
|
22
|
+
export type RetryValue = boolean | number | ((failureCount: number, error: any) => boolean);
|
|
23
|
+
export type RetryDelayValue = number | ((attemptIndex: number, error: any) => number);
|
|
24
|
+
|
|
25
|
+
export interface QueryFilters {
|
|
26
|
+
queryKey?: QueryKey;
|
|
27
|
+
exact?: boolean;
|
|
28
|
+
type?: "all" | "active" | "inactive";
|
|
29
|
+
stale?: boolean;
|
|
30
|
+
fetchStatus?: FetchStatus;
|
|
31
|
+
predicate?: (query: any) => boolean;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface QueryState<TData = unknown, TError = any> {
|
|
35
|
+
data: TData | undefined;
|
|
36
|
+
error: TError | null;
|
|
37
|
+
status: QueryStatus;
|
|
38
|
+
fetchStatus: FetchStatus;
|
|
39
|
+
dataUpdatedAt: number;
|
|
40
|
+
errorUpdatedAt: number;
|
|
41
|
+
failureCount: number;
|
|
42
|
+
isInvalidated: boolean;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface QueryOptions<
|
|
46
|
+
TData = unknown,
|
|
47
|
+
_TError = any,
|
|
48
|
+
TQueryKey extends QueryKey = QueryKey
|
|
49
|
+
> {
|
|
50
|
+
queryKey: TQueryKey;
|
|
51
|
+
queryFn?: QueryFunction<TData, TQueryKey>;
|
|
52
|
+
enabled?: boolean | (() => boolean);
|
|
53
|
+
staleTime?: number;
|
|
54
|
+
gcTime?: number;
|
|
55
|
+
retry?: RetryValue;
|
|
56
|
+
retryDelay?: RetryDelayValue;
|
|
57
|
+
refetchInterval?: number | false | (() => number | false);
|
|
58
|
+
refetchIntervalInBackground?: boolean;
|
|
59
|
+
refetchOnWindowFocus?: boolean | "always";
|
|
60
|
+
refetchOnReconnect?: boolean | "always";
|
|
61
|
+
initialData?: TData | (() => TData);
|
|
62
|
+
initialDataUpdatedAt?: number | (() => number);
|
|
63
|
+
placeholderData?: TData | ((previousData: TData | undefined) => TData);
|
|
64
|
+
meta?: Record<string, unknown>;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface CreateQueryOptions<
|
|
68
|
+
TData = unknown,
|
|
69
|
+
TError = any,
|
|
70
|
+
TSelected = TData,
|
|
71
|
+
TQueryKey extends QueryKey = QueryKey
|
|
72
|
+
> extends QueryOptions<TData, TError, TQueryKey> {
|
|
73
|
+
select?: (data: TData) => TSelected;
|
|
74
|
+
suspense?: boolean;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface RefetchOptions {
|
|
78
|
+
throwOnError?: boolean;
|
|
79
|
+
cancelRefetch?: boolean;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export interface QueryResult<TData = unknown, TError = any> {
|
|
83
|
+
data: ReadonlySignal<TData | undefined>;
|
|
84
|
+
error: ReadonlySignal<TError | null>;
|
|
85
|
+
status: ReadonlySignal<QueryStatus>;
|
|
86
|
+
fetchStatus: ReadonlySignal<FetchStatus>;
|
|
87
|
+
isLoading: ReadonlySignal<boolean>;
|
|
88
|
+
isFetching: ReadonlySignal<boolean>;
|
|
89
|
+
isSuccess: ReadonlySignal<boolean>;
|
|
90
|
+
isError: ReadonlySignal<boolean>;
|
|
91
|
+
isStale: ReadonlySignal<boolean>;
|
|
92
|
+
dataUpdatedAt: ReadonlySignal<number>;
|
|
93
|
+
errorUpdatedAt: ReadonlySignal<number>;
|
|
94
|
+
refetch: (options?: RefetchOptions) => Promise<TData | undefined>;
|
|
95
|
+
(): TData | undefined;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export type MutationFunction<TData = unknown, TVariables = void> = (
|
|
99
|
+
variables: TVariables
|
|
100
|
+
) => Promise<TData>;
|
|
101
|
+
|
|
102
|
+
export interface MutationOptions<
|
|
103
|
+
TData = unknown,
|
|
104
|
+
TError = any,
|
|
105
|
+
TVariables = void,
|
|
106
|
+
TContext = unknown
|
|
107
|
+
> {
|
|
108
|
+
mutationKey?: QueryKey;
|
|
109
|
+
mutationFn: MutationFunction<TData, TVariables>;
|
|
110
|
+
onMutate?: (variables: TVariables) => Promise<TContext | void> | TContext | void;
|
|
111
|
+
onSuccess?: (
|
|
112
|
+
data: TData,
|
|
113
|
+
variables: TVariables,
|
|
114
|
+
context: TContext | undefined
|
|
115
|
+
) => Promise<void> | void;
|
|
116
|
+
onError?: (
|
|
117
|
+
error: TError,
|
|
118
|
+
variables: TVariables,
|
|
119
|
+
context: TContext | undefined
|
|
120
|
+
) => Promise<void> | void;
|
|
121
|
+
onSettled?: (
|
|
122
|
+
data: TData | undefined,
|
|
123
|
+
error: TError | null,
|
|
124
|
+
variables: TVariables,
|
|
125
|
+
context: TContext | undefined
|
|
126
|
+
) => Promise<void> | void;
|
|
127
|
+
retry?: RetryValue;
|
|
128
|
+
retryDelay?: RetryDelayValue;
|
|
129
|
+
meta?: Record<string, unknown>;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export interface MutateOptions<
|
|
133
|
+
TData = unknown,
|
|
134
|
+
TError = any,
|
|
135
|
+
TVariables = void,
|
|
136
|
+
TContext = unknown
|
|
137
|
+
> {
|
|
138
|
+
onSuccess?: (data: TData, variables: TVariables, context: TContext | undefined) => void;
|
|
139
|
+
onError?: (error: TError, variables: TVariables, context: TContext | undefined) => void;
|
|
140
|
+
onSettled?: (
|
|
141
|
+
data: TData | undefined,
|
|
142
|
+
error: TError | null,
|
|
143
|
+
variables: TVariables,
|
|
144
|
+
context: TContext | undefined
|
|
145
|
+
) => void;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export interface MutationResult<
|
|
149
|
+
TData = unknown,
|
|
150
|
+
TError = any,
|
|
151
|
+
TVariables = void,
|
|
152
|
+
TContext = unknown
|
|
153
|
+
> {
|
|
154
|
+
mutate: (
|
|
155
|
+
variables: TVariables,
|
|
156
|
+
options?: MutateOptions<TData, TError, TVariables, TContext>
|
|
157
|
+
) => void;
|
|
158
|
+
mutateAsync: (
|
|
159
|
+
variables: TVariables,
|
|
160
|
+
options?: MutateOptions<TData, TError, TVariables, TContext>
|
|
161
|
+
) => Promise<TData>;
|
|
162
|
+
data: ReadonlySignal<TData | undefined>;
|
|
163
|
+
error: ReadonlySignal<TError | null>;
|
|
164
|
+
status: ReadonlySignal<MutationStatus>;
|
|
165
|
+
isIdle: ReadonlySignal<boolean>;
|
|
166
|
+
isPending: ReadonlySignal<boolean>;
|
|
167
|
+
isLoading: ReadonlySignal<boolean>;
|
|
168
|
+
isSuccess: ReadonlySignal<boolean>;
|
|
169
|
+
isError: ReadonlySignal<boolean>;
|
|
170
|
+
reset: () => void;
|
|
171
|
+
variables: ReadonlySignal<TVariables | undefined>;
|
|
172
|
+
submittedAt: ReadonlySignal<number>;
|
|
173
|
+
(): TData | undefined;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export interface InfiniteData<TData = unknown, TPageParam = unknown> {
|
|
177
|
+
pages: TData[];
|
|
178
|
+
pageParams: TPageParam[];
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export interface InfiniteQueryOptions<
|
|
182
|
+
TData = unknown,
|
|
183
|
+
TError = any,
|
|
184
|
+
TPageParam = unknown,
|
|
185
|
+
TSelected = InfiniteData<TData, TPageParam>,
|
|
186
|
+
TQueryKey extends QueryKey = QueryKey
|
|
187
|
+
> extends Omit<QueryOptions<InfiniteData<TData, TPageParam>, TError, TQueryKey>, "queryFn"> {
|
|
188
|
+
queryFn?: (context: QueryFunctionContext<TQueryKey, TPageParam>) => Promise<TData> | TData;
|
|
189
|
+
initialPageParam: TPageParam;
|
|
190
|
+
getNextPageParam: (
|
|
191
|
+
lastPage: TData,
|
|
192
|
+
allPages: TData[],
|
|
193
|
+
lastPageParam: TPageParam,
|
|
194
|
+
allPageParams: TPageParam[]
|
|
195
|
+
) => TPageParam | undefined | null;
|
|
196
|
+
getPreviousPageParam?: (
|
|
197
|
+
firstPage: TData,
|
|
198
|
+
allPages: TData[],
|
|
199
|
+
firstPageParam: TPageParam,
|
|
200
|
+
allPageParams: TPageParam[]
|
|
201
|
+
) => TPageParam | undefined | null;
|
|
202
|
+
maxPages?: number;
|
|
203
|
+
select?: (data: InfiniteData<TData, TPageParam>) => TSelected;
|
|
204
|
+
suspense?: boolean;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export interface InfiniteQueryResult<TData = unknown, TError = any, TPageParam = unknown>
|
|
208
|
+
extends Omit<QueryResult<InfiniteData<TData, TPageParam>, TError>, "refetch"> {
|
|
209
|
+
fetchNextPage: () => Promise<InfiniteData<TData, TPageParam> | undefined>;
|
|
210
|
+
fetchPreviousPage: () => Promise<InfiniteData<TData, TPageParam> | undefined>;
|
|
211
|
+
hasNextPage: ReadonlySignal<boolean>;
|
|
212
|
+
hasPreviousPage: ReadonlySignal<boolean>;
|
|
213
|
+
isFetchingNextPage: ReadonlySignal<boolean>;
|
|
214
|
+
isFetchingPreviousPage: ReadonlySignal<boolean>;
|
|
215
|
+
refetch: (options?: RefetchOptions) => Promise<InfiniteData<TData, TPageParam> | undefined>;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
export interface DefaultOptions {
|
|
219
|
+
queries?: Partial<QueryOptions<any, any, any>>;
|
|
220
|
+
mutations?: Partial<MutationOptions<any, any, any, any>>;
|
|
221
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import type { QueryFilters } from "./types";
|
|
2
|
+
|
|
3
|
+
export function isPlainObject(value: unknown): value is Record<string, unknown> {
|
|
4
|
+
if (value === null || typeof value !== "object") return false;
|
|
5
|
+
const proto = Object.getPrototypeOf(value);
|
|
6
|
+
return proto === null || proto === Object.prototype;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Deterministic JSON stringifier for consistent query key hashing
|
|
11
|
+
*/
|
|
12
|
+
export function hashKey(queryKey: unknown): string {
|
|
13
|
+
return JSON.stringify(queryKey, (_key, val) => {
|
|
14
|
+
if (isPlainObject(val)) {
|
|
15
|
+
return Object.keys(val)
|
|
16
|
+
.sort()
|
|
17
|
+
.reduce((result: Record<string, unknown>, k) => {
|
|
18
|
+
result[k] = val[k];
|
|
19
|
+
return result;
|
|
20
|
+
}, {});
|
|
21
|
+
}
|
|
22
|
+
return val;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Deep equality check for primitives, arrays, and objects
|
|
28
|
+
*/
|
|
29
|
+
export function deepEqual(a: unknown, b: unknown): boolean {
|
|
30
|
+
if (Object.is(a, b)) return true;
|
|
31
|
+
if (typeof a !== "object" || a === null || typeof b !== "object" || b === null) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (Array.isArray(a) !== Array.isArray(b)) return false;
|
|
36
|
+
|
|
37
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
38
|
+
if (a.length !== b.length) return false;
|
|
39
|
+
for (let i = 0; i < a.length; i++) {
|
|
40
|
+
if (!deepEqual(a[i], b[i])) return false;
|
|
41
|
+
}
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const keysA = Object.keys(a as Record<string, unknown>);
|
|
46
|
+
const keysB = Object.keys(b as Record<string, unknown>);
|
|
47
|
+
|
|
48
|
+
if (keysA.length !== keysB.length) return false;
|
|
49
|
+
|
|
50
|
+
for (const key of keysA) {
|
|
51
|
+
if (!Object.hasOwn(b, key)) return false;
|
|
52
|
+
if (!deepEqual((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key])) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Partial matching check: matches if `a` is a subset or partial structure of `b`
|
|
62
|
+
*/
|
|
63
|
+
export function partialDeepEqual(a: unknown, b: unknown): boolean {
|
|
64
|
+
if (Object.is(a, b)) return true;
|
|
65
|
+
if (a === undefined || a === null || b === undefined || b === null) {
|
|
66
|
+
return a === b;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
70
|
+
if (a.length > b.length) return false;
|
|
71
|
+
for (let i = 0; i < a.length; i++) {
|
|
72
|
+
if (!partialDeepEqual(a[i], b[i])) return false;
|
|
73
|
+
}
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (isPlainObject(a) && isPlainObject(b)) {
|
|
78
|
+
for (const key of Object.keys(a)) {
|
|
79
|
+
if (!(key in b)) return false;
|
|
80
|
+
if (!partialDeepEqual(a[key], b[key])) return false;
|
|
81
|
+
}
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function matchQuery(filters: QueryFilters | undefined, query: any): boolean {
|
|
89
|
+
if (!filters) return true;
|
|
90
|
+
|
|
91
|
+
if (filters.queryKey !== undefined) {
|
|
92
|
+
const filterKey = Array.isArray(filters.queryKey) ? filters.queryKey : [filters.queryKey];
|
|
93
|
+
const queryKey = Array.isArray(query.queryKey) ? query.queryKey : [query.queryKey];
|
|
94
|
+
|
|
95
|
+
if (filters.exact) {
|
|
96
|
+
if (filterKey.length !== queryKey.length) return false;
|
|
97
|
+
if (!deepEqual(filterKey, queryKey)) return false;
|
|
98
|
+
} else {
|
|
99
|
+
if (filterKey.length > queryKey.length) return false;
|
|
100
|
+
for (let i = 0; i < filterKey.length; i++) {
|
|
101
|
+
if (!partialDeepEqual(filterKey[i], queryKey[i])) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (filters.type === "active" && query.observers.size === 0) {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
if (filters.type === "inactive" && query.observers.size > 0) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (filters.stale !== undefined && query.isStale() !== filters.stale) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if (filters.fetchStatus !== undefined && query.fetchStatus() !== filters.fetchStatus) {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (filters.predicate && !filters.predicate(query)) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export function sleep(ms: number): Promise<void> {
|
|
131
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
132
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export {
|
|
2
|
+
Link,
|
|
3
|
+
type LinkProps,
|
|
4
|
+
type LocationState,
|
|
5
|
+
lazy,
|
|
6
|
+
type MatchedRoute,
|
|
7
|
+
Route,
|
|
8
|
+
type RouteDefinition,
|
|
9
|
+
type RouteProps,
|
|
10
|
+
Router,
|
|
11
|
+
type RouterContextValue,
|
|
12
|
+
type RouterProps,
|
|
13
|
+
Routes,
|
|
14
|
+
type RoutesProps,
|
|
15
|
+
useLocation,
|
|
16
|
+
useNavigate,
|
|
17
|
+
useParams,
|
|
18
|
+
useSearchParams
|
|
19
|
+
} from "./router";
|