@agelum/backend 0.1.1 → 0.1.2
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/dist/client/hooks.d.ts +65 -0
- package/dist/client/hooks.d.ts.map +1 -0
- package/dist/client/index.d.ts +10 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/manager.d.ts +137 -0
- package/dist/client/manager.d.ts.map +1 -0
- package/dist/client/provider.d.ts +25 -0
- package/dist/client/provider.d.ts.map +1 -0
- package/dist/client/revalidation.d.ts +101 -0
- package/dist/client/revalidation.d.ts.map +1 -0
- package/dist/client/sse-client.d.ts +81 -0
- package/dist/client/sse-client.d.ts.map +1 -0
- package/dist/client/storage.d.ts +126 -0
- package/dist/client/storage.d.ts.map +1 -0
- package/dist/client/trpc.d.ts +12 -0
- package/dist/client/trpc.d.ts.map +1 -0
- package/dist/client.d.ts +12 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/config/schema.d.ts +250 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +69 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/core/analyzer.d.ts +15 -0
- package/dist/core/analyzer.d.ts.map +1 -0
- package/dist/core/driver.d.ts +7 -0
- package/dist/core/driver.d.ts.map +1 -0
- package/dist/core/driver.js +262 -0
- package/dist/core/driver.js.map +1 -0
- package/dist/core/function.d.ts +103 -0
- package/dist/core/function.d.ts.map +1 -0
- package/dist/core/function.js +252 -0
- package/dist/core/function.js.map +1 -0
- package/dist/core/sse.d.ts +98 -0
- package/dist/core/sse.d.ts.map +1 -0
- package/dist/core/types.d.ts +196 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/examples/teamhub-integration.d.ts +56 -0
- package/dist/examples/teamhub-integration.d.ts.map +1 -0
- package/dist/examples/teamhub-integration.js +192 -0
- package/dist/examples/teamhub-integration.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/localStorage.d.ts +13 -0
- package/dist/providers/localStorage.d.ts.map +1 -0
- package/dist/providers/memory.d.ts +13 -0
- package/dist/providers/memory.d.ts.map +1 -0
- package/dist/providers/redis.d.ts +14 -0
- package/dist/providers/redis.d.ts.map +1 -0
- package/dist/server.d.ts +18 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +34 -0
- package/dist/server.js.map +1 -0
- package/dist/trpc/index.d.ts +9 -0
- package/dist/trpc/index.d.ts.map +1 -0
- package/dist/trpc/index.js +19 -0
- package/dist/trpc/index.js.map +1 -0
- package/dist/trpc/router.d.ts +76 -0
- package/dist/trpc/router.d.ts.map +1 -0
- package/dist/trpc/router.js +177 -0
- package/dist/trpc/router.js.map +1 -0
- package/dist/trpc/types.d.ts +114 -0
- package/dist/trpc/types.d.ts.map +1 -0
- package/dist/trpc/types.js +6 -0
- package/dist/trpc/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React hooks for @agelum/backend
|
|
3
|
+
* Provides reactive data access with automatic caching and real-time updates
|
|
4
|
+
*/
|
|
5
|
+
import type { ReactiveConfig, InvalidationEvent } from "../core/types";
|
|
6
|
+
/**
|
|
7
|
+
* Initialize the reactive client
|
|
8
|
+
* Call this once at app startup
|
|
9
|
+
*/
|
|
10
|
+
export declare function initializeReactiveClient(organizationId: string, config: ReactiveConfig, revalidateFn: (queryKey: string) => Promise<any>): void;
|
|
11
|
+
/**
|
|
12
|
+
* Main hook for reactive data access
|
|
13
|
+
* Automatically handles caching, real-time updates, and revalidation
|
|
14
|
+
*/
|
|
15
|
+
export declare function useReactive<T = any>(queryKey: string, input?: any, options?: {
|
|
16
|
+
enabled?: boolean;
|
|
17
|
+
}): {
|
|
18
|
+
data: T | undefined;
|
|
19
|
+
isLoading: boolean;
|
|
20
|
+
isStale: boolean;
|
|
21
|
+
error: Error | null;
|
|
22
|
+
refetch: () => void;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Optional page-level priority hints for better UX
|
|
26
|
+
*/
|
|
27
|
+
export declare function useReactivePriorities(priorities: string[]): void;
|
|
28
|
+
/**
|
|
29
|
+
* Hook to get current session statistics
|
|
30
|
+
*/
|
|
31
|
+
export declare function useReactiveStats(): any;
|
|
32
|
+
/**
|
|
33
|
+
* Hook to manually trigger cache refresh
|
|
34
|
+
*/
|
|
35
|
+
export declare function useReactiveRefresh(): () => Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Hook to get revalidation statistics and performance metrics
|
|
38
|
+
*/
|
|
39
|
+
export declare function useRevalidationStats(): any;
|
|
40
|
+
/**
|
|
41
|
+
* Hook to handle invalidation events
|
|
42
|
+
*/
|
|
43
|
+
export declare function useReactiveInvalidation(callback: (event: InvalidationEvent) => void): void;
|
|
44
|
+
/**
|
|
45
|
+
* Hook for manual queries with dynamic parameters
|
|
46
|
+
* Unlike useReactive, this hook doesn't auto-fetch and allows changing parameters on each call
|
|
47
|
+
*/
|
|
48
|
+
export declare function useReactiveQuery<TData = unknown, TVariables = unknown>(queryKey: string): {
|
|
49
|
+
data: TData | undefined;
|
|
50
|
+
isLoading: boolean;
|
|
51
|
+
error: Error | null;
|
|
52
|
+
refetch: (variables?: TVariables) => Promise<TData>;
|
|
53
|
+
run: (variables: TVariables) => Promise<TData>;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Hook to get connection status
|
|
57
|
+
*/
|
|
58
|
+
export declare function useReactiveConnection(): {
|
|
59
|
+
status: "connected" | "connecting" | "disconnected";
|
|
60
|
+
isConnected: boolean;
|
|
61
|
+
isConnecting: boolean;
|
|
62
|
+
isDisconnected: boolean;
|
|
63
|
+
reconnect: () => void;
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/client/hooks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAkBvB;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,CACZ,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,GAAG,CAAC,GAChB,IAAI,CA0CN;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,GAAG,GAAG,EACjC,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,GAAG,EACX,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACA;IACD,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAsNA;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAAE,GACnB,IAAI,CAYN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,QA2B/B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,wBA0BjC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,QAwBnC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,CACR,KAAK,EAAE,iBAAiB,KACrB,IAAI,GACR,IAAI,CAgBN;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,GAAG,OAAO,EACf,UAAU,GAAG,OAAO,EAEpB,QAAQ,EAAE,MAAM,GACf;IACD,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,CACP,SAAS,CAAC,EAAE,UAAU,KACnB,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,GAAG,EAAE,CACH,SAAS,EAAE,UAAU,KAClB,OAAO,CAAC,KAAK,CAAC,CAAC;CACrB,CAyFA;AAED;;GAEG;AACH,wBAAgB,qBAAqB;;;;;;EAoCpC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side reactive database features
|
|
3
|
+
*/
|
|
4
|
+
export { ReactiveStorage, createReactiveStorage } from './storage';
|
|
5
|
+
export { SimpleSessionManager, createSimpleSessionManager, revalidateOnPageLoad, type SessionInfo, type QueryRegistry, type QueryRegistryEntry, } from './session';
|
|
6
|
+
export { ReactiveClientManager, createReactiveClientManager, type ReactiveManagerOptions, } from './manager';
|
|
7
|
+
export { useReactive, useReactiveQuery, useReactivePriorities, useReactiveStats, useReactiveRefresh, useReactiveInvalidation, useRevalidationStats, useReactiveConnection, initializeReactiveClient, } from './hooks';
|
|
8
|
+
export { SmartRevalidationEngine, createSmartRevalidationEngine, type RevalidationStrategy, type RevalidationOptions, type RevalidationResult, } from './revalidation';
|
|
9
|
+
export { ReactiveProvider } from './provider';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAClE,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAA;AAGlB,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,KAAK,sBAAsB,GAC5B,MAAM,WAAW,CAAA;AAGlB,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side reactive manager
|
|
3
|
+
* Coordinates storage, session recovery, and real-time synchronization
|
|
4
|
+
*/
|
|
5
|
+
import { type SSEClientOptions } from './sse-client';
|
|
6
|
+
import type { ReactiveConfig, InvalidationEvent } from '../core/types';
|
|
7
|
+
export interface ReactiveManagerOptions {
|
|
8
|
+
organizationId: string;
|
|
9
|
+
config: ReactiveConfig;
|
|
10
|
+
onInvalidation?: (event: InvalidationEvent) => void;
|
|
11
|
+
onRevalidate?: (queryKey: string) => Promise<any>;
|
|
12
|
+
sseOptions?: Partial<SSEClientOptions>;
|
|
13
|
+
}
|
|
14
|
+
export declare class ReactiveClientManager {
|
|
15
|
+
private storage;
|
|
16
|
+
private sessionManager;
|
|
17
|
+
private revalidationEngine;
|
|
18
|
+
private sseClient;
|
|
19
|
+
private config;
|
|
20
|
+
private organizationId;
|
|
21
|
+
private onInvalidation?;
|
|
22
|
+
private onRevalidate?;
|
|
23
|
+
private visibilityListener?;
|
|
24
|
+
private beforeUnloadListener?;
|
|
25
|
+
constructor(options: ReactiveManagerOptions);
|
|
26
|
+
/**
|
|
27
|
+
* Get organization ID
|
|
28
|
+
*/
|
|
29
|
+
get currentOrganizationId(): string;
|
|
30
|
+
/**
|
|
31
|
+
* Register a query execution
|
|
32
|
+
*/
|
|
33
|
+
registerQuery(queryKey: string, dependencies: string[], data?: any, ttl?: number): void;
|
|
34
|
+
/**
|
|
35
|
+
* Register an active React hook
|
|
36
|
+
*/
|
|
37
|
+
registerActiveHook(queryKey: string, dependencies: string[]): () => void;
|
|
38
|
+
/**
|
|
39
|
+
* Get cached data for a query
|
|
40
|
+
*/
|
|
41
|
+
getCachedData(queryKey: string): {
|
|
42
|
+
data: any;
|
|
43
|
+
isStale: boolean;
|
|
44
|
+
lastRevalidated: number;
|
|
45
|
+
} | null;
|
|
46
|
+
/**
|
|
47
|
+
* Handle invalidation event from server
|
|
48
|
+
*/
|
|
49
|
+
private handleInvalidation;
|
|
50
|
+
/**
|
|
51
|
+
* Find queries affected by table changes
|
|
52
|
+
*/
|
|
53
|
+
private findAffectedQueries;
|
|
54
|
+
/**
|
|
55
|
+
* Handle connection status changes
|
|
56
|
+
*/
|
|
57
|
+
private handleConnectionStatus;
|
|
58
|
+
/**
|
|
59
|
+
* Revalidate a specific query
|
|
60
|
+
*/
|
|
61
|
+
revalidateQuery(queryKey: string): Promise<any>;
|
|
62
|
+
/**
|
|
63
|
+
* Initialize SSE connection for real-time updates
|
|
64
|
+
*/
|
|
65
|
+
private initializeSSEConnection;
|
|
66
|
+
/**
|
|
67
|
+
* Get SSE connection statistics
|
|
68
|
+
*/
|
|
69
|
+
getSSEStats(): import("./sse-client").SSEClientStats | null;
|
|
70
|
+
/**
|
|
71
|
+
* Manually reconnect SSE
|
|
72
|
+
*/
|
|
73
|
+
reconnectSSE(): void;
|
|
74
|
+
/**
|
|
75
|
+
* Set up browser event listeners
|
|
76
|
+
*/
|
|
77
|
+
private setupEventListeners;
|
|
78
|
+
/**
|
|
79
|
+
* Remove event listeners
|
|
80
|
+
*/
|
|
81
|
+
private removeEventListeners;
|
|
82
|
+
/**
|
|
83
|
+
* Check for session gap on initial load (simple approach as per spec)
|
|
84
|
+
*/
|
|
85
|
+
private checkInitialSession;
|
|
86
|
+
/**
|
|
87
|
+
* Handle page visibility change
|
|
88
|
+
*/
|
|
89
|
+
private handleVisibilityChange;
|
|
90
|
+
/**
|
|
91
|
+
* Get current connection status
|
|
92
|
+
*/
|
|
93
|
+
getConnectionStatus(): 'connected' | 'connecting' | 'disconnected';
|
|
94
|
+
/**
|
|
95
|
+
* Check if real-time is enabled and connected
|
|
96
|
+
*/
|
|
97
|
+
isRealtimeEnabled(): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Get storage statistics
|
|
100
|
+
*/
|
|
101
|
+
getStorageStats(): import("../core/types").QueryRegistry | null;
|
|
102
|
+
/**
|
|
103
|
+
* Get session statistics
|
|
104
|
+
*/
|
|
105
|
+
getSessionStats(): {
|
|
106
|
+
sessionAge: number;
|
|
107
|
+
timeSinceLastSync: number;
|
|
108
|
+
realtimeConnected: boolean;
|
|
109
|
+
totalQueries: number;
|
|
110
|
+
staleQueries: number;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Get revalidation statistics
|
|
114
|
+
*/
|
|
115
|
+
getRevalidationStats(): {
|
|
116
|
+
activeRevalidations: number;
|
|
117
|
+
queuedQueries: number;
|
|
118
|
+
activeHooks: number;
|
|
119
|
+
recentActivity: {
|
|
120
|
+
queryKey: string;
|
|
121
|
+
timestamp: number;
|
|
122
|
+
}[];
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Mark a query as stale for testing purposes
|
|
126
|
+
*/
|
|
127
|
+
markQueryStaleForTesting(queryKey: string): void;
|
|
128
|
+
/**
|
|
129
|
+
* Cleanup resources
|
|
130
|
+
*/
|
|
131
|
+
cleanup(): void;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Create reactive client manager
|
|
135
|
+
*/
|
|
136
|
+
export declare function createReactiveClientManager(options: ReactiveManagerOptions): ReactiveClientManager;
|
|
137
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/client/manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEtE,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,cAAc,CAAA;IACtB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACnD,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IACjD,UAAU,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACvC;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAoC;IAC3D,OAAO,CAAC,YAAY,CAAC,CAAoC;IAGzD,OAAO,CAAC,kBAAkB,CAAC,CAAY;IACvC,OAAO,CAAC,oBAAoB,CAAC,CAAY;gBAE7B,OAAO,EAAE,sBAAsB;IA0B3C;;OAEG;IACH,IAAI,qBAAqB,IAAI,MAAM,CAElC;IAED;;OAEG;IACH,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,CAAC,EAAE,GAAG,EACV,GAAG,CAAC,EAAE,MAAM,GACX,IAAI;IAIP;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI;IASxE;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM;;;;;IAI9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAwBrD;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAsB/B;;OAEG;IACH,WAAW;IAIX;;OAEG;IACH,YAAY,IAAI,IAAI;IAUpB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;OAEG;YACW,mBAAmB;IAYjC;;OAEG;YACW,sBAAsB;IAOpC;;OAEG;IACH,mBAAmB,IAAI,WAAW,GAAG,YAAY,GAAG,cAAc;IAUlE;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAO5B;;OAEG;IACH,eAAe;IAIf;;OAEG;IACH,eAAe;;;;;;;IAIf;;OAEG;IACH,oBAAoB;;;;;;;;;IAIpB;;OAEG;IACH,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIhD;;OAEG;IACH,OAAO,IAAI,IAAI;CAahB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,CAEvB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ReactiveConfig } from '../core/types';
|
|
3
|
+
interface ReactiveProviderConfig {
|
|
4
|
+
relations: Record<string, string[]>;
|
|
5
|
+
organizationId: string;
|
|
6
|
+
revalidateFn?: (queryKey: string) => Promise<any>;
|
|
7
|
+
}
|
|
8
|
+
interface ReactiveContextValue {
|
|
9
|
+
organizationId: string;
|
|
10
|
+
config: ReactiveConfig;
|
|
11
|
+
isInitialized: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* React context provider for reactive features
|
|
15
|
+
*/
|
|
16
|
+
export declare function ReactiveProvider({ children, config, }: {
|
|
17
|
+
children: React.ReactNode;
|
|
18
|
+
config: ReactiveProviderConfig;
|
|
19
|
+
}): React.FunctionComponentElement<React.ProviderProps<ReactiveContextValue | null>>;
|
|
20
|
+
/**
|
|
21
|
+
* Hook to access reactive context
|
|
22
|
+
*/
|
|
23
|
+
export declare function useReactiveContext(): ReactiveContextValue;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/client/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAA;AAE7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEnD,UAAU,sBAAsB;IAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACnC,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CAClD;AAED,UAAU,oBAAoB;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,cAAc,CAAA;IACtB,aAAa,EAAE,OAAO,CAAA;CACvB;AAID;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,MAAM,EAAE,sBAAsB,CAAA;CAC/B,oFA2GA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,yBAMjC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Smart revalidation system with active hooks priority
|
|
3
|
+
* Provides intelligent query revalidation based on user interaction patterns
|
|
4
|
+
*/
|
|
5
|
+
import type { ReactiveStorage } from './storage';
|
|
6
|
+
import type { ReactiveConfig } from '../core/types';
|
|
7
|
+
export interface RevalidationStrategy {
|
|
8
|
+
immediate: string[];
|
|
9
|
+
delayed: string[];
|
|
10
|
+
background: string[];
|
|
11
|
+
estimatedTime: number;
|
|
12
|
+
}
|
|
13
|
+
export interface RevalidationOptions {
|
|
14
|
+
maxConcurrent?: number;
|
|
15
|
+
delayBetweenBatches?: number;
|
|
16
|
+
priorityFirst?: boolean;
|
|
17
|
+
backgroundDelay?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface RevalidationResult {
|
|
20
|
+
immediate: {
|
|
21
|
+
successful: number;
|
|
22
|
+
failed: number;
|
|
23
|
+
duration: number;
|
|
24
|
+
};
|
|
25
|
+
delayed: {
|
|
26
|
+
successful: number;
|
|
27
|
+
failed: number;
|
|
28
|
+
duration: number;
|
|
29
|
+
};
|
|
30
|
+
background: {
|
|
31
|
+
successful: number;
|
|
32
|
+
failed: number;
|
|
33
|
+
duration: number;
|
|
34
|
+
};
|
|
35
|
+
totalDuration: number;
|
|
36
|
+
overallSuccess: boolean;
|
|
37
|
+
}
|
|
38
|
+
export declare class SmartRevalidationEngine {
|
|
39
|
+
private storage;
|
|
40
|
+
private config;
|
|
41
|
+
private activeRevalidations;
|
|
42
|
+
private revalidationQueue;
|
|
43
|
+
constructor(storage: ReactiveStorage, config: ReactiveConfig);
|
|
44
|
+
/**
|
|
45
|
+
* Create an intelligent revalidation strategy
|
|
46
|
+
*/
|
|
47
|
+
createRevalidationStrategy(invalidatedQueries: string[], options?: RevalidationOptions): RevalidationStrategy;
|
|
48
|
+
/**
|
|
49
|
+
* Execute the revalidation strategy
|
|
50
|
+
*/
|
|
51
|
+
executeRevalidationStrategy(strategy: RevalidationStrategy, revalidateFn: (queryKey: string) => Promise<any>, options?: RevalidationOptions): Promise<RevalidationResult>;
|
|
52
|
+
/**
|
|
53
|
+
* Add queries to revalidation queue with priority
|
|
54
|
+
*/
|
|
55
|
+
queueRevalidation(queryKey: string, priority?: number): void;
|
|
56
|
+
/**
|
|
57
|
+
* Process revalidation queue
|
|
58
|
+
*/
|
|
59
|
+
processRevalidationQueue(revalidateFn: (queryKey: string) => Promise<any>, options?: RevalidationOptions): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Smart invalidation with automatic revalidation
|
|
62
|
+
*/
|
|
63
|
+
smartInvalidateAndRevalidate(table: string, revalidateFn: (queryKey: string) => Promise<any>, options?: RevalidationOptions): Promise<RevalidationResult>;
|
|
64
|
+
/**
|
|
65
|
+
* Execute a batch of queries with concurrency control
|
|
66
|
+
*/
|
|
67
|
+
private executeQueryBatch;
|
|
68
|
+
/**
|
|
69
|
+
* Execute background revalidation with rate limiting
|
|
70
|
+
*/
|
|
71
|
+
private executeBackgroundRevalidation;
|
|
72
|
+
/**
|
|
73
|
+
* Find queries affected by table changes
|
|
74
|
+
*/
|
|
75
|
+
private findAffectedQueries;
|
|
76
|
+
/**
|
|
77
|
+
* Estimate total revalidation time
|
|
78
|
+
*/
|
|
79
|
+
private estimateRevalidationTime;
|
|
80
|
+
/**
|
|
81
|
+
* Utility to wait for a specified time
|
|
82
|
+
*/
|
|
83
|
+
private wait;
|
|
84
|
+
/**
|
|
85
|
+
* Get current revalidation statistics
|
|
86
|
+
*/
|
|
87
|
+
getRevalidationStats(): {
|
|
88
|
+
activeRevalidations: number;
|
|
89
|
+
queuedQueries: number;
|
|
90
|
+
activeHooks: number;
|
|
91
|
+
recentActivity: {
|
|
92
|
+
queryKey: string;
|
|
93
|
+
timestamp: number;
|
|
94
|
+
}[];
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Create a smart revalidation engine
|
|
99
|
+
*/
|
|
100
|
+
export declare function createSmartRevalidationEngine(storage: ReactiveStorage, config: ReactiveConfig): SmartRevalidationEngine;
|
|
101
|
+
//# sourceMappingURL=revalidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revalidation.d.ts","sourceRoot":"","sources":["../../src/client/revalidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side SSE client for real-time cache invalidation
|
|
3
|
+
* NO HEARTBEATS - relies on event acknowledgments and connection health
|
|
4
|
+
*/
|
|
5
|
+
import type { InvalidationEvent } from '../core/types';
|
|
6
|
+
export interface SSEClientOptions {
|
|
7
|
+
url: string;
|
|
8
|
+
onInvalidation: (event: InvalidationEvent) => void;
|
|
9
|
+
onError: (error: Error) => void;
|
|
10
|
+
onReconnect?: () => void;
|
|
11
|
+
maxReconnectAttempts?: number;
|
|
12
|
+
reconnectDelay?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface SSEClientStats {
|
|
15
|
+
connectionAttempts: number;
|
|
16
|
+
successfulConnections: number;
|
|
17
|
+
failedConnections: number;
|
|
18
|
+
reconnectAttempts: number;
|
|
19
|
+
eventsReceived: number;
|
|
20
|
+
eventsAcknowledged: number;
|
|
21
|
+
lastEventTime: number;
|
|
22
|
+
connectionStartTime?: number;
|
|
23
|
+
totalUptime: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* SSE Client for real-time cache invalidation
|
|
27
|
+
* Uses event acknowledgments instead of heartbeats for reliability
|
|
28
|
+
*/
|
|
29
|
+
export declare class SSEClient {
|
|
30
|
+
private eventSource;
|
|
31
|
+
private reconnectTimer;
|
|
32
|
+
private isIntentionallyClosed;
|
|
33
|
+
private stats;
|
|
34
|
+
private options;
|
|
35
|
+
constructor(options: SSEClientOptions);
|
|
36
|
+
/**
|
|
37
|
+
* Connect to SSE stream
|
|
38
|
+
*/
|
|
39
|
+
connect(): void;
|
|
40
|
+
/**
|
|
41
|
+
* Disconnect from SSE stream
|
|
42
|
+
*/
|
|
43
|
+
disconnect(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Handle incoming SSE messages
|
|
46
|
+
*/
|
|
47
|
+
private handleMessage;
|
|
48
|
+
/**
|
|
49
|
+
* Handle invalidation events
|
|
50
|
+
*/
|
|
51
|
+
private handleInvalidationEvent;
|
|
52
|
+
/**
|
|
53
|
+
* Send event acknowledgment to server
|
|
54
|
+
*/
|
|
55
|
+
private acknowledgeEvent;
|
|
56
|
+
/**
|
|
57
|
+
* Schedule reconnection attempt
|
|
58
|
+
*/
|
|
59
|
+
private scheduleReconnect;
|
|
60
|
+
/**
|
|
61
|
+
* Handle connection errors and schedule reconnection
|
|
62
|
+
*/
|
|
63
|
+
private handleConnectionError;
|
|
64
|
+
/**
|
|
65
|
+
* Clear reconnection timer
|
|
66
|
+
*/
|
|
67
|
+
private clearReconnectTimer;
|
|
68
|
+
/**
|
|
69
|
+
* Get connection statistics
|
|
70
|
+
*/
|
|
71
|
+
getStats(): SSEClientStats;
|
|
72
|
+
/**
|
|
73
|
+
* Check if currently connected
|
|
74
|
+
*/
|
|
75
|
+
isConnected(): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Get connection state
|
|
78
|
+
*/
|
|
79
|
+
getConnectionState(): 'connecting' | 'open' | 'closed';
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=sse-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse-client.d.ts","sourceRoot":"","sources":["../../src/client/sse-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAA;IAClD,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAC/B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAA;CAExB;AAED,MAAM,WAAW,cAAc;IAC7B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,iBAAiB,EAAE,MAAM,CAAA;IACzB,iBAAiB,EAAE,MAAM,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,qBAAqB,CAAQ;IACrC,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,OAAO,CAA4B;gBAE/B,OAAO,EAAE,gBAAgB;IAoBrC;;OAEG;IACH,OAAO,IAAI,IAAI;IAgCf;;OAEG;IACH,UAAU,IAAI,IAAI;IAkBlB;;OAEG;IACH,OAAO,CAAC,aAAa;IA8BrB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAU/B;;OAEG;YACW,gBAAgB;IAsB9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA8BzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,QAAQ,IAAI,cAAc;IAI1B;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,kBAAkB,IAAI,YAAY,GAAG,MAAM,GAAG,QAAQ;CAcvD"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side storage management for reactive queries
|
|
3
|
+
* Handles localStorage-based query registry and session persistence
|
|
4
|
+
*/
|
|
5
|
+
import type { QueryRegistry, HookState } from "../core/types";
|
|
6
|
+
export declare class ReactiveStorage {
|
|
7
|
+
private storageKey;
|
|
8
|
+
private legacyStorageKey;
|
|
9
|
+
private indexKey;
|
|
10
|
+
private activeHooks;
|
|
11
|
+
private sessionId;
|
|
12
|
+
private organizationId;
|
|
13
|
+
constructor(organizationId: string);
|
|
14
|
+
/** Derive the per-org index key */
|
|
15
|
+
private getIndexKey;
|
|
16
|
+
/** Derive per-query entry key */
|
|
17
|
+
private getEntryKey;
|
|
18
|
+
private getLegacyEntryKey;
|
|
19
|
+
/** Simple 32-bit hash for stable short keys */
|
|
20
|
+
private hash;
|
|
21
|
+
/**
|
|
22
|
+
* Initialize the query registry for this organization
|
|
23
|
+
*/
|
|
24
|
+
private initializeRegistry;
|
|
25
|
+
/**
|
|
26
|
+
* Get the current query registry
|
|
27
|
+
*/
|
|
28
|
+
getRegistry(): QueryRegistry | null;
|
|
29
|
+
/**
|
|
30
|
+
* Save the query registry to localStorage
|
|
31
|
+
*/
|
|
32
|
+
private saveRegistry;
|
|
33
|
+
/**
|
|
34
|
+
* Register a query execution
|
|
35
|
+
*/
|
|
36
|
+
registerQuery(queryKey: string, dependencies: string[], data?: any, ttl?: number): void;
|
|
37
|
+
/**
|
|
38
|
+
* Mark a query as stale (needs revalidation)
|
|
39
|
+
*/
|
|
40
|
+
invalidateQuery(queryKey: string): void;
|
|
41
|
+
/**
|
|
42
|
+
* Mark a query as stale for testing (simulates server-side changes)
|
|
43
|
+
*/
|
|
44
|
+
markQueryStaleForTesting(queryKey: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* Invalidate queries based on table changes
|
|
47
|
+
*/
|
|
48
|
+
invalidateByTable(table: string, relations: Record<string, string[]>): void;
|
|
49
|
+
/**
|
|
50
|
+
* Get cached data for a query
|
|
51
|
+
*/
|
|
52
|
+
getCachedData(queryKey: string): {
|
|
53
|
+
data: any;
|
|
54
|
+
isStale: boolean;
|
|
55
|
+
lastRevalidated: number;
|
|
56
|
+
} | null;
|
|
57
|
+
/**
|
|
58
|
+
* Detect session gaps and queries that need revalidation
|
|
59
|
+
*/
|
|
60
|
+
detectSessionGap(): {
|
|
61
|
+
hasGap: boolean;
|
|
62
|
+
gapDuration: number;
|
|
63
|
+
staleQueries: string[];
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Register an active hook for priority revalidation
|
|
67
|
+
*/
|
|
68
|
+
registerActiveHook(queryKey: string, dependencies: string[], organizationId?: string): void;
|
|
69
|
+
/**
|
|
70
|
+
* Unregister an active hook
|
|
71
|
+
*/
|
|
72
|
+
unregisterActiveHook(queryKey: string): void;
|
|
73
|
+
/**
|
|
74
|
+
* Get active hooks for priority revalidation
|
|
75
|
+
*/
|
|
76
|
+
getActiveHooks(): HookState[];
|
|
77
|
+
/**
|
|
78
|
+
* Get active hooks sorted by priority (most recent access first)
|
|
79
|
+
*/
|
|
80
|
+
getActiveHooksByPriority(): HookState[];
|
|
81
|
+
/**
|
|
82
|
+
* Update real-time connection status
|
|
83
|
+
*/
|
|
84
|
+
updateRealtimeStatus(connected: boolean): void;
|
|
85
|
+
/**
|
|
86
|
+
* Get queries that should be revalidated first (active hooks)
|
|
87
|
+
*/
|
|
88
|
+
getPriorityQueries(): string[];
|
|
89
|
+
/**
|
|
90
|
+
* Get background queries that can be revalidated later
|
|
91
|
+
*/
|
|
92
|
+
getBackgroundQueries(): string[];
|
|
93
|
+
/**
|
|
94
|
+
* Clean up expired entries to free up localStorage space
|
|
95
|
+
*/
|
|
96
|
+
private cleanupExpiredEntries;
|
|
97
|
+
/**
|
|
98
|
+
* Clean up old entries when localStorage is full
|
|
99
|
+
*/
|
|
100
|
+
private cleanupOldEntries;
|
|
101
|
+
/**
|
|
102
|
+
* Generate a unique session ID
|
|
103
|
+
*/
|
|
104
|
+
private generateSessionId;
|
|
105
|
+
/**
|
|
106
|
+
* Get session information
|
|
107
|
+
*/
|
|
108
|
+
getSessionInfo(): {
|
|
109
|
+
startTime: number;
|
|
110
|
+
lastSync: number;
|
|
111
|
+
realtimeConnected: boolean;
|
|
112
|
+
} | null;
|
|
113
|
+
/**
|
|
114
|
+
* Clear all stored data for this organization
|
|
115
|
+
*/
|
|
116
|
+
clearRegistry(): void;
|
|
117
|
+
/**
|
|
118
|
+
* Export registry for debugging
|
|
119
|
+
*/
|
|
120
|
+
exportRegistry(): QueryRegistry | null;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Create a storage instance for an organization
|
|
124
|
+
*/
|
|
125
|
+
export declare function createReactiveStorage(organizationId: string): ReactiveStorage;
|
|
126
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/client/storage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACV,MAAM,eAAe,CAAC;AAEvB,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CACW;IAC7B,OAAO,CAAC,gBAAgB,CACO;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAGf;IACJ,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAS;gBAEnB,cAAc,EAAE,MAAM;IAYlC,mCAAmC;IACnC,OAAO,CAAC,WAAW;IAInB,iCAAiC;IACjC,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,iBAAiB;IAOzB,+CAA+C;IAC/C,OAAO,CAAC,IAAI;IAaZ;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;OAEG;IACH,WAAW,IAAI,aAAa,GAAG,IAAI;IA8BnC;;OAEG;IACH,OAAO,CAAC,YAAY;IAiCpB;;OAEG;IACH,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,CAAC,EAAE,GAAG,EACV,GAAG,CAAC,EAAE,MAAM,GACX,IAAI;IA4FP;;OAEG;IACH,eAAe,CACb,QAAQ,EAAE,MAAM,GACf,IAAI;IAmBP;;OAEG;IACH,wBAAwB,CACtB,QAAQ,EAAE,MAAM,GACf,IAAI;IAoBP;;OAEG;IACH,iBAAiB,CACf,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAClC,IAAI;IA0CP;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG;QAC/B,IAAI,EAAE,GAAG,CAAC;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,GAAG,IAAI;IAqER;;OAEG;IACH,gBAAgB,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB;IAgDD;;OAEG;IACH,kBAAkB,CAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EAAE,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,IAAI;IAUP;;OAEG;IACH,oBAAoB,CAClB,QAAQ,EAAE,MAAM,GACf,IAAI;IAIP;;OAEG;IACH,cAAc,IAAI,SAAS,EAAE;IAM7B;;OAEG;IACH,wBAAwB,IAAI,SAAS,EAAE;IAOvC;;OAEG;IACH,oBAAoB,CAClB,SAAS,EAAE,OAAO,GACjB,IAAI;IAWP;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAQ9B;;OAEG;IACH,oBAAoB,IAAI,MAAM,EAAE;IAehC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyCzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,cAAc;;;;;IAKd;;OAEG;IACH,aAAa,IAAI,IAAI;IAgDrB;;OAEG;IACH,cAAc,IAAI,aAAa,GAAG,IAAI;CAGvC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,MAAM,GACrB,eAAe,CAIjB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type RelationsMap = Record<string, string[]>;
|
|
3
|
+
export declare function createTrpcRevalidateFn(trpcClient: any): (compositeKey: string) => Promise<any>;
|
|
4
|
+
interface TrpcReactiveProviderProps {
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
organizationId: string;
|
|
7
|
+
relations: RelationsMap;
|
|
8
|
+
trpcClient: any;
|
|
9
|
+
}
|
|
10
|
+
export declare function TrpcReactiveProvider({ children, organizationId, relations, trpcClient, }: TrpcReactiveProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=trpc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trpc.d.ts","sourceRoot":"","sources":["../../src/client/trpc.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;AAE5C,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,GAAG,IACtC,cAAc,MAAM,kBAanC;AAED,UAAU,yBAAyB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,YAAY,CAAA;IACvB,UAAU,EAAE,GAAG,CAAA;CAChB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,cAAc,EACd,SAAS,EACT,UAAU,GACX,EAAE,yBAAyB,2CAa3B"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-only exports for @agelum/backend
|
|
3
|
+
* Import this with: import { ... } from '@agelum/backend/client'
|
|
4
|
+
*/
|
|
5
|
+
export { ReactiveProvider, useReactiveContext, } from "./client/provider";
|
|
6
|
+
export { useReactive, useReactiveQuery, initializeReactiveClient, } from "./client/hooks";
|
|
7
|
+
export { ReactiveClientManager } from "./client/manager";
|
|
8
|
+
export { TrpcReactiveProvider, createTrpcRevalidateFn, } from "./client/trpc";
|
|
9
|
+
export { LocalStorageProvider } from "./providers/localStorage";
|
|
10
|
+
export type { UseReactiveResult } from "./client/types";
|
|
11
|
+
export declare const version = "0.1.0";
|
|
12
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,eAAO,MAAM,OAAO,UAAU,CAAC"}
|