@refinedev/devtools-internal 1.1.4 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <div align="center" style="margin: 30px;">
2
2
  <a href="https://refine.dev">
3
- <img src="https://refine.ams3.cdn.digitaloceanspaces.com/refine_logo.png" align="center" />
3
+ <img alt="refine logo" src="https://refine.ams3.cdn.digitaloceanspaces.com/readme/refine-readme-banner.png">
4
4
  </a>
5
5
  </div>
6
6
  <br/>
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B,QAGG,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B,QAGD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-identifier.d.ts","sourceRoot":"","sources":["../src/create-identifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE9D,eAAO,MAAM,gBAAgB,SACnB,QAAQ,GAAG,WAAW,UACpB,SAAS,EAAE,WAWtB,CAAC"}
1
+ {"version":3,"file":"create-identifier.d.ts","sourceRoot":"","sources":["../src/create-identifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE9D,eAAO,MAAM,gBAAgB,SACrB,QAAQ,GAAG,WAAW,UACpB,SAAS,EAAE,WAWpB,CAAC"}
package/dist/esm/index.js CHANGED
@@ -1,2 +1,3 @@
1
- import I from"error-stack-parser";var v="renderWithHooks",m=r=>{let e=r.findIndex(s=>s.functionName===v);return e!==-1?r.slice(0,e):r};var i=process.env.NODE_ENV!=="development"?/node_modules\/refinedev\/(?<name>.*?)\//:/\/refine\/packages\/(?<name>.*?)\//;var y=r=>r?!!r.match(i):!1;var d=r=>{var n;if(!r)return;let e=r.match(i),s=(n=e==null?void 0:e.groups)==null?void 0:n.name;if(s)return`@refinedev/${s}`};function p(){if(process.env.NODE_ENV!=="development")return[];try{let r=new Error,e=I.parse(r);return m(e).map(t=>({file:t.fileName,line:t.lineNumber,column:t.columnNumber,function:t.functionName,isRefine:y(t.fileName),packageName:d(t.fileName)})).filter(t=>t.function).slice(1)}catch{return[]}}import{scopes as u}from"@refinedev/devtools-shared";var E=(r,e)=>{if(u[r]==="auth")return null;if(r==="useCan")return e?"key[1].resource":"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 e?"key[1]":"key[2]";case"useCreate":case"useCreateMany":case"useDelete":case"useDeleteMany":case"useUpdate":case"useUpdateMany":return"variables.resource"}}return null};function P(r,e){if(process.env.NODE_ENV!=="development")return{hookName:"",trace:[],resourcePath:null,legacyKey:!1};{let s=p().slice(1),n=E(r,e);return{hookName:r,trace:s,resourcePath:n,legacyKey:e}}}import{DevToolsContext as k}from"@refinedev/devtools-shared";import f,{useContext as x}from"react";import{DevtoolsEvent as T,send as _}from"@refinedev/devtools-shared";var l=(r,e)=>{let s=e==null?void 0:e.map(t=>`${t.file}:${t.line}:${t.column}#${t.function}-${t.packageName}-${t.isRefine?1:0}`);return JSON.stringify([...r??[],...s??[]])};var R=r=>e=>{var n;if(!((n=e==null?void 0:e.meta)!=null&&n.trace))return;let s=e==null?void 0:e.meta;new Promise(t=>{var a,o;_(r,T.ACTIVITY,{type:"mutation",identifier:l(e==null?void 0:e.options.mutationKey,(a=e==null?void 0:e.meta)==null?void 0:a.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:(o=e==null?void 0:e.state)==null?void 0:o.variables,...s}),t()})},g=r=>e=>{var n;if(!((n=e==null?void 0:e.meta)!=null&&n.trace))return;let s=e==null?void 0:e.meta;new Promise(t=>{var a;_(r,T.ACTIVITY,{type:"query",identifier:l(e.queryKey,(a=e.meta)==null?void 0:a.trace),key:e.queryKey,status:e.state.status,state:e.state,...s}),t()})};var C=process.env.NODE_ENV!=="development"?()=>({}):r=>{let{ws:e}=x(k),s=f.useRef(),n=f.useRef();return f.useEffect(()=>{if(!e)return()=>0;let t=r.getQueryCache(),a=g(e);return t.getAll().forEach(a),s.current=t.subscribe(({query:o,type:c})=>(c==="added"||c==="updated")&&a(o)),()=>{var o;(o=s.current)==null||o.call(s)}},[e,r]),f.useEffect(()=>{if(!e)return()=>0;let t=r.getMutationCache(),a=R(e);return t.getAll().forEach(a),n.current=t.subscribe(({mutation:o,type:c})=>(c==="added"||c==="updated")&&a(o)),()=>{var o;(o=n.current)==null||o.call(n)}},[e,r]),{}};export{p as getTrace,P as getXRay,C as useQuerySubscription};
1
+ "use client"
2
+ import I from"error-stack-parser";var v="renderWithHooks",m=r=>{let e=r.findIndex(s=>s.functionName===v);return e!==-1?r.slice(0,e):r};var i=process.env.NODE_ENV!=="development"?/node_modules\/refinedev\/(?<name>.*?)\//:/\/refine\/packages\/(?<name>.*?)\//;var y=r=>r?!!r.match(i):!1;var d=r=>{var n;if(!r)return;let e=r.match(i),s=(n=e==null?void 0:e.groups)==null?void 0:n.name;if(s)return`@refinedev/${s}`};function p(){if(process.env.NODE_ENV!=="development")return[];try{let r=new Error,e=I.parse(r);return m(e).map(t=>({file:t.fileName,line:t.lineNumber,column:t.columnNumber,function:t.functionName,isRefine:y(t.fileName),packageName:d(t.fileName)})).filter(t=>t.function).slice(1)}catch{return[]}}import{scopes as u}from"@refinedev/devtools-shared";var E=(r,e)=>{if(u[r]==="auth")return null;if(r==="useCan")return e?"key[1].resource":"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 e?"key[1]":"key[2]";case"useCreate":case"useCreateMany":case"useDelete":case"useDeleteMany":case"useUpdate":case"useUpdateMany":return"variables.resource"}}return null};function P(r,e){if(process.env.NODE_ENV!=="development")return{hookName:"",trace:[],resourcePath:null,legacyKey:!1};let s=p().slice(1),n=E(r,e);return{hookName:r,trace:s,resourcePath:n,legacyKey:e}}import{DevToolsContext as k}from"@refinedev/devtools-shared";import f,{useContext as x}from"react";import{DevtoolsEvent as T,send as _}from"@refinedev/devtools-shared";var l=(r,e)=>{let s=e==null?void 0:e.map(t=>`${t.file}:${t.line}:${t.column}#${t.function}-${t.packageName}-${t.isRefine?1:0}`);return JSON.stringify([...r??[],...s??[]])};var R=r=>e=>{var n;if(!((n=e==null?void 0:e.meta)!=null&&n.trace))return;let s=e==null?void 0:e.meta;new Promise(t=>{var a,o;_(r,T.ACTIVITY,{type:"mutation",identifier:l(e==null?void 0:e.options.mutationKey,(a=e==null?void 0:e.meta)==null?void 0:a.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:(o=e==null?void 0:e.state)==null?void 0:o.variables,...s}),t()})},g=r=>e=>{var n;if(!((n=e==null?void 0:e.meta)!=null&&n.trace))return;let s=e==null?void 0:e.meta;new Promise(t=>{var a;_(r,T.ACTIVITY,{type:"query",identifier:l(e.queryKey,(a=e.meta)==null?void 0:a.trace),key:e.queryKey,status:e.state.status,state:e.state,...s}),t()})};var C=process.env.NODE_ENV!=="development"?()=>({}):r=>{let{ws:e}=x(k),s=f.useRef(),n=f.useRef();return f.useEffect(()=>{if(!e)return()=>0;let t=r.getQueryCache(),a=g(e);return t.getAll().forEach(a),s.current=t.subscribe(({query:o,type:c})=>(c==="added"||c==="updated")&&a(o)),()=>{var o;(o=s.current)==null||o.call(s)}},[e,r]),f.useEffect(()=>{if(!e)return()=>0;let t=r.getMutationCache(),a=R(e);return t.getAll().forEach(a),n.current=t.subscribe(({mutation:o,type:c})=>(c==="added"||c==="updated")&&a(o)),()=>{var o;(o=n.current)==null||o.call(n)}},[e,r]),{}};export{p as getTrace,P as getXRay,C as useQuerySubscription};
2
3
  //# sourceMappingURL=index.js.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 { TraceType } from \"@refinedev/devtools-shared\";\n\nexport function getTrace() {\n if (__DEV_CONDITION__ !== \"development\") {\n return [];\n } else {\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(\n frame.fileName,\n ),\n } as TraceType),\n )\n .filter((trace) => trace.function);\n return traces.slice(1);\n } catch (error) {\n return [];\n }\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\\/(?<name>.*?)\\//\n : /\\/refine\\/packages\\/(?<name>.*?)\\//;\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 DevtoolsEvent,\n DevtoolsEventPayloads,\n RefineHook,\n scopes,\n} from \"@refinedev/devtools-shared\";\n\nexport type Activity =\n DevtoolsEventPayloads[DevtoolsEvent.DEVTOOLS_ACTIVITY_UPDATE][\"updatedActivities\"][number];\n\nexport const getResourcePath = (\n hookName: RefineHook,\n legacyKey: boolean,\n): string | null => {\n if (scopes[hookName] === \"auth\") {\n return null;\n }\n if (hookName === \"useCan\") {\n if (legacyKey) {\n return \"key[1].resource\";\n } else {\n return \"key[1]\";\n }\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 if (legacyKey) {\n return \"key[1]\";\n } else {\n return \"key[2]\";\n }\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 { 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 legacyKey: boolean;\n};\n\nexport function getXRay(hookName: string, legacyKey: boolean): XRayResponse {\n if (__DEV_CONDITION__ !== \"development\") {\n return {\n hookName: \"\",\n trace: [],\n resourcePath: null,\n legacyKey: false,\n };\n } else {\n const trace = getTrace().slice(1);\n\n const resourcePath = getResourcePath(hookName as RefineHook, legacyKey);\n\n return {\n hookName,\n trace,\n resourcePath,\n legacyKey,\n };\n }\n}\n","import { DevToolsContext } from \"@refinedev/devtools-shared\";\nimport { QueryClient } from \"@tanstack/react-query\";\nimport React, { useContext } from \"react\";\nimport { createQueryListener, createMutationListener } from \"./listeners\";\n\nexport const useQuerySubscription =\n __DEV_CONDITION__ !== \"development\"\n ? () => ({})\n : (queryClient: QueryClient) => {\n const { ws } = useContext(DevToolsContext);\n const queryCacheSubscription = React.useRef<() => void>();\n const mutationCacheSubscription = React.useRef<() => void>();\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\") &&\n 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 return {};\n };\n","import { DevtoolsEvent, send } from \"@refinedev/devtools-shared\";\nimport { Mutation, Query } from \"@tanstack/react-query\";\n\nimport { createIdentifier } from \"./create-identifier\";\nimport { 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 // console.table({\n // type: \"mutation\",\n // key: mutation?.options.mutationKey,\n // id: mutation?.mutationId,\n // status: mutation?.state.status,\n // trace: mutation?.meta?.trace,\n // state: mutation?.state,\n // variables: mutation?.state?.variables,\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(\n query.queryKey,\n query.meta?.trace as any,\n ),\n key: query.queryKey as any,\n status: query.state.status,\n state: query.state,\n ...meta,\n });\n resolve();\n });\n\n // console.table({\n // type: \"query\",\n // key: query.queryKey,\n // status: query.state.status,\n // trace: query.meta?.trace,\n // state: query.state,\n // });\n};\n","import { TraceType } from \"@refinedev/devtools-shared\";\nimport { 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,OAAOA,MAAsB,qBCE7B,IAAMC,EAAwB,kBAEjBC,EAAcC,GAAwB,CAC/C,IAAMC,EAAsBD,EAAM,UAC7BE,GAAUA,EAAM,eAAiBJ,CACtC,EAEA,OAAIG,IAAwB,GACjBD,EAAM,MAAM,EAAGC,CAAmB,EAGtCD,CACX,ECdO,IAAMG,EACT,uBAAsB,cAChB,0CACA,qCCDH,IAAMC,EAAiBC,GACrBA,EAIE,CAAC,CAFMA,EAAS,MAAMC,CAA8B,EAFrC,GCDnB,IAAMC,EAA8BC,GAAsB,CAFjE,IAAAC,EAGI,GAAI,CAACD,EAAU,OAEf,IAAME,EAAQF,EAAS,MAAMG,CAA8B,EAErDC,GAAOH,EAAAC,GAAA,YAAAA,EAAO,SAAP,YAAAD,EAAe,KAE5B,GAAKG,EAEL,MAAO,cAAcA,GACzB,EJNO,SAASC,GAAW,CACvB,GAAI,uBAAsB,cACtB,MAAO,CAAC,EAER,GAAI,CACA,IAAMC,EAAQ,IAAI,MACZC,EAAQC,EAAiB,MAAMF,CAAK,EAiB1C,OAhBcG,EAAWF,CAAK,EAEzB,IACIG,IACI,CACG,KAAMA,EAAM,SACZ,KAAMA,EAAM,WACZ,OAAQA,EAAM,aACd,SAAUA,EAAM,aAChB,SAAUC,EAAcD,EAAM,QAAQ,EACtC,YAAaE,EACTF,EAAM,QACV,CACJ,EACR,EACC,OAAQG,GAAUA,EAAM,QAAQ,EACvB,MAAM,CAAC,CACzB,MAAE,CACE,MAAO,CAAC,CACZ,CAER,CKlCA,OAII,UAAAC,MACG,6BAKA,IAAMC,EAAkB,CAC3BC,EACAC,IACgB,CAChB,GAAIH,EAAOE,CAAQ,IAAM,OACrB,OAAO,KAEX,GAAIA,IAAa,SACb,OAAIC,EACO,kBAEA,SAGf,GAAIH,EAAOE,CAAQ,IAAM,YACrB,OAAIA,IAAa,SACN,qBAEJ,SAEX,GAAIF,EAAOE,CAAQ,IAAM,OAAQ,CAC7B,GAAIA,IAAa,aAAeA,IAAa,oBACzC,OAAO,KAEX,OAAQA,EAAU,CACd,IAAK,UACL,IAAK,kBACL,IAAK,SACL,IAAK,UACD,OAAIC,EACO,SAEA,SAEf,IAAK,YACL,IAAK,gBACL,IAAK,YACL,IAAK,gBACL,IAAK,YACL,IAAK,gBACD,MAAO,oBACf,EAEJ,OAAO,IACX,EC3CO,SAASC,EAAQC,EAAkBC,EAAkC,CACxE,GAAI,uBAAsB,cACtB,MAAO,CACH,SAAU,GACV,MAAO,CAAC,EACR,aAAc,KACd,UAAW,EACf,EACG,CACH,IAAMC,EAAQC,EAAS,EAAE,MAAM,CAAC,EAE1BC,EAAeC,EAAgBL,EAAwBC,CAAS,EAEtE,MAAO,CACH,SAAAD,EACA,MAAAE,EACA,aAAAE,EACA,UAAAH,CACJ,EAER,CC/BA,OAAS,mBAAAK,MAAuB,6BAEhC,OAAOC,GAAS,cAAAC,MAAkB,QCFlC,OAAS,iBAAAC,EAAe,QAAAC,MAAY,6BCG7B,IAAMC,EAAmB,CAC5BC,EACAC,IACC,CACD,IAAMC,EAAcD,GAAA,YAAAA,EAAO,IACtB,GACG,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,eAC/C,EAAE,SAAW,EAAI,KAK7B,OAFY,KAAK,UAAU,CAAC,GAAID,GAAO,CAAC,EAAI,GAAIE,GAAe,CAAC,CAAE,CAAC,CAGvE,EDVO,IAAMC,EACRC,GAAmBC,GAAwB,CAPhD,IAAAC,EAQQ,GAAI,GAACA,EAAAD,GAAA,YAAAA,EAAU,OAAV,MAAAC,EAAgB,OAAO,OAE5B,IAAMC,EAAqBF,GAAA,YAAAA,EAAU,KAErC,IAAI,QAAeG,GAAY,CAZvC,IAAAF,EAAAG,EAaYC,EAAKN,EAAIO,EAAc,SAAU,CAC7B,KAAM,WACN,WAAYC,EACRP,GAAA,YAAAA,EAAU,QAAQ,aAClBC,EAAAD,GAAA,YAAAA,EAAU,OAAV,YAAAC,EAAgB,KACpB,EACA,IAAKD,GAAA,YAAAA,EAAU,QAAQ,YACvB,OAAQA,GAAA,YAAAA,EAAU,MAAM,OACxB,MAAOA,GAAA,YAAAA,EAAU,MACjB,WAAWI,EAAAJ,GAAA,YAAAA,EAAU,QAAV,YAAAI,EAAiB,UAC5B,GAAGF,CACP,CAAC,EACDC,EAAQ,CACZ,CAAC,CAWL,EAESK,EAAuBT,GAAmBU,GAAiB,CAvCxE,IAAAR,EAwCI,GAAI,GAACA,EAAAQ,GAAA,YAAAA,EAAO,OAAP,MAAAR,EAAa,OAAO,OAEzB,IAAMC,EAAqBO,GAAA,YAAAA,EAAO,KAElC,IAAI,QAAeN,GAAY,CA5CnC,IAAAF,EA6CQI,EAAKN,EAAIO,EAAc,SAAU,CAC7B,KAAM,QACN,WAAYC,EACRE,EAAM,UACNR,EAAAQ,EAAM,OAAN,YAAAR,EAAY,KAChB,EACA,IAAKQ,EAAM,SACX,OAAQA,EAAM,MAAM,OACpB,MAAOA,EAAM,MACb,GAAGP,CACP,CAAC,EACDC,EAAQ,CACZ,CAAC,CASL,ED7DO,IAAMO,EACT,uBAAsB,cAChB,KAAO,CAAC,GACPC,GAA6B,CAC1B,GAAM,CAAE,GAAAC,CAAG,EAAIC,EAAWC,CAAe,EACnCC,EAAyBC,EAAM,OAAmB,EAClDC,EAA4BD,EAAM,OAAmB,EAE3D,OAAAA,EAAM,UAAU,IAAM,CAClB,GAAI,CAACJ,EAAI,MAAO,IAAM,EAEtB,IAAMM,EAAaP,EAAY,cAAc,EAEvCQ,EAAgBC,EAAoBR,CAAE,EAE5C,OAAAM,EAAW,OAAO,EAAE,QAAQC,CAAa,EAEzCJ,EAAuB,QAAUG,EAAW,UACxC,CAAC,CAAE,MAAAG,EAAO,KAAAC,CAAK,KACVA,IAAS,SAAWA,IAAS,YAC9BH,EAAcE,CAAK,CAC3B,EAEO,IAAM,CA5B/B,IAAAE,GA6BsBA,EAAAR,EAAuB,UAAvB,MAAAQ,EAAA,KAAAR,EACJ,CACJ,EAAG,CAACH,EAAID,CAAW,CAAC,EAEpBK,EAAM,UAAU,IAAM,CAClB,GAAI,CAACJ,EAAI,MAAO,IAAM,EAEtB,IAAMY,EAAgBb,EAAY,iBAAiB,EAE7Cc,EAAmBC,EAAuBd,CAAE,EAElD,OAAAY,EAAc,OAAO,EAAE,QAAQC,CAAgB,EAE/CR,EAA0B,QAAUO,EAAc,UAC9C,CAAC,CAAE,SAAAG,EAAU,KAAAL,CAAK,KACbA,IAAS,SAAWA,IAAS,YAC9BG,EAAiBE,CAAQ,CACjC,EAEO,IAAM,CAhD/B,IAAAJ,GAiDsBA,EAAAN,EAA0B,UAA1B,MAAAM,EAAA,KAAAN,EACJ,CACJ,EAAG,CAACL,EAAID,CAAW,CAAC,EAEb,CAAC,CACZ","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","error","stack","ErrorStackParser","cleanStack","frame","isRefineStack","getPackageNameFromFilename","trace","scopes","getResourcePath","hookName","legacyKey","getXRay","hookName","legacyKey","trace","getTrace","resourcePath","getResourcePath","DevToolsContext","React","useContext","DevtoolsEvent","send","createIdentifier","key","trace","simpleTrace","createMutationListener","ws","mutation","_a","meta","resolve","_b","send","DevtoolsEvent","createIdentifier","createQueryListener","query","useQuerySubscription","queryClient","ws","useContext","DevToolsContext","queryCacheSubscription","React","mutationCacheSubscription","queryCache","queryListener","createQueryListener","query","type","_a","mutationCache","mutationListener","createMutationListener","mutation"]}
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 { TraceType } from \"@refinedev/devtools-shared\";\n\nexport function getTrace() {\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 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\\/(?<name>.*?)\\//\n : /\\/refine\\/packages\\/(?<name>.*?)\\//;\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 DevtoolsEvent,\n DevtoolsEventPayloads,\n RefineHook,\n scopes,\n} from \"@refinedev/devtools-shared\";\n\nexport type Activity =\n DevtoolsEventPayloads[DevtoolsEvent.DEVTOOLS_ACTIVITY_UPDATE][\"updatedActivities\"][number];\n\nexport const getResourcePath = (\n hookName: RefineHook,\n legacyKey: boolean,\n): string | null => {\n if (scopes[hookName] === \"auth\") {\n return null;\n }\n if (hookName === \"useCan\") {\n if (legacyKey) {\n return \"key[1].resource\";\n }\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 if (legacyKey) {\n return \"key[1]\";\n }\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 { 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 legacyKey: boolean;\n};\n\nexport function getXRay(hookName: string, legacyKey: boolean): XRayResponse {\n if (__DEV_CONDITION__ !== \"development\") {\n return {\n hookName: \"\",\n trace: [],\n resourcePath: null,\n legacyKey: false,\n };\n }\n const trace = getTrace().slice(1);\n\n const resourcePath = getResourcePath(hookName as RefineHook, legacyKey);\n\n return {\n hookName,\n trace,\n resourcePath,\n legacyKey,\n };\n}\n","import { DevToolsContext } from \"@refinedev/devtools-shared\";\nimport { QueryClient } from \"@tanstack/react-query\";\nimport React, { useContext } from \"react\";\nimport { createQueryListener, createMutationListener } from \"./listeners\";\n\nexport const useQuerySubscription =\n __DEV_CONDITION__ !== \"development\"\n ? () => ({})\n : (queryClient: QueryClient) => {\n const { ws } = useContext(DevToolsContext);\n const queryCacheSubscription = React.useRef<() => void>();\n const mutationCacheSubscription = React.useRef<() => void>();\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 return {};\n };\n","import { DevtoolsEvent, send } from \"@refinedev/devtools-shared\";\nimport { Mutation, Query } from \"@tanstack/react-query\";\n\nimport { createIdentifier } from \"./create-identifier\";\nimport { 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 // console.table({\n // type: \"mutation\",\n // key: mutation?.options.mutationKey,\n // id: mutation?.mutationId,\n // status: mutation?.state.status,\n // trace: mutation?.meta?.trace,\n // state: mutation?.state,\n // variables: mutation?.state?.variables,\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 // console.table({\n // type: \"query\",\n // key: query.queryKey,\n // status: query.state.status,\n // trace: query.meta?.trace,\n // state: query.state,\n // });\n};\n","import { TraceType } from \"@refinedev/devtools-shared\";\nimport { 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","error","stack","ErrorStackParser","cleanStack","frame","isRefineStack","getPackageNameFromFilename","trace","scopes","getResourcePath","hookName","legacyKey","getXRay","hookName","legacyKey","trace","getTrace","resourcePath","getResourcePath","DevToolsContext","React","useContext","DevtoolsEvent","send","createIdentifier","key","trace","simpleTrace","createMutationListener","ws","mutation","_a","meta","resolve","_b","send","DevtoolsEvent","createIdentifier","createQueryListener","query","useQuerySubscription","queryClient","ws","useContext","DevToolsContext","queryCacheSubscription","React","mutationCacheSubscription","queryCache","queryListener","createQueryListener","query","type","_a","mutationCache","mutationListener","createMutationListener","mutation"]}
@@ -1 +1 @@
1
- {"version":3,"file":"get-resource-path.d.ts","sourceRoot":"","sources":["../src/get-resource-path.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EACb,qBAAqB,EACrB,UAAU,EAEb,MAAM,4BAA4B,CAAC;AAEpC,oBAAY,QAAQ,GAChB,qBAAqB,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/F,eAAO,MAAM,eAAe,aACd,UAAU,aACT,OAAO,KACnB,MAAM,GAAG,IAyCX,CAAC"}
1
+ {"version":3,"file":"get-resource-path.d.ts","sourceRoot":"","sources":["../src/get-resource-path.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,UAAU,EAEX,MAAM,4BAA4B,CAAC;AAEpC,oBAAY,QAAQ,GAClB,qBAAqB,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7F,eAAO,MAAM,eAAe,aAChB,UAAU,aACT,OAAO,KACjB,MAAM,GAAG,IAuCX,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-trace.d.ts","sourceRoot":"","sources":["../src/get-trace.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,wBAAgB,QAAQ,gBA4BvB"}
1
+ {"version":3,"file":"get-trace.d.ts","sourceRoot":"","sources":["../src/get-trace.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,wBAAgB,QAAQ,gBAyBvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-xray.d.ts","sourceRoot":"","sources":["../src/get-xray.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAInE,oBAAY,YAAY,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,YAAY,CAoB1E"}
1
+ {"version":3,"file":"get-xray.d.ts","sourceRoot":"","sources":["../src/get-xray.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAInE,oBAAY,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,YAAY,CAmB1E"}
@@ -1,2 +1,3 @@
1
- (()=>{var G=Object.create;var g=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,X=Object.prototype.hasOwnProperty;var _=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var $=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var j=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Q(e))!X.call(t,s)&&s!==r&&g(t,s,{get:()=>e[s],enumerable:!(o=K(e,s))||o.enumerable});return t};var p=(t,e,r)=>(r=t!=null?G(U(t)):{},j(e||!t||!t.__esModule?g(r,"default",{value:t,enumerable:!0}):r,t));var y=$((_e,k)=>{var J=Object.create,v=Object.defineProperty,W=Object.getOwnPropertyDescriptor,B=Object.getOwnPropertyNames,z=Object.getPrototypeOf,Z=Object.prototype.hasOwnProperty,q=(t,e)=>{for(var r in e)v(t,r,{get:e[r],enumerable:!0})},N=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of B(e))!Z.call(t,s)&&s!==r&&v(t,s,{get:()=>e[s],enumerable:!(o=W(e,s))||o.enumerable});return t},ee=(t,e,r)=>(r=t!=null?J(z(t)):{},N(e||!t||!t.__esModule?v(r,"default",{value:t,enumerable:!0}):r,t)),te=t=>N(v({},"__esModule",{value:!0}),t),h={};q(h,{DevToolsContext:()=>b,DevToolsContextProvider:()=>se,DevtoolsEvent:()=>C,hooksByScope:()=>re,receive:()=>A,scopes:()=>R,send:()=>S});k.exports=te(h);var C=(t=>(t.RELOAD="devtools:reload",t.DEVTOOLS_INIT="devtools:init",t.DEVTOOLS_HANDSHAKE="devtools:handshake",t.DEVTOOLS_ALREADY_CONNECTED="devtools:already-connected",t.ACTIVITY="devtools:send-activity",t.DEVTOOLS_ACTIVITY_UPDATE="devtools:activity-update",t.DEVTOOLS_CONNECTED_APP="devtools:connected-app",t.DEVTOOLS_DISCONNECTED_APP="devtools:disconnected-app",t.DEVTOOLS_HIGHLIGHT_IN_MONITOR="devtools:highlight-in-monitor",t.DEVTOOLS_HIGHLIGHT_IN_MONITOR_ACTION="devtools:highlight-in-monitor-action",t.DEVTOOLS_LOGIN_SUCCESS="devtools:login-success",t.DEVTOOLS_RELOAD_AFTER_LOGIN="devtools:reload-after-login",t))(C||{}),R={useCan:"access-control",useLog:"audit-log",useLogList:"audit-log",useCreate:"data",useCreateMany:"data",useCustom:"data",useCustomMutation:"data",useDelete:"data",useDeleteMany:"data",useInfiniteList:"data",useList:"data",useMany:"data",useOne:"data",useUpdate:"data",useUpdateMany:"data",useForgotPassword:"auth",useGetIdentity:"auth",useIsAuthenticated:"auth",useLogin:"auth",useLogout:"auth",useOnError:"auth",usePermissions:"auth",useRegister:"auth",useUpdatePassword:"auth"},re=Object.entries(R).reduce((t,[e,r])=>(t[r]||(t[r]=[]),t[r].push(e),t),{}),u=ee(_("react"));async function S(t,e,r){if(t.readyState!==t.OPEN){await new Promise(o=>{let s=()=>{t.send(JSON.stringify({event:e,payload:r})),o(),t.removeEventListener("open",s)};t.addEventListener("open",s)});return}else{t.send(JSON.stringify({event:e,payload:r}));return}}function A(t,e,r){let o=s=>{let{event:a,payload:n}=JSON.parse(s.data);e===a&&r(n)};return t.addEventListener("message",o),()=>{t.removeEventListener("message",o)}}var b=u.default.createContext({__devtools:!1,port:5002,url:"localhost",secure:!1,ws:null}),se=({__devtools:t,port:e,children:r})=>{let[o,s]=u.default.useState({__devtools:t??!1,port:e??5002,url:"localhost",secure:!1,ws:null}),[a,n]=u.default.useState(null);u.default.useEffect(()=>{let d=new WebSocket(`${o.secure?"wss":"ws"}://localhost:${o.port}`),T=A(d,"devtools:handshake",H=>{s(F=>({...F,devtoolsUrl:H.url})),T()});return d.addEventListener("open",()=>{o.__devtools||S(d,"devtools:init",{url:window.location.origin})}),n(d),()=>{T(),d.close(1e3,window.location.origin)}},[]);let c=u.default.useMemo(()=>({...o,ws:a}),[o,a]);return u.default.createElement(b.Provider,{value:c},r)}});var P=p(_("error-stack-parser"));var Y="renderWithHooks",I=t=>{let e=t.findIndex(r=>r.functionName===Y);return e!==-1?t.slice(0,e):t};var f=process.env.NODE_ENV!=="development"?/node_modules\/refinedev\/(?<name>.*?)\//:/\/refine\/packages\/(?<name>.*?)\//;var D=t=>t?!!t.match(f):!1;var L=t=>{var o;if(!t)return;let e=t.match(f),r=(o=e==null?void 0:e.groups)==null?void 0:o.name;if(r)return`@refinedev/${r}`};function m(){if(process.env.NODE_ENV!=="development")return[];try{let t=new Error,e=P.default.parse(t);return I(e).map(s=>({file:s.fileName,line:s.lineNumber,column:s.columnNumber,function:s.functionName,isRefine:D(s.fileName),packageName:L(s.fileName)})).filter(s=>s.function).slice(1)}catch{return[]}}var E=p(y()),x=(t,e)=>{if(E.scopes[t]==="auth")return null;if(t==="useCan")return e?"key[1].resource":"key[1]";if(E.scopes[t]==="audit-log")return t==="useLog"?"variables.resource":"key[1]";if(E.scopes[t]==="data"){if(t==="useCustom"||t==="useCustomMutation")return null;switch(t){case"useList":case"useInfiniteList":case"useOne":case"useMany":return e?"key[1]":"key[2]";case"useCreate":case"useCreateMany":case"useDelete":case"useDeleteMany":case"useUpdate":case"useUpdateMany":return"variables.resource"}}return null};function oe(t,e){if(process.env.NODE_ENV!=="development")return{hookName:"",trace:[],resourcePath:null,legacyKey:!1};{let r=m().slice(1),o=x(t,e);return{hookName:t,trace:r,resourcePath:o,legacyKey:e}}}var V=p(y()),i=p(_("react"));var l=p(y());var O=(t,e)=>{let r=e==null?void 0:e.map(s=>`${s.file}:${s.line}:${s.column}#${s.function}-${s.packageName}-${s.isRefine?1:0}`);return JSON.stringify([...t??[],...r??[]])};var w=t=>e=>{var o;if(!((o=e==null?void 0:e.meta)!=null&&o.trace))return;let r=e==null?void 0:e.meta;new Promise(s=>{var a,n;(0,l.send)(t,l.DevtoolsEvent.ACTIVITY,{type:"mutation",identifier:O(e==null?void 0:e.options.mutationKey,(a=e==null?void 0:e.meta)==null?void 0:a.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:(n=e==null?void 0:e.state)==null?void 0:n.variables,...r}),s()})},M=t=>e=>{var o;if(!((o=e==null?void 0:e.meta)!=null&&o.trace))return;let r=e==null?void 0:e.meta;new Promise(s=>{var a;(0,l.send)(t,l.DevtoolsEvent.ACTIVITY,{type:"query",identifier:O(e.queryKey,(a=e.meta)==null?void 0:a.trace),key:e.queryKey,status:e.state.status,state:e.state,...r}),s()})};var ae=process.env.NODE_ENV!=="development"?()=>({}):t=>{let{ws:e}=(0,i.useContext)(V.DevToolsContext),r=i.default.useRef(),o=i.default.useRef();return i.default.useEffect(()=>{if(!e)return()=>0;let s=t.getQueryCache(),a=M(e);return s.getAll().forEach(a),r.current=s.subscribe(({query:n,type:c})=>(c==="added"||c==="updated")&&a(n)),()=>{var n;(n=r.current)==null||n.call(r)}},[e,t]),i.default.useEffect(()=>{if(!e)return()=>0;let s=t.getMutationCache(),a=w(e);return s.getAll().forEach(a),o.current=s.subscribe(({mutation:n,type:c})=>(c==="added"||c==="updated")&&a(n)),()=>{var n;(n=o.current)==null||n.call(o)}},[e,t]),{}};})();
1
+ "use client"
2
+ (()=>{var G=Object.create;var g=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,X=Object.prototype.hasOwnProperty;var _=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var $=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var j=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Q(e))!X.call(t,s)&&s!==r&&g(t,s,{get:()=>e[s],enumerable:!(o=K(e,s))||o.enumerable});return t};var p=(t,e,r)=>(r=t!=null?G(U(t)):{},j(e||!t||!t.__esModule?g(r,"default",{value:t,enumerable:!0}):r,t));var y=$((_e,k)=>{"use client";var J=Object.create,v=Object.defineProperty,W=Object.getOwnPropertyDescriptor,B=Object.getOwnPropertyNames,z=Object.getPrototypeOf,Z=Object.prototype.hasOwnProperty,q=(t,e)=>{for(var r in e)v(t,r,{get:e[r],enumerable:!0})},N=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of B(e))!Z.call(t,s)&&s!==r&&v(t,s,{get:()=>e[s],enumerable:!(o=W(e,s))||o.enumerable});return t},ee=(t,e,r)=>(r=t!=null?J(z(t)):{},N(e||!t||!t.__esModule?v(r,"default",{value:t,enumerable:!0}):r,t)),te=t=>N(v({},"__esModule",{value:!0}),t),h={};q(h,{DevToolsContext:()=>b,DevToolsContextProvider:()=>se,DevtoolsEvent:()=>C,hooksByScope:()=>re,receive:()=>A,scopes:()=>R,send:()=>S});k.exports=te(h);var C=(t=>(t.RELOAD="devtools:reload",t.DEVTOOLS_INIT="devtools:init",t.DEVTOOLS_HANDSHAKE="devtools:handshake",t.DEVTOOLS_ALREADY_CONNECTED="devtools:already-connected",t.ACTIVITY="devtools:send-activity",t.DEVTOOLS_ACTIVITY_UPDATE="devtools:activity-update",t.DEVTOOLS_CONNECTED_APP="devtools:connected-app",t.DEVTOOLS_DISCONNECTED_APP="devtools:disconnected-app",t.DEVTOOLS_HIGHLIGHT_IN_MONITOR="devtools:highlight-in-monitor",t.DEVTOOLS_HIGHLIGHT_IN_MONITOR_ACTION="devtools:highlight-in-monitor-action",t.DEVTOOLS_LOGIN_SUCCESS="devtools:login-success",t.DEVTOOLS_RELOAD_AFTER_LOGIN="devtools:reload-after-login",t))(C||{}),R={useCan:"access-control",useLog:"audit-log",useLogList:"audit-log",useCreate:"data",useCreateMany:"data",useCustom:"data",useCustomMutation:"data",useDelete:"data",useDeleteMany:"data",useInfiniteList:"data",useList:"data",useMany:"data",useOne:"data",useUpdate:"data",useUpdateMany:"data",useForgotPassword:"auth",useGetIdentity:"auth",useIsAuthenticated:"auth",useLogin:"auth",useLogout:"auth",useOnError:"auth",usePermissions:"auth",useRegister:"auth",useUpdatePassword:"auth"},re=Object.entries(R).reduce((t,[e,r])=>(t[r]||(t[r]=[]),t[r].push(e),t),{}),u=ee(_("react"));async function S(t,e,r){if(t.readyState!==t.OPEN){await new Promise(o=>{let s=()=>{t.send(JSON.stringify({event:e,payload:r})),o(),t.removeEventListener("open",s)};t.addEventListener("open",s)});return}t.send(JSON.stringify({event:e,payload:r}))}function A(t,e,r){let o=s=>{let{event:a,payload:n}=JSON.parse(s.data);e===a&&r(n)};return t.addEventListener("message",o),()=>{t.removeEventListener("message",o)}}var b=u.default.createContext({__devtools:!1,port:5002,url:"localhost",secure:!1,ws:null}),se=({__devtools:t,port:e,children:r})=>{let[o,s]=u.default.useState({__devtools:t??!1,port:e??5002,url:"localhost",secure:!1,ws:null}),[a,n]=u.default.useState(null);u.default.useEffect(()=>{let d=new WebSocket(`${o.secure?"wss":"ws"}://localhost:${o.port}`),T=A(d,"devtools:handshake",H=>{s(F=>({...F,devtoolsUrl:H.url})),T()});return d.addEventListener("open",()=>{o.__devtools||S(d,"devtools:init",{url:window.location.origin})}),n(d),()=>{T(),d.close(1e3,window.location.origin)}},[]);let c=u.default.useMemo(()=>({...o,ws:a}),[o,a]);return u.default.createElement(b.Provider,{value:c},r)}});var P=p(_("error-stack-parser"));var Y="renderWithHooks",I=t=>{let e=t.findIndex(r=>r.functionName===Y);return e!==-1?t.slice(0,e):t};var f=process.env.NODE_ENV!=="development"?/node_modules\/refinedev\/(?<name>.*?)\//:/\/refine\/packages\/(?<name>.*?)\//;var D=t=>t?!!t.match(f):!1;var L=t=>{var o;if(!t)return;let e=t.match(f),r=(o=e==null?void 0:e.groups)==null?void 0:o.name;if(r)return`@refinedev/${r}`};function m(){if(process.env.NODE_ENV!=="development")return[];try{let t=new Error,e=P.default.parse(t);return I(e).map(s=>({file:s.fileName,line:s.lineNumber,column:s.columnNumber,function:s.functionName,isRefine:D(s.fileName),packageName:L(s.fileName)})).filter(s=>s.function).slice(1)}catch{return[]}}var E=p(y()),x=(t,e)=>{if(E.scopes[t]==="auth")return null;if(t==="useCan")return e?"key[1].resource":"key[1]";if(E.scopes[t]==="audit-log")return t==="useLog"?"variables.resource":"key[1]";if(E.scopes[t]==="data"){if(t==="useCustom"||t==="useCustomMutation")return null;switch(t){case"useList":case"useInfiniteList":case"useOne":case"useMany":return e?"key[1]":"key[2]";case"useCreate":case"useCreateMany":case"useDelete":case"useDeleteMany":case"useUpdate":case"useUpdateMany":return"variables.resource"}}return null};function oe(t,e){if(process.env.NODE_ENV!=="development")return{hookName:"",trace:[],resourcePath:null,legacyKey:!1};let r=m().slice(1),o=x(t,e);return{hookName:t,trace:r,resourcePath:o,legacyKey:e}}var V=p(y()),i=p(_("react"));var l=p(y());var O=(t,e)=>{let r=e==null?void 0:e.map(s=>`${s.file}:${s.line}:${s.column}#${s.function}-${s.packageName}-${s.isRefine?1:0}`);return JSON.stringify([...t??[],...r??[]])};var w=t=>e=>{var o;if(!((o=e==null?void 0:e.meta)!=null&&o.trace))return;let r=e==null?void 0:e.meta;new Promise(s=>{var a,n;(0,l.send)(t,l.DevtoolsEvent.ACTIVITY,{type:"mutation",identifier:O(e==null?void 0:e.options.mutationKey,(a=e==null?void 0:e.meta)==null?void 0:a.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:(n=e==null?void 0:e.state)==null?void 0:n.variables,...r}),s()})},M=t=>e=>{var o;if(!((o=e==null?void 0:e.meta)!=null&&o.trace))return;let r=e==null?void 0:e.meta;new Promise(s=>{var a;(0,l.send)(t,l.DevtoolsEvent.ACTIVITY,{type:"query",identifier:O(e.queryKey,(a=e.meta)==null?void 0:a.trace),key:e.queryKey,status:e.state.status,state:e.state,...r}),s()})};var ae=process.env.NODE_ENV!=="development"?()=>({}):t=>{let{ws:e}=(0,i.useContext)(V.DevToolsContext),r=i.default.useRef(),o=i.default.useRef();return i.default.useEffect(()=>{if(!e)return()=>0;let s=t.getQueryCache(),a=M(e);return s.getAll().forEach(a),r.current=s.subscribe(({query:n,type:c})=>(c==="added"||c==="updated")&&a(n)),()=>{var n;(n=r.current)==null||n.call(r)}},[e,t]),i.default.useEffect(()=>{if(!e)return()=>0;let s=t.getMutationCache(),a=w(e);return s.getAll().forEach(a),o.current=s.subscribe(({mutation:n,type:c})=>(c==="added"||c==="updated")&&a(n)),()=>{var n;(n=o.current)==null||n.call(o)}},[e,t]),{}};})();
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../devtools-shared/src/index.ts","../../../devtools-shared/src/event-types.ts","../../../devtools-shared/src/scopes.ts","../../../devtools-shared/src/context.tsx","../../../devtools-shared/src/send.ts","../../../devtools-shared/src/receive.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 { DevtoolsEvent, DevtoolsEventPayloads } from \"./event-types\";\nexport { TraceType } from \"./trace\";\nexport { Feed, FeedSection } from \"./feed\";\nexport {\n PackageType,\n PackageLatestVersionType,\n AvailablePackageType,\n} from \"./package\";\nexport { RefineHook, Scopes, hooksByScope, scopes } from \"./scopes\";\n\nexport { DevToolsContextProvider, DevToolsContext } from \"./context\";\n\nexport { send } from \"./send\";\nexport { receive } from \"./receive\";\n","import {\n Mutation,\n MutationKey,\n MutationStatus,\n QueryKey,\n QueryState,\n QueryStatus,\n} from \"@tanstack/react-query\";\nimport { TraceType } from \"./trace\";\n\nexport enum DevtoolsEvent {\n RELOAD = \"devtools:reload\",\n DEVTOOLS_INIT = \"devtools:init\",\n DEVTOOLS_HANDSHAKE = \"devtools:handshake\",\n DEVTOOLS_ALREADY_CONNECTED = \"devtools:already-connected\",\n ACTIVITY = \"devtools:send-activity\",\n DEVTOOLS_ACTIVITY_UPDATE = \"devtools:activity-update\",\n DEVTOOLS_CONNECTED_APP = \"devtools:connected-app\",\n DEVTOOLS_DISCONNECTED_APP = \"devtools:disconnected-app\",\n DEVTOOLS_HIGHLIGHT_IN_MONITOR = \"devtools:highlight-in-monitor\",\n DEVTOOLS_HIGHLIGHT_IN_MONITOR_ACTION = \"devtools:highlight-in-monitor-action\",\n DEVTOOLS_LOGIN_SUCCESS = \"devtools:login-success\",\n DEVTOOLS_RELOAD_AFTER_LOGIN = \"devtools:reload-after-login\",\n}\n\ntype Timestamps = {\n createdAt: number;\n updatedAt: number;\n};\n\ntype ActivityPayload =\n | {\n type: \"mutation\";\n identifier: string;\n key?: MutationKey;\n status?: MutationStatus;\n trace?: TraceType[];\n state: Mutation<any, any, any, any>[\"state\"];\n variables?: Mutation<any, any, any, any>[\"state\"][\"variables\"];\n hookName: string;\n resourcePath: string | null;\n legacyKey: boolean;\n }\n | {\n type: \"query\";\n identifier: string;\n key?: QueryKey;\n status?: QueryStatus;\n trace?: TraceType[];\n state: QueryState<any, any>;\n hookName: string;\n resourcePath: string | null;\n legacyKey: boolean;\n };\n\nexport type DevtoolsEventPayloads = {\n [DevtoolsEvent.RELOAD]: {};\n [DevtoolsEvent.DEVTOOLS_INIT]: { url: string };\n [DevtoolsEvent.DEVTOOLS_HANDSHAKE]: { url: string };\n [DevtoolsEvent.DEVTOOLS_ALREADY_CONNECTED]: { url: string };\n [DevtoolsEvent.ACTIVITY]: ActivityPayload;\n [DevtoolsEvent.DEVTOOLS_ACTIVITY_UPDATE]: {\n updatedActivities: (ActivityPayload & Timestamps)[];\n };\n [DevtoolsEvent.DEVTOOLS_CONNECTED_APP]: { url: string | null };\n [DevtoolsEvent.DEVTOOLS_DISCONNECTED_APP]: {};\n [DevtoolsEvent.DEVTOOLS_HIGHLIGHT_IN_MONITOR]: { name: string };\n [DevtoolsEvent.DEVTOOLS_HIGHLIGHT_IN_MONITOR_ACTION]: { name: string };\n [DevtoolsEvent.DEVTOOLS_LOGIN_SUCCESS]: {};\n [DevtoolsEvent.DEVTOOLS_RELOAD_AFTER_LOGIN]: {};\n};\n","export type RefineHook =\n | \"useCan\"\n | \"useLog\"\n | \"useLogList\"\n | \"useCreate\"\n | \"useCreateMany\"\n | \"useCustom\"\n | \"useCustomMutation\"\n | \"useDelete\"\n | \"useDeleteMany\"\n | \"useInfiniteList\"\n | \"useList\"\n | \"useMany\"\n | \"useOne\"\n | \"useUpdate\"\n | \"useUpdateMany\"\n | \"useForgotPassword\"\n | \"useGetIdentity\"\n | \"useIsAuthenticated\"\n | \"useLogin\"\n | \"useLogout\"\n | \"useOnError\"\n | \"usePermissions\"\n | \"useRegister\"\n | \"useUpdatePassword\";\n\nexport type Scopes = \"data\" | \"audit-log\" | \"access-control\" | \"auth\";\n\nexport const scopes: Record<RefineHook, Scopes> = {\n useCan: \"access-control\",\n useLog: \"audit-log\",\n useLogList: \"audit-log\",\n useCreate: \"data\",\n useCreateMany: \"data\",\n useCustom: \"data\",\n useCustomMutation: \"data\",\n useDelete: \"data\",\n useDeleteMany: \"data\",\n useInfiniteList: \"data\",\n useList: \"data\",\n useMany: \"data\",\n useOne: \"data\",\n useUpdate: \"data\",\n useUpdateMany: \"data\",\n useForgotPassword: \"auth\",\n useGetIdentity: \"auth\",\n useIsAuthenticated: \"auth\",\n useLogin: \"auth\",\n useLogout: \"auth\",\n useOnError: \"auth\",\n usePermissions: \"auth\",\n useRegister: \"auth\",\n useUpdatePassword: \"auth\",\n};\n\nexport const hooksByScope = Object.entries(scopes).reduce(\n (acc, [hook, scope]) => {\n if (!acc[scope]) {\n acc[scope] = [];\n }\n\n acc[scope].push(hook as RefineHook);\n\n return acc;\n },\n {} as Record<Scopes, RefineHook[]>,\n);\n","import React from \"react\";\nimport { DevtoolsEvent } from \"./event-types\";\nimport { send } from \"./send\";\nimport { receive } from \"./receive\";\n\ntype DevToolsContextValue = {\n __devtools: boolean;\n port: number;\n url: string;\n secure: boolean;\n ws: WebSocket | null;\n devtoolsUrl?: string;\n};\n\nexport const DevToolsContext = React.createContext<DevToolsContextValue>({\n __devtools: false,\n port: 5002,\n url: \"localhost\",\n secure: false,\n ws: null,\n});\n\ntype Props = React.PropsWithChildren<\n Partial<Pick<DevToolsContextValue, \"port\" | \"__devtools\">>\n>;\n\nexport const DevToolsContextProvider: React.FC<Props> = ({\n __devtools,\n port,\n children,\n}) => {\n const [values, setValues] = React.useState<DevToolsContextValue>({\n __devtools: __devtools ?? false,\n port: port ?? 5002,\n url: \"localhost\",\n secure: false,\n ws: null,\n });\n\n const [ws, setWs] = React.useState<WebSocket | null>(null);\n\n React.useEffect(() => {\n const wsInstance = new WebSocket(\n `${values.secure ? \"wss\" : \"ws\"}://localhost:${values.port}`,\n );\n\n const unsubscribe = receive(\n wsInstance,\n DevtoolsEvent.DEVTOOLS_HANDSHAKE,\n (data) => {\n setValues((v) => ({\n ...v,\n devtoolsUrl: data.url,\n }));\n unsubscribe();\n },\n );\n\n wsInstance.addEventListener(\"open\", () => {\n if (!values.__devtools) {\n send(wsInstance, DevtoolsEvent.DEVTOOLS_INIT, {\n url: window.location.origin,\n });\n }\n });\n\n setWs(wsInstance);\n\n return () => {\n unsubscribe();\n\n wsInstance.close(1000, window.location.origin);\n };\n }, []);\n\n const contextValues = React.useMemo<DevToolsContextValue>(\n () => ({\n ...values,\n ws,\n }),\n [values, ws],\n );\n\n return (\n <DevToolsContext.Provider value={contextValues}>\n {children}\n </DevToolsContext.Provider>\n );\n};\n","import { DevtoolsEvent, DevtoolsEventPayloads } from \"./event-types\";\n\nexport async function send<T extends DevtoolsEvent>(\n ws: WebSocket,\n event: T,\n payload: DevtoolsEventPayloads[T],\n) {\n // check if the socket is open\n // if not, wait for it to open\n if (ws.readyState !== ws.OPEN) {\n await new Promise<void>((resolve) => {\n const listener = () => {\n ws.send(JSON.stringify({ event, payload }));\n resolve();\n ws.removeEventListener(\"open\", listener);\n };\n\n ws.addEventListener(\"open\", listener);\n });\n return;\n } else {\n ws.send(JSON.stringify({ event, payload }));\n return;\n }\n}\n","// receive ws message by adding a listener to the ws object\n\nimport { DevtoolsEvent, DevtoolsEventPayloads } from \"./event-types\";\n\nexport function receive<T extends DevtoolsEvent>(\n ws: WebSocket,\n event: T,\n callback: (payload: DevtoolsEventPayloads[T]) => void,\n) {\n const listener = (e: MessageEvent) => {\n const { event: receivedEvent, payload } = JSON.parse(e.data);\n if (event === receivedEvent) {\n callback(payload);\n }\n };\n\n ws.addEventListener(\"message\", listener);\n\n return () => {\n ws.removeEventListener(\"message\", listener);\n };\n}\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 { TraceType } from \"@refinedev/devtools-shared\";\n\nexport function getTrace() {\n if (__DEV_CONDITION__ !== \"development\") {\n return [];\n } else {\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(\n frame.fileName,\n ),\n } as TraceType),\n )\n .filter((trace) => trace.function);\n return traces.slice(1);\n } catch (error) {\n return [];\n }\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\\/(?<name>.*?)\\//\n : /\\/refine\\/packages\\/(?<name>.*?)\\//;\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 DevtoolsEvent,\n DevtoolsEventPayloads,\n RefineHook,\n scopes,\n} from \"@refinedev/devtools-shared\";\n\nexport type Activity =\n DevtoolsEventPayloads[DevtoolsEvent.DEVTOOLS_ACTIVITY_UPDATE][\"updatedActivities\"][number];\n\nexport const getResourcePath = (\n hookName: RefineHook,\n legacyKey: boolean,\n): string | null => {\n if (scopes[hookName] === \"auth\") {\n return null;\n }\n if (hookName === \"useCan\") {\n if (legacyKey) {\n return \"key[1].resource\";\n } else {\n return \"key[1]\";\n }\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 if (legacyKey) {\n return \"key[1]\";\n } else {\n return \"key[2]\";\n }\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 { 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 legacyKey: boolean;\n};\n\nexport function getXRay(hookName: string, legacyKey: boolean): XRayResponse {\n if (__DEV_CONDITION__ !== \"development\") {\n return {\n hookName: \"\",\n trace: [],\n resourcePath: null,\n legacyKey: false,\n };\n } else {\n const trace = getTrace().slice(1);\n\n const resourcePath = getResourcePath(hookName as RefineHook, legacyKey);\n\n return {\n hookName,\n trace,\n resourcePath,\n legacyKey,\n };\n }\n}\n","import { DevToolsContext } from \"@refinedev/devtools-shared\";\nimport { QueryClient } from \"@tanstack/react-query\";\nimport React, { useContext } from \"react\";\nimport { createQueryListener, createMutationListener } from \"./listeners\";\n\nexport const useQuerySubscription =\n __DEV_CONDITION__ !== \"development\"\n ? () => ({})\n : (queryClient: QueryClient) => {\n const { ws } = useContext(DevToolsContext);\n const queryCacheSubscription = React.useRef<() => void>();\n const mutationCacheSubscription = React.useRef<() => void>();\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\") &&\n 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 return {};\n };\n","import { DevtoolsEvent, send } from \"@refinedev/devtools-shared\";\nimport { Mutation, Query } from \"@tanstack/react-query\";\n\nimport { createIdentifier } from \"./create-identifier\";\nimport { 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 // console.table({\n // type: \"mutation\",\n // key: mutation?.options.mutationKey,\n // id: mutation?.mutationId,\n // status: mutation?.state.status,\n // trace: mutation?.meta?.trace,\n // state: mutation?.state,\n // variables: mutation?.state?.variables,\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(\n query.queryKey,\n query.meta?.trace as any,\n ),\n key: query.queryKey as any,\n status: query.state.status,\n state: query.state,\n ...meta,\n });\n resolve();\n });\n\n // console.table({\n // type: \"query\",\n // key: query.queryKey,\n // status: query.state.status,\n // trace: query.meta?.trace,\n // state: query.state,\n // });\n};\n","import { TraceType } from \"@refinedev/devtools-shared\";\nimport { 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","DevToolsContext","DevToolsContextProvider","DevtoolsEvent","hooksByScope","receive","scopes","send","module","__toCommonJS","acc","hook","scope","import_react","A","ws","event","payload","resolve","listener","callback","e","receivedEvent","r","React","__devtools","port","children","values","setValues","setWs","wsInstance","unsubscribe","data","v","contextValues","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","error","stack","ErrorStackParser","cleanStack","frame","isRefineStack","getPackageNameFromFilename","trace","import_devtools_shared","getResourcePath","hookName","legacyKey","getXRay","hookName","legacyKey","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","useQuerySubscription","queryClient","ws","queryCacheSubscription","React","mutationCacheSubscription","queryCache","queryListener","createQueryListener","query","type","_a","mutationCache","mutationListener","createMutationListener","mutation"]}
1
+ {"version":3,"sources":["../../../devtools-shared/src/index.ts","../../../devtools-shared/src/event-types.ts","../../../devtools-shared/src/scopes.ts","../../../devtools-shared/src/context.tsx","../../../devtools-shared/src/send.ts","../../../devtools-shared/src/receive.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 { DevtoolsEvent, DevtoolsEventPayloads } from \"./event-types\";\nexport { TraceType } from \"./trace\";\nexport { Feed, FeedSection } from \"./feed\";\nexport {\n PackageType,\n PackageLatestVersionType,\n AvailablePackageType,\n} from \"./package\";\nexport { RefineHook, Scopes, hooksByScope, scopes } from \"./scopes\";\n\nexport { DevToolsContextProvider, DevToolsContext } from \"./context\";\n\nexport { send } from \"./send\";\nexport { receive } from \"./receive\";\n","import {\n Mutation,\n MutationKey,\n MutationStatus,\n QueryKey,\n QueryState,\n QueryStatus,\n} from \"@tanstack/react-query\";\nimport { TraceType } from \"./trace\";\n\nexport enum DevtoolsEvent {\n RELOAD = \"devtools:reload\",\n DEVTOOLS_INIT = \"devtools:init\",\n DEVTOOLS_HANDSHAKE = \"devtools:handshake\",\n DEVTOOLS_ALREADY_CONNECTED = \"devtools:already-connected\",\n ACTIVITY = \"devtools:send-activity\",\n DEVTOOLS_ACTIVITY_UPDATE = \"devtools:activity-update\",\n DEVTOOLS_CONNECTED_APP = \"devtools:connected-app\",\n DEVTOOLS_DISCONNECTED_APP = \"devtools:disconnected-app\",\n DEVTOOLS_HIGHLIGHT_IN_MONITOR = \"devtools:highlight-in-monitor\",\n DEVTOOLS_HIGHLIGHT_IN_MONITOR_ACTION = \"devtools:highlight-in-monitor-action\",\n DEVTOOLS_LOGIN_SUCCESS = \"devtools:login-success\",\n DEVTOOLS_RELOAD_AFTER_LOGIN = \"devtools:reload-after-login\",\n}\n\ntype Timestamps = {\n createdAt: number;\n updatedAt: number;\n};\n\ntype ActivityPayload =\n | {\n type: \"mutation\";\n identifier: string;\n key?: MutationKey;\n status?: MutationStatus;\n trace?: TraceType[];\n state: Mutation<any, any, any, any>[\"state\"];\n variables?: Mutation<any, any, any, any>[\"state\"][\"variables\"];\n hookName: string;\n resourcePath: string | null;\n legacyKey: boolean;\n }\n | {\n type: \"query\";\n identifier: string;\n key?: QueryKey;\n status?: QueryStatus;\n trace?: TraceType[];\n state: QueryState<any, any>;\n hookName: string;\n resourcePath: string | null;\n legacyKey: boolean;\n };\n\nexport type DevtoolsEventPayloads = {\n [DevtoolsEvent.RELOAD]: {};\n [DevtoolsEvent.DEVTOOLS_INIT]: { url: string };\n [DevtoolsEvent.DEVTOOLS_HANDSHAKE]: { url: string };\n [DevtoolsEvent.DEVTOOLS_ALREADY_CONNECTED]: { url: string };\n [DevtoolsEvent.ACTIVITY]: ActivityPayload;\n [DevtoolsEvent.DEVTOOLS_ACTIVITY_UPDATE]: {\n updatedActivities: (ActivityPayload & Timestamps)[];\n };\n [DevtoolsEvent.DEVTOOLS_CONNECTED_APP]: { url: string | null };\n [DevtoolsEvent.DEVTOOLS_DISCONNECTED_APP]: {};\n [DevtoolsEvent.DEVTOOLS_HIGHLIGHT_IN_MONITOR]: { name: string };\n [DevtoolsEvent.DEVTOOLS_HIGHLIGHT_IN_MONITOR_ACTION]: { name: string };\n [DevtoolsEvent.DEVTOOLS_LOGIN_SUCCESS]: {};\n [DevtoolsEvent.DEVTOOLS_RELOAD_AFTER_LOGIN]: {};\n};\n","export type RefineHook =\n | \"useCan\"\n | \"useLog\"\n | \"useLogList\"\n | \"useCreate\"\n | \"useCreateMany\"\n | \"useCustom\"\n | \"useCustomMutation\"\n | \"useDelete\"\n | \"useDeleteMany\"\n | \"useInfiniteList\"\n | \"useList\"\n | \"useMany\"\n | \"useOne\"\n | \"useUpdate\"\n | \"useUpdateMany\"\n | \"useForgotPassword\"\n | \"useGetIdentity\"\n | \"useIsAuthenticated\"\n | \"useLogin\"\n | \"useLogout\"\n | \"useOnError\"\n | \"usePermissions\"\n | \"useRegister\"\n | \"useUpdatePassword\";\n\nexport type Scopes = \"data\" | \"audit-log\" | \"access-control\" | \"auth\";\n\nexport const scopes: Record<RefineHook, Scopes> = {\n useCan: \"access-control\",\n useLog: \"audit-log\",\n useLogList: \"audit-log\",\n useCreate: \"data\",\n useCreateMany: \"data\",\n useCustom: \"data\",\n useCustomMutation: \"data\",\n useDelete: \"data\",\n useDeleteMany: \"data\",\n useInfiniteList: \"data\",\n useList: \"data\",\n useMany: \"data\",\n useOne: \"data\",\n useUpdate: \"data\",\n useUpdateMany: \"data\",\n useForgotPassword: \"auth\",\n useGetIdentity: \"auth\",\n useIsAuthenticated: \"auth\",\n useLogin: \"auth\",\n useLogout: \"auth\",\n useOnError: \"auth\",\n usePermissions: \"auth\",\n useRegister: \"auth\",\n useUpdatePassword: \"auth\",\n};\n\nexport const hooksByScope = Object.entries(scopes).reduce(\n (acc, [hook, scope]) => {\n if (!acc[scope]) {\n acc[scope] = [];\n }\n\n acc[scope].push(hook as RefineHook);\n\n return acc;\n },\n {} as Record<Scopes, RefineHook[]>,\n);\n","import React from \"react\";\nimport { DevtoolsEvent } from \"./event-types\";\nimport { send } from \"./send\";\nimport { receive } from \"./receive\";\n\ntype DevToolsContextValue = {\n __devtools: boolean;\n port: number;\n url: string;\n secure: boolean;\n ws: WebSocket | null;\n devtoolsUrl?: string;\n};\n\nexport const DevToolsContext = React.createContext<DevToolsContextValue>({\n __devtools: false,\n port: 5002,\n url: \"localhost\",\n secure: false,\n ws: null,\n});\n\ntype Props = React.PropsWithChildren<\n Partial<Pick<DevToolsContextValue, \"port\" | \"__devtools\">>\n>;\n\nexport const DevToolsContextProvider: React.FC<Props> = ({\n __devtools,\n port,\n children,\n}) => {\n const [values, setValues] = React.useState<DevToolsContextValue>({\n __devtools: __devtools ?? false,\n port: port ?? 5002,\n url: \"localhost\",\n secure: false,\n ws: null,\n });\n\n const [ws, setWs] = React.useState<WebSocket | null>(null);\n\n React.useEffect(() => {\n const wsInstance = new WebSocket(\n `${values.secure ? \"wss\" : \"ws\"}://localhost:${values.port}`,\n );\n\n const unsubscribe = receive(\n wsInstance,\n DevtoolsEvent.DEVTOOLS_HANDSHAKE,\n (data) => {\n setValues((v) => ({\n ...v,\n devtoolsUrl: data.url,\n }));\n unsubscribe();\n },\n );\n\n wsInstance.addEventListener(\"open\", () => {\n if (!values.__devtools) {\n send(wsInstance, DevtoolsEvent.DEVTOOLS_INIT, {\n url: window.location.origin,\n });\n }\n });\n\n setWs(wsInstance);\n\n return () => {\n unsubscribe();\n\n wsInstance.close(1000, window.location.origin);\n };\n }, []);\n\n const contextValues = React.useMemo<DevToolsContextValue>(\n () => ({\n ...values,\n ws,\n }),\n [values, ws],\n );\n\n return (\n <DevToolsContext.Provider value={contextValues}>\n {children}\n </DevToolsContext.Provider>\n );\n};\n","import { DevtoolsEvent, DevtoolsEventPayloads } from \"./event-types\";\n\nexport async function send<T extends DevtoolsEvent>(\n ws: WebSocket,\n event: T,\n payload: DevtoolsEventPayloads[T],\n) {\n // check if the socket is open\n // if not, wait for it to open\n if (ws.readyState !== ws.OPEN) {\n await new Promise<void>((resolve) => {\n const listener = () => {\n ws.send(JSON.stringify({ event, payload }));\n resolve();\n ws.removeEventListener(\"open\", listener);\n };\n\n ws.addEventListener(\"open\", listener);\n });\n return;\n }\n ws.send(JSON.stringify({ event, payload }));\n return;\n}\n","// receive ws message by adding a listener to the ws object\n\nimport { DevtoolsEvent, DevtoolsEventPayloads } from \"./event-types\";\n\nexport function receive<T extends DevtoolsEvent>(\n ws: WebSocket,\n event: T,\n callback: (payload: DevtoolsEventPayloads[T]) => void,\n) {\n const listener = (e: MessageEvent) => {\n const { event: receivedEvent, payload } = JSON.parse(e.data);\n if (event === receivedEvent) {\n callback(payload);\n }\n };\n\n ws.addEventListener(\"message\", listener);\n\n return () => {\n ws.removeEventListener(\"message\", listener);\n };\n}\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 { TraceType } from \"@refinedev/devtools-shared\";\n\nexport function getTrace() {\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 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\\/(?<name>.*?)\\//\n : /\\/refine\\/packages\\/(?<name>.*?)\\//;\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 DevtoolsEvent,\n DevtoolsEventPayloads,\n RefineHook,\n scopes,\n} from \"@refinedev/devtools-shared\";\n\nexport type Activity =\n DevtoolsEventPayloads[DevtoolsEvent.DEVTOOLS_ACTIVITY_UPDATE][\"updatedActivities\"][number];\n\nexport const getResourcePath = (\n hookName: RefineHook,\n legacyKey: boolean,\n): string | null => {\n if (scopes[hookName] === \"auth\") {\n return null;\n }\n if (hookName === \"useCan\") {\n if (legacyKey) {\n return \"key[1].resource\";\n }\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 if (legacyKey) {\n return \"key[1]\";\n }\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 { 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 legacyKey: boolean;\n};\n\nexport function getXRay(hookName: string, legacyKey: boolean): XRayResponse {\n if (__DEV_CONDITION__ !== \"development\") {\n return {\n hookName: \"\",\n trace: [],\n resourcePath: null,\n legacyKey: false,\n };\n }\n const trace = getTrace().slice(1);\n\n const resourcePath = getResourcePath(hookName as RefineHook, legacyKey);\n\n return {\n hookName,\n trace,\n resourcePath,\n legacyKey,\n };\n}\n","import { DevToolsContext } from \"@refinedev/devtools-shared\";\nimport { QueryClient } from \"@tanstack/react-query\";\nimport React, { useContext } from \"react\";\nimport { createQueryListener, createMutationListener } from \"./listeners\";\n\nexport const useQuerySubscription =\n __DEV_CONDITION__ !== \"development\"\n ? () => ({})\n : (queryClient: QueryClient) => {\n const { ws } = useContext(DevToolsContext);\n const queryCacheSubscription = React.useRef<() => void>();\n const mutationCacheSubscription = React.useRef<() => void>();\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 return {};\n };\n","import { DevtoolsEvent, send } from \"@refinedev/devtools-shared\";\nimport { Mutation, Query } from \"@tanstack/react-query\";\n\nimport { createIdentifier } from \"./create-identifier\";\nimport { 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 // console.table({\n // type: \"mutation\",\n // key: mutation?.options.mutationKey,\n // id: mutation?.mutationId,\n // status: mutation?.state.status,\n // trace: mutation?.meta?.trace,\n // state: mutation?.state,\n // variables: mutation?.state?.variables,\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 // console.table({\n // type: \"query\",\n // key: query.queryKey,\n // status: query.state.status,\n // trace: query.meta?.trace,\n // state: query.state,\n // });\n};\n","import { TraceType } from \"@refinedev/devtools-shared\";\nimport { 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","DevToolsContext","DevToolsContextProvider","DevtoolsEvent","hooksByScope","receive","scopes","send","module","__toCommonJS","acc","hook","scope","import_react","A","ws","event","payload","resolve","listener","callback","e","receivedEvent","r","React","__devtools","port","children","values","setValues","setWs","wsInstance","unsubscribe","data","v","contextValues","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","error","stack","ErrorStackParser","cleanStack","frame","isRefineStack","getPackageNameFromFilename","trace","import_devtools_shared","getResourcePath","hookName","legacyKey","getXRay","hookName","legacyKey","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","useQuerySubscription","queryClient","ws","queryCacheSubscription","React","mutationCacheSubscription","queryCache","queryListener","createQueryListener","query","type","_a","mutationCache","mutationListener","createMutationListener","mutation"]}
package/dist/index.js CHANGED
@@ -1,2 +1,3 @@
1
- var D=Object.create;var p=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var b=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var L=(r,e)=>{for(var s in e)p(r,s,{get:e[s],enumerable:!0})},d=(r,e,s,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of A(e))!F.call(r,t)&&t!==s&&p(r,t,{get:()=>e[t],enumerable:!(n=N(e,t))||n.enumerable});return r};var E=(r,e,s)=>(s=r!=null?D(b(r)):{},d(e||!r||!r.__esModule?p(s,"default",{value:r,enumerable:!0}):s,r)),M=r=>d(p({},"__esModule",{value:!0}),r);var K={};L(K,{getTrace:()=>l,getXRay:()=>I,useQuerySubscription:()=>C});module.exports=M(K);var g=E(require("error-stack-parser"));var O="renderWithHooks",T=r=>{let e=r.findIndex(s=>s.functionName===O);return e!==-1?r.slice(0,e):r};var u=process.env.NODE_ENV!=="development"?/node_modules\/refinedev\/(?<name>.*?)\//:/\/refine\/packages\/(?<name>.*?)\//;var _=r=>r?!!r.match(u):!1;var R=r=>{var n;if(!r)return;let e=r.match(u),s=(n=e==null?void 0:e.groups)==null?void 0:n.name;if(s)return`@refinedev/${s}`};function l(){if(process.env.NODE_ENV!=="development")return[];try{let r=new Error,e=g.default.parse(r);return T(e).map(t=>({file:t.fileName,line:t.lineNumber,column:t.columnNumber,function:t.functionName,isRefine:_(t.fileName),packageName:R(t.fileName)})).filter(t=>t.function).slice(1)}catch{return[]}}var m=require("@refinedev/devtools-shared"),v=(r,e)=>{if(m.scopes[r]==="auth")return null;if(r==="useCan")return e?"key[1].resource":"key[1]";if(m.scopes[r]==="audit-log")return r==="useLog"?"variables.resource":"key[1]";if(m.scopes[r]==="data"){if(r==="useCustom"||r==="useCustomMutation")return null;switch(r){case"useList":case"useInfiniteList":case"useOne":case"useMany":return e?"key[1]":"key[2]";case"useCreate":case"useCreateMany":case"useDelete":case"useDeleteMany":case"useUpdate":case"useUpdateMany":return"variables.resource"}}return null};function I(r,e){if(process.env.NODE_ENV!=="development")return{hookName:"",trace:[],resourcePath:null,legacyKey:!1};{let s=l().slice(1),n=v(r,e);return{hookName:r,trace:s,resourcePath:n,legacyKey:e}}}var x=require("@refinedev/devtools-shared"),c=E(require("react"));var i=require("@refinedev/devtools-shared");var y=(r,e)=>{let s=e==null?void 0:e.map(t=>`${t.file}:${t.line}:${t.column}#${t.function}-${t.packageName}-${t.isRefine?1:0}`);return JSON.stringify([...r??[],...s??[]])};var P=r=>e=>{var n;if(!((n=e==null?void 0:e.meta)!=null&&n.trace))return;let s=e==null?void 0:e.meta;new Promise(t=>{var a,o;(0,i.send)(r,i.DevtoolsEvent.ACTIVITY,{type:"mutation",identifier:y(e==null?void 0:e.options.mutationKey,(a=e==null?void 0:e.meta)==null?void 0:a.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:(o=e==null?void 0:e.state)==null?void 0:o.variables,...s}),t()})},k=r=>e=>{var n;if(!((n=e==null?void 0:e.meta)!=null&&n.trace))return;let s=e==null?void 0:e.meta;new Promise(t=>{var a;(0,i.send)(r,i.DevtoolsEvent.ACTIVITY,{type:"query",identifier:y(e.queryKey,(a=e.meta)==null?void 0:a.trace),key:e.queryKey,status:e.state.status,state:e.state,...s}),t()})};var C=process.env.NODE_ENV!=="development"?()=>({}):r=>{let{ws:e}=(0,c.useContext)(x.DevToolsContext),s=c.default.useRef(),n=c.default.useRef();return c.default.useEffect(()=>{if(!e)return()=>0;let t=r.getQueryCache(),a=k(e);return t.getAll().forEach(a),s.current=t.subscribe(({query:o,type:f})=>(f==="added"||f==="updated")&&a(o)),()=>{var o;(o=s.current)==null||o.call(s)}},[e,r]),c.default.useEffect(()=>{if(!e)return()=>0;let t=r.getMutationCache(),a=P(e);return t.getAll().forEach(a),n.current=t.subscribe(({mutation:o,type:f})=>(f==="added"||f==="updated")&&a(o)),()=>{var o;(o=n.current)==null||o.call(n)}},[e,r]),{}};
1
+ "use client"
2
+ var D=Object.create;var p=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var b=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var L=(r,e)=>{for(var s in e)p(r,s,{get:e[s],enumerable:!0})},d=(r,e,s,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of A(e))!F.call(r,t)&&t!==s&&p(r,t,{get:()=>e[t],enumerable:!(n=N(e,t))||n.enumerable});return r};var E=(r,e,s)=>(s=r!=null?D(b(r)):{},d(e||!r||!r.__esModule?p(s,"default",{value:r,enumerable:!0}):s,r)),M=r=>d(p({},"__esModule",{value:!0}),r);var K={};L(K,{getTrace:()=>l,getXRay:()=>I,useQuerySubscription:()=>C});module.exports=M(K);var g=E(require("error-stack-parser"));var O="renderWithHooks",T=r=>{let e=r.findIndex(s=>s.functionName===O);return e!==-1?r.slice(0,e):r};var u=process.env.NODE_ENV!=="development"?/node_modules\/refinedev\/(?<name>.*?)\//:/\/refine\/packages\/(?<name>.*?)\//;var _=r=>r?!!r.match(u):!1;var R=r=>{var n;if(!r)return;let e=r.match(u),s=(n=e==null?void 0:e.groups)==null?void 0:n.name;if(s)return`@refinedev/${s}`};function l(){if(process.env.NODE_ENV!=="development")return[];try{let r=new Error,e=g.default.parse(r);return T(e).map(t=>({file:t.fileName,line:t.lineNumber,column:t.columnNumber,function:t.functionName,isRefine:_(t.fileName),packageName:R(t.fileName)})).filter(t=>t.function).slice(1)}catch{return[]}}var m=require("@refinedev/devtools-shared"),v=(r,e)=>{if(m.scopes[r]==="auth")return null;if(r==="useCan")return e?"key[1].resource":"key[1]";if(m.scopes[r]==="audit-log")return r==="useLog"?"variables.resource":"key[1]";if(m.scopes[r]==="data"){if(r==="useCustom"||r==="useCustomMutation")return null;switch(r){case"useList":case"useInfiniteList":case"useOne":case"useMany":return e?"key[1]":"key[2]";case"useCreate":case"useCreateMany":case"useDelete":case"useDeleteMany":case"useUpdate":case"useUpdateMany":return"variables.resource"}}return null};function I(r,e){if(process.env.NODE_ENV!=="development")return{hookName:"",trace:[],resourcePath:null,legacyKey:!1};let s=l().slice(1),n=v(r,e);return{hookName:r,trace:s,resourcePath:n,legacyKey:e}}var x=require("@refinedev/devtools-shared"),c=E(require("react"));var i=require("@refinedev/devtools-shared");var y=(r,e)=>{let s=e==null?void 0:e.map(t=>`${t.file}:${t.line}:${t.column}#${t.function}-${t.packageName}-${t.isRefine?1:0}`);return JSON.stringify([...r??[],...s??[]])};var P=r=>e=>{var n;if(!((n=e==null?void 0:e.meta)!=null&&n.trace))return;let s=e==null?void 0:e.meta;new Promise(t=>{var a,o;(0,i.send)(r,i.DevtoolsEvent.ACTIVITY,{type:"mutation",identifier:y(e==null?void 0:e.options.mutationKey,(a=e==null?void 0:e.meta)==null?void 0:a.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:(o=e==null?void 0:e.state)==null?void 0:o.variables,...s}),t()})},k=r=>e=>{var n;if(!((n=e==null?void 0:e.meta)!=null&&n.trace))return;let s=e==null?void 0:e.meta;new Promise(t=>{var a;(0,i.send)(r,i.DevtoolsEvent.ACTIVITY,{type:"query",identifier:y(e.queryKey,(a=e.meta)==null?void 0:a.trace),key:e.queryKey,status:e.state.status,state:e.state,...s}),t()})};var C=process.env.NODE_ENV!=="development"?()=>({}):r=>{let{ws:e}=(0,c.useContext)(x.DevToolsContext),s=c.default.useRef(),n=c.default.useRef();return c.default.useEffect(()=>{if(!e)return()=>0;let t=r.getQueryCache(),a=k(e);return t.getAll().forEach(a),s.current=t.subscribe(({query:o,type:f})=>(f==="added"||f==="updated")&&a(o)),()=>{var o;(o=s.current)==null||o.call(s)}},[e,r]),c.default.useEffect(()=>{if(!e)return()=>0;let t=r.getMutationCache(),a=P(e);return t.getAll().forEach(a),n.current=t.subscribe(({mutation:o,type:f})=>(f==="added"||f==="updated")&&a(o)),()=>{var o;(o=n.current)==null||o.call(n)}},[e,r]),{}};
2
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -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\";\nexport { getXRay } from \"./get-xray\";\nexport { useQuerySubscription } from \"./use-query-subscription\";\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 { TraceType } from \"@refinedev/devtools-shared\";\n\nexport function getTrace() {\n if (__DEV_CONDITION__ !== \"development\") {\n return [];\n } else {\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(\n frame.fileName,\n ),\n } as TraceType),\n )\n .filter((trace) => trace.function);\n return traces.slice(1);\n } catch (error) {\n return [];\n }\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\\/(?<name>.*?)\\//\n : /\\/refine\\/packages\\/(?<name>.*?)\\//;\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 DevtoolsEvent,\n DevtoolsEventPayloads,\n RefineHook,\n scopes,\n} from \"@refinedev/devtools-shared\";\n\nexport type Activity =\n DevtoolsEventPayloads[DevtoolsEvent.DEVTOOLS_ACTIVITY_UPDATE][\"updatedActivities\"][number];\n\nexport const getResourcePath = (\n hookName: RefineHook,\n legacyKey: boolean,\n): string | null => {\n if (scopes[hookName] === \"auth\") {\n return null;\n }\n if (hookName === \"useCan\") {\n if (legacyKey) {\n return \"key[1].resource\";\n } else {\n return \"key[1]\";\n }\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 if (legacyKey) {\n return \"key[1]\";\n } else {\n return \"key[2]\";\n }\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 { 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 legacyKey: boolean;\n};\n\nexport function getXRay(hookName: string, legacyKey: boolean): XRayResponse {\n if (__DEV_CONDITION__ !== \"development\") {\n return {\n hookName: \"\",\n trace: [],\n resourcePath: null,\n legacyKey: false,\n };\n } else {\n const trace = getTrace().slice(1);\n\n const resourcePath = getResourcePath(hookName as RefineHook, legacyKey);\n\n return {\n hookName,\n trace,\n resourcePath,\n legacyKey,\n };\n }\n}\n","import { DevToolsContext } from \"@refinedev/devtools-shared\";\nimport { QueryClient } from \"@tanstack/react-query\";\nimport React, { useContext } from \"react\";\nimport { createQueryListener, createMutationListener } from \"./listeners\";\n\nexport const useQuerySubscription =\n __DEV_CONDITION__ !== \"development\"\n ? () => ({})\n : (queryClient: QueryClient) => {\n const { ws } = useContext(DevToolsContext);\n const queryCacheSubscription = React.useRef<() => void>();\n const mutationCacheSubscription = React.useRef<() => void>();\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\") &&\n 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 return {};\n };\n","import { DevtoolsEvent, send } from \"@refinedev/devtools-shared\";\nimport { Mutation, Query } from \"@tanstack/react-query\";\n\nimport { createIdentifier } from \"./create-identifier\";\nimport { 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 // console.table({\n // type: \"mutation\",\n // key: mutation?.options.mutationKey,\n // id: mutation?.mutationId,\n // status: mutation?.state.status,\n // trace: mutation?.meta?.trace,\n // state: mutation?.state,\n // variables: mutation?.state?.variables,\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(\n query.queryKey,\n query.meta?.trace as any,\n ),\n key: query.queryKey as any,\n status: query.state.status,\n state: query.state,\n ...meta,\n });\n resolve();\n });\n\n // console.table({\n // type: \"query\",\n // key: query.queryKey,\n // status: query.state.status,\n // trace: query.meta?.trace,\n // state: query.state,\n // });\n};\n","import { TraceType } from \"@refinedev/devtools-shared\";\nimport { 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":"6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,EAAA,YAAAC,EAAA,yBAAAC,IAAA,eAAAC,EAAAL,GCAA,IAAAM,EAA6B,iCCE7B,IAAMC,EAAwB,kBAEjBC,EAAcC,GAAwB,CAC/C,IAAMC,EAAsBD,EAAM,UAC7BE,GAAUA,EAAM,eAAiBJ,CACtC,EAEA,OAAIG,IAAwB,GACjBD,EAAM,MAAM,EAAGC,CAAmB,EAGtCD,CACX,ECdO,IAAMG,EACT,uBAAsB,cAChB,0CACA,qCCDH,IAAMC,EAAiBC,GACrBA,EAIE,CAAC,CAFMA,EAAS,MAAMC,CAA8B,EAFrC,GCDnB,IAAMC,EAA8BC,GAAsB,CAFjE,IAAAC,EAGI,GAAI,CAACD,EAAU,OAEf,IAAME,EAAQF,EAAS,MAAMG,CAA8B,EAErDC,GAAOH,EAAAC,GAAA,YAAAA,EAAO,SAAP,YAAAD,EAAe,KAE5B,GAAKG,EAEL,MAAO,cAAcA,GACzB,EJNO,SAASC,GAAW,CACvB,GAAI,uBAAsB,cACtB,MAAO,CAAC,EAER,GAAI,CACA,IAAMC,EAAQ,IAAI,MACZC,EAAQ,EAAAC,QAAiB,MAAMF,CAAK,EAiB1C,OAhBcG,EAAWF,CAAK,EAEzB,IACIG,IACI,CACG,KAAMA,EAAM,SACZ,KAAMA,EAAM,WACZ,OAAQA,EAAM,aACd,SAAUA,EAAM,aAChB,SAAUC,EAAcD,EAAM,QAAQ,EACtC,YAAaE,EACTF,EAAM,QACV,CACJ,EACR,EACC,OAAQG,GAAUA,EAAM,QAAQ,EACvB,MAAM,CAAC,CACzB,MAAE,CACE,MAAO,CAAC,CACZ,CAER,CKlCA,IAAAC,EAKO,sCAKMC,EAAkB,CAC3BC,EACAC,IACgB,CAChB,GAAI,SAAOD,CAAQ,IAAM,OACrB,OAAO,KAEX,GAAIA,IAAa,SACb,OAAIC,EACO,kBAEA,SAGf,GAAI,SAAOD,CAAQ,IAAM,YACrB,OAAIA,IAAa,SACN,qBAEJ,SAEX,GAAI,SAAOA,CAAQ,IAAM,OAAQ,CAC7B,GAAIA,IAAa,aAAeA,IAAa,oBACzC,OAAO,KAEX,OAAQA,EAAU,CACd,IAAK,UACL,IAAK,kBACL,IAAK,SACL,IAAK,UACD,OAAIC,EACO,SAEA,SAEf,IAAK,YACL,IAAK,gBACL,IAAK,YACL,IAAK,gBACL,IAAK,YACL,IAAK,gBACD,MAAO,oBACf,EAEJ,OAAO,IACX,EC3CO,SAASC,EAAQC,EAAkBC,EAAkC,CACxE,GAAI,uBAAsB,cACtB,MAAO,CACH,SAAU,GACV,MAAO,CAAC,EACR,aAAc,KACd,UAAW,EACf,EACG,CACH,IAAMC,EAAQC,EAAS,EAAE,MAAM,CAAC,EAE1BC,EAAeC,EAAgBL,EAAwBC,CAAS,EAEtE,MAAO,CACH,SAAAD,EACA,MAAAE,EACA,aAAAE,EACA,UAAAH,CACJ,EAER,CC/BA,IAAAK,EAAgC,sCAEhCC,EAAkC,oBCFlC,IAAAC,EAAoC,sCCG7B,IAAMC,EAAmB,CAC5BC,EACAC,IACC,CACD,IAAMC,EAAcD,GAAA,YAAAA,EAAO,IACtB,GACG,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,eAC/C,EAAE,SAAW,EAAI,KAK7B,OAFY,KAAK,UAAU,CAAC,GAAID,GAAO,CAAC,EAAI,GAAIE,GAAe,CAAC,CAAE,CAAC,CAGvE,EDVO,IAAMC,EACRC,GAAmBC,GAAwB,CAPhD,IAAAC,EAQQ,GAAI,GAACA,EAAAD,GAAA,YAAAA,EAAU,OAAV,MAAAC,EAAgB,OAAO,OAE5B,IAAMC,EAAqBF,GAAA,YAAAA,EAAU,KAErC,IAAI,QAAeG,GAAY,CAZvC,IAAAF,EAAAG,KAaY,QAAKL,EAAI,gBAAc,SAAU,CAC7B,KAAM,WACN,WAAYM,EACRL,GAAA,YAAAA,EAAU,QAAQ,aAClBC,EAAAD,GAAA,YAAAA,EAAU,OAAV,YAAAC,EAAgB,KACpB,EACA,IAAKD,GAAA,YAAAA,EAAU,QAAQ,YACvB,OAAQA,GAAA,YAAAA,EAAU,MAAM,OACxB,MAAOA,GAAA,YAAAA,EAAU,MACjB,WAAWI,EAAAJ,GAAA,YAAAA,EAAU,QAAV,YAAAI,EAAiB,UAC5B,GAAGF,CACP,CAAC,EACDC,EAAQ,CACZ,CAAC,CAWL,EAESG,EAAuBP,GAAmBQ,GAAiB,CAvCxE,IAAAN,EAwCI,GAAI,GAACA,EAAAM,GAAA,YAAAA,EAAO,OAAP,MAAAN,EAAa,OAAO,OAEzB,IAAMC,EAAqBK,GAAA,YAAAA,EAAO,KAElC,IAAI,QAAeJ,GAAY,CA5CnC,IAAAF,KA6CQ,QAAKF,EAAI,gBAAc,SAAU,CAC7B,KAAM,QACN,WAAYM,EACRE,EAAM,UACNN,EAAAM,EAAM,OAAN,YAAAN,EAAY,KAChB,EACA,IAAKM,EAAM,SACX,OAAQA,EAAM,MAAM,OACpB,MAAOA,EAAM,MACb,GAAGL,CACP,CAAC,EACDC,EAAQ,CACZ,CAAC,CASL,ED7DO,IAAMK,EACT,uBAAsB,cAChB,KAAO,CAAC,GACPC,GAA6B,CAC1B,GAAM,CAAE,GAAAC,CAAG,KAAI,cAAW,iBAAe,EACnCC,EAAyB,EAAAC,QAAM,OAAmB,EAClDC,EAA4B,EAAAD,QAAM,OAAmB,EAE3D,SAAAA,QAAM,UAAU,IAAM,CAClB,GAAI,CAACF,EAAI,MAAO,IAAM,EAEtB,IAAMI,EAAaL,EAAY,cAAc,EAEvCM,EAAgBC,EAAoBN,CAAE,EAE5C,OAAAI,EAAW,OAAO,EAAE,QAAQC,CAAa,EAEzCJ,EAAuB,QAAUG,EAAW,UACxC,CAAC,CAAE,MAAAG,EAAO,KAAAC,CAAK,KACVA,IAAS,SAAWA,IAAS,YAC9BH,EAAcE,CAAK,CAC3B,EAEO,IAAM,CA5B/B,IAAAE,GA6BsBA,EAAAR,EAAuB,UAAvB,MAAAQ,EAAA,KAAAR,EACJ,CACJ,EAAG,CAACD,EAAID,CAAW,CAAC,EAEpB,EAAAG,QAAM,UAAU,IAAM,CAClB,GAAI,CAACF,EAAI,MAAO,IAAM,EAEtB,IAAMU,EAAgBX,EAAY,iBAAiB,EAE7CY,EAAmBC,EAAuBZ,CAAE,EAElD,OAAAU,EAAc,OAAO,EAAE,QAAQC,CAAgB,EAE/CR,EAA0B,QAAUO,EAAc,UAC9C,CAAC,CAAE,SAAAG,EAAU,KAAAL,CAAK,KACbA,IAAS,SAAWA,IAAS,YAC9BG,EAAiBE,CAAQ,CACjC,EAEO,IAAM,CAhD/B,IAAAJ,GAiDsBA,EAAAN,EAA0B,UAA1B,MAAAM,EAAA,KAAAN,EACJ,CACJ,EAAG,CAACH,EAAID,CAAW,CAAC,EAEb,CAAC,CACZ","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","error","stack","ErrorStackParser","cleanStack","frame","isRefineStack","getPackageNameFromFilename","trace","import_devtools_shared","getResourcePath","hookName","legacyKey","getXRay","hookName","legacyKey","trace","getTrace","resourcePath","getResourcePath","import_devtools_shared","import_react","import_devtools_shared","createIdentifier","key","trace","simpleTrace","createMutationListener","ws","mutation","_a","meta","resolve","_b","createIdentifier","createQueryListener","query","useQuerySubscription","queryClient","ws","queryCacheSubscription","React","mutationCacheSubscription","queryCache","queryListener","createQueryListener","query","type","_a","mutationCache","mutationListener","createMutationListener","mutation"]}
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\";\nexport { getXRay } from \"./get-xray\";\nexport { useQuerySubscription } from \"./use-query-subscription\";\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 { TraceType } from \"@refinedev/devtools-shared\";\n\nexport function getTrace() {\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 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\\/(?<name>.*?)\\//\n : /\\/refine\\/packages\\/(?<name>.*?)\\//;\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 DevtoolsEvent,\n DevtoolsEventPayloads,\n RefineHook,\n scopes,\n} from \"@refinedev/devtools-shared\";\n\nexport type Activity =\n DevtoolsEventPayloads[DevtoolsEvent.DEVTOOLS_ACTIVITY_UPDATE][\"updatedActivities\"][number];\n\nexport const getResourcePath = (\n hookName: RefineHook,\n legacyKey: boolean,\n): string | null => {\n if (scopes[hookName] === \"auth\") {\n return null;\n }\n if (hookName === \"useCan\") {\n if (legacyKey) {\n return \"key[1].resource\";\n }\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 if (legacyKey) {\n return \"key[1]\";\n }\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 { 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 legacyKey: boolean;\n};\n\nexport function getXRay(hookName: string, legacyKey: boolean): XRayResponse {\n if (__DEV_CONDITION__ !== \"development\") {\n return {\n hookName: \"\",\n trace: [],\n resourcePath: null,\n legacyKey: false,\n };\n }\n const trace = getTrace().slice(1);\n\n const resourcePath = getResourcePath(hookName as RefineHook, legacyKey);\n\n return {\n hookName,\n trace,\n resourcePath,\n legacyKey,\n };\n}\n","import { DevToolsContext } from \"@refinedev/devtools-shared\";\nimport { QueryClient } from \"@tanstack/react-query\";\nimport React, { useContext } from \"react\";\nimport { createQueryListener, createMutationListener } from \"./listeners\";\n\nexport const useQuerySubscription =\n __DEV_CONDITION__ !== \"development\"\n ? () => ({})\n : (queryClient: QueryClient) => {\n const { ws } = useContext(DevToolsContext);\n const queryCacheSubscription = React.useRef<() => void>();\n const mutationCacheSubscription = React.useRef<() => void>();\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 return {};\n };\n","import { DevtoolsEvent, send } from \"@refinedev/devtools-shared\";\nimport { Mutation, Query } from \"@tanstack/react-query\";\n\nimport { createIdentifier } from \"./create-identifier\";\nimport { 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 // console.table({\n // type: \"mutation\",\n // key: mutation?.options.mutationKey,\n // id: mutation?.mutationId,\n // status: mutation?.state.status,\n // trace: mutation?.meta?.trace,\n // state: mutation?.state,\n // variables: mutation?.state?.variables,\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 // console.table({\n // type: \"query\",\n // key: query.queryKey,\n // status: query.state.status,\n // trace: query.meta?.trace,\n // state: query.state,\n // });\n};\n","import { TraceType } from \"@refinedev/devtools-shared\";\nimport { 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":";6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,EAAA,YAAAC,EAAA,yBAAAC,IAAA,eAAAC,EAAAL,GCAA,IAAAM,EAA6B,iCCE7B,IAAMC,EAAwB,kBAEjBC,EAAcC,GAAwB,CACjD,IAAMC,EAAsBD,EAAM,UAC/BE,GAAUA,EAAM,eAAiBJ,CACpC,EAEA,OAAIG,IAAwB,GACnBD,EAAM,MAAM,EAAGC,CAAmB,EAGpCD,CACT,ECdO,IAAMG,EACX,uBAAsB,cAClB,0CACA,qCCDC,IAAMC,EAAiBC,GACvBA,EAIE,CAAC,CAFMA,EAAS,MAAMC,CAA8B,EAFrC,GCDjB,IAAMC,EAA8BC,GAAsB,CAFjE,IAAAC,EAGE,GAAI,CAACD,EAAU,OAEf,IAAME,EAAQF,EAAS,MAAMG,CAA8B,EAErDC,GAAOH,EAAAC,GAAA,YAAAA,EAAO,SAAP,YAAAD,EAAe,KAE5B,GAAKG,EAEL,MAAO,cAAcA,GACvB,EJNO,SAASC,GAAW,CACzB,GAAI,uBAAsB,cACxB,MAAO,CAAC,EAEV,GAAI,CACF,IAAMC,EAAQ,IAAI,MACZC,EAAQ,EAAAC,QAAiB,MAAMF,CAAK,EAe1C,OAdcG,EAAWF,CAAK,EAE3B,IACEG,IACE,CACC,KAAMA,EAAM,SACZ,KAAMA,EAAM,WACZ,OAAQA,EAAM,aACd,SAAUA,EAAM,aAChB,SAAUC,EAAcD,EAAM,QAAQ,EACtC,YAAaE,EAA2BF,EAAM,QAAQ,CACxD,EACJ,EACC,OAAQG,GAAUA,EAAM,QAAQ,EACrB,MAAM,CAAC,CACvB,MAAE,CACA,MAAO,CAAC,CACV,CACF,CK/BA,IAAAC,EAKO,sCAKMC,EAAkB,CAC7BC,EACAC,IACkB,CAClB,GAAI,SAAOD,CAAQ,IAAM,OACvB,OAAO,KAET,GAAIA,IAAa,SACf,OAAIC,EACK,kBAEF,SAET,GAAI,SAAOD,CAAQ,IAAM,YACvB,OAAIA,IAAa,SACR,qBAEF,SAET,GAAI,SAAOA,CAAQ,IAAM,OAAQ,CAC/B,GAAIA,IAAa,aAAeA,IAAa,oBAC3C,OAAO,KAET,OAAQA,EAAU,CAChB,IAAK,UACL,IAAK,kBACL,IAAK,SACL,IAAK,UACH,OAAIC,EACK,SAEF,SACT,IAAK,YACL,IAAK,gBACL,IAAK,YACL,IAAK,gBACL,IAAK,YACL,IAAK,gBACH,MAAO,oBACX,EAEF,OAAO,IACT,ECzCO,SAASC,EAAQC,EAAkBC,EAAkC,CAC1E,GAAI,uBAAsB,cACxB,MAAO,CACL,SAAU,GACV,MAAO,CAAC,EACR,aAAc,KACd,UAAW,EACb,EAEF,IAAMC,EAAQC,EAAS,EAAE,MAAM,CAAC,EAE1BC,EAAeC,EAAgBL,EAAwBC,CAAS,EAEtE,MAAO,CACL,SAAAD,EACA,MAAAE,EACA,aAAAE,EACA,UAAAH,CACF,CACF,CC9BA,IAAAK,EAAgC,sCAEhCC,EAAkC,oBCFlC,IAAAC,EAAoC,sCCG7B,IAAMC,EAAmB,CAC9BC,EACAC,IACG,CACH,IAAMC,EAAcD,GAAA,YAAAA,EAAO,IACxB,GACC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,eACjD,EAAE,SAAW,EAAI,KAKvB,OAFY,KAAK,UAAU,CAAC,GAAID,GAAO,CAAC,EAAI,GAAIE,GAAe,CAAC,CAAE,CAAC,CAGrE,EDVO,IAAMC,EACVC,GAAmBC,GAAwB,CAP9C,IAAAC,EAQI,GAAI,GAACA,EAAAD,GAAA,YAAAA,EAAU,OAAV,MAAAC,EAAgB,OAAO,OAE5B,IAAMC,EAAqBF,GAAA,YAAAA,EAAU,KAErC,IAAI,QAAeG,GAAY,CAZnC,IAAAF,EAAAG,KAaM,QAAKL,EAAI,gBAAc,SAAU,CAC/B,KAAM,WACN,WAAYM,EACVL,GAAA,YAAAA,EAAU,QAAQ,aAClBC,EAAAD,GAAA,YAAAA,EAAU,OAAV,YAAAC,EAAgB,KAClB,EACA,IAAKD,GAAA,YAAAA,EAAU,QAAQ,YACvB,OAAQA,GAAA,YAAAA,EAAU,MAAM,OACxB,MAAOA,GAAA,YAAAA,EAAU,MACjB,WAAWI,EAAAJ,GAAA,YAAAA,EAAU,QAAV,YAAAI,EAAiB,UAC5B,GAAGF,CACL,CAAC,EACDC,EAAQ,CACV,CAAC,CAWH,EAEWG,EAAuBP,GAAmBQ,GAAiB,CAvCxE,IAAAN,EAwCE,GAAI,GAACA,EAAAM,GAAA,YAAAA,EAAO,OAAP,MAAAN,EAAa,OAAO,OAEzB,IAAMC,EAAqBK,GAAA,YAAAA,EAAO,KAElC,IAAI,QAAeJ,GAAY,CA5CjC,IAAAF,KA6CI,QAAKF,EAAI,gBAAc,SAAU,CAC/B,KAAM,QACN,WAAYM,EAAiBE,EAAM,UAAUN,EAAAM,EAAM,OAAN,YAAAN,EAAY,KAAY,EACrE,IAAKM,EAAM,SACX,OAAQA,EAAM,MAAM,OACpB,MAAOA,EAAM,MACb,GAAGL,CACL,CAAC,EACDC,EAAQ,CACV,CAAC,CASH,ED1DO,IAAMK,EACX,uBAAsB,cAClB,KAAO,CAAC,GACPC,GAA6B,CAC5B,GAAM,CAAE,GAAAC,CAAG,KAAI,cAAW,iBAAe,EACnCC,EAAyB,EAAAC,QAAM,OAAmB,EAClDC,EAA4B,EAAAD,QAAM,OAAmB,EAE3D,SAAAA,QAAM,UAAU,IAAM,CACpB,GAAI,CAACF,EAAI,MAAO,IAAM,EAEtB,IAAMI,EAAaL,EAAY,cAAc,EAEvCM,EAAgBC,EAAoBN,CAAE,EAE5C,OAAAI,EAAW,OAAO,EAAE,QAAQC,CAAa,EAEzCJ,EAAuB,QAAUG,EAAW,UAC1C,CAAC,CAAE,MAAAG,EAAO,KAAAC,CAAK,KACZA,IAAS,SAAWA,IAAS,YAAcH,EAAcE,CAAK,CACnE,EAEO,IAAM,CA3BvB,IAAAE,GA4BYA,EAAAR,EAAuB,UAAvB,MAAAQ,EAAA,KAAAR,EACF,CACF,EAAG,CAACD,EAAID,CAAW,CAAC,EAEpB,EAAAG,QAAM,UAAU,IAAM,CACpB,GAAI,CAACF,EAAI,MAAO,IAAM,EAEtB,IAAMU,EAAgBX,EAAY,iBAAiB,EAE7CY,EAAmBC,EAAuBZ,CAAE,EAElD,OAAAU,EAAc,OAAO,EAAE,QAAQC,CAAgB,EAE/CR,EAA0B,QAAUO,EAAc,UAChD,CAAC,CAAE,SAAAG,EAAU,KAAAL,CAAK,KACfA,IAAS,SAAWA,IAAS,YAC9BG,EAAiBE,CAAQ,CAC7B,EAEO,IAAM,CA/CvB,IAAAJ,GAgDYA,EAAAN,EAA0B,UAA1B,MAAAM,EAAA,KAAAN,EACF,CACF,EAAG,CAACH,EAAID,CAAW,CAAC,EAEb,CAAC,CACV","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","error","stack","ErrorStackParser","cleanStack","frame","isRefineStack","getPackageNameFromFilename","trace","import_devtools_shared","getResourcePath","hookName","legacyKey","getXRay","hookName","legacyKey","trace","getTrace","resourcePath","getResourcePath","import_devtools_shared","import_react","import_devtools_shared","createIdentifier","key","trace","simpleTrace","createMutationListener","ws","mutation","_a","meta","resolve","_b","createIdentifier","createQueryListener","query","useQuerySubscription","queryClient","ws","queryCacheSubscription","React","mutationCacheSubscription","queryCache","queryListener","createQueryListener","query","type","_a","mutationCache","mutationListener","createMutationListener","mutation"]}
@@ -1 +1 @@
1
- {"version":3,"file":"listeners.d.ts","sourceRoot":"","sources":["../src/listeners.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAKxD,eAAO,MAAM,sBAAsB,OAC1B,SAAS,iBAAiB,QAAQ,SA8BtC,CAAC;AAEN,eAAO,MAAM,mBAAmB,OAAQ,SAAS,aAAa,KAAK,SA2BlE,CAAC"}
1
+ {"version":3,"file":"listeners.d.ts","sourceRoot":"","sources":["../src/listeners.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAKxD,eAAO,MAAM,sBAAsB,OAC5B,SAAS,iBAAiB,QAAQ,SA8BtC,CAAC;AAEJ,eAAO,MAAM,mBAAmB,OAAQ,SAAS,aAAa,KAAK,SAwBlE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-query-subscription.d.ts","sourceRoot":"","sources":["../src/use-query-subscription.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,eAAO,MAAM,oBAAoB,gBAGT,WAAW,OA8CxB,CAAC"}
1
+ {"version":3,"file":"use-query-subscription.d.ts","sourceRoot":"","sources":["../src/use-query-subscription.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,eAAO,MAAM,oBAAoB,gBAGb,WAAW,OA6CxB,CAAC"}
package/package.json CHANGED
@@ -1,41 +1,37 @@
1
1
  {
2
- "version": "1.1.4",
2
+ "name": "@refinedev/devtools-internal",
3
+ "version": "1.1.6",
4
+ "private": false,
5
+ "description": "refine devtools offers a set of features from monitoring to quickly prototyping a UI.",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/refinedev/refine.git",
9
+ "directory": "packages/devtools"
10
+ },
3
11
  "license": "MIT",
12
+ "author": "refine",
13
+ "sideEffects": false,
4
14
  "main": "dist/index.js",
15
+ "module": "dist/esm/index.js",
5
16
  "typings": "dist/index.d.ts",
6
- "private": false,
7
- "sideEffects": false,
8
17
  "files": [
9
18
  "dist",
10
19
  "src"
11
20
  ],
12
- "engines": {
13
- "node": ">=10"
14
- },
15
21
  "scripts": {
16
- "start": "tsup --watch --format esm,cjs,iife --legacy-output",
17
22
  "build": "tsup --format esm,cjs,iife --minify --legacy-output",
18
- "test": "jest --passWithNoTests --runInBand",
19
- "prepare": "npm run build"
23
+ "dev": "tsup --watch --format esm,cjs,iife --legacy-output",
24
+ "prepare": "npm run build",
25
+ "test": "jest --passWithNoTests --runInBand"
20
26
  },
21
- "name": "@refinedev/devtools-internal",
22
- "description": "refine devtools offers a set of features from monitoring to quickly prototyping a UI.",
23
- "author": "refine",
24
- "module": "dist/esm/index.js",
25
27
  "dependencies": {
26
- "@refinedev/devtools-shared": "1.1.2",
28
+ "@refinedev/devtools-shared": "1.1.4",
27
29
  "@tanstack/react-query": "^4.10.1",
28
30
  "error-stack-parser": "^2.1.4"
29
31
  },
30
- "peerDependencies": {
31
- "react": "^17.0.0 || ^18.0.0",
32
- "react-dom": "^17.0.0 || ^18.0.0",
33
- "@types/react": "^17.0.0 || ^18.0.0",
34
- "@types/react-dom": "^17.0.0 || ^18.0.0"
35
- },
36
32
  "devDependencies": {
37
- "@testing-library/jest-dom": "^5.16.4",
38
33
  "@esbuild-plugins/node-resolve": "^0.1.4",
34
+ "@testing-library/jest-dom": "^5.16.4",
39
35
  "@types/jest": "^29.2.4",
40
36
  "jest": "^29.3.1",
41
37
  "jest-environment-jsdom": "^29.3.1",
@@ -44,13 +40,17 @@
44
40
  "tslib": "^2.3.1",
45
41
  "tsup": "^6.7.0"
46
42
  },
47
- "repository": {
48
- "type": "git",
49
- "url": "https://github.com/refinedev/refine.git",
50
- "directory": "packages/devtools"
43
+ "peerDependencies": {
44
+ "@types/react": "^17.0.0 || ^18.0.0",
45
+ "@types/react-dom": "^17.0.0 || ^18.0.0",
46
+ "react": "^17.0.0 || ^18.0.0",
47
+ "react-dom": "^17.0.0 || ^18.0.0"
48
+ },
49
+ "engines": {
50
+ "node": ">=10"
51
51
  },
52
- "gitHead": "829f5a516f98c06f666d6be3e6e6099c75c07719",
53
52
  "publishConfig": {
54
53
  "access": "public"
55
- }
54
+ },
55
+ "gitHead": "829f5a516f98c06f666d6be3e6e6099c75c07719"
56
56
  }
@@ -3,13 +3,13 @@ import type { StackFrame } from "error-stack-parser";
3
3
  const unrelatedFunctionName = "renderWithHooks";
4
4
 
5
5
  export const cleanStack = (stack: StackFrame[]) => {
6
- const firstUnrelatedIndex = stack.findIndex(
7
- (frame) => frame.functionName === unrelatedFunctionName,
8
- );
6
+ const firstUnrelatedIndex = stack.findIndex(
7
+ (frame) => frame.functionName === unrelatedFunctionName,
8
+ );
9
9
 
10
- if (firstUnrelatedIndex !== -1) {
11
- return stack.slice(0, firstUnrelatedIndex);
12
- }
10
+ if (firstUnrelatedIndex !== -1) {
11
+ return stack.slice(0, firstUnrelatedIndex);
12
+ }
13
13
 
14
- return stack;
14
+ return stack;
15
15
  };
package/src/constants.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export const REFINE_PACKAGE_FILEPATH_REGEXP =
2
- __DEV_CONDITION__ !== "development"
3
- ? /node_modules\/refinedev\/(?<name>.*?)\//
4
- : /\/refine\/packages\/(?<name>.*?)\//;
2
+ __DEV_CONDITION__ !== "development"
3
+ ? /node_modules\/refinedev\/(?<name>.*?)\//
4
+ : /\/refine\/packages\/(?<name>.*?)\//;
@@ -2,16 +2,16 @@ import { TraceType } from "@refinedev/devtools-shared";
2
2
  import { MutationKey, QueryKey } from "@tanstack/react-query";
3
3
 
4
4
  export const createIdentifier = (
5
- key?: QueryKey | MutationKey,
6
- trace?: TraceType[],
5
+ key?: QueryKey | MutationKey,
6
+ trace?: TraceType[],
7
7
  ) => {
8
- const simpleTrace = trace?.map(
9
- (t) =>
10
- `${t.file}:${t.line}:${t.column}#${t.function}-${t.packageName}-${
11
- t.isRefine ? 1 : 0
12
- }`,
13
- );
14
- const str = JSON.stringify([...(key ?? []), ...(simpleTrace ?? [])]);
8
+ const simpleTrace = trace?.map(
9
+ (t) =>
10
+ `${t.file}:${t.line}:${t.column}#${t.function}-${t.packageName}-${
11
+ t.isRefine ? 1 : 0
12
+ }`,
13
+ );
14
+ const str = JSON.stringify([...(key ?? []), ...(simpleTrace ?? [])]);
15
15
 
16
- return str;
16
+ return str;
17
17
  };
@@ -1,13 +1,13 @@
1
1
  import { REFINE_PACKAGE_FILEPATH_REGEXP } from "./constants";
2
2
 
3
3
  export const getPackageNameFromFilename = (filename?: string) => {
4
- if (!filename) return;
4
+ if (!filename) return;
5
5
 
6
- const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);
6
+ const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);
7
7
 
8
- const name = match?.groups?.name;
8
+ const name = match?.groups?.name;
9
9
 
10
- if (!name) return;
10
+ if (!name) return;
11
11
 
12
- return `@refinedev/${name}`;
12
+ return `@refinedev/${name}`;
13
13
  };
@@ -1,55 +1,53 @@
1
1
  import {
2
- DevtoolsEvent,
3
- DevtoolsEventPayloads,
4
- RefineHook,
5
- scopes,
2
+ DevtoolsEvent,
3
+ DevtoolsEventPayloads,
4
+ RefineHook,
5
+ scopes,
6
6
  } from "@refinedev/devtools-shared";
7
7
 
8
8
  export type Activity =
9
- DevtoolsEventPayloads[DevtoolsEvent.DEVTOOLS_ACTIVITY_UPDATE]["updatedActivities"][number];
9
+ DevtoolsEventPayloads[DevtoolsEvent.DEVTOOLS_ACTIVITY_UPDATE]["updatedActivities"][number];
10
10
 
11
11
  export const getResourcePath = (
12
- hookName: RefineHook,
13
- legacyKey: boolean,
12
+ hookName: RefineHook,
13
+ legacyKey: boolean,
14
14
  ): string | null => {
15
- if (scopes[hookName] === "auth") {
16
- return null;
15
+ if (scopes[hookName] === "auth") {
16
+ return null;
17
+ }
18
+ if (hookName === "useCan") {
19
+ if (legacyKey) {
20
+ return "key[1].resource";
17
21
  }
18
- if (hookName === "useCan") {
19
- if (legacyKey) {
20
- return "key[1].resource";
21
- } else {
22
- return "key[1]";
23
- }
22
+ return "key[1]";
23
+ }
24
+ if (scopes[hookName] === "audit-log") {
25
+ if (hookName === "useLog") {
26
+ return "variables.resource";
24
27
  }
25
- if (scopes[hookName] === "audit-log") {
26
- if (hookName === "useLog") {
27
- return "variables.resource";
28
- }
29
- return "key[1]";
28
+ return "key[1]";
29
+ }
30
+ if (scopes[hookName] === "data") {
31
+ if (hookName === "useCustom" || hookName === "useCustomMutation") {
32
+ return null;
30
33
  }
31
- if (scopes[hookName] === "data") {
32
- if (hookName === "useCustom" || hookName === "useCustomMutation") {
33
- return null;
34
- }
35
- switch (hookName) {
36
- case "useList":
37
- case "useInfiniteList":
38
- case "useOne":
39
- case "useMany":
40
- if (legacyKey) {
41
- return "key[1]";
42
- } else {
43
- return "key[2]";
44
- }
45
- case "useCreate":
46
- case "useCreateMany":
47
- case "useDelete":
48
- case "useDeleteMany":
49
- case "useUpdate":
50
- case "useUpdateMany":
51
- return "variables.resource";
34
+ switch (hookName) {
35
+ case "useList":
36
+ case "useInfiniteList":
37
+ case "useOne":
38
+ case "useMany":
39
+ if (legacyKey) {
40
+ return "key[1]";
52
41
  }
42
+ return "key[2]";
43
+ case "useCreate":
44
+ case "useCreateMany":
45
+ case "useDelete":
46
+ case "useDeleteMany":
47
+ case "useUpdate":
48
+ case "useUpdateMany":
49
+ return "variables.resource";
53
50
  }
54
- return null;
51
+ }
52
+ return null;
55
53
  };
package/src/get-trace.ts CHANGED
@@ -5,31 +5,28 @@ import { getPackageNameFromFilename } from "./get-package-name-from-filename";
5
5
  import { TraceType } from "@refinedev/devtools-shared";
6
6
 
7
7
  export function getTrace() {
8
- if (__DEV_CONDITION__ !== "development") {
9
- return [];
10
- } else {
11
- try {
12
- const error = new Error();
13
- const stack = ErrorStackParser.parse(error);
14
- const clean = cleanStack(stack);
15
- const traces = clean
16
- .map(
17
- (frame) =>
18
- ({
19
- file: frame.fileName,
20
- line: frame.lineNumber,
21
- column: frame.columnNumber,
22
- function: frame.functionName,
23
- isRefine: isRefineStack(frame.fileName),
24
- packageName: getPackageNameFromFilename(
25
- frame.fileName,
26
- ),
27
- } as TraceType),
28
- )
29
- .filter((trace) => trace.function);
30
- return traces.slice(1);
31
- } catch (error) {
32
- return [];
33
- }
34
- }
8
+ if (__DEV_CONDITION__ !== "development") {
9
+ return [];
10
+ }
11
+ try {
12
+ const error = new Error();
13
+ const stack = ErrorStackParser.parse(error);
14
+ const clean = cleanStack(stack);
15
+ const traces = clean
16
+ .map(
17
+ (frame) =>
18
+ ({
19
+ file: frame.fileName,
20
+ line: frame.lineNumber,
21
+ column: frame.columnNumber,
22
+ function: frame.functionName,
23
+ isRefine: isRefineStack(frame.fileName),
24
+ packageName: getPackageNameFromFilename(frame.fileName),
25
+ }) as TraceType,
26
+ )
27
+ .filter((trace) => trace.function);
28
+ return traces.slice(1);
29
+ } catch (error) {
30
+ return [];
31
+ }
35
32
  }
package/src/get-xray.ts CHANGED
@@ -3,30 +3,29 @@ import { getTrace } from "./get-trace";
3
3
  import { getResourcePath } from "./get-resource-path";
4
4
 
5
5
  export type XRayResponse = {
6
- hookName: string;
7
- trace: TraceType[];
8
- resourcePath: string | null;
9
- legacyKey: boolean;
6
+ hookName: string;
7
+ trace: TraceType[];
8
+ resourcePath: string | null;
9
+ legacyKey: boolean;
10
10
  };
11
11
 
12
12
  export function getXRay(hookName: string, legacyKey: boolean): XRayResponse {
13
- if (__DEV_CONDITION__ !== "development") {
14
- return {
15
- hookName: "",
16
- trace: [],
17
- resourcePath: null,
18
- legacyKey: false,
19
- };
20
- } else {
21
- const trace = getTrace().slice(1);
13
+ if (__DEV_CONDITION__ !== "development") {
14
+ return {
15
+ hookName: "",
16
+ trace: [],
17
+ resourcePath: null,
18
+ legacyKey: false,
19
+ };
20
+ }
21
+ const trace = getTrace().slice(1);
22
22
 
23
- const resourcePath = getResourcePath(hookName as RefineHook, legacyKey);
23
+ const resourcePath = getResourcePath(hookName as RefineHook, legacyKey);
24
24
 
25
- return {
26
- hookName,
27
- trace,
28
- resourcePath,
29
- legacyKey,
30
- };
31
- }
25
+ return {
26
+ hookName,
27
+ trace,
28
+ resourcePath,
29
+ legacyKey,
30
+ };
32
31
  }
@@ -1,9 +1,9 @@
1
1
  import { REFINE_PACKAGE_FILEPATH_REGEXP } from "./constants";
2
2
 
3
3
  export const isRefineStack = (filename?: string) => {
4
- if (!filename) return false;
4
+ if (!filename) return false;
5
5
 
6
- const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);
6
+ const match = filename.match(REFINE_PACKAGE_FILEPATH_REGEXP);
7
7
 
8
- return !!match;
8
+ return !!match;
9
9
  };
package/src/listeners.ts CHANGED
@@ -5,63 +5,60 @@ import { createIdentifier } from "./create-identifier";
5
5
  import { XRayResponse } from "./get-xray";
6
6
 
7
7
  export const createMutationListener =
8
- (ws: WebSocket) => (mutation?: Mutation) => {
9
- if (!mutation?.meta?.trace) return;
8
+ (ws: WebSocket) => (mutation?: Mutation) => {
9
+ if (!mutation?.meta?.trace) return;
10
10
 
11
- const meta: XRayResponse = mutation?.meta as any;
11
+ const meta: XRayResponse = mutation?.meta as any;
12
12
 
13
- new Promise<void>((resolve) => {
14
- send(ws, DevtoolsEvent.ACTIVITY, {
15
- type: "mutation",
16
- identifier: createIdentifier(
17
- mutation?.options.mutationKey,
18
- mutation?.meta?.trace as any,
19
- ),
20
- key: mutation?.options.mutationKey as any,
21
- status: mutation?.state.status,
22
- state: mutation?.state,
23
- variables: mutation?.state?.variables,
24
- ...meta,
25
- });
26
- resolve();
27
- });
13
+ new Promise<void>((resolve) => {
14
+ send(ws, DevtoolsEvent.ACTIVITY, {
15
+ type: "mutation",
16
+ identifier: createIdentifier(
17
+ mutation?.options.mutationKey,
18
+ mutation?.meta?.trace as any,
19
+ ),
20
+ key: mutation?.options.mutationKey as any,
21
+ status: mutation?.state.status,
22
+ state: mutation?.state,
23
+ variables: mutation?.state?.variables,
24
+ ...meta,
25
+ });
26
+ resolve();
27
+ });
28
28
 
29
- // console.table({
30
- // type: "mutation",
31
- // key: mutation?.options.mutationKey,
32
- // id: mutation?.mutationId,
33
- // status: mutation?.state.status,
34
- // trace: mutation?.meta?.trace,
35
- // state: mutation?.state,
36
- // variables: mutation?.state?.variables,
37
- // });
38
- };
29
+ // console.table({
30
+ // type: "mutation",
31
+ // key: mutation?.options.mutationKey,
32
+ // id: mutation?.mutationId,
33
+ // status: mutation?.state.status,
34
+ // trace: mutation?.meta?.trace,
35
+ // state: mutation?.state,
36
+ // variables: mutation?.state?.variables,
37
+ // });
38
+ };
39
39
 
40
40
  export const createQueryListener = (ws: WebSocket) => (query: Query) => {
41
- if (!query?.meta?.trace) return;
41
+ if (!query?.meta?.trace) return;
42
42
 
43
- const meta: XRayResponse = query?.meta as any;
43
+ const meta: XRayResponse = query?.meta as any;
44
44
 
45
- new Promise<void>((resolve) => {
46
- send(ws, DevtoolsEvent.ACTIVITY, {
47
- type: "query",
48
- identifier: createIdentifier(
49
- query.queryKey,
50
- query.meta?.trace as any,
51
- ),
52
- key: query.queryKey as any,
53
- status: query.state.status,
54
- state: query.state,
55
- ...meta,
56
- });
57
- resolve();
45
+ new Promise<void>((resolve) => {
46
+ send(ws, DevtoolsEvent.ACTIVITY, {
47
+ type: "query",
48
+ identifier: createIdentifier(query.queryKey, query.meta?.trace as any),
49
+ key: query.queryKey as any,
50
+ status: query.state.status,
51
+ state: query.state,
52
+ ...meta,
58
53
  });
54
+ resolve();
55
+ });
59
56
 
60
- // console.table({
61
- // type: "query",
62
- // key: query.queryKey,
63
- // status: query.state.status,
64
- // trace: query.meta?.trace,
65
- // state: query.state,
66
- // });
57
+ // console.table({
58
+ // type: "query",
59
+ // key: query.queryKey,
60
+ // status: query.state.status,
61
+ // trace: query.meta?.trace,
62
+ // state: query.state,
63
+ // });
67
64
  };
@@ -4,52 +4,51 @@ import React, { useContext } from "react";
4
4
  import { createQueryListener, createMutationListener } from "./listeners";
5
5
 
6
6
  export const useQuerySubscription =
7
- __DEV_CONDITION__ !== "development"
8
- ? () => ({})
9
- : (queryClient: QueryClient) => {
10
- const { ws } = useContext(DevToolsContext);
11
- const queryCacheSubscription = React.useRef<() => void>();
12
- const mutationCacheSubscription = React.useRef<() => void>();
7
+ __DEV_CONDITION__ !== "development"
8
+ ? () => ({})
9
+ : (queryClient: QueryClient) => {
10
+ const { ws } = useContext(DevToolsContext);
11
+ const queryCacheSubscription = React.useRef<() => void>();
12
+ const mutationCacheSubscription = React.useRef<() => void>();
13
13
 
14
- React.useEffect(() => {
15
- if (!ws) return () => 0;
14
+ React.useEffect(() => {
15
+ if (!ws) return () => 0;
16
16
 
17
- const queryCache = queryClient.getQueryCache();
17
+ const queryCache = queryClient.getQueryCache();
18
18
 
19
- const queryListener = createQueryListener(ws);
19
+ const queryListener = createQueryListener(ws);
20
20
 
21
- queryCache.getAll().forEach(queryListener);
21
+ queryCache.getAll().forEach(queryListener);
22
22
 
23
- queryCacheSubscription.current = queryCache.subscribe(
24
- ({ query, type }) =>
25
- (type === "added" || type === "updated") &&
26
- queryListener(query),
27
- );
23
+ queryCacheSubscription.current = queryCache.subscribe(
24
+ ({ query, type }) =>
25
+ (type === "added" || type === "updated") && queryListener(query),
26
+ );
28
27
 
29
- return () => {
30
- queryCacheSubscription.current?.();
31
- };
32
- }, [ws, queryClient]);
33
-
34
- React.useEffect(() => {
35
- if (!ws) return () => 0;
28
+ return () => {
29
+ queryCacheSubscription.current?.();
30
+ };
31
+ }, [ws, queryClient]);
36
32
 
37
- const mutationCache = queryClient.getMutationCache();
33
+ React.useEffect(() => {
34
+ if (!ws) return () => 0;
38
35
 
39
- const mutationListener = createMutationListener(ws);
36
+ const mutationCache = queryClient.getMutationCache();
40
37
 
41
- mutationCache.getAll().forEach(mutationListener);
38
+ const mutationListener = createMutationListener(ws);
42
39
 
43
- mutationCacheSubscription.current = mutationCache.subscribe(
44
- ({ mutation, type }) =>
45
- (type === "added" || type === "updated") &&
46
- mutationListener(mutation),
47
- );
40
+ mutationCache.getAll().forEach(mutationListener);
48
41
 
49
- return () => {
50
- mutationCacheSubscription.current?.();
51
- };
52
- }, [ws, queryClient]);
42
+ mutationCacheSubscription.current = mutationCache.subscribe(
43
+ ({ mutation, type }) =>
44
+ (type === "added" || type === "updated") &&
45
+ mutationListener(mutation),
46
+ );
53
47
 
54
- return {};
48
+ return () => {
49
+ mutationCacheSubscription.current?.();
55
50
  };
51
+ }, [ws, queryClient]);
52
+
53
+ return {};
54
+ };