@refinedev/devtools-internal 2.0.0 → 2.0.1

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/index.cjs CHANGED
@@ -1,3 +1,267 @@
1
1
  "use client"
2
- var x=Object.create;var u=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var L=Object.getPrototypeOf,O=Object.prototype.hasOwnProperty;var h=(r,e)=>{for(var t in e)u(r,t,{get:e[t],enumerable:!0})},v=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of b(e))!O.call(r,s)&&s!==t&&u(r,s,{get:()=>e[s],enumerable:!(o=C(e,s))||o.enumerable});return r};var _=(r,e,t)=>(t=r!=null?x(L(r)):{},v(e||!r||!r.__esModule?u(t,"default",{value:r,enumerable:!0}):t,r)),Q=r=>v(u({},"__esModule",{value:!0}),r);var K={};h(K,{getTrace:()=>y,getXRay:()=>k,useQuerySubscription:()=>A});module.exports=Q(K);var I=_(require("error-stack-parser"));var M="renderWithHooks",g=r=>{let e=r.findIndex(t=>t.functionName===M);return e!==-1?r.slice(0,e):r};var l=process.env.NODE_ENV!=="development"?/node_modules\/refinedev\/(.*?)\//:/\/refine\/packages\/(.*?)\//;var R=r=>r?!!r.match(l):!1;var T=r=>{var o;if(!r)return;let e=r.match(l),t=(o=e==null?void 0:e.groups)==null?void 0:o.name;if(t)return`@refinedev/${t}`};function y(r){if(process.env.NODE_ENV!=="development")return[];try{let e=new Error,t=I.default.parse(e);return g(t).map(n=>({file:n.fileName,line:n.lineNumber,column:n.columnNumber,function:n.functionName,isRefine:R(n.fileName),packageName:T(n.fileName)})).filter(n=>n.function).filter(n=>!(r!=null&&r.includes(n.function??""))).slice(1)}catch{return[]}}var d=require("@refinedev/devtools-shared"),P=r=>{if(d.scopes[r]==="auth")return null;if(r==="useCan")return"key[1]";if(d.scopes[r]==="audit-log")return r==="useLog"?"variables.resource":"key[1]";if(d.scopes[r]==="data"){if(r==="useCustom"||r==="useCustomMutation")return null;switch(r){case"useList":case"useInfiniteList":case"useOne":case"useMany":return"key[2]";case"useCreate":case"useCreateMany":case"useDelete":case"useDeleteMany":case"useUpdate":case"useUpdateMany":return"variables.resource"}}return null};function k(r,e,t){if(process.env.NODE_ENV!=="development")return{hookName:"",trace:[],resourcePath:null};let o=y(t).slice(1),s=P(r);return{hookName:r,trace:o,resourcePath:s,resourceName:e}}var p=require("@refinedev/devtools-shared"),c=_(require("react"));var i=require("@refinedev/devtools-shared");var m=(r,e)=>{let t=e==null?void 0:e.map(s=>`${s.file}:${s.line}:${s.column}#${s.function}-${s.packageName}-${s.isRefine?1:0}`);return JSON.stringify([...r??[],...t??[]])};var D=r=>e=>{var o;if(!((o=e==null?void 0:e.meta)!=null&&o.trace))return;let t=e==null?void 0:e.meta;new Promise(s=>{var n,a;(0,i.send)(r,i.DevtoolsEvent.ACTIVITY,{type:"mutation",identifier:m(e==null?void 0:e.options.mutationKey,(n=e==null?void 0:e.meta)==null?void 0:n.trace),key:e==null?void 0:e.options.mutationKey,status:e==null?void 0:e.state.status,state:e==null?void 0:e.state,variables:(a=e==null?void 0:e.state)==null?void 0:a.variables,...t}),s()})},N=r=>e=>{var o;if(!((o=e==null?void 0:e.meta)!=null&&o.trace))return;let t=e==null?void 0:e.meta;new Promise(s=>{var n;(0,i.send)(r,i.DevtoolsEvent.ACTIVITY,{type:"query",identifier:m(e.queryKey,(n=e.meta)==null?void 0:n.trace),key:e.queryKey,status:e.state.status,state:e.state,...t}),s()})};var S={},E=()=>S,A=process.env.NODE_ENV!=="development"?E:r=>{let{ws:e}=(0,c.useContext)(p.DevToolsContext),t=c.default.useRef(E),o=c.default.useRef(E);return c.default.useEffect(()=>{if(!e)return()=>0;let s=r.getQueryCache(),n=N(e);return s.getAll().forEach(n),t.current=s.subscribe(({query:a,type:f})=>(f==="added"||f==="updated")&&n(a)),()=>{var a;(a=t.current)==null||a.call(t)}},[e,r]),c.default.useEffect(()=>{if(!e)return()=>0;let s=r.getMutationCache(),n=D(e);return s.getAll().forEach(n),o.current=s.subscribe(({mutation:a,type:f})=>(f==="added"||f==="updated")&&n(a)),()=>{var a;(a=o.current)==null||a.call(o)}},[e,r]),c.default.useEffect(()=>e?(0,p.receive)(e,p.DevtoolsEvent.DEVTOOLS_INVALIDATE_QUERY_ACTION,({queryKey:n})=>{n&&r.invalidateQueries({queryKey:n})}):()=>0,[e,r]),{}};
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/index.ts
31
+ var src_exports = {};
32
+ __export(src_exports, {
33
+ getTrace: () => getTrace,
34
+ getXRay: () => getXRay,
35
+ useQuerySubscription: () => useQuerySubscription
36
+ });
37
+ module.exports = __toCommonJS(src_exports);
38
+
39
+ // src/get-trace.ts
40
+ var import_error_stack_parser = __toESM(require("error-stack-parser"));
41
+
42
+ // src/clean-stack.ts
43
+ var unrelatedFunctionName = "renderWithHooks";
44
+ var cleanStack = (stack) => {
45
+ const firstUnrelatedIndex = stack.findIndex(
46
+ (frame) => frame.functionName === unrelatedFunctionName
47
+ );
48
+ if (firstUnrelatedIndex !== -1) {
49
+ return stack.slice(0, firstUnrelatedIndex);
50
+ }
51
+ return stack;
52
+ };
53
+
54
+ // src/constants.ts
55
+ var REFINE_PACKAGE_FILEPATH_REGEXP = process.env.NODE_ENV !== "development" ? /node_modules\/refinedev\/(.*?)\// : /\/refine\/packages\/(.*?)\//;
56
+
57
+ // src/is-refine-stack.ts
58
+ var isRefineStack = (filename) => {
59
+ if (!filename)
60
+ return false;
61
+ const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);
62
+ return !!match;
63
+ };
64
+
65
+ // src/get-package-name-from-filename.ts
66
+ var getPackageNameFromFilename = (filename) => {
67
+ var _a;
68
+ if (!filename)
69
+ return;
70
+ const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);
71
+ const name = (_a = match == null ? void 0 : match.groups) == null ? void 0 : _a.name;
72
+ if (!name)
73
+ return;
74
+ return `@refinedev/${name}`;
75
+ };
76
+
77
+ // src/get-trace.ts
78
+ function getTrace(excludeFromTrace) {
79
+ if (process.env.NODE_ENV !== "development") {
80
+ return [];
81
+ }
82
+ try {
83
+ const error = new Error();
84
+ const stack = import_error_stack_parser.default.parse(error);
85
+ const clean = cleanStack(stack);
86
+ const traces = clean.map(
87
+ (frame) => ({
88
+ file: frame.fileName,
89
+ line: frame.lineNumber,
90
+ column: frame.columnNumber,
91
+ function: frame.functionName,
92
+ isRefine: isRefineStack(frame.fileName),
93
+ packageName: getPackageNameFromFilename(frame.fileName)
94
+ })
95
+ ).filter((trace) => trace.function).filter((trace) => !(excludeFromTrace == null ? void 0 : excludeFromTrace.includes(trace.function ?? "")));
96
+ return traces.slice(1);
97
+ } catch (error) {
98
+ return [];
99
+ }
100
+ }
101
+
102
+ // src/get-resource-path.ts
103
+ var import_devtools_shared = require("@refinedev/devtools-shared");
104
+ var getResourcePath = (hookName) => {
105
+ if (import_devtools_shared.scopes[hookName] === "auth") {
106
+ return null;
107
+ }
108
+ if (hookName === "useCan") {
109
+ return "key[1]";
110
+ }
111
+ if (import_devtools_shared.scopes[hookName] === "audit-log") {
112
+ if (hookName === "useLog") {
113
+ return "variables.resource";
114
+ }
115
+ return "key[1]";
116
+ }
117
+ if (import_devtools_shared.scopes[hookName] === "data") {
118
+ if (hookName === "useCustom" || hookName === "useCustomMutation") {
119
+ return null;
120
+ }
121
+ switch (hookName) {
122
+ case "useList":
123
+ case "useInfiniteList":
124
+ case "useOne":
125
+ case "useMany":
126
+ return "key[2]";
127
+ case "useCreate":
128
+ case "useCreateMany":
129
+ case "useDelete":
130
+ case "useDeleteMany":
131
+ case "useUpdate":
132
+ case "useUpdateMany":
133
+ return "variables.resource";
134
+ }
135
+ }
136
+ return null;
137
+ };
138
+
139
+ // src/get-xray.ts
140
+ function getXRay(hookName, resourceName, excludeFromTrace) {
141
+ if (process.env.NODE_ENV !== "development") {
142
+ return {
143
+ hookName: "",
144
+ trace: [],
145
+ resourcePath: null
146
+ };
147
+ }
148
+ const trace = getTrace(excludeFromTrace).slice(1);
149
+ const resourcePath = getResourcePath(hookName);
150
+ return {
151
+ hookName,
152
+ trace,
153
+ resourcePath,
154
+ resourceName
155
+ };
156
+ }
157
+
158
+ // src/use-query-subscription.tsx
159
+ var import_devtools_shared3 = require("@refinedev/devtools-shared");
160
+ var import_react = __toESM(require("react"));
161
+
162
+ // src/listeners.ts
163
+ var import_devtools_shared2 = require("@refinedev/devtools-shared");
164
+
165
+ // src/create-identifier.ts
166
+ var createIdentifier = (key, trace) => {
167
+ const simpleTrace = trace == null ? void 0 : trace.map(
168
+ (t) => `${t.file}:${t.line}:${t.column}#${t.function}-${t.packageName}-${t.isRefine ? 1 : 0}`
169
+ );
170
+ const str = JSON.stringify([...key ?? [], ...simpleTrace ?? []]);
171
+ return str;
172
+ };
173
+
174
+ // src/listeners.ts
175
+ var createMutationListener = (ws) => (mutation) => {
176
+ var _a;
177
+ if (!((_a = mutation == null ? void 0 : mutation.meta) == null ? void 0 : _a.trace))
178
+ return;
179
+ const meta = mutation == null ? void 0 : mutation.meta;
180
+ new Promise((resolve) => {
181
+ var _a2, _b;
182
+ (0, import_devtools_shared2.send)(ws, import_devtools_shared2.DevtoolsEvent.ACTIVITY, {
183
+ type: "mutation",
184
+ identifier: createIdentifier(
185
+ mutation == null ? void 0 : mutation.options.mutationKey,
186
+ (_a2 = mutation == null ? void 0 : mutation.meta) == null ? void 0 : _a2.trace
187
+ ),
188
+ key: mutation == null ? void 0 : mutation.options.mutationKey,
189
+ status: mutation == null ? void 0 : mutation.state.status,
190
+ state: mutation == null ? void 0 : mutation.state,
191
+ variables: (_b = mutation == null ? void 0 : mutation.state) == null ? void 0 : _b.variables,
192
+ ...meta
193
+ });
194
+ resolve();
195
+ });
196
+ };
197
+ var createQueryListener = (ws) => (query) => {
198
+ var _a;
199
+ if (!((_a = query == null ? void 0 : query.meta) == null ? void 0 : _a.trace))
200
+ return;
201
+ const meta = query == null ? void 0 : query.meta;
202
+ new Promise((resolve) => {
203
+ var _a2;
204
+ (0, import_devtools_shared2.send)(ws, import_devtools_shared2.DevtoolsEvent.ACTIVITY, {
205
+ type: "query",
206
+ identifier: createIdentifier(query.queryKey, (_a2 = query.meta) == null ? void 0 : _a2.trace),
207
+ key: query.queryKey,
208
+ status: query.state.status,
209
+ state: query.state,
210
+ ...meta
211
+ });
212
+ resolve();
213
+ });
214
+ };
215
+
216
+ // src/use-query-subscription.tsx
217
+ var empty = {};
218
+ var noop = () => empty;
219
+ var useQuerySubscription = process.env.NODE_ENV !== "development" ? noop : (queryClient) => {
220
+ const { ws } = (0, import_react.useContext)(import_devtools_shared3.DevToolsContext);
221
+ const queryCacheSubscription = import_react.default.useRef(noop);
222
+ const mutationCacheSubscription = import_react.default.useRef(noop);
223
+ import_react.default.useEffect(() => {
224
+ if (!ws)
225
+ return () => 0;
226
+ const queryCache = queryClient.getQueryCache();
227
+ const queryListener = createQueryListener(ws);
228
+ queryCache.getAll().forEach(queryListener);
229
+ queryCacheSubscription.current = queryCache.subscribe(
230
+ ({ query, type }) => (type === "added" || type === "updated") && queryListener(query)
231
+ );
232
+ return () => {
233
+ var _a;
234
+ (_a = queryCacheSubscription.current) == null ? void 0 : _a.call(queryCacheSubscription);
235
+ };
236
+ }, [ws, queryClient]);
237
+ import_react.default.useEffect(() => {
238
+ if (!ws)
239
+ return () => 0;
240
+ const mutationCache = queryClient.getMutationCache();
241
+ const mutationListener = createMutationListener(ws);
242
+ mutationCache.getAll().forEach(mutationListener);
243
+ mutationCacheSubscription.current = mutationCache.subscribe(
244
+ ({ mutation, type }) => (type === "added" || type === "updated") && mutationListener(mutation)
245
+ );
246
+ return () => {
247
+ var _a;
248
+ (_a = mutationCacheSubscription.current) == null ? void 0 : _a.call(mutationCacheSubscription);
249
+ };
250
+ }, [ws, queryClient]);
251
+ import_react.default.useEffect(() => {
252
+ if (!ws)
253
+ return () => 0;
254
+ const cb = (0, import_devtools_shared3.receive)(
255
+ ws,
256
+ import_devtools_shared3.DevtoolsEvent.DEVTOOLS_INVALIDATE_QUERY_ACTION,
257
+ ({ queryKey }) => {
258
+ if (queryKey) {
259
+ queryClient.invalidateQueries({ queryKey });
260
+ }
261
+ }
262
+ );
263
+ return cb;
264
+ }, [ws, queryClient]);
265
+ return {};
266
+ };
3
267
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/get-trace.ts","../src/clean-stack.ts","../src/constants.ts","../src/is-refine-stack.ts","../src/get-package-name-from-filename.ts","../src/get-resource-path.ts","../src/get-xray.ts","../src/use-query-subscription.tsx","../src/listeners.ts","../src/create-identifier.ts"],"sourcesContent":["export { getTrace } from \"./get-trace.js\";\nexport { getXRay } from \"./get-xray.js\";\nexport { useQuerySubscription } from \"./use-query-subscription.js\";\n","import ErrorStackParser from \"error-stack-parser\";\nimport { cleanStack } from \"./clean-stack\";\nimport { isRefineStack } from \"./is-refine-stack\";\nimport { getPackageNameFromFilename } from \"./get-package-name-from-filename\";\nimport type { TraceType } from \"@refinedev/devtools-shared\";\n\nexport function getTrace(excludeFromTrace?: string[]) {\n if (__DEV_CONDITION__ !== \"development\") {\n return [];\n }\n try {\n const error = new Error();\n const stack = ErrorStackParser.parse(error);\n const clean = cleanStack(stack);\n const traces = clean\n .map(\n (frame) =>\n ({\n file: frame.fileName,\n line: frame.lineNumber,\n column: frame.columnNumber,\n function: frame.functionName,\n isRefine: isRefineStack(frame.fileName),\n packageName: getPackageNameFromFilename(frame.fileName),\n }) as TraceType,\n )\n .filter((trace) => trace.function)\n .filter((trace) => !excludeFromTrace?.includes(trace.function ?? \"\"));\n return traces.slice(1);\n } catch (error) {\n return [];\n }\n}\n","import type { StackFrame } from \"error-stack-parser\";\n\nconst unrelatedFunctionName = \"renderWithHooks\";\n\nexport const cleanStack = (stack: StackFrame[]) => {\n const firstUnrelatedIndex = stack.findIndex(\n (frame) => frame.functionName === unrelatedFunctionName,\n );\n\n if (firstUnrelatedIndex !== -1) {\n return stack.slice(0, firstUnrelatedIndex);\n }\n\n return stack;\n};\n","export const REFINE_PACKAGE_FILEPATH_REGEXP =\n __DEV_CONDITION__ !== \"development\"\n ? /node_modules\\/refinedev\\/(.*?)\\//\n : /\\/refine\\/packages\\/(.*?)\\//;\n","import { REFINE_PACKAGE_FILEPATH_REGEXP } from \"./constants\";\n\nexport const isRefineStack = (filename?: string) => {\n if (!filename) return false;\n\n const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);\n\n return !!match;\n};\n","import { REFINE_PACKAGE_FILEPATH_REGEXP } from \"./constants\";\n\nexport const getPackageNameFromFilename = (filename?: string) => {\n if (!filename) return;\n\n const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);\n\n const name = match?.groups?.name;\n\n if (!name) return;\n\n return `@refinedev/${name}`;\n};\n","import {\n type DevtoolsEvent,\n type DevtoolsEventPayloads,\n type RefineHook,\n scopes,\n} from \"@refinedev/devtools-shared\";\n\nexport type Activity =\n DevtoolsEventPayloads[DevtoolsEvent.DEVTOOLS_ACTIVITY_UPDATE][\"updatedActivities\"][number];\n\nexport const getResourcePath = (hookName: RefineHook): string | null => {\n if (scopes[hookName] === \"auth\") {\n return null;\n }\n if (hookName === \"useCan\") {\n return \"key[1]\";\n }\n if (scopes[hookName] === \"audit-log\") {\n if (hookName === \"useLog\") {\n return \"variables.resource\";\n }\n return \"key[1]\";\n }\n if (scopes[hookName] === \"data\") {\n if (hookName === \"useCustom\" || hookName === \"useCustomMutation\") {\n return null;\n }\n switch (hookName) {\n case \"useList\":\n case \"useInfiniteList\":\n case \"useOne\":\n case \"useMany\":\n return \"key[2]\";\n case \"useCreate\":\n case \"useCreateMany\":\n case \"useDelete\":\n case \"useDeleteMany\":\n case \"useUpdate\":\n case \"useUpdateMany\":\n return \"variables.resource\";\n }\n }\n return null;\n};\n","import type { RefineHook, TraceType } from \"@refinedev/devtools-shared\";\nimport { getTrace } from \"./get-trace\";\nimport { getResourcePath } from \"./get-resource-path\";\n\nexport type XRayResponse = {\n hookName: string;\n trace: TraceType[];\n resourcePath: string | null;\n resourceName?: string;\n};\n\nexport function getXRay(\n hookName: string,\n resourceName?: string,\n excludeFromTrace?: string[],\n): XRayResponse {\n if (__DEV_CONDITION__ !== \"development\") {\n return {\n hookName: \"\",\n trace: [],\n resourcePath: null,\n };\n }\n const trace = getTrace(excludeFromTrace).slice(1);\n\n const resourcePath = getResourcePath(hookName as RefineHook);\n\n return {\n hookName,\n trace,\n resourcePath,\n resourceName,\n };\n}\n","import {\n DevToolsContext,\n DevtoolsEvent,\n receive,\n} from \"@refinedev/devtools-shared\";\nimport type { QueryClient } from \"@tanstack/react-query\";\nimport React, { useContext } from \"react\";\nimport { createQueryListener, createMutationListener } from \"./listeners\";\n\nconst empty = {};\nconst noop = () => empty;\n\nexport const useQuerySubscription =\n __DEV_CONDITION__ !== \"development\"\n ? noop\n : (queryClient: QueryClient) => {\n const { ws } = useContext(DevToolsContext);\n const queryCacheSubscription = React.useRef<() => void>(noop);\n const mutationCacheSubscription = React.useRef<() => void>(noop);\n\n React.useEffect(() => {\n if (!ws) return () => 0;\n\n const queryCache = queryClient.getQueryCache();\n\n const queryListener = createQueryListener(ws);\n\n queryCache.getAll().forEach(queryListener);\n\n queryCacheSubscription.current = queryCache.subscribe(\n ({ query, type }) =>\n (type === \"added\" || type === \"updated\") && queryListener(query),\n );\n\n return () => {\n queryCacheSubscription.current?.();\n };\n }, [ws, queryClient]);\n\n React.useEffect(() => {\n if (!ws) return () => 0;\n\n const mutationCache = queryClient.getMutationCache();\n\n const mutationListener = createMutationListener(ws);\n\n mutationCache.getAll().forEach(mutationListener);\n\n mutationCacheSubscription.current = mutationCache.subscribe(\n ({ mutation, type }) =>\n (type === \"added\" || type === \"updated\") &&\n mutationListener(mutation),\n );\n\n return () => {\n mutationCacheSubscription.current?.();\n };\n }, [ws, queryClient]);\n\n React.useEffect(() => {\n if (!ws) return () => 0;\n\n const cb = receive(\n ws,\n DevtoolsEvent.DEVTOOLS_INVALIDATE_QUERY_ACTION,\n ({ queryKey }) => {\n if (queryKey) {\n queryClient.invalidateQueries({ queryKey });\n }\n },\n );\n\n return cb;\n }, [ws, queryClient]);\n\n return {};\n };\n","import { DevtoolsEvent, send } from \"@refinedev/devtools-shared\";\nimport type { Mutation, Query } from \"@tanstack/react-query\";\n\nimport { createIdentifier } from \"./create-identifier\";\nimport type { XRayResponse } from \"./get-xray\";\n\nexport const createMutationListener =\n (ws: WebSocket) => (mutation?: Mutation) => {\n if (!mutation?.meta?.trace) return;\n\n const meta: XRayResponse = mutation?.meta as any;\n\n new Promise<void>((resolve) => {\n send(ws, DevtoolsEvent.ACTIVITY, {\n type: \"mutation\",\n identifier: createIdentifier(\n mutation?.options.mutationKey,\n mutation?.meta?.trace as any,\n ),\n key: mutation?.options.mutationKey as any,\n status: mutation?.state.status,\n state: mutation?.state,\n variables: mutation?.state?.variables,\n ...meta,\n });\n resolve();\n });\n };\n\nexport const createQueryListener = (ws: WebSocket) => (query: Query) => {\n if (!query?.meta?.trace) return;\n\n const meta: XRayResponse = query?.meta as any;\n\n new Promise<void>((resolve) => {\n send(ws, DevtoolsEvent.ACTIVITY, {\n type: \"query\",\n identifier: createIdentifier(query.queryKey, query.meta?.trace as any),\n key: query.queryKey as any,\n status: query.state.status,\n state: query.state,\n ...meta,\n });\n resolve();\n });\n};\n","import type { TraceType } from \"@refinedev/devtools-shared\";\nimport type { MutationKey, QueryKey } from \"@tanstack/react-query\";\n\nexport const createIdentifier = (\n key?: QueryKey | MutationKey,\n trace?: TraceType[],\n) => {\n const simpleTrace = trace?.map(\n (t) =>\n `${t.file}:${t.line}:${t.column}#${t.function}-${t.packageName}-${\n t.isRefine ? 1 : 0\n }`,\n );\n const str = JSON.stringify([...(key ?? []), ...(simpleTrace ?? [])]);\n\n return str;\n};\n"],"mappings":"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","names":["src_exports","__export","getTrace","getXRay","useQuerySubscription","__toCommonJS","import_error_stack_parser","unrelatedFunctionName","cleanStack","stack","firstUnrelatedIndex","frame","REFINE_PACKAGE_FILEPATH_REGEXP","isRefineStack","filename","REFINE_PACKAGE_FILEPATH_REGEXP","getPackageNameFromFilename","filename","_a","match","REFINE_PACKAGE_FILEPATH_REGEXP","name","getTrace","excludeFromTrace","error","stack","ErrorStackParser","cleanStack","frame","isRefineStack","getPackageNameFromFilename","trace","import_devtools_shared","getResourcePath","hookName","getXRay","hookName","resourceName","excludeFromTrace","trace","getTrace","resourcePath","getResourcePath","import_devtools_shared","import_react","import_devtools_shared","createIdentifier","key","trace","simpleTrace","t","createMutationListener","ws","mutation","_a","meta","resolve","_b","createIdentifier","createQueryListener","query","empty","noop","useQuerySubscription","queryClient","ws","queryCacheSubscription","React","mutationCacheSubscription","queryCache","queryListener","createQueryListener","query","type","_a","mutationCache","mutationListener","createMutationListener","mutation","queryKey"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/get-trace.ts","../src/clean-stack.ts","../src/constants.ts","../src/is-refine-stack.ts","../src/get-package-name-from-filename.ts","../src/get-resource-path.ts","../src/get-xray.ts","../src/use-query-subscription.tsx","../src/listeners.ts","../src/create-identifier.ts"],"sourcesContent":["export { getTrace } from \"./get-trace.js\";\nexport { getXRay } from \"./get-xray.js\";\nexport { useQuerySubscription } from \"./use-query-subscription.js\";\n","import ErrorStackParser from \"error-stack-parser\";\nimport { cleanStack } from \"./clean-stack\";\nimport { isRefineStack } from \"./is-refine-stack\";\nimport { getPackageNameFromFilename } from \"./get-package-name-from-filename\";\nimport type { TraceType } from \"@refinedev/devtools-shared\";\n\nexport function getTrace(excludeFromTrace?: string[]) {\n if (__DEV_CONDITION__ !== \"development\") {\n return [];\n }\n try {\n const error = new Error();\n const stack = ErrorStackParser.parse(error);\n const clean = cleanStack(stack);\n const traces = clean\n .map(\n (frame) =>\n ({\n file: frame.fileName,\n line: frame.lineNumber,\n column: frame.columnNumber,\n function: frame.functionName,\n isRefine: isRefineStack(frame.fileName),\n packageName: getPackageNameFromFilename(frame.fileName),\n }) as TraceType,\n )\n .filter((trace) => trace.function)\n .filter((trace) => !excludeFromTrace?.includes(trace.function ?? \"\"));\n return traces.slice(1);\n } catch (error) {\n return [];\n }\n}\n","import type { StackFrame } from \"error-stack-parser\";\n\nconst unrelatedFunctionName = \"renderWithHooks\";\n\nexport const cleanStack = (stack: StackFrame[]) => {\n const firstUnrelatedIndex = stack.findIndex(\n (frame) => frame.functionName === unrelatedFunctionName,\n );\n\n if (firstUnrelatedIndex !== -1) {\n return stack.slice(0, firstUnrelatedIndex);\n }\n\n return stack;\n};\n","export const REFINE_PACKAGE_FILEPATH_REGEXP =\n __DEV_CONDITION__ !== \"development\"\n ? /node_modules\\/refinedev\\/(.*?)\\//\n : /\\/refine\\/packages\\/(.*?)\\//;\n","import { REFINE_PACKAGE_FILEPATH_REGEXP } from \"./constants\";\n\nexport const isRefineStack = (filename?: string) => {\n if (!filename) return false;\n\n const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);\n\n return !!match;\n};\n","import { REFINE_PACKAGE_FILEPATH_REGEXP } from \"./constants\";\n\nexport const getPackageNameFromFilename = (filename?: string) => {\n if (!filename) return;\n\n const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);\n\n const name = match?.groups?.name;\n\n if (!name) return;\n\n return `@refinedev/${name}`;\n};\n","import {\n type DevtoolsEvent,\n type DevtoolsEventPayloads,\n type RefineHook,\n scopes,\n} from \"@refinedev/devtools-shared\";\n\nexport type Activity =\n DevtoolsEventPayloads[DevtoolsEvent.DEVTOOLS_ACTIVITY_UPDATE][\"updatedActivities\"][number];\n\nexport const getResourcePath = (hookName: RefineHook): string | null => {\n if (scopes[hookName] === \"auth\") {\n return null;\n }\n if (hookName === \"useCan\") {\n return \"key[1]\";\n }\n if (scopes[hookName] === \"audit-log\") {\n if (hookName === \"useLog\") {\n return \"variables.resource\";\n }\n return \"key[1]\";\n }\n if (scopes[hookName] === \"data\") {\n if (hookName === \"useCustom\" || hookName === \"useCustomMutation\") {\n return null;\n }\n switch (hookName) {\n case \"useList\":\n case \"useInfiniteList\":\n case \"useOne\":\n case \"useMany\":\n return \"key[2]\";\n case \"useCreate\":\n case \"useCreateMany\":\n case \"useDelete\":\n case \"useDeleteMany\":\n case \"useUpdate\":\n case \"useUpdateMany\":\n return \"variables.resource\";\n }\n }\n return null;\n};\n","import type { RefineHook, TraceType } from \"@refinedev/devtools-shared\";\nimport { getTrace } from \"./get-trace\";\nimport { getResourcePath } from \"./get-resource-path\";\n\nexport type XRayResponse = {\n hookName: string;\n trace: TraceType[];\n resourcePath: string | null;\n resourceName?: string;\n};\n\nexport function getXRay(\n hookName: string,\n resourceName?: string,\n excludeFromTrace?: string[],\n): XRayResponse {\n if (__DEV_CONDITION__ !== \"development\") {\n return {\n hookName: \"\",\n trace: [],\n resourcePath: null,\n };\n }\n const trace = getTrace(excludeFromTrace).slice(1);\n\n const resourcePath = getResourcePath(hookName as RefineHook);\n\n return {\n hookName,\n trace,\n resourcePath,\n resourceName,\n };\n}\n","import {\n DevToolsContext,\n DevtoolsEvent,\n receive,\n} from \"@refinedev/devtools-shared\";\nimport type { QueryClient } from \"@tanstack/react-query\";\nimport React, { useContext } from \"react\";\nimport { createQueryListener, createMutationListener } from \"./listeners\";\n\nconst empty = {};\nconst noop = () => empty;\n\nexport const useQuerySubscription =\n __DEV_CONDITION__ !== \"development\"\n ? noop\n : (queryClient: QueryClient) => {\n const { ws } = useContext(DevToolsContext);\n const queryCacheSubscription = React.useRef<() => void>(noop);\n const mutationCacheSubscription = React.useRef<() => void>(noop);\n\n React.useEffect(() => {\n if (!ws) return () => 0;\n\n const queryCache = queryClient.getQueryCache();\n\n const queryListener = createQueryListener(ws);\n\n queryCache.getAll().forEach(queryListener);\n\n queryCacheSubscription.current = queryCache.subscribe(\n ({ query, type }) =>\n (type === \"added\" || type === \"updated\") && queryListener(query),\n );\n\n return () => {\n queryCacheSubscription.current?.();\n };\n }, [ws, queryClient]);\n\n React.useEffect(() => {\n if (!ws) return () => 0;\n\n const mutationCache = queryClient.getMutationCache();\n\n const mutationListener = createMutationListener(ws);\n\n mutationCache.getAll().forEach(mutationListener);\n\n mutationCacheSubscription.current = mutationCache.subscribe(\n ({ mutation, type }) =>\n (type === \"added\" || type === \"updated\") &&\n mutationListener(mutation),\n );\n\n return () => {\n mutationCacheSubscription.current?.();\n };\n }, [ws, queryClient]);\n\n React.useEffect(() => {\n if (!ws) return () => 0;\n\n const cb = receive(\n ws,\n DevtoolsEvent.DEVTOOLS_INVALIDATE_QUERY_ACTION,\n ({ queryKey }) => {\n if (queryKey) {\n queryClient.invalidateQueries({ queryKey });\n }\n },\n );\n\n return cb;\n }, [ws, queryClient]);\n\n return {};\n };\n","import { DevtoolsEvent, send } from \"@refinedev/devtools-shared\";\nimport type { Mutation, Query } from \"@tanstack/react-query\";\n\nimport { createIdentifier } from \"./create-identifier\";\nimport type { XRayResponse } from \"./get-xray\";\n\nexport const createMutationListener =\n (ws: WebSocket) => (mutation?: Mutation) => {\n if (!mutation?.meta?.trace) return;\n\n const meta: XRayResponse = mutation?.meta as any;\n\n new Promise<void>((resolve) => {\n send(ws, DevtoolsEvent.ACTIVITY, {\n type: \"mutation\",\n identifier: createIdentifier(\n mutation?.options.mutationKey,\n mutation?.meta?.trace as any,\n ),\n key: mutation?.options.mutationKey as any,\n status: mutation?.state.status,\n state: mutation?.state,\n variables: mutation?.state?.variables,\n ...meta,\n });\n resolve();\n });\n };\n\nexport const createQueryListener = (ws: WebSocket) => (query: Query) => {\n if (!query?.meta?.trace) return;\n\n const meta: XRayResponse = query?.meta as any;\n\n new Promise<void>((resolve) => {\n send(ws, DevtoolsEvent.ACTIVITY, {\n type: \"query\",\n identifier: createIdentifier(query.queryKey, query.meta?.trace as any),\n key: query.queryKey as any,\n status: query.state.status,\n state: query.state,\n ...meta,\n });\n resolve();\n });\n};\n","import type { TraceType } from \"@refinedev/devtools-shared\";\nimport type { MutationKey, QueryKey } from \"@tanstack/react-query\";\n\nexport const createIdentifier = (\n key?: QueryKey | MutationKey,\n trace?: TraceType[],\n) => {\n const simpleTrace = trace?.map(\n (t) =>\n `${t.file}:${t.line}:${t.column}#${t.function}-${t.packageName}-${\n t.isRefine ? 1 : 0\n }`,\n );\n const str = JSON.stringify([...(key ?? []), ...(simpleTrace ?? [])]);\n\n return str;\n};\n"],"mappings":"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","names":["ErrorStackParser","import_devtools_shared","import_devtools_shared","_a","React"]}
package/dist/index.mjs CHANGED
@@ -1,3 +1,242 @@
1
1
  "use client"
