@rozenite/tanstack-query-plugin 2.1.0 → 2.3.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/CHANGELOG.md +24 -0
- package/dist/devtools/assets/{CXEL7IU7-BWccRGN3.js → CXEL7IU7-D2MCp9XC.js} +1 -1
- package/dist/devtools/assets/{tanstack-query-CbF_imft.js → tanstack-query-Bk8rHBM2.js} +12 -12
- package/dist/devtools/tanstack-query.html +1 -1
- package/dist/react-native/cjs/package.json +3 -0
- package/dist/react-native/cjs/react-native.js +12 -0
- package/dist/react-native/cjs/src/react-native/agent/tanstack-query-agent.js +376 -0
- package/dist/react-native/cjs/src/react-native/agent/useTanStackQueryAgentTools.js +98 -0
- package/dist/react-native/cjs/src/react-native/devtools-actions.js +161 -0
- package/dist/react-native/cjs/src/react-native/useHandleDevToolsMessages.js +26 -0
- package/dist/react-native/cjs/src/react-native/useHandleInitialData.js +26 -0
- package/dist/react-native/cjs/src/react-native/useSyncTanStackCache.js +203 -0
- package/dist/react-native/cjs/src/react-native/useTanStackQueryDevTools.js +20 -0
- package/dist/react-native/cjs/src/shared/agent-tools.js +197 -0
- package/dist/react-native/cjs/src/shared/dehydrate.js +35 -0
- package/dist/react-native/cjs/src/shared/messaging.js +2 -0
- package/dist/react-native/cjs/src/shared/types.js +2 -0
- package/dist/react-native/cjs/src/shared/useSyncOnlineStatus.js +23 -0
- package/dist/react-native/package.json +3 -0
- package/dist/react-native/react-native.d.ts +1 -0
- package/dist/react-native/react-native.js +10 -0
- package/dist/{sdk/index.d.ts → react-native/src/react-native/agent/tanstack-query-agent.d.ts} +2105 -1939
- package/dist/react-native/src/react-native/agent/tanstack-query-agent.js +370 -0
- package/dist/react-native/src/react-native/agent/useTanStackQueryAgentTools.d.ts +2 -0
- package/dist/react-native/src/react-native/agent/useTanStackQueryAgentTools.js +94 -0
- package/dist/react-native/src/react-native/devtools-actions.d.ts +115 -0
- package/dist/react-native/src/react-native/devtools-actions.js +157 -0
- package/dist/react-native/src/react-native/useHandleDevToolsMessages.d.ts +3 -0
- package/dist/react-native/src/react-native/useHandleDevToolsMessages.js +22 -0
- package/dist/react-native/src/react-native/useHandleInitialData.d.ts +3 -0
- package/dist/react-native/src/react-native/useHandleInitialData.js +22 -0
- package/dist/react-native/src/react-native/useSyncTanStackCache.d.ts +3 -0
- package/dist/react-native/src/react-native/useSyncTanStackCache.js +196 -0
- package/dist/react-native/src/react-native/useTanStackQueryDevTools.d.ts +2 -0
- package/dist/react-native/src/react-native/useTanStackQueryDevTools.js +16 -0
- package/dist/react-native/src/shared/agent-tools.d.ts +967 -0
- package/dist/react-native/src/shared/agent-tools.js +194 -0
- package/dist/react-native/src/shared/dehydrate.d.ts +6 -0
- package/dist/react-native/src/shared/dehydrate.js +28 -0
- package/dist/react-native/src/shared/messaging.d.ts +44 -0
- package/dist/react-native/src/shared/messaging.js +1 -0
- package/dist/react-native/src/shared/types.d.ts +25 -0
- package/dist/react-native/src/shared/types.js +1 -0
- package/dist/react-native/src/shared/useSyncOnlineStatus.d.ts +2 -0
- package/dist/react-native/src/shared/useSyncOnlineStatus.js +19 -0
- package/dist/rozenite.json +1 -1
- package/dist/sdk/package.json +3 -0
- package/dist/sdk/sdk.d.ts +812 -0
- package/dist/sdk/sdk.js +8 -0
- package/dist/sdk/src/react-native/devtools-actions.d.ts +115 -0
- package/dist/sdk/src/react-native/devtools-actions.js +161 -0
- package/dist/sdk/src/shared/agent-tools.d.ts +967 -0
- package/dist/sdk/src/shared/agent-tools.js +197 -0
- package/dist/sdk/src/shared/types.d.ts +25 -0
- package/dist/sdk/src/shared/types.js +2 -0
- package/package.json +18 -18
- package/react-native.ts +8 -1
- package/rozenite.config.ts +1 -0
- package/src/__tests__/release-bundle.test.ts +32 -0
- package/tsconfig.json +1 -3
- package/dist/react-native/chunks/useTanStackQueryDevTools.require.cjs +0 -1
- package/dist/react-native/chunks/useTanStackQueryDevTools.require.js +0 -895
- package/dist/react-native/index.cjs +0 -1
- package/dist/react-native/index.d.ts +0 -7
- package/dist/react-native/index.js +0 -6
- package/dist/sdk/index.cjs +0 -1
- package/dist/sdk/index.js +0 -199
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { defineAgentToolContract, definePaginatedAgentToolContract, } from '@rozenite/agent-shared';
|
|
2
|
+
export const TANSTACK_QUERY_AGENT_PLUGIN_ID = '@rozenite/tanstack-query-plugin';
|
|
3
|
+
const queryActionProperties = {
|
|
4
|
+
queryHash: {
|
|
5
|
+
type: 'string',
|
|
6
|
+
description: 'TanStack Query queryHash identifying the query.',
|
|
7
|
+
},
|
|
8
|
+
};
|
|
9
|
+
const mutationActionProperties = {
|
|
10
|
+
mutationId: {
|
|
11
|
+
type: 'number',
|
|
12
|
+
description: 'TanStack Query mutationId identifying the mutation.',
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
const paginationProperties = {
|
|
16
|
+
limit: {
|
|
17
|
+
type: 'number',
|
|
18
|
+
description: 'Maximum number of items to return. Defaults to 20. Maximum 100.',
|
|
19
|
+
},
|
|
20
|
+
cursor: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Opaque pagination cursor from a previous list call.',
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
const emptyInputSchema = {
|
|
26
|
+
type: 'object',
|
|
27
|
+
properties: {},
|
|
28
|
+
};
|
|
29
|
+
export const tanstackQueryToolDefinitions = {
|
|
30
|
+
getCacheSummary: defineAgentToolContract({
|
|
31
|
+
name: 'get-cache-summary',
|
|
32
|
+
description: 'Return aggregate TanStack Query cache health and count information.',
|
|
33
|
+
inputSchema: emptyInputSchema,
|
|
34
|
+
}),
|
|
35
|
+
getOnlineStatus: defineAgentToolContract({
|
|
36
|
+
name: 'get-online-status',
|
|
37
|
+
description: 'Return the current TanStack Query onlineManager status.',
|
|
38
|
+
inputSchema: emptyInputSchema,
|
|
39
|
+
}),
|
|
40
|
+
setOnlineStatus: defineAgentToolContract({
|
|
41
|
+
name: 'set-online-status',
|
|
42
|
+
description: 'Set the TanStack Query onlineManager status for testing offline/online behavior.',
|
|
43
|
+
inputSchema: {
|
|
44
|
+
type: 'object',
|
|
45
|
+
properties: {
|
|
46
|
+
online: {
|
|
47
|
+
type: 'boolean',
|
|
48
|
+
description: 'Whether the TanStack Query onlineManager should be online.',
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
required: ['online'],
|
|
52
|
+
},
|
|
53
|
+
}),
|
|
54
|
+
listQueries: definePaginatedAgentToolContract({
|
|
55
|
+
name: 'list-queries',
|
|
56
|
+
description: 'List TanStack Query query summaries using cursor pagination.',
|
|
57
|
+
inputSchema: {
|
|
58
|
+
type: 'object',
|
|
59
|
+
properties: paginationProperties,
|
|
60
|
+
},
|
|
61
|
+
pagination: {
|
|
62
|
+
kind: 'cursor',
|
|
63
|
+
fields: [
|
|
64
|
+
'queryHash',
|
|
65
|
+
'queryKey',
|
|
66
|
+
'status',
|
|
67
|
+
'fetchStatus',
|
|
68
|
+
'observersCount',
|
|
69
|
+
'isInvalidated',
|
|
70
|
+
'dataUpdatedAt',
|
|
71
|
+
'errorUpdatedAt',
|
|
72
|
+
'hasData',
|
|
73
|
+
'hasError',
|
|
74
|
+
],
|
|
75
|
+
defaultFields: ['queryHash', 'queryKey', 'status', 'fetchStatus', 'hasError'],
|
|
76
|
+
},
|
|
77
|
+
}),
|
|
78
|
+
getQueryDetails: defineAgentToolContract({
|
|
79
|
+
name: 'get-query-details',
|
|
80
|
+
description: 'Return a JSON-safe TanStack Query query snapshot and observer summary.',
|
|
81
|
+
inputSchema: {
|
|
82
|
+
type: 'object',
|
|
83
|
+
properties: queryActionProperties,
|
|
84
|
+
required: ['queryHash'],
|
|
85
|
+
},
|
|
86
|
+
}),
|
|
87
|
+
refetchQuery: defineAgentToolContract({
|
|
88
|
+
name: 'refetch-query',
|
|
89
|
+
description: 'Refetch a TanStack Query query by queryHash.',
|
|
90
|
+
inputSchema: {
|
|
91
|
+
type: 'object',
|
|
92
|
+
properties: queryActionProperties,
|
|
93
|
+
required: ['queryHash'],
|
|
94
|
+
},
|
|
95
|
+
}),
|
|
96
|
+
setQueryLoading: defineAgentToolContract({
|
|
97
|
+
name: 'set-query-loading',
|
|
98
|
+
description: 'Enable or disable TanStack Query loading-state simulation for a query by queryHash.',
|
|
99
|
+
inputSchema: {
|
|
100
|
+
type: 'object',
|
|
101
|
+
properties: {
|
|
102
|
+
...queryActionProperties,
|
|
103
|
+
enabled: {
|
|
104
|
+
type: 'boolean',
|
|
105
|
+
description: 'Whether the loading-state simulation should be enabled.',
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
required: ['queryHash', 'enabled'],
|
|
109
|
+
},
|
|
110
|
+
}),
|
|
111
|
+
setQueryError: defineAgentToolContract({
|
|
112
|
+
name: 'set-query-error',
|
|
113
|
+
description: 'Enable or disable TanStack Query error-state simulation for a query by queryHash.',
|
|
114
|
+
inputSchema: {
|
|
115
|
+
type: 'object',
|
|
116
|
+
properties: {
|
|
117
|
+
...queryActionProperties,
|
|
118
|
+
enabled: {
|
|
119
|
+
type: 'boolean',
|
|
120
|
+
description: 'Whether the error-state simulation should be enabled.',
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
required: ['queryHash', 'enabled'],
|
|
124
|
+
},
|
|
125
|
+
}),
|
|
126
|
+
invalidateQuery: defineAgentToolContract({
|
|
127
|
+
name: 'invalidate-query',
|
|
128
|
+
description: 'Invalidate a TanStack Query query by queryHash.',
|
|
129
|
+
inputSchema: {
|
|
130
|
+
type: 'object',
|
|
131
|
+
properties: queryActionProperties,
|
|
132
|
+
required: ['queryHash'],
|
|
133
|
+
},
|
|
134
|
+
}),
|
|
135
|
+
resetQuery: defineAgentToolContract({
|
|
136
|
+
name: 'reset-query',
|
|
137
|
+
description: 'Reset a TanStack Query query by queryHash.',
|
|
138
|
+
inputSchema: {
|
|
139
|
+
type: 'object',
|
|
140
|
+
properties: queryActionProperties,
|
|
141
|
+
required: ['queryHash'],
|
|
142
|
+
},
|
|
143
|
+
}),
|
|
144
|
+
removeQuery: defineAgentToolContract({
|
|
145
|
+
name: 'remove-query',
|
|
146
|
+
description: 'Remove a TanStack Query query from the cache by queryHash.',
|
|
147
|
+
inputSchema: {
|
|
148
|
+
type: 'object',
|
|
149
|
+
properties: queryActionProperties,
|
|
150
|
+
required: ['queryHash'],
|
|
151
|
+
},
|
|
152
|
+
}),
|
|
153
|
+
clearQueryCache: defineAgentToolContract({
|
|
154
|
+
name: 'clear-query-cache',
|
|
155
|
+
description: 'Clear the full TanStack Query query cache.',
|
|
156
|
+
inputSchema: emptyInputSchema,
|
|
157
|
+
}),
|
|
158
|
+
listMutations: definePaginatedAgentToolContract({
|
|
159
|
+
name: 'list-mutations',
|
|
160
|
+
description: 'List TanStack Query mutation summaries using cursor pagination.',
|
|
161
|
+
inputSchema: {
|
|
162
|
+
type: 'object',
|
|
163
|
+
properties: paginationProperties,
|
|
164
|
+
},
|
|
165
|
+
pagination: {
|
|
166
|
+
kind: 'cursor',
|
|
167
|
+
fields: [
|
|
168
|
+
'mutationId',
|
|
169
|
+
'mutationKey',
|
|
170
|
+
'status',
|
|
171
|
+
'isPaused',
|
|
172
|
+
'submittedAt',
|
|
173
|
+
'failureCount',
|
|
174
|
+
'hasData',
|
|
175
|
+
'hasError',
|
|
176
|
+
],
|
|
177
|
+
defaultFields: ['mutationId', 'mutationKey', 'status', 'hasError'],
|
|
178
|
+
},
|
|
179
|
+
}),
|
|
180
|
+
getMutationDetails: defineAgentToolContract({
|
|
181
|
+
name: 'get-mutation-details',
|
|
182
|
+
description: 'Return a JSON-safe TanStack Query mutation snapshot for a mutationId.',
|
|
183
|
+
inputSchema: {
|
|
184
|
+
type: 'object',
|
|
185
|
+
properties: mutationActionProperties,
|
|
186
|
+
required: ['mutationId'],
|
|
187
|
+
},
|
|
188
|
+
}),
|
|
189
|
+
clearMutationCache: defineAgentToolContract({
|
|
190
|
+
name: 'clear-mutation-cache',
|
|
191
|
+
description: 'Clear the full TanStack Query mutation cache.',
|
|
192
|
+
inputSchema: emptyInputSchema,
|
|
193
|
+
}),
|
|
194
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Query, Mutation, QueryClient } from '@tanstack/react-query';
|
|
2
|
+
import type { SerializableQuery, SerializableMutation, SerializableObserver, SerializableQueryClient } from './types';
|
|
3
|
+
export declare const dehydrateObservers: (query: Query) => SerializableObserver[];
|
|
4
|
+
export declare const dehydrateQuery: (query: Query) => SerializableQuery;
|
|
5
|
+
export declare const dehydrateMutation: (mutation: Mutation) => SerializableMutation;
|
|
6
|
+
export declare const dehydrateQueryClient: (queryClient: QueryClient) => SerializableQueryClient;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const dehydrateObservers = (query) => {
|
|
2
|
+
return query.observers.map((observer) => ({
|
|
3
|
+
queryHash: query.queryHash,
|
|
4
|
+
options: observer.options,
|
|
5
|
+
}));
|
|
6
|
+
};
|
|
7
|
+
export const dehydrateQuery = (query) => {
|
|
8
|
+
const dehydratedObservers = dehydrateObservers(query);
|
|
9
|
+
return {
|
|
10
|
+
state: query.state,
|
|
11
|
+
queryKey: query.queryKey,
|
|
12
|
+
queryHash: query.queryHash,
|
|
13
|
+
observers: dehydratedObservers,
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export const dehydrateMutation = (mutation) => {
|
|
17
|
+
return {
|
|
18
|
+
mutationId: mutation.mutationId,
|
|
19
|
+
state: mutation.state,
|
|
20
|
+
options: mutation.options,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
export const dehydrateQueryClient = (queryClient) => {
|
|
24
|
+
return {
|
|
25
|
+
queries: queryClient.getQueryCache().getAll().map(dehydrateQuery),
|
|
26
|
+
mutations: queryClient.getMutationCache().getAll().map(dehydrateMutation),
|
|
27
|
+
};
|
|
28
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { RozeniteDevToolsClient } from '@rozenite/plugin-bridge';
|
|
2
|
+
import { DevToolsActionType, SerializableQueryClient, SerializableQuery, SerializableMutation, SerializableObserver, PartialQueryState } from './types';
|
|
3
|
+
export type TanStackQueryPluginEventMap = {
|
|
4
|
+
'online-status-changed': {
|
|
5
|
+
online: boolean;
|
|
6
|
+
};
|
|
7
|
+
'devtools-action': {
|
|
8
|
+
type: DevToolsActionType;
|
|
9
|
+
queryHash: string;
|
|
10
|
+
metadata?: {
|
|
11
|
+
data?: unknown;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Announced by the device once it is listening for panel messages. The panel
|
|
16
|
+
* is recreated on every app reload and asks for the cache immediately, which
|
|
17
|
+
* can land before the app's React tree has mounted the plugin; this lets the
|
|
18
|
+
* panel ask again instead of staying empty until the app is restarted.
|
|
19
|
+
*/
|
|
20
|
+
'device-ready': unknown;
|
|
21
|
+
'request-initial-data': unknown;
|
|
22
|
+
'sync-data': {
|
|
23
|
+
data: SerializableQueryClient;
|
|
24
|
+
};
|
|
25
|
+
'sync-query-event': {
|
|
26
|
+
type: 'added' | 'removed';
|
|
27
|
+
data: SerializableQuery;
|
|
28
|
+
} | {
|
|
29
|
+
type: 'updated';
|
|
30
|
+
action?: string;
|
|
31
|
+
data: SerializableQuery | PartialQueryState;
|
|
32
|
+
} | {
|
|
33
|
+
type: 'observerAdded' | 'observerRemoved' | 'observerOptionsUpdated';
|
|
34
|
+
data: {
|
|
35
|
+
queryHash: string;
|
|
36
|
+
observers: SerializableObserver[];
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
'sync-mutation-event': {
|
|
40
|
+
type: 'added' | 'updated' | 'removed' | 'observerAdded' | 'observerRemoved' | 'observerResultsUpdated' | 'observerOptionsUpdated';
|
|
41
|
+
data: SerializableMutation;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
export type TanStackQueryPluginClient = RozeniteDevToolsClient<TanStackQueryPluginEventMap>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { QueryKey, MutationState, QueryState, QueryObserverOptions, InfiniteQueryObserverOptions, MutationOptions } from '@tanstack/react-query';
|
|
2
|
+
export type SerializableQuery = {
|
|
3
|
+
queryHash: string;
|
|
4
|
+
state: QueryState;
|
|
5
|
+
queryKey: QueryKey;
|
|
6
|
+
observers: SerializableObserver[];
|
|
7
|
+
};
|
|
8
|
+
export type PartialQueryState = {
|
|
9
|
+
queryHash: string;
|
|
10
|
+
state: Partial<QueryState>;
|
|
11
|
+
};
|
|
12
|
+
export type SerializableMutation = {
|
|
13
|
+
mutationId: number;
|
|
14
|
+
options: MutationOptions;
|
|
15
|
+
state: MutationState;
|
|
16
|
+
};
|
|
17
|
+
export type SerializableObserver = {
|
|
18
|
+
queryHash: string;
|
|
19
|
+
options: QueryObserverOptions | InfiniteQueryObserverOptions;
|
|
20
|
+
};
|
|
21
|
+
export type SerializableQueryClient = {
|
|
22
|
+
queries: SerializableQuery[];
|
|
23
|
+
mutations: SerializableMutation[];
|
|
24
|
+
};
|
|
25
|
+
export type DevToolsActionType = 'REFETCH' | 'SET_QUERY_DATA' | 'INVALIDATE' | 'RESET' | 'REMOVE' | 'TRIGGER_ERROR' | 'RESTORE_ERROR' | 'TRIGGER_LOADING' | 'RESTORE_LOADING' | 'CLEAR_MUTATION_CACHE' | 'CLEAR_QUERY_CACHE';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { onlineManager } from '@tanstack/react-query';
|
|
3
|
+
export const useSyncOnlineStatus = (client) => {
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
if (!client) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
const onlineManagerSubscription = onlineManager.subscribe((online) => {
|
|
9
|
+
client.send('online-status-changed', { online });
|
|
10
|
+
});
|
|
11
|
+
const onlineMessageSubscription = client.onMessage('online-status-changed', ({ online }) => {
|
|
12
|
+
onlineManager.setOnline(online);
|
|
13
|
+
});
|
|
14
|
+
return () => {
|
|
15
|
+
onlineManagerSubscription();
|
|
16
|
+
onlineMessageSubscription.remove();
|
|
17
|
+
};
|
|
18
|
+
}, [client]);
|
|
19
|
+
};
|
package/dist/rozenite.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@rozenite/tanstack-query-plugin","version":"2.
|
|
1
|
+
{"name":"@rozenite/tanstack-query-plugin","version":"2.3.0","description":"TanStack Query for Rozenite.","panels":[{"name":"Tanstack Query","source":"/devtools/tanstack-query.html"}],"integrations":["react-native","react-native-web","lynx","lynx-web"]}
|