2
- import P from"error-stack-parser";var I="renderWithHooks",d=r=>{let e=r.findIndex(n=>n.functionName===I);return e!==-1?r.slice(0,e):r};var p=process.env.NODE_ENV!=="development"?/node_modules\/refinedev\/(.*?)\//:/\/refine\/packages\/(.*?)\//;var m=r=>r?!!r.match(p):!1;var E=r=>{var o;if(!r)return;let e=r.match(p),n=(o=e==null?void 0:e.groups)==null?void 0:o.name;if(n)return`@refinedev/${n}`};function f(r){if(process.env.NODE_ENV!=="development")return[];try{let e=new Error,n=P.parse(e);return d(n).map(t=>({file:t.fileName,line:t.lineNumber,column:t.columnNumber,function:t.functionName,isRefine:m(t.fileName),packageName:E(t.fileName)})).filter(t=>t.function).filter(t=>!(r!=null&&r.includes(t.function??""))).slice(1)}catch{return[]}}import{scopes as u}from"@refinedev/devtools-shared";var v=r=>{if(u[r]==="auth")return null;if(r==="useCan")return"key[1]";if(u[r]==="audit-log")return r==="useLog"?"variables.resource":"key[1]";if(u[r]==="data"){if(r==="useCustom"||r==="useCustomMutation")return null;switch(r){case"useList":case"useInfiniteList":case"useOne":case"useMany":return"key[2]";case"useCreate":case"useCreateMany":case"useDelete":case"useDeleteMany":case"useUpdate":case"useUpdateMany":return"variables.resource"}}return null};function k(r,e,n){if(process.env.NODE_ENV!=="development")return{hookName:"",trace:[],resourcePath:null};let o=f(n).slice(1),s=v(r);return{hookName:r,trace:o,resourcePath:s,resourceName:e}}import{DevToolsContext as D,DevtoolsEvent as N,receive as A}from"@refinedev/devtools-shared";import i,{useContext as x}from"react";import{DevtoolsEvent as _,send as g}from"@refinedev/devtools-shared";var l=(r,e)=>{let n=e==null?void 0:e.map(s=>`${s.file}:${s.line}:${s.column}#${s.function}-${s.packageName}-${s.isRefine?1:0}`);return JSON.stringify([...r??[],...n??[]])};var R=r=>e=>{var o;if(!((o=e==null?void 0:e.meta)!=null&&o.trace))return;let n=e==null?void 0:e.meta;new Promise(s=>{var t,a;g(r,_.ACTIVITY,{type:"mutation",identifier:l(e==null?void 0:e.options.mutationKey,(t=e==null?void 0:e.meta)==null?void 0:t.trace),key:e==null?void 0:e.options.mutationKey,status:e==null?void 0:e.state.status,state:e==null?void 0:e.state,variables:(a=e==null?void 0:e.state)==null?void 0:a.variables,...n}),s()})},T=r=>e=>{var o;if(!((o=e==null?void 0:e.meta)!=null&&o.trace))return;let n=e==null?void 0:e.meta;new Promise(s=>{var t;g(r,_.ACTIVITY,{type:"query",identifier:l(e.queryKey,(t=e.meta)==null?void 0:t.trace),key:e.queryKey,status:e.state.status,state:e.state,...n}),s()})};var C={},y=()=>C,b=process.env.NODE_ENV!=="development"?y:r=>{let{ws:e}=x(D),n=i.useRef(y),o=i.useRef(y);return i.useEffect(()=>{if(!e)return()=>0;let s=r.getQueryCache(),t=T(e);return s.getAll().forEach(t),n.current=s.subscribe(({query:a,type:c})=>(c==="added"||c==="updated")&&t(a)),()=>{var a;(a=n.current)==null||a.call(n)}},[e,r]),i.useEffect(()=>{if(!e)return()=>0;let s=r.getMutationCache(),t=R(e);return s.getAll().forEach(t),o.current=s.subscribe(({mutation:a,type:c})=>(c==="added"||c==="updated")&&t(a)),()=>{var a;(a=o.current)==null||a.call(o)}},[e,r]),i.useEffect(()=>e?A(e,N.DEVTOOLS_INVALIDATE_QUERY_ACTION,({queryKey:t})=>{t&&r.invalidateQueries({queryKey:t})}):()=>0,[e,r]),{}};export{f as getTrace,k as getXRay,b as useQuerySubscription};
2
+
3
+ // src/get-trace.ts
4
+ import ErrorStackParser from "error-stack-parser";
5
+
6
+ // src/clean-stack.ts
7
+ var unrelatedFunctionName = "renderWithHooks";
8
+ var cleanStack = (stack) => {
9
+ const firstUnrelatedIndex = stack.findIndex(
10
+ (frame) => frame.functionName === unrelatedFunctionName
11
+ );
12
+ if (firstUnrelatedIndex !== -1) {
13
+ return stack.slice(0, firstUnrelatedIndex);
14
+ }
15
+ return stack;
16
+ };
17
+
18
+ // src/constants.ts
19
+ var REFINE_PACKAGE_FILEPATH_REGEXP = process.env.NODE_ENV !== "development" ? /node_modules\/refinedev\/(.*?)\// : /\/refine\/packages\/(.*?)\//;
20
+
21
+ // src/is-refine-stack.ts
22
+ var isRefineStack = (filename) => {
23
+ if (!filename)
24
+ return false;
25
+ const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);
26
+ return !!match;
27
+ };
28
+
29
+ // src/get-package-name-from-filename.ts
30
+ var getPackageNameFromFilename = (filename) => {
31
+ var _a;
32
+ if (!filename)
33
+ return;
34
+ const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);
35
+ const name = (_a = match == null ? void 0 : match.groups) == null ? void 0 : _a.name;
36
+ if (!name)
37
+ return;
38
+ return `@refinedev/${name}`;
39
+ };
40
+
41
+ // src/get-trace.ts
42
+ function getTrace(excludeFromTrace) {
43
+ if (process.env.NODE_ENV !== "development") {
44
+ return [];
45
+ }
46
+ try {
47
+ const error = new Error();
48
+ const stack = ErrorStackParser.parse(error);
49
+ const clean = cleanStack(stack);
50
+ const traces = clean.map(
51
+ (frame) => ({
52
+ file: frame.fileName,
53
+ line: frame.lineNumber,
54
+ column: frame.columnNumber,
55
+ function: frame.functionName,
56
+ isRefine: isRefineStack(frame.fileName),
57
+ packageName: getPackageNameFromFilename(frame.fileName)
58
+ })
59
+ ).filter((trace) => trace.function).filter((trace) => !(excludeFromTrace == null ? void 0 : excludeFromTrace.includes(trace.function ?? "")));
60
+ return traces.slice(1);
61
+ } catch (error) {
62
+ return [];
63
+ }
64
+ }
65
+
66
+ // src/get-resource-path.ts
67
+ import {
68
+ scopes
69
+ } from "@refinedev/devtools-shared";
70
+ var getResourcePath = (hookName) => {
71
+ if (scopes[hookName] === "auth") {
72
+ return null;
73
+ }
74
+ if (hookName === "useCan") {
75
+ return "key[1]";
76
+ }
77
+ if (scopes[hookName] === "audit-log") {
78
+ if (hookName === "useLog") {
79
+ return "variables.resource";
80
+ }
81
+ return "key[1]";
82
+ }
83
+ if (scopes[hookName] === "data") {
84
+ if (hookName === "useCustom" || hookName === "useCustomMutation") {
85
+ return null;
86
+ }
87
+ switch (hookName) {
88
+ case "useList":
89
+ case "useInfiniteList":
90
+ case "useOne":
91
+ case "useMany":
92
+ return "key[2]";
93
+ case "useCreate":
94
+ case "useCreateMany":
95
+ case "useDelete":
96
+ case "useDeleteMany":
97
+ case "useUpdate":
98
+ case "useUpdateMany":
99
+ return "variables.resource";
100
+ }
101
+ }
102
+ return null;
103
+ };
104
+
105
+ // src/get-xray.ts
106
+ function getXRay(hookName, resourceName, excludeFromTrace) {
107
+ if (process.env.NODE_ENV !== "development") {
108
+ return {
109
+ hookName: "",
110
+ trace: [],
111
+ resourcePath: null
112
+ };
113
+ }
114
+ const trace = getTrace(excludeFromTrace).slice(1);
115
+ const resourcePath = getResourcePath(hookName);
116
+ return {
117
+ hookName,
118
+ trace,
119
+ resourcePath,
120
+ resourceName
121
+ };
122
+ }
123
+
124
+ // src/use-query-subscription.tsx
125
+ import {
126
+ DevToolsContext,
127
+ DevtoolsEvent as DevtoolsEvent2,
128
+ receive
129
+ } from "@refinedev/devtools-shared";
130
+ import React, { useContext } from "react";
131
+
132
+ // src/listeners.ts
133
+ import { DevtoolsEvent, send } from "@refinedev/devtools-shared";
134
+
135
+ // src/create-identifier.ts
136
+ var createIdentifier = (key, trace) => {
137
+ const simpleTrace = trace == null ? void 0 : trace.map(
138
+ (t) => `${t.file}:${t.line}:${t.column}#${t.function}-${t.packageName}-${t.isRefine ? 1 : 0}`
139
+ );
140
+ const str = JSON.stringify([...key ?? [], ...simpleTrace ?? []]);
141
+ return str;
142
+ };
143
+
144
+ // src/listeners.ts
145
+ var createMutationListener = (ws) => (mutation) => {
146
+ var _a;
147
+ if (!((_a = mutation == null ? void 0 : mutation.meta) == null ? void 0 : _a.trace))
148
+ return;
149
+ const meta = mutation == null ? void 0 : mutation.meta;
150
+ new Promise((resolve) => {
151
+ var _a2, _b;
152
+ send(ws, DevtoolsEvent.ACTIVITY, {
153
+ type: "mutation",
154
+ identifier: createIdentifier(
155
+ mutation == null ? void 0 : mutation.options.mutationKey,
156
+ (_a2 = mutation == null ? void 0 : mutation.meta) == null ? void 0 : _a2.trace
157
+ ),
158
+ key: mutation == null ? void 0 : mutation.options.mutationKey,
159
+ status: mutation == null ? void 0 : mutation.state.status,
160
+ state: mutation == null ? void 0 : mutation.state,
161
+ variables: (_b = mutation == null ? void 0 : mutation.state) == null ? void 0 : _b.variables,
162
+ ...meta
163
+ });
164
+ resolve();
165
+ });
166
+ };
167
+ var createQueryListener = (ws) => (query) => {
168
+ var _a;
169
+ if (!((_a = query == null ? void 0 : query.meta) == null ? void 0 : _a.trace))
170
+ return;
171
+ const meta = query == null ? void 0 : query.meta;
172
+ new Promise((resolve) => {
173
+ var _a2;
174
+ send(ws, DevtoolsEvent.ACTIVITY, {
175
+ type: "query",
176
+ identifier: createIdentifier(query.queryKey, (_a2 = query.meta) == null ? void 0 : _a2.trace),
177
+ key: query.queryKey,
178
+ status: query.state.status,
179
+ state: query.state,
180
+ ...meta
181
+ });
182
+ resolve();
183
+ });
184
+ };
185
+
186
+ // src/use-query-subscription.tsx
187
+ var empty = {};
188
+ var noop = () => empty;
189
+ var useQuerySubscription = process.env.NODE_ENV !== "development" ? noop : (queryClient) => {
190
+ const { ws } = useContext(DevToolsContext);
191
+ const queryCacheSubscription = React.useRef(noop);
192
+ const mutationCacheSubscription = React.useRef(noop);
193
+ React.useEffect(() => {
194
+ if (!ws)
195
+ return () => 0;
196
+ const queryCache = queryClient.getQueryCache();
197
+ const queryListener = createQueryListener(ws);
198
+ queryCache.getAll().forEach(queryListener);
199
+ queryCacheSubscription.current = queryCache.subscribe(
200
+ ({ query, type }) => (type === "added" || type === "updated") && queryListener(query)
201
+ );
202
+ return () => {
203
+ var _a;
204
+ (_a = queryCacheSubscription.current) == null ? void 0 : _a.call(queryCacheSubscription);
205
+ };
206
+ }, [ws, queryClient]);
207
+ React.useEffect(() => {
208
+ if (!ws)
209
+ return () => 0;
210
+ const mutationCache = queryClient.getMutationCache();
211
+ const mutationListener = createMutationListener(ws);
212
+ mutationCache.getAll().forEach(mutationListener);
213
+ mutationCacheSubscription.current = mutationCache.subscribe(
214
+ ({ mutation, type }) => (type === "added" || type === "updated") && mutationListener(mutation)
215
+ );
216
+ return () => {
217
+ var _a;
218
+ (_a = mutationCacheSubscription.current) == null ? void 0 : _a.call(mutationCacheSubscription);
219
+ };
220
+ }, [ws, queryClient]);
221
+ React.useEffect(() => {
222
+ if (!ws)
223
+ return () => 0;
224
+ const cb = receive(
225
+ ws,
226
+ DevtoolsEvent2.DEVTOOLS_INVALIDATE_QUERY_ACTION,
227
+ ({ queryKey }) => {
228
+ if (queryKey) {
229
+ queryClient.invalidateQueries({ queryKey });
230
+ }
231
+ }
232
+ );
233
+ return cb;
234
+ }, [ws, queryClient]);
235
+ return {};
236
+ };
237
+ export {
238
+ getTrace,
239
+ getXRay,
240
+ useQuerySubscription
241
+ };
3
242
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/get-trace.ts","../src/clean-stack.ts","../src/constants.ts","../src/is-refine-stack.ts","../src/get-package-name-from-filename.ts","../src/get-resource-path.ts","../src/get-xray.ts","../src/use-query-subscription.tsx","../src/listeners.ts","../src/create-identifier.ts"],"sourcesContent":["import ErrorStackParser from \"error-stack-parser\";\nimport { cleanStack } from \"./clean-stack\";\nimport { isRefineStack } from \"./is-refine-stack\";\nimport { getPackageNameFromFilename } from \"./get-package-name-from-filename\";\nimport type { TraceType } from \"@refinedev/devtools-shared\";\n\nexport function getTrace(excludeFromTrace?: string[]) {\n if (__DEV_CONDITION__ !== \"development\") {\n return [];\n }\n try {\n const error = new Error();\n const stack = ErrorStackParser.parse(error);\n const clean = cleanStack(stack);\n const traces = clean\n .map(\n (frame) =>\n ({\n file: frame.fileName,\n line: frame.lineNumber,\n column: frame.columnNumber,\n function: frame.functionName,\n isRefine: isRefineStack(frame.fileName),\n packageName: getPackageNameFromFilename(frame.fileName),\n }) as TraceType,\n )\n .filter((trace) => trace.function)\n .filter((trace) => !excludeFromTrace?.includes(trace.function ?? \"\"));\n return traces.slice(1);\n } catch (error) {\n return [];\n }\n}\n","import type { StackFrame } from \"error-stack-parser\";\n\nconst unrelatedFunctionName = \"renderWithHooks\";\n\nexport const cleanStack = (stack: StackFrame[]) => {\n const firstUnrelatedIndex = stack.findIndex(\n (frame) => frame.functionName === unrelatedFunctionName,\n );\n\n if (firstUnrelatedIndex !== -1) {\n return stack.slice(0, firstUnrelatedIndex);\n }\n\n return stack;\n};\n","export const REFINE_PACKAGE_FILEPATH_REGEXP =\n __DEV_CONDITION__ !== \"development\"\n ? /node_modules\\/refinedev\\/(.*?)\\//\n : /\\/refine\\/packages\\/(.*?)\\//;\n","import { REFINE_PACKAGE_FILEPATH_REGEXP } from \"./constants\";\n\nexport const isRefineStack = (filename?: string) => {\n if (!filename) return false;\n\n const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);\n\n return !!match;\n};\n","import { REFINE_PACKAGE_FILEPATH_REGEXP } from \"./constants\";\n\nexport const getPackageNameFromFilename = (filename?: string) => {\n if (!filename) return;\n\n const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);\n\n const name = match?.groups?.name;\n\n if (!name) return;\n\n return `@refinedev/${name}`;\n};\n","import {\n type DevtoolsEvent,\n type DevtoolsEventPayloads,\n type RefineHook,\n scopes,\n} from \"@refinedev/devtools-shared\";\n\nexport type Activity =\n DevtoolsEventPayloads[DevtoolsEvent.DEVTOOLS_ACTIVITY_UPDATE][\"updatedActivities\"][number];\n\nexport const getResourcePath = (hookName: RefineHook): string | null => {\n if (scopes[hookName] === \"auth\") {\n return null;\n }\n if (hookName === \"useCan\") {\n return \"key[1]\";\n }\n if (scopes[hookName] === \"audit-log\") {\n if (hookName === \"useLog\") {\n return \"variables.resource\";\n }\n return \"key[1]\";\n }\n if (scopes[hookName] === \"data\") {\n if (hookName === \"useCustom\" || hookName === \"useCustomMutation\") {\n return null;\n }\n switch (hookName) {\n case \"useList\":\n case \"useInfiniteList\":\n case \"useOne\":\n case \"useMany\":\n return \"key[2]\";\n case \"useCreate\":\n case \"useCreateMany\":\n case \"useDelete\":\n case \"useDeleteMany\":\n case \"useUpdate\":\n case \"useUpdateMany\":\n return \"variables.resource\";\n }\n }\n return null;\n};\n","import type { RefineHook, TraceType } from \"@refinedev/devtools-shared\";\nimport { getTrace } from \"./get-trace\";\nimport { getResourcePath } from \"./get-resource-path\";\n\nexport type XRayResponse = {\n hookName: string;\n trace: TraceType[];\n resourcePath: string | null;\n resourceName?: string;\n};\n\nexport function getXRay(\n hookName: string,\n resourceName?: string,\n excludeFromTrace?: string[],\n): XRayResponse {\n if (__DEV_CONDITION__ !== \"development\") {\n return {\n hookName: \"\",\n trace: [],\n resourcePath: null,\n };\n }\n const trace = getTrace(excludeFromTrace).slice(1);\n\n const resourcePath = getResourcePath(hookName as RefineHook);\n\n return {\n hookName,\n trace,\n resourcePath,\n resourceName,\n };\n}\n","import {\n DevToolsContext,\n DevtoolsEvent,\n receive,\n} from \"@refinedev/devtools-shared\";\nimport type { QueryClient } from \"@tanstack/react-query\";\nimport React, { useContext } from \"react\";\nimport { createQueryListener, createMutationListener } from \"./listeners\";\n\nconst empty = {};\nconst noop = () => empty;\n\nexport const useQuerySubscription =\n __DEV_CONDITION__ !== \"development\"\n ? noop\n : (queryClient: QueryClient) => {\n const { ws } = useContext(DevToolsContext);\n const queryCacheSubscription = React.useRef<() => void>(noop);\n const mutationCacheSubscription = React.useRef<() => void>(noop);\n\n React.useEffect(() => {\n if (!ws) return () => 0;\n\n const queryCache = queryClient.getQueryCache();\n\n const queryListener = createQueryListener(ws);\n\n queryCache.getAll().forEach(queryListener);\n\n queryCacheSubscription.current = queryCache.subscribe(\n ({ query, type }) =>\n (type === \"added\" || type === \"updated\") && queryListener(query),\n );\n\n return () => {\n queryCacheSubscription.current?.();\n };\n }, [ws, queryClient]);\n\n React.useEffect(() => {\n if (!ws) return () => 0;\n\n const mutationCache = queryClient.getMutationCache();\n\n const mutationListener = createMutationListener(ws);\n\n mutationCache.getAll().forEach(mutationListener);\n\n mutationCacheSubscription.current = mutationCache.subscribe(\n ({ mutation, type }) =>\n (type === \"added\" || type === \"updated\") &&\n mutationListener(mutation),\n );\n\n return () => {\n mutationCacheSubscription.current?.();\n };\n }, [ws, queryClient]);\n\n React.useEffect(() => {\n if (!ws) return () => 0;\n\n const cb = receive(\n ws,\n DevtoolsEvent.DEVTOOLS_INVALIDATE_QUERY_ACTION,\n ({ queryKey }) => {\n if (queryKey) {\n queryClient.invalidateQueries({ queryKey });\n }\n },\n );\n\n return cb;\n }, [ws, queryClient]);\n\n return {};\n };\n","import { DevtoolsEvent, send } from \"@refinedev/devtools-shared\";\nimport type { Mutation, Query } from \"@tanstack/react-query\";\n\nimport { createIdentifier } from \"./create-identifier\";\nimport type { XRayResponse } from \"./get-xray\";\n\nexport const createMutationListener =\n (ws: WebSocket) => (mutation?: Mutation) => {\n if (!mutation?.meta?.trace) return;\n\n const meta: XRayResponse = mutation?.meta as any;\n\n new Promise<void>((resolve) => {\n send(ws, DevtoolsEvent.ACTIVITY, {\n type: \"mutation\",\n identifier: createIdentifier(\n mutation?.options.mutationKey,\n mutation?.meta?.trace as any,\n ),\n key: mutation?.options.mutationKey as any,\n status: mutation?.state.status,\n state: mutation?.state,\n variables: mutation?.state?.variables,\n ...meta,\n });\n resolve();\n });\n };\n\nexport const createQueryListener = (ws: WebSocket) => (query: Query) => {\n if (!query?.meta?.trace) return;\n\n const meta: XRayResponse = query?.meta as any;\n\n new Promise<void>((resolve) => {\n send(ws, DevtoolsEvent.ACTIVITY, {\n type: \"query\",\n identifier: createIdentifier(query.queryKey, query.meta?.trace as any),\n key: query.queryKey as any,\n status: query.state.status,\n state: query.state,\n ...meta,\n });\n resolve();\n });\n};\n","import type { TraceType } from \"@refinedev/devtools-shared\";\nimport type { MutationKey, QueryKey } from \"@tanstack/react-query\";\n\nexport const createIdentifier = (\n key?: QueryKey | MutationKey,\n trace?: TraceType[],\n) => {\n const simpleTrace = trace?.map(\n (t) =>\n `${t.file}:${t.line}:${t.column}#${t.function}-${t.packageName}-${\n t.isRefine ? 1 : 0\n }`,\n );\n const str = JSON.stringify([...(key ?? []), ...(simpleTrace ?? [])]);\n\n return str;\n};\n"],"mappings":"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","names":["ErrorStackParser","unrelatedFunctionName","cleanStack","stack","firstUnrelatedIndex","frame","REFINE_PACKAGE_FILEPATH_REGEXP","isRefineStack","filename","REFINE_PACKAGE_FILEPATH_REGEXP","getPackageNameFromFilename","filename","_a","match","REFINE_PACKAGE_FILEPATH_REGEXP","name","getTrace","excludeFromTrace","error","stack","ErrorStackParser","cleanStack","frame","isRefineStack","getPackageNameFromFilename","trace","scopes","getResourcePath","hookName","getXRay","hookName","resourceName","excludeFromTrace","trace","getTrace","resourcePath","getResourcePath","DevToolsContext","DevtoolsEvent","receive","React","useContext","DevtoolsEvent","send","createIdentifier","key","trace","simpleTrace","t","createMutationListener","ws","mutation","_a","meta","resolve","_b","send","DevtoolsEvent","createIdentifier","createQueryListener","query","empty","noop","useQuerySubscription","queryClient","ws","useContext","DevToolsContext","queryCacheSubscription","React","mutationCacheSubscription","queryCache","queryListener","createQueryListener","query","type","_a","mutationCache","mutationListener","createMutationListener","mutation","receive","DevtoolsEvent","queryKey"]}
1
+ {"version":3,"sources":["../src/get-trace.ts","../src/clean-stack.ts","../src/constants.ts","../src/is-refine-stack.ts","../src/get-package-name-from-filename.ts","../src/get-resource-path.ts","../src/get-xray.ts","../src/use-query-subscription.tsx","../src/listeners.ts","../src/create-identifier.ts"],"sourcesContent":["import ErrorStackParser from \"error-stack-parser\";\nimport { cleanStack } from \"./clean-stack\";\nimport { isRefineStack } from \"./is-refine-stack\";\nimport { getPackageNameFromFilename } from \"./get-package-name-from-filename\";\nimport type { TraceType } from \"@refinedev/devtools-shared\";\n\nexport function getTrace(excludeFromTrace?: string[]) {\n if (__DEV_CONDITION__ !== \"development\") {\n return [];\n }\n try {\n const error = new Error();\n const stack = ErrorStackParser.parse(error);\n const clean = cleanStack(stack);\n const traces = clean\n .map(\n (frame) =>\n ({\n file: frame.fileName,\n line: frame.lineNumber,\n column: frame.columnNumber,\n function: frame.functionName,\n isRefine: isRefineStack(frame.fileName),\n packageName: getPackageNameFromFilename(frame.fileName),\n }) as TraceType,\n )\n .filter((trace) => trace.function)\n .filter((trace) => !excludeFromTrace?.includes(trace.function ?? \"\"));\n return traces.slice(1);\n } catch (error) {\n return [];\n }\n}\n","import type { StackFrame } from \"error-stack-parser\";\n\nconst unrelatedFunctionName = \"renderWithHooks\";\n\nexport const cleanStack = (stack: StackFrame[]) => {\n const firstUnrelatedIndex = stack.findIndex(\n (frame) => frame.functionName === unrelatedFunctionName,\n );\n\n if (firstUnrelatedIndex !== -1) {\n return stack.slice(0, firstUnrelatedIndex);\n }\n\n return stack;\n};\n","export const REFINE_PACKAGE_FILEPATH_REGEXP =\n __DEV_CONDITION__ !== \"development\"\n ? /node_modules\\/refinedev\\/(.*?)\\//\n : /\\/refine\\/packages\\/(.*?)\\//;\n","import { REFINE_PACKAGE_FILEPATH_REGEXP } from \"./constants\";\n\nexport const isRefineStack = (filename?: string) => {\n if (!filename) return false;\n\n const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);\n\n return !!match;\n};\n","import { REFINE_PACKAGE_FILEPATH_REGEXP } from \"./constants\";\n\nexport const getPackageNameFromFilename = (filename?: string) => {\n if (!filename) return;\n\n const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);\n\n const name = match?.groups?.name;\n\n if (!name) return;\n\n return `@refinedev/${name}`;\n};\n","import {\n type DevtoolsEvent,\n type DevtoolsEventPayloads,\n type RefineHook,\n scopes,\n} from \"@refinedev/devtools-shared\";\n\nexport type Activity =\n DevtoolsEventPayloads[DevtoolsEvent.DEVTOOLS_ACTIVITY_UPDATE][\"updatedActivities\"][number];\n\nexport const getResourcePath = (hookName: RefineHook): string | null => {\n if (scopes[hookName] === \"auth\") {\n return null;\n }\n if (hookName === \"useCan\") {\n return \"key[1]\";\n }\n if (scopes[hookName] === \"audit-log\") {\n if (hookName === \"useLog\") {\n return \"variables.resource\";\n }\n return \"key[1]\";\n }\n if (scopes[hookName] === \"data\") {\n if (hookName === \"useCustom\" || hookName === \"useCustomMutation\") {\n return null;\n }\n switch (hookName) {\n case \"useList\":\n case \"useInfiniteList\":\n case \"useOne\":\n case \"useMany\":\n return \"key[2]\";\n case \"useCreate\":\n case \"useCreateMany\":\n case \"useDelete\":\n case \"useDeleteMany\":\n case \"useUpdate\":\n case \"useUpdateMany\":\n return \"variables.resource\";\n }\n }\n return null;\n};\n","import type { RefineHook, TraceType } from \"@refinedev/devtools-shared\";\nimport { getTrace } from \"./get-trace\";\nimport { getResourcePath } from \"./get-resource-path\";\n\nexport type XRayResponse = {\n hookName: string;\n trace: TraceType[];\n resourcePath: string | null;\n resourceName?: string;\n};\n\nexport function getXRay(\n hookName: string,\n resourceName?: string,\n excludeFromTrace?: string[],\n): XRayResponse {\n if (__DEV_CONDITION__ !== \"development\") {\n return {\n hookName: \"\",\n trace: [],\n resourcePath: null,\n };\n }\n const trace = getTrace(excludeFromTrace).slice(1);\n\n const resourcePath = getResourcePath(hookName as RefineHook);\n\n return {\n hookName,\n trace,\n resourcePath,\n resourceName,\n };\n}\n","import {\n DevToolsContext,\n DevtoolsEvent,\n receive,\n} from \"@refinedev/devtools-shared\";\nimport type { QueryClient } from \"@tanstack/react-query\";\nimport React, { useContext } from \"react\";\nimport { createQueryListener, createMutationListener } from \"./listeners\";\n\nconst empty = {};\nconst noop = () => empty;\n\nexport const useQuerySubscription =\n __DEV_CONDITION__ !== \"development\"\n ? noop\n : (queryClient: QueryClient) => {\n const { ws } = useContext(DevToolsContext);\n const queryCacheSubscription = React.useRef<() => void>(noop);\n const mutationCacheSubscription = React.useRef<() => void>(noop);\n\n React.useEffect(() => {\n if (!ws) return () => 0;\n\n const queryCache = queryClient.getQueryCache();\n\n const queryListener = createQueryListener(ws);\n\n queryCache.getAll().forEach(queryListener);\n\n queryCacheSubscription.current = queryCache.subscribe(\n ({ query, type }) =>\n (type === \"added\" || type === \"updated\") && queryListener(query),\n );\n\n return () => {\n queryCacheSubscription.current?.();\n };\n }, [ws, queryClient]);\n\n React.useEffect(() => {\n if (!ws) return () => 0;\n\n const mutationCache = queryClient.getMutationCache();\n\n const mutationListener = createMutationListener(ws);\n\n mutationCache.getAll().forEach(mutationListener);\n\n mutationCacheSubscription.current = mutationCache.subscribe(\n ({ mutation, type }) =>\n (type === \"added\" || type === \"updated\") &&\n mutationListener(mutation),\n );\n\n return () => {\n mutationCacheSubscription.current?.();\n };\n }, [ws, queryClient]);\n\n React.useEffect(() => {\n if (!ws) return () => 0;\n\n const cb = receive(\n ws,\n DevtoolsEvent.DEVTOOLS_INVALIDATE_QUERY_ACTION,\n ({ queryKey }) => {\n if (queryKey) {\n queryClient.invalidateQueries({ queryKey });\n }\n },\n );\n\n return cb;\n }, [ws, queryClient]);\n\n return {};\n };\n","import { DevtoolsEvent, send } from \"@refinedev/devtools-shared\";\nimport type { Mutation, Query } from \"@tanstack/react-query\";\n\nimport { createIdentifier } from \"./create-identifier\";\nimport type { XRayResponse } from \"./get-xray\";\n\nexport const createMutationListener =\n (ws: WebSocket) => (mutation?: Mutation) => {\n if (!mutation?.meta?.trace) return;\n\n const meta: XRayResponse = mutation?.meta as any;\n\n new Promise<void>((resolve) => {\n send(ws, DevtoolsEvent.ACTIVITY, {\n type: \"mutation\",\n identifier: createIdentifier(\n mutation?.options.mutationKey,\n mutation?.meta?.trace as any,\n ),\n key: mutation?.options.mutationKey as any,\n status: mutation?.state.status,\n state: mutation?.state,\n variables: mutation?.state?.variables,\n ...meta,\n });\n resolve();\n });\n };\n\nexport const createQueryListener = (ws: WebSocket) => (query: Query) => {\n if (!query?.meta?.trace) return;\n\n const meta: XRayResponse = query?.meta as any;\n\n new Promise<void>((resolve) => {\n send(ws, DevtoolsEvent.ACTIVITY, {\n type: \"query\",\n identifier: createIdentifier(query.queryKey, query.meta?.trace as any),\n key: query.queryKey as any,\n status: query.state.status,\n state: query.state,\n ...meta,\n });\n resolve();\n });\n};\n","import type { TraceType } from \"@refinedev/devtools-shared\";\nimport type { MutationKey, QueryKey } from \"@tanstack/react-query\";\n\nexport const createIdentifier = (\n key?: QueryKey | MutationKey,\n trace?: TraceType[],\n) => {\n const simpleTrace = trace?.map(\n (t) =>\n `${t.file}:${t.line}:${t.column}#${t.function}-${t.packageName}-${\n t.isRefine ? 1 : 0\n }`,\n );\n const str = JSON.stringify([...(key ?? []), ...(simpleTrace ?? [])]);\n\n return str;\n};\n"],"mappings":";;;AAAA,OAAO,sBAAsB;;;ACE7B,IAAM,wBAAwB;AAEvB,IAAM,aAAa,CAAC,UAAwB;AACjD,QAAM,sBAAsB,MAAM;AAAA,IAChC,CAAC,UAAU,MAAM,iBAAiB;AAAA,EACpC;AAEA,MAAI,wBAAwB,IAAI;AAC9B,WAAO,MAAM,MAAM,GAAG,mBAAmB;AAAA,EAC3C;AAEA,SAAO;AACT;;;ACdO,IAAM,iCACX,yBAAsB,gBAClB,qCACA;;;ACDC,IAAM,gBAAgB,CAAC,aAAsB;AAClD,MAAI,CAAC;AAAU,WAAO;AAEtB,QAAM,QAAQ,SAAS,MAAM,8BAA8B;AAE3D,SAAO,CAAC,CAAC;AACX;;;ACNO,IAAM,6BAA6B,CAAC,aAAsB;AAFjE;AAGE,MAAI,CAAC;AAAU;AAEf,QAAM,QAAQ,SAAS,MAAM,8BAA8B;AAE3D,QAAM,QAAO,oCAAO,WAAP,mBAAe;AAE5B,MAAI,CAAC;AAAM;AAEX,SAAO,cAAc;AACvB;;;AJNO,SAAS,SAAS,kBAA6B;AACpD,MAAI,yBAAsB,eAAe;AACvC,WAAO,CAAC;AAAA,EACV;AACA,MAAI;AACF,UAAM,QAAQ,IAAI,MAAM;AACxB,UAAM,QAAQ,iBAAiB,MAAM,KAAK;AAC1C,UAAM,QAAQ,WAAW,KAAK;AAC9B,UAAM,SAAS,MACZ;AAAA,MACC,CAAC,WACE;AAAA,QACC,MAAM,MAAM;AAAA,QACZ,MAAM,MAAM;AAAA,QACZ,QAAQ,MAAM;AAAA,QACd,UAAU,MAAM;AAAA,QAChB,UAAU,cAAc,MAAM,QAAQ;AAAA,QACtC,aAAa,2BAA2B,MAAM,QAAQ;AAAA,MACxD;AAAA,IACJ,EACC,OAAO,CAAC,UAAU,MAAM,QAAQ,EAChC,OAAO,CAAC,UAAU,EAAC,qDAAkB,SAAS,MAAM,YAAY,IAAG;AACtE,WAAO,OAAO,MAAM,CAAC;AAAA,EACvB,SAAS,OAAP;AACA,WAAO,CAAC;AAAA,EACV;AACF;;;AKhCA;AAAA,EAIE;AAAA,OACK;AAKA,IAAM,kBAAkB,CAAC,aAAwC;AACtE,MAAI,OAAO,QAAQ,MAAM,QAAQ;AAC/B,WAAO;AAAA,EACT;AACA,MAAI,aAAa,UAAU;AACzB,WAAO;AAAA,EACT;AACA,MAAI,OAAO,QAAQ,MAAM,aAAa;AACpC,QAAI,aAAa,UAAU;AACzB,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,MAAI,OAAO,QAAQ,MAAM,QAAQ;AAC/B,QAAI,aAAa,eAAe,aAAa,qBAAqB;AAChE,aAAO;AAAA,IACT;AACA,YAAQ,UAAU;AAAA,MAChB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,IACX;AAAA,EACF;AACA,SAAO;AACT;;;AChCO,SAAS,QACd,UACA,cACA,kBACc;AACd,MAAI,yBAAsB,eAAe;AACvC,WAAO;AAAA,MACL,UAAU;AAAA,MACV,OAAO,CAAC;AAAA,MACR,cAAc;AAAA,IAChB;AAAA,EACF;AACA,QAAM,QAAQ,SAAS,gBAAgB,EAAE,MAAM,CAAC;AAEhD,QAAM,eAAe,gBAAgB,QAAsB;AAE3D,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ACjCA;AAAA,EACE;AAAA,EACA,iBAAAA;AAAA,EACA;AAAA,OACK;AAEP,OAAO,SAAS,kBAAkB;;;ACNlC,SAAS,eAAe,YAAY;;;ACG7B,IAAM,mBAAmB,CAC9B,KACA,UACG;AACH,QAAM,cAAc,+BAAO;AAAA,IACzB,CAAC,MACC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,eACjD,EAAE,WAAW,IAAI;AAAA;AAGvB,QAAM,MAAM,KAAK,UAAU,CAAC,GAAI,OAAO,CAAC,GAAI,GAAI,eAAe,CAAC,CAAE,CAAC;AAEnE,SAAO;AACT;;;ADVO,IAAM,yBACX,CAAC,OAAkB,CAAC,aAAwB;AAP9C;AAQI,MAAI,GAAC,0CAAU,SAAV,mBAAgB;AAAO;AAE5B,QAAM,OAAqB,qCAAU;AAErC,MAAI,QAAc,CAAC,YAAY;AAZnC,QAAAC,KAAA;AAaM,SAAK,IAAI,cAAc,UAAU;AAAA,MAC/B,MAAM;AAAA,MACN,YAAY;AAAA,QACV,qCAAU,QAAQ;AAAA,SAClBA,MAAA,qCAAU,SAAV,gBAAAA,IAAgB;AAAA,MAClB;AAAA,MACA,KAAK,qCAAU,QAAQ;AAAA,MACvB,QAAQ,qCAAU,MAAM;AAAA,MACxB,OAAO,qCAAU;AAAA,MACjB,YAAW,0CAAU,UAAV,mBAAiB;AAAA,MAC5B,GAAG;AAAA,IACL,CAAC;AACD,YAAQ;AAAA,EACV,CAAC;AACH;AAEK,IAAM,sBAAsB,CAAC,OAAkB,CAAC,UAAiB;AA7BxE;AA8BE,MAAI,GAAC,oCAAO,SAAP,mBAAa;AAAO;AAEzB,QAAM,OAAqB,+BAAO;AAElC,MAAI,QAAc,CAAC,YAAY;AAlCjC,QAAAA;AAmCI,SAAK,IAAI,cAAc,UAAU;AAAA,MAC/B,MAAM;AAAA,MACN,YAAY,iBAAiB,MAAM,WAAUA,MAAA,MAAM,SAAN,gBAAAA,IAAY,KAAY;AAAA,MACrE,KAAK,MAAM;AAAA,MACX,QAAQ,MAAM,MAAM;AAAA,MACpB,OAAO,MAAM;AAAA,MACb,GAAG;AAAA,IACL,CAAC;AACD,YAAQ;AAAA,EACV,CAAC;AACH;;;ADpCA,IAAM,QAAQ,CAAC;AACf,IAAM,OAAO,MAAM;AAEZ,IAAM,uBACX,yBAAsB,gBAClB,OACA,CAAC,gBAA6B;AAC5B,QAAM,EAAE,GAAG,IAAI,WAAW,eAAe;AACzC,QAAM,yBAAyB,MAAM,OAAmB,IAAI;AAC5D,QAAM,4BAA4B,MAAM,OAAmB,IAAI;AAE/D,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC;AAAI,aAAO,MAAM;AAEtB,UAAM,aAAa,YAAY,cAAc;AAE7C,UAAM,gBAAgB,oBAAoB,EAAE;AAE5C,eAAW,OAAO,EAAE,QAAQ,aAAa;AAEzC,2BAAuB,UAAU,WAAW;AAAA,MAC1C,CAAC,EAAE,OAAO,KAAK,OACZ,SAAS,WAAW,SAAS,cAAc,cAAc,KAAK;AAAA,IACnE;AAEA,WAAO,MAAM;AAlCvB;AAmCY,mCAAuB,YAAvB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,IAAI,WAAW,CAAC;AAEpB,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC;AAAI,aAAO,MAAM;AAEtB,UAAM,gBAAgB,YAAY,iBAAiB;AAEnD,UAAM,mBAAmB,uBAAuB,EAAE;AAElD,kBAAc,OAAO,EAAE,QAAQ,gBAAgB;AAE/C,8BAA0B,UAAU,cAAc;AAAA,MAChD,CAAC,EAAE,UAAU,KAAK,OACf,SAAS,WAAW,SAAS,cAC9B,iBAAiB,QAAQ;AAAA,IAC7B;AAEA,WAAO,MAAM;AAtDvB;AAuDY,sCAA0B,YAA1B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,IAAI,WAAW,CAAC;AAEpB,QAAM,UAAU,MAAM;AACpB,QAAI,CAAC;AAAI,aAAO,MAAM;AAEtB,UAAM,KAAK;AAAA,MACT;AAAA,MACAC,eAAc;AAAA,MACd,CAAC,EAAE,SAAS,MAAM;AAChB,YAAI,UAAU;AACZ,sBAAY,kBAAkB,EAAE,SAAS,CAAC;AAAA,QAC5C;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,IAAI,WAAW,CAAC;AAEpB,SAAO,CAAC;AACV;","names":["DevtoolsEvent","_a","DevtoolsEvent"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@refinedev/devtools-internal",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "private": false,
5
5
  "description": "refine devtools offers a set of features from monitoring to quickly prototyping a UI.",
6
6
  "repository": {
@@ -31,22 +31,21 @@
31
31
  "src"
32
32
  ],
33
33
  "dependencies": {
34
- "@refinedev/devtools-shared": "2.0.0",
34
+ "@refinedev/devtools-shared": "2.0.1",
35
35
  "@tanstack/react-query": "^5.81.5",
36
36
  "error-stack-parser": "^2.1.4"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@esbuild-plugins/node-resolve": "^0.1.4",
40
40
  "@testing-library/jest-dom": "^6.6.3",
41
- "@types/jest": "^29.2.4",
42
41
  "@types/node": "^20",
43
- "jest": "^30.0.5",
44
- "jest-environment-jsdom": "^30.0.5",
42
+ "@vitest/ui": "^2.1.8",
43
+ "jsdom": "^25.0.1",
45
44
  "react-router": "^7.0.2",
46
- "ts-jest": "^29.1.2",
47
45
  "tslib": "^2.6.2",
48
46
  "tsup": "^6.7.0",
49
- "typescript": "^5.8.3"
47
+ "typescript": "^5.8.3",
48
+ "vitest": "^2.1.8"
50
49
  },
51
50
  "peerDependencies": {
52
51
  "@types/react": "^18.0.0 || ^19.0.0",
@@ -65,7 +64,7 @@
65
64
  "build": "tsup && node ../shared/generate-declarations.js",
66
65
  "dev": "tsup --watch",
67
66
  "publint": "publint --strict=true --level=suggestion",
68
- "test": "jest --passWithNoTests --runInBand",
67
+ "test": "vitest run --passWithNoTests",
69
68
  "types": "node ../shared/generate-declarations.js"
70
69
  }
71
70
  }