bippy 0.7.3-dev.8ba0705 → 0.7.3-dev.e2b879b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -0
- package/README.md +8 -0
- package/dist/core.cjs +1 -1
- package/dist/core.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +6 -3
- package/dist/index.d.ts +6 -3
- package/dist/index.js +1 -1
- package/dist/rdt-hook.cjs +1 -1
- package/dist/rdt-hook.js +1 -1
- package/dist/source.cjs +12 -12
- package/dist/source.js +13 -13
- package/package.json +3 -31
- package/src/core.ts +66 -65
- package/src/rdt-hook.ts +2 -0
- package/src/react-internals/current-fiber.ts +84 -0
- package/src/react-internals/index.ts +6 -1
- package/src/react.ts +37 -16
- package/src/source/inspect-hooks.ts +24 -18
- package/src/source/parse-debug-stack.ts +1 -1
package/dist/source.js
CHANGED
|
@@ -6,19 +6,19 @@
|
|
|
6
6
|
* This source code is licensed under the MIT license found in the
|
|
7
7
|
* LICENSE file in the root directory of this source tree.
|
|
8
8
|
*/
|
|
9
|
-
import{i as e,n as t,u as n}from"./rdt-hook.js";import{C as r,E as i,O as a,S as o,T as s,b as c,d as l,i as u,u as d,w as
|
|
10
|
-
`),n=[];for(let e of t)if(/^\s*at\s+/.test(e)){let t=
|
|
11
|
-
`).filter(e=>!!e.match(
|
|
12
|
-
`).filter(e=>!e.match(
|
|
13
|
-
`,t));return{frames:
|
|
14
|
-
`,a-1)+1,n=t.slice(e,a).match(
|
|
15
|
-
`),i=r===-1?t:t.slice(r+1);if(i.includes(e))return`\n${i}`}return M(`${e}${t?` [${t}]`:``}`)};let N=!1;const P=new WeakMap,F=(e,t)=>{if(!e||N)return``;let n=P.get(e);if(n!==void 0)return n;let r=
|
|
9
|
+
import{i as e,n as t,u as n}from"./rdt-hook.js";import{C as r,E as i,O as a,S as o,T as s,b as c,d as l,i as u,u as d,w as ee}from"./core.js";const f=/^[a-zA-Z][a-zA-Z\d+\-.]*:/,p=[`rsc://`,`file:///`,`webpack-internal://`,`webpack://`,`node:`,`turbopack://`,`metro://`,`/app-pages-browser/`,`/(app-pages-browser)/`],te=[`rsc://`,`about://React/`],ne=[`<anonymous>`,`eval`,``],re=/\.(cjs|cts|js|jsx|mdx|mjs|mts|ts|tsx)$/,ie=/(\.min|bundle|chunk|vendor|vendors|runtime|polyfill|polyfills)\.(js|mjs|cjs)$|(chunk|bundle|vendor|vendors|runtime|polyfill|polyfills|framework|app|main|index)[-_.][A-Za-z0-9_-]{4,}\.(js|mjs|cjs)$|[\da-f]{8,}\.(js|mjs|cjs)$|[-_.][\da-f]{20,}\.(js|mjs|cjs)$|\/dist\/|\/build\/|\/.next\/|\/out\/|\/node_modules\/|\.webpack\.|\.vite\.|\.turbopack\./i,ae=/^\?[\w~.-]+(?:=[^&#]*)?(?:&[\w~.-]+(?:=[^&#]*)?)*$/,oe=/\[[^\]]+\]$/,m=[`react_stack_bottom_frame`,`react-stack-bottom-frame`],se=Error,ce=()=>se.prepareStackTrace,h=e=>{se.prepareStackTrace=e},le=/(^|@)\S+:\d+/,ue=/^\s*at .*(\S+:\d+|\(native\))/m,de=/^(eval@)?(\[native code\])?$/,g=(e,t)=>{if(t?.includeInElement!==!1){let t=e.split(`
|
|
10
|
+
`),n=[];for(let e of t)if(/^\s*at\s+/.test(e)){let t=pe(e)[0];t&&n.push(t)}else if(/^\s*in\s+/.test(e)){let t=e.replace(/^\s*in\s+/,``).replace(/\s*(?:\(at .*\)|\[[^\]]+\])$/,``);n.push({functionName:t,source:e})}else if(e.match(le)){let t=me(e)[0];t&&n.push(t)}return n}return e.match(ue)?pe(e):me(e)},fe=e=>{if(!e.includes(`:`))return[e,void 0,void 0];let t=e.startsWith(`(`)&&/:\d+\)$/.test(e)?e.slice(1,-1):e,n=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(t);return n?[n[1],n[2]||void 0,n[3]||void 0]:[t,void 0,void 0]},pe=e=>e.split(`
|
|
11
|
+
`).filter(e=>!!e.match(ue)).map(e=>{let t=e;t.includes(`(eval `)&&(t=t.replace(/eval code/g,`eval`).replace(/(\(eval at [^()]*)|(,.*$)/g,``));let n=t.replace(/^\s+/,``).replace(/\(eval code/g,`(`).replace(/^.*?\s+/,``),r=n.match(/ (\(.+\)$)/);n=r?n.replace(r[0],``):n;let i=fe(r?r[1]:n);return{functionName:r&&n||void 0,fileName:[`eval`,`<anonymous>`,`(native)`].includes(i[0])?void 0:i[0],lineNumber:i[1]?+i[1]:void 0,columnNumber:i[2]?+i[2]:void 0,source:t}}),me=e=>e.split(`
|
|
12
|
+
`).filter(e=>!e.match(de)).map(e=>{let t=e;if(t.includes(` > eval`)&&(t=t.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,`:$1`)),!t.includes(`@`)&&!t.includes(`:`))return{functionName:t};{let e=/(([^\n\r"\u2028\u2029]*".[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*(?:@[^\n\r"\u2028\u2029]*"[^\n\r@\u2028\u2029]*)*(?:[\n\r\u2028\u2029][^@]*)?)?[^@]*)@/,n=t.match(e),r=n&&n[1]?n[1]:void 0,i=fe(t.replace(e,``));return{functionName:r,fileName:i[0],lineNumber:i[1]?+i[1]:void 0,columnNumber:i[2]?+i[2]:void 0,source:t}}}),he=new WeakMap,ge=e=>m.some(t=>e.includes(t)),_e=e=>{let t=e.getFunctionName?.()??``;if(t)return t;let n=e.getTypeName?.()??``,r=e.getMethodName?.()??``;return n&&r?`${n}.${r}`:r},ve=e=>{let t=[];for(let n=1;n<e.length;n++){let r=e[n],i=_e(r);if(ge(i))return{frames:t,isTrusted:!0};if(r.isNative?.()){t.push({functionName:i||void 0});continue}let a=r.getScriptNameOrSourceURL?.()??``;!a&&r.isEval?.()&&(a=r.getEvalOrigin?.()??``),t.push({functionName:i&&i!==`<anonymous>`?i:void 0,fileName:a&&a!==`<anonymous>`?a:void 0,lineNumber:r.getLineNumber?.()??void 0,columnNumber:r.getColumnNumber?.()??void 0,enclosingLineNumber:r.getEnclosingLineNumber?.()??void 0,enclosingColumnNumber:r.getEnclosingColumnNumber?.()??void 0,source:` at ${r.toString()}`})}return{frames:t,isTrusted:!1}},ye=e=>{let t=-1;for(let n of m)if(t=e.indexOf(n),t!==-1)break;let n=t===-1?e:e.slice(0,e.lastIndexOf(`
|
|
13
|
+
`,t));return{frames:g(n).slice(1),isTrusted:t!==-1}},_=e=>{let t=he.get(e);if(t)return t;let n=null,r=(e,t)=>{n=ve(t);let r=`${e.name||`Error`}: ${e.message||``}`;for(let e of t)r+=`\n at ${e.toString()}`;return r},i=ce();h(r);let a;try{a=String(e.stack)}finally{h(i)}let o=n??ye(a);return he.set(e,o),o},be=(r=globalThis)=>{let i=e(void 0,r),a=n(i.renderers)?i.renderers.values():[],o=r===globalThis?new Set([...t,...a]):new Set(a),s=[],c=new Set;for(let e of o){let t=e.currentDispatcherRef;!t||c.has(t)||(c.add(t),s.push(t))}return s},xe=e=>`H`in e?e.H:e.current,v=(e,t)=>{`H`in e?e.H=t:e.current=t};var Se=44,Ce=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,we=new Uint8Array(64),Te=new Uint8Array(128);for(let e=0;e<Ce.length;e++){let t=Ce.charCodeAt(e);we[e]=t,Te[t]=e}function y(e,t){let n=0,r=0,i=0;do i=Te[e.next()],n|=(i&31)<<r,r+=5;while(i&32);let a=n&1;return n>>>=1,a&&(n=-2147483648|-n),t+n}function Ee(e,t){return e.pos>=t?!1:e.peek()!==Se}var De=class{constructor(e){this.pos=0,this.buffer=e}next(){return this.buffer.charCodeAt(this.pos++)}peek(){return this.buffer.charCodeAt(this.pos)}indexOf(e){let{buffer:t,pos:n}=this,r=t.indexOf(e,n);return r===-1?t.length:r}};function Oe(e){let{length:t}=e,n=new De(e),r=[],i=0,a=0,o=0,s=0,c=0;do{let e=n.indexOf(`;`),t=[],l=!0,u=0;for(i=0;n.pos<e;){let r;i=y(n,i),i<u&&(l=!1),u=i,Ee(n,e)?(a=y(n,a),o=y(n,o),s=y(n,s),Ee(n,e)?(c=y(n,c),r=[i,a,o,s,c]):r=[i,a,o,s]):r=[i],t.push(r),n.pos++}l||ke(t),r.push(t),n.pos=e+1}while(n.pos<=t);return r}function ke(e){e.sort(Ae)}function Ae(e,t){return e[0]-t[0]}const b=/^data:application\/json(?:;[^,]*)?,/i,je=/(?:\/\/[@#][ \t]+sourceMappingURL=([^\s'"]+?)[ \t]*$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^*]+?)[ \t]*(?:\*\/)[ \t]*$)/,Me=new Map,Ne=new WeakMap;var Pe=class extends Error{};const Fe=new Map,Ie=new WeakMap,Le=new Set([`chrome-extension:`,`moz-extension:`,`safari-web-extension:`]),x=new Set([`http:`,`https:`,...Le]),Re=(e,t,n,r)=>{let[,i,a,o,s]=e;if(i===void 0||a===void 0||o===void 0)return null;let c=t[i];return c?{columnNumber:o,fileName:c,functionName:s===void 0?void 0:r?.[s]||void 0,isIgnoreListed:n?.has(i)??!1,lineNumber:a+1}:null},ze=(e,t,n,r,i,a)=>{if(n<0||n>=e.length)return null;let o=e[n];if(!o||o.length===0)return null;let s=null,c=0,l=o.length-1;for(;c<=l;){let e=c+l>>1;o[e][0]<=r?(s=o[e],c=e+1):l=e-1}return!s||s.length<4?null:Re(s,t,i,a)},S=(e,t,n)=>{if(e.sections){let r=t-1,i=null;for(let t of e.sections)if(r>t.offset.line||r===t.offset.line&&n>=t.offset.column)i=t;else break;if(!i)return null;let a=r-i.offset.line,o=r===i.offset.line?n-i.offset.column:n;return ze(i.map.mappings,i.map.sources,a,o,i.map.ignoredSourceIndices,i.map.names)}return ze(e.mappings,e.sources,t-1,n,e.ignoredSourceIndices,e.names)},Be=(e,t,n,r,i)=>{if(!n)return null;let a=n.indexOf(r);if(a===-1)return null;let o=null;for(let r of e)for(let e of r){if(e[4]!==a)continue;let r=Re(e,t,i,n);if(r){if(!r.isIgnoreListed)return r;o??=r}}return o},Ve=(e,t)=>{if(e.sections){let n=null;for(let r of e.sections){let e=Be(r.map.mappings,r.map.sources,r.map.names,t,r.map.ignoredSourceIndices);if(e){if(!e.isIgnoreListed)return e;n??=e}}return n}return Be(e.mappings,e.sources,e.names,t,e.ignoredSourceIndices)},He=(e,t,n)=>{if(!t)return null;let r=e.indexOf(n);return r===-1?null:t[r]??null},C=(e,t)=>{let n=He(e.sources,e.sourcesContent,t);if(n!==null)return n;if(!e.sections)return null;for(let n of e.sections){let e=He(n.map.sources,n.map.sourcesContent,t);if(e!==null)return e}return null},w=(e,t)=>{if(b.test(e))return e;try{return new URL(e,t).toString()}catch{try{return new URL(e).toString()}catch{try{let n=new URL(e,new URL(t,`https://bippy.invalid/`));return`${n.pathname}${n.search}${n.hash}`}catch{return null}}}},Ue=e=>{try{let t=new URL(e),n=t.pathname.lastIndexOf(`.bundle`);if(n===-1)return null;let r=t.pathname.slice(n+7);if(r&&!r.startsWith(`//&`))return null;if(t.pathname=`${t.pathname.slice(0,n)}.map`,r){let e=new URLSearchParams(r.slice(3));for(let[n,r]of e)t.searchParams.set(n,r)}return t.hash=``,t.toString()}catch{return null}},We=(e,t,n)=>{let r=n.headers.get(`sourcemap`)??n.headers.get(`x-sourcemap`);if(r)return w(r.trim(),e);let i,a=t.length;for(;a>0&&!i;){let e=t.lastIndexOf(`
|
|
14
|
+
`,a-1)+1,n=t.slice(e,a).match(je);n&&(i=n[1]||n[2]),a=e-1}return i?w(i,e):Ue(e)},T=e=>{if(typeof e!=`object`||!e)return!1;let t=Reflect.get(e,`version`),n=Reflect.get(e,`mappings`),r=Reflect.get(e,`file`),i=Reflect.get(e,`names`),a=Reflect.get(e,`sourceRoot`),o=Reflect.get(e,`sources`),s=Reflect.get(e,`sourcesContent`),c=Reflect.get(e,`ignoreList`),l=Reflect.get(e,`x_google_ignoreList`);if(t!==3||typeof n!=`string`||r!==void 0&&typeof r!=`string`||i!==void 0&&(!Array.isArray(i)||i.some(e=>typeof e!=`string`))||a!==void 0&&typeof a!=`string`||s!==void 0&&(!Array.isArray(s)||s.some(e=>typeof e!=`string`&&e!==null))||c!==void 0&&(!Array.isArray(c)||c.some(e=>!Number.isInteger(e)||e<0))||l!==void 0&&(!Array.isArray(l)||l.some(e=>!Number.isInteger(e)||e<0))||!Array.isArray(o)||o.some(e=>typeof e!=`string`)||s&&s.length!==o.length)return!1;let u=o.length;return[...c??[],...l??[]].every(e=>e<u)},Ge=e=>{if(typeof e!=`object`||!e)return!1;let t=Reflect.get(e,`version`),n=Reflect.get(e,`sections`);return t!==3||!Array.isArray(n)?!1:n.every(e=>{if(typeof e!=`object`||!e)return!1;let t=Reflect.get(e,`map`),n=Reflect.get(e,`url`),r=Reflect.get(e,`offset`);if(typeof r!=`object`||!r)return!1;let i=Reflect.get(r,`column`),a=Reflect.get(r,`line`);return T(t)!==(typeof n==`string`&&n.length>0)&&typeof i==`number`&&Number.isInteger(i)&&i>=0&&typeof a==`number`&&Number.isInteger(a)&&a>=0})},Ke=e=>{let t=e.ignoreList??e.x_google_ignoreList;return t?.length?new Set(t):void 0},qe=(e,t,n)=>{if(!e||f.test(t)||t.startsWith(`/`))return t;let r=e.endsWith(`/`)?e:`${e}/`,i=t.replace(/^\.\//,``);try{let e=f.test(r)?r:new URL(r,n).toString();return new URL(i,e).toString()}catch{let e=`${r}${i}`.split(`/`),t=[];for(let n of e)n===`..`?t.pop():n!==`.`&&t.push(n);return t.join(`/`)}},Je=(e,t)=>e.sources.map(n=>qe(e.sourceRoot,n,t)),Ye=e=>b.test(e)?void 0:e,Xe=(e,t)=>{try{return{file:e.file,ignoredSourceIndices:Ke(e),mappings:Oe(e.mappings),names:e.names,sourceMapUrl:Ye(t),sourceRoot:e.sourceRoot,sources:Je(e,t),sourcesContent:e.sourcesContent,version:3}}catch{return null}},Ze=async(e,t,n)=>{let r=[],i=-1,a=-1;for(let o of e.sections){if(o.offset.line<i||o.offset.line===i&&o.offset.column<=a)return null;i=o.offset.line,a=o.offset.column;let e=o.url?w(o.url,t):null,s=o.map??(e?await n(e):null);if(!s)return null;let c=e??t;try{r.push({map:{...s,ignoredSourceIndices:Ke(s),mappings:Oe(s.mappings),sources:Je(s,c)},offset:o.offset})}catch{return null}}let o=new Set;for(let e of r)for(let t of e.map.sources)o.add(t);return{file:e.file,mappings:[],names:[],sections:r,sourceMapUrl:Ye(t),sourceRoot:void 0,sources:Array.from(o),sourcesContent:void 0,version:3}},Qe=(e,t=!1)=>{if(!e)return!1;let n=e.trim();if(!n)return!1;let r=n.match(f);if(!r)return!0;let i=r[0].toLowerCase();return t||x.has(i)},$e=()=>typeof window>`u`&&typeof process<`u`&&typeof process.versions?.node==`string`,et=e=>{try{let t=new URL(e);return(t.protocol===`http:`||t.protocol===`https:`)&&!t.username&&!t.password}catch{return!1}},E=e=>{try{return new URL(e).protocol}catch{return null}},D=e=>{let t=E(e);return t!==null&&Le.has(t)},tt=(e,t)=>{try{let n=new URL(e),r=new URL(t);return n.protocol===r.protocol&&n.host===r.host}catch{return!1}},nt=(e,t,n,r)=>{if(b.test(t))return!0;if(!Qe(t,r))return!1;let i=E(e),a=E(t),o=i!==null&&!x.has(i)||a!==null&&!x.has(a);return!(n||o||D(e)||D(t))||tt(e,t)},rt=e=>e===408||e===425||e===429||e>=500,it=e=>{if(e.ok)return!0;if(rt(e.status))throw new Pe;return!1},at=(e,t,n)=>!n||t.url.length===0||tt(e,t.url),ot=e=>{if(e.timeoutMs===void 0||e.timeoutMs<0)return{cleanup:()=>{},signal:e.signal};let t=new AbortController,n=()=>t.abort(e.signal?.reason);e.signal?.aborted?n():e.signal?.addEventListener(`abort`,n,{once:!0});let r=setTimeout(()=>t.abort(new s(`Source map request timed out`)),e.timeoutMs);return{cleanup:()=>{clearTimeout(r),e.signal?.removeEventListener(`abort`,n)},signal:t.signal}},st=async(e,t)=>{let n=Number(e.headers.get(`content-length`));if(Number.isFinite(n)&&n>t)return null;if(!e.body){let n=await e.text();return new TextEncoder().encode(n).byteLength>t?null:n}let r=e.body.getReader(),i=new TextDecoder,a=[],o=0;try{for(;;){let{done:e,value:n}=await r.read();if(e)break;if(o+=n.byteLength,o>t)return await r.cancel(),null;a.push(i.decode(n,{stream:!0}))}return a.push(i.decode()),a.join(``)}finally{r.releaseLock()}},ct=e=>{try{if(typeof globalThis.atob==`function`)return new TextDecoder().decode(Uint8Array.from(globalThis.atob(e),e=>e.charCodeAt(0)))}catch{return null}let t=e.replace(/\s/g,``).replace(/=+$/,``),n=[],r=0,i=0;for(let e of t){let t=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`.indexOf(e);if(t===-1)return null;r=r*64+t,i+=6,i>=8&&(i-=8,n.push(Math.floor(r/2**i)&255),r%=2**i)}return new TextDecoder().decode(Uint8Array.from(n))},lt=(e,t)=>{let n=e.indexOf(`,`);if(n===-1)return null;let r=e.slice(0,n),i=e.slice(n+1);if(i.length>t*2)return null;try{let e=r.toLowerCase().includes(`;base64`)?ct(i):decodeURIComponent(i);return e===null||new TextEncoder().encode(e).byteLength>t?null:JSON.parse(e)}catch{return null}},ut=async(e,t,n,r,i)=>{if(b.test(e))return lt(e,r);let a=await t(e,{redirect:i?`error`:`follow`,signal:n});if(!it(a)||!at(e,a,i))return null;let o=await st(a,r);if(o===null)return null;try{return JSON.parse(o)}catch{return null}},dt=async(e,t,n={})=>{let r=t!==void 0;if(!Qe(e,r))return null;let i=$e(),a=(i||D(e))&&!n.allowCrossOriginSourceMap;if(i&&!t&&(!n.allowUnsafeServerFetch||!et(e)))return null;let o=t??(typeof globalThis.fetch==`function`?globalThis.fetch.bind(globalThis):void 0);if(!o)return null;let s=n.maxBundleSizeBytes??26214400,c=n.maxSourceMapSizeBytes??104857600;if(s<0||c<0)return null;let l=ot(n);try{let t=await o(e,{redirect:a?`error`:`follow`,signal:l.signal});if(!it(t)||!at(e,t,a))return null;let n=await st(t,s);if(n===null)return null;let i=We(e,n,t);if(!i||!nt(e,i,a,r))return null;let u=await ut(i,o,l.signal,c,a);return T(u)?Xe(u,i):Ge(u)?Ze(u,i,async t=>{if(!nt(e,t,a,r))return null;let n=await ut(t,o,l.signal,c,a);return T(n)?n:null}):null}finally{l.cleanup()}},ft=(e,t,n)=>{if(!n)return t;let r=e.get(n);return r||(r=new Map,e.set(n,r)),r},pt=e=>ft(Ne,Me,e),mt=e=>ft(Ie,Fe,e),ht=(e,t)=>t.allowCrossOriginSourceMap===void 0&&t.allowUnsafeServerFetch===void 0&&t.maxBundleSizeBytes===void 0&&t.maxSourceMapSizeBytes===void 0&&t.timeoutMs===void 0?e:`${e}\0${t.allowCrossOriginSourceMap??``}\0${t.allowUnsafeServerFetch??``}\0${t.maxBundleSizeBytes??``}\0${t.maxSourceMapSizeBytes??``}\0${t.timeoutMs??``}`,O=async(e,t=!0,n,r={})=>{let i=t&&r.signal===void 0,a=pt(n),o=mt(n),s=ht(e,r);if(i&&a.has(s))return a.get(s)??null;let c=i?o.get(s):void 0;if(c)return(await c).sourceMap;let l=dt(e,n,r).then(e=>({sourceMap:e,isTransientFailure:!1}),()=>({sourceMap:null,isTransientFailure:!0}));i&&o.set(s,l);let{sourceMap:u,isTransientFailure:d}=await l;return i&&(o.delete(s),d||a.set(s,u)),u},k=async(e,t=!0,n,r={})=>Promise.all(e.map(async e=>{if(!e.fileName)return e;let i=await O(e.fileName,t,n,r);if(!i||typeof e.lineNumber!=`number`||typeof e.columnNumber!=`number`)return e;let a=S(i,e.lineNumber,e.columnNumber);return a?{...e,source:a.fileName&&e.source?e.source.replace(e.fileName,a.fileName):e.source,fileName:a.fileName,functionName:a.functionName??e.functionName,lineNumber:a.lineNumber,columnNumber:a.columnNumber,isIgnoreListed:a.isIgnoreListed,isSymbolicated:!0}:e})),A=e=>e._debugStack instanceof Error&&typeof e._debugStack?.stack==`string`,gt=e=>`tag`in e&&typeof e.tag==`number`,j=e=>{let t=null;if(c(e,n=>{if(n===e)return!1;let r=n._debugOwner;return(r===e||e.alternate!==null&&r===e.alternate)&&n._debugStack instanceof Error&&(t=n._debugStack,!0)}),!t)return null;let{frames:n,isTrusted:r}=_(t);if(!r)return null;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t.fileName)return{...t,lineNumber:t.enclosingLineNumber||t.lineNumber,columnNumber:t.enclosingColumnNumber||t.columnNumber}}return null},_t=()=>{let e=[];for(let t of be())e.push({currentDispatcherRef:t,value:xe(t)}),v(t,null);return e},vt=e=>{for(let{currentDispatcherRef:t,value:n}of e)v(t,n)},M=e=>`\n in ${e}`,yt=(e,t,n)=>{if(n){let t=St(n.stack??``),r=t.lastIndexOf(`
|
|
15
|
+
`),i=r===-1?t:t.slice(r+1);if(i.includes(e))return`\n${i}`}return M(`${e}${t?` [${t}]`:``}`)};let N=!1;const P=new WeakMap,F=(e,t)=>{if(!e||N)return``;let n=P.get(e);if(n!==void 0)return n;let r=ce();h(void 0),N=!0;let i=_t(),a=console.error,o=console.warn;console.error=()=>{},console.warn=()=>{};try{let n={DetermineComponentFrameRoot(){let n;try{if(t){let t=function(){throw Error()};Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}});try{Reflect.construct(t,[])}catch(e){n=e}Reflect.construct(e,[],t)}else{try{throw Error()}catch(e){n=e}let t=Function.prototype.apply.call(e,void 0,[]);typeof t==`object`&&t&&`catch`in t&&typeof t.catch==`function`&&t.catch(()=>void 0)}}catch(e){if(e instanceof Error&&n instanceof Error&&typeof e.stack==`string`)return[e.stack,n.stack]}return[null,null]}};Object.defineProperty(n.DetermineComponentFrameRoot,"displayName",{value:`DetermineComponentFrameRoot`}),Object.getOwnPropertyDescriptor(n.DetermineComponentFrameRoot,`name`)?.configurable&&Object.defineProperty(n.DetermineComponentFrameRoot,"name",{value:`DetermineComponentFrameRoot`});let[r,i]=n.DetermineComponentFrameRoot();if(r&&i){let t=r.split(`
|
|
16
16
|
`),n=i.split(`
|
|
17
|
-
`),a=0,o=0;for(;a<t.length&&!t[a].includes(`DetermineComponentFrameRoot`);)a++;for(;o<n.length&&!n[o].includes(`DetermineComponentFrameRoot`);)o++;if(a===t.length||o===n.length)for(a=t.length-1,o=n.length-1;a>=1&&o>=0&&t[a]!==n[o];)o--;for(;a>=1&&o>=0;a--,o--)if(t[a]!==n[o]){if(a!==1||o!==1)do if(a--,o--,o<0||t[a]!==n[o]){let n=`\n${t[a].replace(` at new `,` at `)}`,[r]=
|
|
17
|
+
`),a=0,o=0;for(;a<t.length&&!t[a].includes(`DetermineComponentFrameRoot`);)a++;for(;o<n.length&&!n[o].includes(`DetermineComponentFrameRoot`);)o++;if(a===t.length||o===n.length)for(a=t.length-1,o=n.length-1;a>=1&&o>=0&&t[a]!==n[o];)o--;for(;a>=1&&o>=0;a--,o--)if(t[a]!==n[o]){if(a!==1||o!==1)do if(a--,o--,o<0||t[a]!==n[o]){let n=`\n${t[a].replace(` at new `,` at `)}`,[r]=g(n);if(!r?.fileName)break;let i=u(e);return i&&n.includes(`<anonymous>`)&&(n=n.replace(`<anonymous>`,i)),P.set(e,n),n}while(a>=1&&o>=0);break}}}finally{N=!1,h(r),vt(i),console.error=a,console.warn=o}let s=u(e),c=s?M(s):``;return P.set(e,c),c},bt=(e,t)=>{let n=``,r=a(e);switch(e.tag){case r.ActivityComponent:n=M(`Activity`);break;case r.ClassComponent:n=F(e.type,!0);break;case r.ForwardRef:n=F(l(e.type)??e.type,!1);break;case r.FunctionComponent:case r.SimpleMemoComponent:n=F(l(e.type)??e.type,!1);break;case r.HostComponent:case r.HostHoistable:case r.HostSingleton:typeof e.type==`string`&&(n=M(e.type));break;case r.LazyComponent:n=M(`Lazy`);break;case r.SuspenseComponent:n=e.child!==t&&t!==null?M(`Suspense Fallback`):M(`Suspense`);break;case r.SuspenseListComponent:n=M(`SuspenseList`);break;case r.ViewTransitionComponent:n=M(`ViewTransition`);break;default:return``}return n},xt=e=>{try{let t=``,n=e,r=null;do{t+=bt(n,r);let e=n._debugInfo;if(e&&Array.isArray(e))for(let n=e.length-1;n>=0;n--){let r=e[n];typeof r.name==`string`&&(t+=yt(r.name,r.env,r.debugLocation))}r=n,n=n.return}while(n);return t}catch(e){return e instanceof Error?`\nBippy couldn’t generate the stack: ${e.message}\n${e.stack}`:``}},St=e=>{let t=e;if(!t)return``;t.startsWith(`Error: react-stack-top-frame
|
|
18
18
|
`)&&(t=t.slice(29));let n=t.indexOf(`
|
|
19
|
-
`);n!==-1&&(t=t.slice(n+1));let r=Math.max(...
|
|
20
|
-
`,r)),r!==-1)t=t.slice(0,r);else return``;return t},Ct=e=>!!(e.functionName&&e.fileName&&Dt(e.fileName)),wt=(e,t)=>e.fileName===t.fileName&&e.lineNumber===t.lineNumber&&e.columnNumber===t.columnNumber,Tt=e=>{let t=new Map;for(let n of e){if(!Ct(n))continue;let e=n.functionName,r=t.get(e)??[];r.some(e=>wt(e,n))||(r.push(n),t.set(e,r))}return t},Et=(e,t,n)=>{if(!e.functionName)return{...e,isServer:!0};let r=t.get(e.functionName);if(!r||r.length===0)return{...e,isServer:!0};let i=n.get(e.functionName)??0,a=r[i%r.length];return n.set(e.functionName,i+1),{...e,isServer:!0,fileName:a.fileName,lineNumber:a.lineNumber,columnNumber:a.columnNumber,source:e.source?.replace(
|
|
21
|
-
`),r=t-1;if(r<0||r>=n.length)return null;for(let e=0;e<=5;e++){let t=e===0?[r]:[r-e,r+e];for(let e of t){if(e<0||e>=n.length)continue;let t=Wt(n[e]);if(t)return t}}return null},Kt=async(e,t=!0,n,r={})=>{let i=j(e)??jt(e).find(e=>e.fileName);if(!i?.fileName)return u(e.type);let a=await O(i.fileName,t,n,r);if(!a)return u(e.type);let o=null;if(typeof i.lineNumber==`number`&&typeof i.columnNumber==`number`&&(o=S(a,i.lineNumber,i.columnNumber)),!o?.fileName||!o.lineNumber)return u(e.type);let s=C(a,o.fileName);return(s?Gt(s,o.lineNumber):null)||(o.functionName??u(e.type))},qt=Symbol.for(`react.context`),Jt=Symbol.for(`react.memo_cache_sentinel`),Yt=Symbol.for(`react.recoverable`);let R=[],z=null,B=null,V=null,H=null,U=0,W=null;const G=Error("Suspense interrupted this render. This error is an internal implementation detail of `use`."),K=e=>_(e.stack||``,{includeInElement:!1}),q=()=>{let e=V;return e!==null&&(V=e.next),e},J=e=>typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`,Xt=e=>typeof e==`object`&&!!e&&`current`in e,Y=e=>typeof e==`object`&&!!e&&`_currentValue`in e,Zt=e=>typeof e==`object`&&!!e&&`context`in e&&`next`in e,Qt=e=>typeof e==`object`&&!!e&&`render`in e&&typeof e.render==`function`,X=e=>{if(B===null)return e._currentValue;if(H===null)throw new r(`Context reads don’t match context dependencies.`);if(Object.hasOwn(H,`memoizedValue`)){let e=H.memoizedValue;return H=H.next,e}return e._currentValue},Z=(e,t,n,r=null,i=null)=>{R.push({displayName:r,primitive:e,stackError:Error(),value:t,debugInfo:i,dispatcherHookName:n})},$t=e=>{if(typeof e==`object`&&e){if(J(e)){let t=W!==null&&U<W.length?W[U++]:e,n=J(t)?t:e;switch(n.status){case`fulfilled`:return Z(`Promise`,n.value,`Use`,null,n._debugInfo??null),n.value;case`rejected`:throw n.reason}throw Z(`Unresolved`,n,`Use`,null,n._debugInfo??null),G}if(`$$typeof`in e&&e.$$typeof===Yt){Z(`Recoverable`,void 0,`Use`);return}if(`$$typeof`in e&&e.$$typeof===qt&&Y(e)){let t={_currentValue:e._currentValue,displayName:typeof e.displayName==`string`?e.displayName:void 0},n=X(t);return Z(`Context (use)`,n,`Use`,t.displayName||`Context`),n}}throw new r(`use() received an unsupported value: `+String(e))},en=e=>{let t=X(e);return Z(`Context`,t,`Context`,e.displayName||null),t},tn=e=>{let t=q(),n=t===null?typeof e==`function`?e():e:t.memoizedState;return Z(`State`,n,`State`),[n,()=>{}]},nn=(e,t,n)=>{let r=q(),i=r===null?n===void 0?t:n(t):r.memoizedState;return Z(`Reducer`,i,`Reducer`),[i,()=>{}]},rn=e=>{let t=q(),n=Xt(t?.memoizedState)?t.memoizedState:{current:e};return Z(`Ref`,n.current,`Ref`),n},an=()=>{let e=q();return Z(`CacheRefresh`,e===null?()=>{}:e.memoizedState,`CacheRefresh`),()=>{}},on=e=>{q(),Z(`LayoutEffect`,e,`LayoutEffect`)},sn=e=>{q(),Z(`InsertionEffect`,e,`InsertionEffect`)},cn=e=>{q(),Z(`Effect`,e,`Effect`)},ln=e=>{q();let t=Xt(e)?e.current:void 0;Z(`ImperativeHandle`,t,`ImperativeHandle`)},un=(e,t)=>{Z(`DebugValue`,typeof t==`function`?t(e):e,`DebugValue`)},dn=e=>{let t=q();return Z(`Callback`,Array.isArray(t?.memoizedState)?t.memoizedState[0]:e,`Callback`),e},fn=e=>{let t=q(),n=Array.isArray(t?.memoizedState)?t.memoizedState[0]:e();return Z(`Memo`,n,`Memo`),n},pn=(e,t)=>{let n=q();q();let r=n===null?t():n.memoizedState;return Z(`SyncExternalStore`,r,`SyncExternalStore`),r},mn=()=>{let e=q();q();let t=e?.memoizedState===!0;return Z(`Transition`,t,`Transition`),[t,()=>{}]},hn=e=>{let t=q(),n=t===null?e:t.memoizedState;return Z(`DeferredValue`,n,`DeferredValue`),n},gn=()=>{let e=q(),t=typeof e?.memoizedState==`string`?e.memoizedState:``;return Z(`Id`,t,`Id`),t},_n=e=>{let t=B;if(t===null)return[];let n=t.updateQueue?.memoCache;if(n==null)return[];let r=n.data[n.index];return r===void 0&&(r=n.data[n.index]=Array.from({length:e},()=>Jt)),n.index++,r},vn=e=>{let t=q(),n=t===null?e:t.memoizedState;return Z(`Optimistic`,n,`Optimistic`),[n,()=>{}]},yn=(e,t)=>{let n,r=null,i=null;if(e!==null){let t=e.memoizedState;if(J(t))switch(t.status){case`fulfilled`:n=t.value,r=t._debugInfo??null;break;case`rejected`:i=t.reason;break;default:i=G,n=t,r=t._debugInfo??null}else n=t}else n=t;return{value:n,debugInfo:r,error:i}},bn=e=>(t,n)=>{let r=q();q(),q();let{value:i,debugInfo:a,error:o}=yn(r,n);if(Z(e,i,e,null,a),o!==null)throw o;return[i,()=>{},!1]},xn=bn(`ActionState`),Q={readContext:X,use:$t,useCallback:dn,useContext:en,useEffect:cn,useImperativeHandle:ln,useLayoutEffect:on,useInsertionEffect:sn,useMemo:fn,useReducer:nn,useRef:rn,useState:tn,useDebugValue:un,useDeferredValue:hn,useTransition:mn,useSyncExternalStore:pn,useId:gn,useHostTransitionStatus:()=>{let e=X({_currentValue:null});return Z(`HostTransitionStatus`,e,`HostTransitionStatus`),e},useFormState:bn(`FormState`),useActionState:xn,useOptimistic:vn,useMemoCache:_n,useCacheRefresh:an,useEffectEvent:e=>(q(),Z(`EffectEvent`,e,`EffectEvent`),e)},Sn=new Proxy(Q,{get(e,t){if(Object.hasOwn(e,t))return Reflect.get(e,t);throw new i(`The React dispatcher is missing method `+t)}}),Cn=()=>{if(z!==null)return z;let e=new Map,t;try{Q.useContext({_currentValue:null}),Q.useState(null),Q.useReducer(e=>e,null),Q.useRef(null),Q.useCacheRefresh(),Q.useLayoutEffect(()=>{}),Q.useInsertionEffect(()=>{}),Q.useEffect(()=>{}),Q.useImperativeHandle(void 0),Q.useDebugValue(null),Q.useCallback(()=>{}),Q.useTransition(),Q.useSyncExternalStore(()=>()=>{},()=>null),Q.useDeferredValue(null),Q.useMemo(()=>null),Q.useOptimistic(null),Q.useFormState(e=>e,null),Q.useActionState(e=>e,null),Q.useHostTransitionStatus(),Q.use({$$typeof:qt,_currentValue:null}),Q.use({$$typeof:Yt});let e=Promise.resolve(null);Reflect.set(e,`status`,`fulfilled`),Reflect.set(e,`value`,null),Q.use(e);try{Q.use(new Promise(()=>{}))}catch{}Q.useId(),Q.useEffectEvent(()=>{})}finally{t=R,R=[]}for(let n of t)e.set(n.primitive,K(n.stackError));return z=e,z};let wn=0;const Tn=(e,t,n)=>{if(n>=t.length)return-1;let r=t[n].source;hookSearch:for(let i=0;i<e.length;i++)if(e[i].source===r){for(let r=n+1,a=i+1;r<t.length&&a<e.length;r++,a++)if(e[a].source!==t[r].source)continue hookSearch;return i}return-1},En=(e,t)=>{let n=Tn(t,e,wn);if(n!==-1)return n;for(let r=0;r<e.length&&r<5;r++)if(n=Tn(t,e,r),n!==-1)return wn=r,n;return-1},$=e=>{if(!e)return``;let t=e.lastIndexOf(`[as `);if(t!==-1)return $(e.slice(t+4,-1));if(t=e.lastIndexOf(`.`),t=t===-1?0:t+1,e.slice(t).startsWith(`unstable_`)&&(t+=9),e.slice(t).startsWith(`experimental_`)&&(t+=13),e.slice(t,t+3)===`use`){if(e.length-t===3)return`Use`;t+=3}return e.slice(t)},Dn=new Set([Z,...Object.values(Q)].map(e=>$(e.name))),On=e=>e!==``&&Dn.has(e),kn=(e,t)=>{let n=$(e);return t===`HostTransitionStatus`?n===t||n===`FormStatus`:n===t},An=(e,t)=>{let n=Cn().get(t.primitive);if(n===void 0)return-1;for(let r=0;r<n.length&&r<e.length;r++)if(n[r].source!==e[r].source)return r<e.length-1&&kn(e[r].functionName,t.dispatcherHookName)&&r++,r<e.length-1&&kn(e[r].functionName,t.dispatcherHookName)&&r++,r;return-1},jn=(e,t)=>{let n=K(t.stackError),r=En(e,n),i=An(n,t);return r===-1||i===-1||r-i<2?i===-1?[null,null]:[n[i-1]??null,null]:[n[i-1]??null,n.slice(i,r-1)]},Mn=new Set([`Context`,`Context (use)`,`DebugValue`,`Promise`,`Unresolved`,`HostTransitionStatus`]),Nn=(e,t)=>{let n=[],r=null,i=n,a=0,o=[];for(let s of t){let[t,c]=jn(e,s),l=s.displayName;if(l===null&&t!==null){let e=$(t.functionName);l=On(e)?null:e||$(s.dispatcherHookName)}if(c!==null){let e=0;if(r!==null){for(;e<c.length&&e<r.length&&c[c.length-e-1].source===r[r.length-e-1].source;)e++;for(let t=r.length-1;t>e;t--)i=o.pop()??n}for(let t=c.length-e-1;t>=1;t--){let e=[],n=c[t],r={id:null,isStateEditable:!1,name:$(c[t-1].functionName),value:void 0,subHooks:e,debugInfo:null,hookSource:{lineNumber:n.lineNumber??null,columnNumber:n.columnNumber??null,functionName:n.functionName??null,fileName:n.fileName??null}};i.push(r),o.push(i),i=e}r=c}let{primitive:u}=s,d=Mn.has(u)?null:a++,f=u===`Reducer`||u===`State`,p=l||u,m=c?.[0],ee={lineNumber:m?.lineNumber??null,columnNumber:m?.columnNumber??null,functionName:m?.functionName??null,fileName:m?.fileName??null};i.push({id:d,isStateEditable:f,name:p,value:s.value,subHooks:[],debugInfo:s.debugInfo,hookSource:ee})}return Fn(n,null),Pn(n,null),n},Pn=(e,t)=>{for(let n=0;n<e.length;n++){let r=e[n];On(r.name)?(t!==null&&r.value!==void 0&&(t.value=t.value===void 0?r.value:Array.isArray(t.value)?[...t.value,r.value]:[t.value,r.value]),e.splice(n,1,...r.subHooks),n--):Pn(r.subHooks,r)}},Fn=(e,t)=>{let n=[];for(let t=0;t<e.length;t++){let r=e[t];r.name===`DebugValue`?(e.splice(t,1,...r.subHooks),t--,r.value!==void 0&&n.push(r)):Fn(r.subHooks,r)}t!==null&&(n.length===1?t.value=n[0].value:n.length>1&&(t.value=n.map(({value:e})=>e)))},In=(e,t)=>{let n=t;for(;n;){if(n.tag===a(n).ContextProvider){let t=n.type,r=typeof t==`object`&&t&&`_context`in t?t._context:void 0,i=Y(r)?r:Y(t)?t:null;i&&!e.has(i)&&(e.set(i,i._currentValue),i._currentValue=n.memoizedProps.value)}n=n.return}},Ln=e=>{e.forEach((e,t)=>{t._currentValue=e})},Rn=e=>{if(e!==G)throw e instanceof i?e:new f(`Bippy couldn’t render the inspected component`,e)},zn=(e,t)=>{if(e!==null&&(typeof e==`object`||typeof e==`function`)&&`defaultProps`in e&&typeof e.defaultProps==`object`&&e.defaultProps!==null){let n={...t},r=e.defaultProps;for(let[e,t]of Object.entries(r))n[e]===void 0&&(n[e]=t);return n}return t},Bn=()=>{let e={};for(let t in console)try{e[t]=Reflect.get(console,t),Reflect.set(console,t,()=>{})}catch{}return e},Vn=e=>{for(let t in e)try{Reflect.set(console,t,e[t])}catch{}},Hn=(e,t,...n)=>{let r=be(e);y(e,Sn);let i=[],a;try{a=Error(),t(...n)}catch(e){Rn(e)}finally{i=R,R=[],y(e,r)}let o=a===void 0?[]:K(a);return Nn(o,i)},Un=(e,t=globalThis)=>{let n=(e?d(e,t)?.currentDispatcherRef:null)??ye(t)[0];if(!n)throw new r(`Bippy couldn’t find a React renderer. Load React and install Bippy’s hook.`);return n},Wn=e=>{let t=[`dependencies_old`,`dependencies_new`].find(t=>Object.hasOwn(e,t));if(Object.hasOwn(e,`dependencies`)){let t=e.dependencies;H=t===null?null:t.firstContext}else if(t){let n=Reflect.get(e,t),r=typeof n==`object`&&n&&`firstContext`in n?n.firstContext:null;H=Zt(r)?r:null}else if(Object.hasOwn(e,`contextDependencies`)){let t=Reflect.get(e,`contextDependencies`),n=typeof t==`object`&&t&&`first`in t?t.first:null;H=Zt(n)?n:null}else throw new r(`Bippy doesn’t support this React version.`)},Gn=e=>{let t=e=>{let n=e.subHooks.map(t);if(n.length===1){let t=n[0];if(e.name===`Context`&&t.id===null)return{...t,hookSource:e.hookSource};if(e.name===`FormStatus`&&t.name===`HostTransitionStatus`)return{...e,subHooks:[],value:t.value};if(e.name===`Use`){if(t.name===`Context`)return{...t,hookSource:e.hookSource};if(t.name===`Promise`||t.name===`Unresolved`)return{...e,debugInfo:t.debugInfo,subHooks:[],value:t.value}}if(e.id===null&&e.value===void 0&&(e.name===t.name||e.name===`<anonymous>`))return{...t,hookSource:e.hookSource}}return{...e,subHooks:n}};return e.map(t)},Kn=(e,t,n=globalThis)=>{let r=Un(void 0,n);Cn(),V=null,B=null,H=null,W=null,U=0;let i=Bn();try{return Gn(Hn(r,e,t))}finally{V=null,B=null,H=null,W=null,U=0,Vn(i)}},qn=e=>{let t=Un(e),n=a(e);if(e.tag!==n.FunctionComponent&&e.tag!==n.SimpleMemoComponent&&e.tag!==n.ForwardRef)throw new r(`Hook inspection requires a function component Fiber.`);Cn(),V=e.memoizedState,B=e;let i=e.dependencies?._debugThenableState,o=Array.isArray(i)?i:i?.thenables;W=Array.isArray(o)?o:null,U=0,Wn(e);let s=e.type,c=e.memoizedProps;s!==e.elementType&&(c=zn(s,c));let l=Bn(),u=new Map;try{if(H!==null&&!Object.hasOwn(H,`memoizedValue`)&&In(u,e),e.tag===n.ForwardRef){if(!Qt(s))throw new r(`ForwardRef fiber is missing its render function.`);let n=Gn(Hn(t,s.render,c,e.ref));for(let e of n)e.hookSource?.functionName===`Object.render`&&(e.hookSource.functionName=null);return n}if(typeof s!=`function`)throw new r(`Function component fiber is missing its component function.`);return Gn(Hn(t,s,c))}finally{B=null,V=null,H=null,W=null,U=0,Ln(u),Vn(l)}},Jn=new Set([`Effect`,`LayoutEffect`,`InsertionEffect`,`ImperativeHandle`,`DebugValue`]),Yn=/(?:const|let|var)\s+((?:\[[\s\S]*?\]|\w+))\s*=\s*(?:(?:[\w$]+|require\s*\([^)]*\))\.)*use[A-Z]\w*\s*(?:<[\s\S]*?>)?\s*\(/g,Xn=e=>`${e.fileName??``}:${e.lineNumber??0}:${e.columnNumber??0}`,Zn=e=>{let t=[],n=e=>{for(let r of e)Jn.has(r.name)||(t.push(r),r.subHooks.length>0&&n(r.subHooks))};return n(e),t},Qn=e=>{let t=e.trim();if(t.startsWith(`[`)){let e=t.match(/\[\s*(\w+)/);return e?e[1]:null}return/^\w+$/.test(t)?t:null},$n=(e,t,n)=>{let r=e.split(`
|
|
19
|
+
`);n!==-1&&(t=t.slice(n+1));let r=Math.max(...m.map(e=>t.indexOf(e)));if(r!==-1&&(r=t.lastIndexOf(`
|
|
20
|
+
`,r)),r!==-1)t=t.slice(0,r);else return``;return t},Ct=e=>!!(e.functionName&&e.fileName&&Dt(e.fileName)),wt=(e,t)=>e.fileName===t.fileName&&e.lineNumber===t.lineNumber&&e.columnNumber===t.columnNumber,Tt=e=>{let t=new Map;for(let n of e){if(!Ct(n))continue;let e=n.functionName,r=t.get(e)??[];r.some(e=>wt(e,n))||(r.push(n),t.set(e,r))}return t},Et=(e,t,n)=>{if(!e.functionName)return{...e,isServer:!0};let r=t.get(e.functionName);if(!r||r.length===0)return{...e,isServer:!0};let i=n.get(e.functionName)??0,a=r[i%r.length];return n.set(e.functionName,i+1),{...e,isServer:!0,fileName:a.fileName,lineNumber:a.lineNumber,columnNumber:a.columnNumber,source:e.source?.replace(oe,`(${a.fileName}:${a.lineNumber}:${a.columnNumber})`)}},Dt=e=>te.some(t=>e.startsWith(t)),Ot=e=>!e.isServer&&e.fileName&&Dt(e.fileName)?{...e,isServer:!0}:e,kt=e=>{let t=[],n=e;for(;n;)if(gt(n)){let e=n;if(n=e._debugOwner,n&&A(e)){let{frames:n,isTrusted:r}=_(e._debugStack);if(r)for(let e of n)t.push(Ot(e))}}else{let e=n;if(n=e.owner,n&&e.debugStack instanceof Error)for(let n of _(e.debugStack).frames)t.push({...n,isServer:!0})}return t},At=e=>{let t=[];return c(e,e=>{if(!A(e))return;let{frames:n,isTrusted:r}=_(e._debugStack);r&&t.push(...n)},!0),t},jt=e=>{let t=At(e),n=g(xt(e)),r=Tt(t),i=new Map;return n.map(e=>e.source!==void 0&&oe.test(e.source)?Et(e,r,i):e).filter((e,t,n)=>{if(t===0)return!0;let r=n[t-1];return e.functionName!==r.functionName})},I=async(e,t=!0,n,r={})=>k(jt(e),t,n,r),Mt=e=>!!e.fileName&&!e.isIgnoreListed,Nt=async(e,t=!0,n,r={})=>{let i=kt(e);if(i.length>0){let a=j(e)??{};a.functionName=u(e.type)??a.functionName;let o=await k([a,...i],t,n,r);if(o.some((e,t)=>t>0&&Mt(e)))return o}return I(e,t,n,r)},Pt=e=>{let t=e._debugSource;return t?typeof t==`object`&&typeof t.fileName==`string`&&t.fileName!==`(native)`&&typeof t.lineNumber==`number`:!1},L=e=>e.fileName?{fileName:e.fileName,lineNumber:e.lineNumber,columnNumber:e.columnNumber,functionName:e.functionName}:null,Ft=e=>{if(!A(e))return null;let{frames:t,isTrusted:n}=_(e._debugStack);if(!n)return null;for(let e of t)if(e.fileName)return e;return null},It=e=>{if(Pt(e))return e._debugSource;let t=Ft(e)??j(e);return t?L(t):null},Lt=async(e,t,n,r)=>{let i=u(e.type);if(!i)return null;let a=g(Error().stack??``),o=new Set;for(let e of a){let a=e.fileName;if(!a||o.has(a))continue;o.add(a);let s=await O(a,t,n,r);if(!s)continue;let c=Ve(s,i);if(c&&!c.isIgnoreListed)return L(c)}return null},Rt=async(e,t=!0,n,r={})=>{if(Pt(e))return e._debugSource;let i=It(e);if(i){let[e]=await k([{columnNumber:i.columnNumber,fileName:i.fileName,functionName:i.functionName,lineNumber:i.lineNumber}],t,n,r),a=L(e);if(a)return a}let a=await I(e,t,n,r);for(let e of a)if(e.fileName)return L(e);return Lt(e,t,n,r)},zt=e=>e.split(`/`).filter(Boolean).length,Bt=e=>{let t=e.indexOf(`/`,1);if(t===-1)return e;let n=e.slice(0,t);if(zt(n)!==1)return e;let r=e.slice(t);if(!re.test(r))return e;let i=r.split(`/`).filter(Boolean);if(i.length<2)return e;let a=i[0];return a.startsWith(`@`)||a.length>4?e:r},Vt=e=>{if(!e||ne.some(t=>t===e))return``;let t=e,n=/^[a-zA-Z]:[\\/]/.test(t);if(t.startsWith(`http://`)||t.startsWith(`https://`)){try{t=new URL(t).pathname}catch{}t=Bt(t)}if(t.startsWith(`about://React/`)){let e=t.slice(14),n=e.indexOf(`/`),r=e.indexOf(`:`);t=n!==-1&&(r===-1||n<r)?e.slice(n+1):e}let r=!0;for(;r;){r=!1;for(let e of p)if(t.startsWith(e)){t=t.slice(e.length),e===`file:///`&&(t=`/${t.replace(/^\/+/,``)}`),r=!0;break}}if(!n){let e=t.match(f);e&&(t=t.slice(e[0].length))}if(t.startsWith(`//`)){let e=t.indexOf(`/`,2);t=e===-1?``:t.slice(e)}let i=t.indexOf(`?`);if(i!==-1){let e=t.slice(i);ae.test(e)&&(t=t.slice(0,i))}return t},Ht=e=>{let t=Vt(e);return!(!t||!re.test(t)||ie.test(t))},Ut=[/(?:^|export\s+)(?:const|let|var)\s+(\w+)\s*=/,/(?:^|export\s+)function\s+(\w+)/,/(?:^|export\s+)class\s+(\w+)/],Wt=e=>{for(let t of Ut){let n=e.match(t);if(n?.[1])return n[1]}return null},Gt=(e,t)=>{let n=e.split(`
|
|
21
|
+
`),r=t-1;if(r<0||r>=n.length)return null;for(let e=0;e<=5;e++){let t=e===0?[r]:[r-e,r+e];for(let e of t){if(e<0||e>=n.length)continue;let t=Wt(n[e]);if(t)return t}}return null},Kt=async(e,t=!0,n,r={})=>{let i=j(e)??jt(e).find(e=>e.fileName);if(!i?.fileName)return u(e.type);let a=await O(i.fileName,t,n,r);if(!a)return u(e.type);let o=null;if(typeof i.lineNumber==`number`&&typeof i.columnNumber==`number`&&(o=S(a,i.lineNumber,i.columnNumber)),!o?.fileName||!o.lineNumber)return u(e.type);let s=C(a,o.fileName);return(s?Gt(s,o.lineNumber):null)||(o.functionName??u(e.type))},qt=Symbol.for(`react.context`),Jt=Symbol.for(`react.memo_cache_sentinel`),Yt=Symbol.for(`react.recoverable`);let R=[],z=null,B=null,V=null,H=null,U=0,W=null,G=0,K=!1;const Xt=()=>{if(K)throw new r(`Hook inspection cannot be called during another inspection.`)},q=Error("Suspense interrupted this render. This error is an internal implementation detail of `use`."),J=e=>g(e.stack||``,{includeInElement:!1}),Y=()=>{let e=V;return e!==null&&(V=e.next),e},Zt=e=>typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`,Qt=e=>typeof e==`object`&&!!e&&`current`in e,$t=e=>typeof e==`object`&&!!e&&`_currentValue`in e,en=e=>typeof e==`object`&&!!e&&`context`in e&&`next`in e,tn=e=>typeof e==`object`&&!!e&&`render`in e&&typeof e.render==`function`,X=e=>{if(B===null)return e._currentValue;if(H===null)throw new r(`Context reads don’t match context dependencies.`);if(Object.hasOwn(H,`memoizedValue`)){let e=H.memoizedValue;return H=H.next,e}return e._currentValue},Z=(e,t,n,r=null,i=null)=>{R.push({displayName:r,primitive:e,stackError:Error(),value:t,debugInfo:i,dispatcherHookName:n})},nn=e=>{if(typeof e==`object`&&e){if(Zt(e)){let t=W!==null&&U<W.length?W[U++]:e,n=Zt(t)?t:e;switch(n.status){case`fulfilled`:return Z(`Promise`,n.value,`Use`,null,n._debugInfo??null),n.value;case`rejected`:throw n.reason}throw Z(`Unresolved`,n,`Use`,null,n._debugInfo??null),q}if(`$$typeof`in e&&e.$$typeof===Yt){Z(`Recoverable`,void 0,`Use`);return}if(`$$typeof`in e&&e.$$typeof===qt&&$t(e)){let t={_currentValue:e._currentValue,displayName:typeof e.displayName==`string`?e.displayName:void 0},n=X(t);return Z(`Context (use)`,n,`Use`,t.displayName||`Context`),n}}throw new r(`use() received an unsupported value: `+String(e))},rn=e=>{let t=X(e);return Z(`Context`,t,`Context`,e.displayName||null),t},an=e=>{let t=Y(),n=t===null?typeof e==`function`?e():e:t.memoizedState;return Z(`State`,n,`State`),[n,()=>{}]},on=(e,t,n)=>{let r=Y(),i=r===null?n===void 0?t:n(t):r.memoizedState;return Z(`Reducer`,i,`Reducer`),[i,()=>{}]},sn=e=>{let t=Y(),n=Qt(t?.memoizedState)?t.memoizedState:{current:e};return Z(`Ref`,n.current,`Ref`),n},cn=()=>{let e=Y();return Z(`CacheRefresh`,e===null?()=>{}:e.memoizedState,`CacheRefresh`),()=>{}},ln=e=>{Y(),Z(`LayoutEffect`,e,`LayoutEffect`)},un=e=>{Y(),Z(`InsertionEffect`,e,`InsertionEffect`)},dn=e=>{Y(),Z(`Effect`,e,`Effect`)},fn=e=>{Y();let t=Qt(e)?e.current:void 0;Z(`ImperativeHandle`,t,`ImperativeHandle`)},pn=(e,t)=>{Z(`DebugValue`,typeof t==`function`?t(e):e,`DebugValue`)},mn=e=>{let t=Y();return Z(`Callback`,Array.isArray(t?.memoizedState)?t.memoizedState[0]:e,`Callback`),e},hn=e=>{let t=Y(),n=Array.isArray(t?.memoizedState)?t.memoizedState[0]:e();return Z(`Memo`,n,`Memo`),n},gn=(e,t)=>{let n=Y();Y();let r=n===null?t():n.memoizedState;return Z(`SyncExternalStore`,r,`SyncExternalStore`),r},_n=()=>{let e=Y();Y();let t=e?.memoizedState===!0;return Z(`Transition`,t,`Transition`),[t,()=>{}]},vn=e=>{let t=Y(),n=t===null?e:t.memoizedState;return Z(`DeferredValue`,n,`DeferredValue`),n},yn=()=>{let e=Y(),t=typeof e?.memoizedState==`string`?e.memoizedState:``;return Z(`Id`,t,`Id`),t},bn=e=>{let t=B;if(t===null)return[];let n=t.updateQueue?.memoCache;return n==null?[]:n.data[G++]?.slice()??Array.from({length:e},()=>Jt)},xn=e=>{let t=Y(),n=t===null?e:t.memoizedState;return Z(`Optimistic`,n,`Optimistic`),[n,()=>{}]},Sn=(e,t)=>{let n,r=null,i=null;if(e!==null){let t=e.memoizedState;if(Zt(t))switch(t.status){case`fulfilled`:n=t.value,r=t._debugInfo??null;break;case`rejected`:i=t.reason;break;default:i=q,n=t,r=t._debugInfo??null}else n=t}else n=t;return{value:n,debugInfo:r,error:i}},Cn=e=>(t,n)=>{let r=Y();Y(),Y();let{value:i,debugInfo:a,error:o}=Sn(r,n);if(Z(e,i,e,null,a),o!==null)throw o;return[i,()=>{},!1]},wn=Cn(`ActionState`),Q={readContext:X,use:nn,useCallback:mn,useContext:rn,useEffect:dn,useImperativeHandle:fn,useLayoutEffect:ln,useInsertionEffect:un,useMemo:hn,useReducer:on,useRef:sn,useState:an,useDebugValue:pn,useDeferredValue:vn,useTransition:_n,useSyncExternalStore:gn,useId:yn,useHostTransitionStatus:()=>{let e=X({_currentValue:null});return Z(`HostTransitionStatus`,e,`HostTransitionStatus`),e},useFormState:Cn(`FormState`),useActionState:wn,useOptimistic:xn,useMemoCache:bn,useCacheRefresh:cn,useEffectEvent:e=>(Y(),Z(`EffectEvent`,e,`EffectEvent`),e)},Tn=new Proxy(Q,{get(e,t){if(Object.hasOwn(e,t))return Reflect.get(e,t);throw new i(`The React dispatcher is missing method `+t)}}),En=()=>{if(z!==null)return z;let e=new Map,t;try{Q.useContext({_currentValue:null}),Q.useState(null),Q.useReducer(e=>e,null),Q.useRef(null),Q.useCacheRefresh(),Q.useLayoutEffect(()=>{}),Q.useInsertionEffect(()=>{}),Q.useEffect(()=>{}),Q.useImperativeHandle(void 0),Q.useDebugValue(null),Q.useCallback(()=>{}),Q.useTransition(),Q.useSyncExternalStore(()=>()=>{},()=>null),Q.useDeferredValue(null),Q.useMemo(()=>null),Q.useOptimistic(null),Q.useFormState(e=>e,null),Q.useActionState(e=>e,null),Q.useHostTransitionStatus(),Q.use({$$typeof:qt,_currentValue:null}),Q.use({$$typeof:Yt});let e=Promise.resolve(null);Reflect.set(e,`status`,`fulfilled`),Reflect.set(e,`value`,null),Q.use(e);try{Q.use(new Promise(()=>{}))}catch{}Q.useId(),Q.useEffectEvent(()=>{})}finally{t=R,R=[]}for(let n of t)e.set(n.primitive,J(n.stackError));return z=e,z};let Dn=0;const On=(e,t,n)=>{if(n>=t.length)return-1;let r=t[n].source;hookSearch:for(let i=0;i<e.length;i++)if(e[i].source===r){for(let r=n+1,a=i+1;r<t.length&&a<e.length;r++,a++)if(e[a].source!==t[r].source)continue hookSearch;return i}return-1},kn=(e,t)=>{let n=On(t,e,Dn);if(n!==-1)return n;for(let r=0;r<e.length&&r<5;r++)if(n=On(t,e,r),n!==-1)return Dn=r,n;return-1},$=e=>{if(!e)return``;let t=e.lastIndexOf(`[as `);if(t!==-1)return $(e.slice(t+4,-1));if(t=e.lastIndexOf(`.`),t=t===-1?0:t+1,e.slice(t).startsWith(`unstable_`)&&(t+=9),e.slice(t).startsWith(`experimental_`)&&(t+=13),e.slice(t,t+3)===`use`){if(e.length-t===3)return`Use`;t+=3}return e.slice(t)},An=new Set([Z,...Object.values(Q)].map(e=>$(e.name))),jn=e=>e!==``&&An.has(e),Mn=(e,t)=>{let n=$(e);return t===`HostTransitionStatus`?n===t||n===`FormStatus`:n===t},Nn=(e,t)=>{let n=En().get(t.primitive);if(n===void 0)return-1;for(let r=0;r<n.length&&r<e.length;r++)if(n[r].source!==e[r].source)return r<e.length-1&&Mn(e[r].functionName,t.dispatcherHookName)&&r++,r<e.length-1&&Mn(e[r].functionName,t.dispatcherHookName)&&r++,r;return-1},Pn=(e,t)=>{let n=J(t.stackError),r=kn(e,n),i=Nn(n,t);return r===-1||i===-1||r-i<2?i===-1?[null,null]:[n[i-1]??null,null]:[n[i-1]??null,n.slice(i,r-1)]},Fn=new Set([`Context`,`Context (use)`,`DebugValue`,`Promise`,`Unresolved`,`HostTransitionStatus`]),In=(e,t)=>{let n=[],r=null,i=n,a=0,o=[];for(let s of t){let[t,c]=Pn(e,s),l=s.displayName;if(l===null&&t!==null){let e=$(t.functionName);l=jn(e)?null:e||$(s.dispatcherHookName)}if(c!==null){let e=0;if(r!==null){for(;e<c.length&&e<r.length&&c[c.length-e-1].source===r[r.length-e-1].source;)e++;for(let t=r.length-1;t>e;t--)i=o.pop()??n}for(let t=c.length-e-1;t>=1;t--){let e=[],n=c[t],r={id:null,isStateEditable:!1,name:$(c[t-1].functionName),value:void 0,subHooks:e,debugInfo:null,hookSource:{lineNumber:n.lineNumber??null,columnNumber:n.columnNumber??null,functionName:n.functionName??null,fileName:n.fileName??null}};i.push(r),o.push(i),i=e}r=c}let{primitive:u}=s,d=Fn.has(u)?null:a++,ee=u===`Reducer`||u===`State`,f=l||u,p=c?.[0],te={lineNumber:p?.lineNumber??null,columnNumber:p?.columnNumber??null,functionName:p?.functionName??null,fileName:p?.fileName??null};i.push({id:d,isStateEditable:ee,name:f,value:s.value,subHooks:[],debugInfo:s.debugInfo,hookSource:te})}return Rn(n,null),Ln(n,null),n},Ln=(e,t)=>{for(let n=0;n<e.length;n++){let r=e[n];jn(r.name)?(t!==null&&r.value!==void 0&&(t.value=t.value===void 0?r.value:Array.isArray(t.value)?[...t.value,r.value]:[t.value,r.value]),e.splice(n,1,...r.subHooks),n--):Ln(r.subHooks,r)}},Rn=(e,t)=>{let n=[];for(let t=0;t<e.length;t++){let r=e[t];r.name===`DebugValue`?(e.splice(t,1,...r.subHooks),t--,r.value!==void 0&&n.push(r)):Rn(r.subHooks,r)}t!==null&&(n.length===1?t.value=n[0].value:n.length>1&&(t.value=n.map(({value:e})=>e)))},zn=(e,t)=>{let n=t;for(;n;){if(n.tag===a(n).ContextProvider){let t=n.type,r=typeof t==`object`&&t&&`_context`in t?t._context:void 0,i=$t(r)?r:$t(t)?t:null;i&&!e.has(i)&&(e.set(i,i._currentValue),i._currentValue=n.memoizedProps.value)}n=n.return}},Bn=e=>{e.forEach((e,t)=>{t._currentValue=e})},Vn=e=>{if(e!==q)throw e instanceof i?e:new ee(`Bippy couldn’t render the inspected component`,e)},Hn=(e,t)=>{if(e!==null&&(typeof e==`object`||typeof e==`function`)&&`defaultProps`in e&&typeof e.defaultProps==`object`&&e.defaultProps!==null){let n={...t},r=e.defaultProps;for(let[e,t]of Object.entries(r))n[e]===void 0&&(n[e]=t);return n}return t},Un=()=>{let e={};for(let t in console)try{e[t]=Reflect.get(console,t),Reflect.set(console,t,()=>{})}catch{}return e},Wn=e=>{for(let t in e)try{Reflect.set(console,t,e[t])}catch{}},Gn=(e,t,...n)=>{let r=xe(e);v(e,Tn),K=!0;let i=[],a;try{a=Error(),t(...n)}catch(e){Vn(e)}finally{i=R,R=[],K=!1,v(e,r)}let o=a===void 0?[]:J(a);return In(o,i)},Kn=(e,t=globalThis)=>{let n=(e?d(e,t)?.currentDispatcherRef:null)??be(t)[0];if(!n)throw new r(`Bippy couldn’t find a React renderer. Load React and install Bippy’s hook.`);return n},qn=e=>{let t=[`dependencies_old`,`dependencies_new`].find(t=>Object.hasOwn(e,t));if(Object.hasOwn(e,`dependencies`)){let t=e.dependencies;H=t===null?null:t.firstContext}else if(t){let n=Reflect.get(e,t),r=typeof n==`object`&&n&&`firstContext`in n?n.firstContext:null;H=en(r)?r:null}else if(Object.hasOwn(e,`contextDependencies`)){let t=Reflect.get(e,`contextDependencies`),n=typeof t==`object`&&t&&`first`in t?t.first:null;H=en(n)?n:null}else throw new r(`Bippy doesn’t support this React version.`)},Jn=e=>{let t=e=>{let n=e.subHooks.map(t);if(n.length===1){let t=n[0];if(e.name===`Context`&&t.id===null)return{...t,hookSource:e.hookSource};if(e.name===`FormStatus`&&t.name===`HostTransitionStatus`)return{...e,subHooks:[],value:t.value};if(e.name===`Use`){if(t.name===`Context`)return{...t,hookSource:e.hookSource};if(t.name===`Promise`||t.name===`Unresolved`)return{...e,debugInfo:t.debugInfo,subHooks:[],value:t.value}}if(e.id===null&&e.value===void 0&&(e.name===t.name||e.name===`<anonymous>`))return{...t,hookSource:e.hookSource}}return{...e,subHooks:n}};return e.map(t)},Yn=(e,t,n=globalThis)=>{Xt();let r=Kn(void 0,n);En(),V=null,B=null,H=null,W=null,U=0;let i=Un();try{return Jn(Gn(r,e,t))}finally{V=null,B=null,H=null,W=null,U=0,Wn(i)}},Xn=e=>{Xt();let t=Kn(e),n=a(e);if(e.tag!==n.FunctionComponent&&e.tag!==n.SimpleMemoComponent&&e.tag!==n.ForwardRef)throw new r(`Hook inspection requires a function component Fiber.`);En(),V=e.memoizedState,B=e,G=0;let i=e.dependencies?._debugThenableState,o=Array.isArray(i)?i:i?.thenables;W=Array.isArray(o)?o:null,U=0;let s=Un(),c=new Map;try{qn(e);let i=e.type,a=i===e.elementType?e.memoizedProps:Hn(i,e.memoizedProps);if(H!==null&&!Object.hasOwn(H,`memoizedValue`)&&zn(c,e),e.tag===n.ForwardRef){if(!tn(i))throw new r(`ForwardRef fiber is missing its render function.`);let n=Jn(Gn(t,i.render,a,e.ref));for(let e of n)e.hookSource?.functionName===`Object.render`&&(e.hookSource.functionName=null);return n}if(typeof i!=`function`)throw new r(`Function component fiber is missing its component function.`);return Jn(Gn(t,i,a))}finally{B=null,V=null,H=null,W=null,U=0,G=0,Bn(c),Wn(s)}},Zn=new Set([`Effect`,`LayoutEffect`,`InsertionEffect`,`ImperativeHandle`,`DebugValue`]),Qn=/(?:const|let|var)\s+((?:\[[\s\S]*?\]|\w+))\s*=\s*(?:(?:[\w$]+|require\s*\([^)]*\))\.)*use[A-Z]\w*\s*(?:<[\s\S]*?>)?\s*\(/g,$n=e=>`${e.fileName??``}:${e.lineNumber??0}:${e.columnNumber??0}`,er=e=>{let t=[],n=e=>{for(let r of e)Zn.has(r.name)||(t.push(r),r.subHooks.length>0&&n(r.subHooks))};return n(e),t},tr=e=>{let t=e.trim();if(t.startsWith(`[`)){let e=t.match(/\[\s*(\w+)/);return e?e[1]:null}return/^\w+$/.test(t)?t:null},nr=(e,t,n)=>{let r=e.split(`
|
|
22
22
|
`),i=t-1;if(i<0||i>=r.length)return null;let a=Math.max(0,i-10),o=r.slice(a,i+1).join(`
|
|
23
|
-
`),s=[...o.matchAll(
|
|
24
|
-
`)+1,l=c+n,u=s.filter(e=>e.index<=l).at(-1)??(n===0?s.find(e=>e.index>=c):void 0);return u?
|
|
23
|
+
`),s=[...o.matchAll(Qn)],c=o.lastIndexOf(`
|
|
24
|
+
`)+1,l=c+n,u=s.filter(e=>e.index<=l).at(-1)??(n===0?s.find(e=>e.index>=c):void 0);return u?tr(u[1]):null},rr=async(e,t,n,r)=>{let{sourceContentCache:i,fetchFn:a,requestOptions:o}=r,s=await O(e,!0,a,o);if(s){let e=S(s,t,n);if(e?.fileName&&e.lineNumber!==void 0){let t=C(s,e.fileName);if(t)return{sourceCode:t,lineNumber:e.lineNumber,columnNumber:e.columnNumber??0}}}if(!i.has(e))try{let t=await(a??fetch)(e);i.set(e,t.ok?await t.text():null)}catch{i.set(e,null)}let c=i.get(e)??null;return c?{sourceCode:c,lineNumber:t,columnNumber:n}:null},ir=async(e,t,n)=>{let r=new Map,i=er(e);if(i.length===0)return r;let a={sourceContentCache:new Map,fetchFn:t,requestOptions:n};return await Promise.all(i.map(async e=>{let t=e.hookSource;if(!t||!t.fileName||t.lineNumber===null||t.columnNumber===null)return;let n=await rr(t.fileName,t.lineNumber,t.columnNumber,a);if(!n)return;let i=nr(n.sourceCode,n.lineNumber,n.columnNumber);if(i){let e=$n(t);r.set(e,i)}})),r};export{o as BippyError,r as BippyHookInspectionError,ee as BippyHookRenderError,s as BippySourceMapError,i as BippyUnsupportedHookError,St as formatOwnerStack,j as getDefinitionFrameFromOwnedChild,Kt as getDisplayNameFromSource,xt as getFallbackParentStack,Xn as getFiberHooks,Nt as getOwnerStack,I as getParentStack,kt as getRawOwnerStack,It as getRawSource,Rt as getSource,C as getSourceContentFromSourceMap,S as getSourceFromSourceMap,Ve as getSourceFromSourceMapByFunctionName,O as getSourceMap,A as hasDebugStack,Yn as inspectHooks,Ht as isSourceFile,Vt as normalizeFileName,ir as parseHookNames,g as parseStack,k as symbolicateStack};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bippy",
|
|
3
|
-
"version": "0.7.3-dev.
|
|
3
|
+
"version": "0.7.3-dev.e2b879b",
|
|
4
4
|
"description": "hack into react internals",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bippy",
|
|
@@ -78,40 +78,12 @@
|
|
|
78
78
|
"@types/react-reconciler": "^0.33.0"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@babylonjs/core": "^9.20.0",
|
|
82
|
-
"@babylonjs/gui": "^9.20.0",
|
|
83
81
|
"@jridgewell/sourcemap-codec": "^1.5.0",
|
|
84
|
-
"@opentui/core": "^0.5.1",
|
|
85
|
-
"@opentui/react": "^0.5.1",
|
|
86
|
-
"@pixi/react": "^8.0.5",
|
|
87
|
-
"@react-pdf/renderer": "^4.5.1",
|
|
88
|
-
"@react-three/fiber": "^9.6.1",
|
|
89
|
-
"@react-three/test-renderer": "^9.1.0",
|
|
90
|
-
"@testing-library/dom": "^10.4.0",
|
|
91
|
-
"@testing-library/react": "^16.1.0",
|
|
92
82
|
"@types/node": "^20",
|
|
93
83
|
"@types/react": "^19.2.18",
|
|
94
|
-
"@types/react-dom": "^19.2.4",
|
|
95
|
-
"@vitest/coverage-istanbul": "4.1.10",
|
|
96
|
-
"happy-dom": "^20.11.6",
|
|
97
|
-
"ink": "^7.1.1",
|
|
98
|
-
"ink-testing-library": "^4.0.0",
|
|
99
|
-
"konva": "^10.3.0",
|
|
100
|
-
"pixi.js": "^8.19.0",
|
|
101
84
|
"publint": "^0.3.0",
|
|
102
85
|
"react": "^19.2.4",
|
|
103
|
-
"react-17": "npm:react@17.0.2",
|
|
104
|
-
"react-18": "npm:react@18.3.1",
|
|
105
|
-
"react-babylonjs": "^4.0.2",
|
|
106
86
|
"react-devtools-core": "7.0.1",
|
|
107
|
-
"react-devtools-inline": "^7.0.1",
|
|
108
|
-
"react-dom": "^19.2.4",
|
|
109
|
-
"react-dom-17": "npm:react-dom@17.0.2",
|
|
110
|
-
"react-dom-18": "npm:react-dom@18.3.1",
|
|
111
|
-
"react-konva": "^19.2.5",
|
|
112
|
-
"react-nil": "^2.0.0",
|
|
113
|
-
"remotion": "^4.0.496",
|
|
114
|
-
"three": "^0.185.1",
|
|
115
87
|
"tsx": "^4.21.0",
|
|
116
88
|
"typescript": "^5.9.3",
|
|
117
89
|
"vite-plus": "latest",
|
|
@@ -123,10 +95,10 @@
|
|
|
123
95
|
"scripts": {
|
|
124
96
|
"build": "NODE_ENV=production vp pack && tsx scripts/check-react-entry.ts",
|
|
125
97
|
"check:react-internals": "tsx scripts/generate-react-internals.ts --check",
|
|
126
|
-
"coverage": "
|
|
98
|
+
"coverage": "pnpm --filter conformance coverage",
|
|
127
99
|
"dev": "NODE_ENV=development vp pack --watch",
|
|
128
100
|
"generate:react-internals": "tsx scripts/generate-react-internals.ts",
|
|
129
101
|
"publint": "publint",
|
|
130
|
-
"test": "
|
|
102
|
+
"test": "pnpm --filter conformance test"
|
|
131
103
|
}
|
|
132
104
|
}
|
package/src/core.ts
CHANGED
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
removeActiveListener,
|
|
22
22
|
} from "./rdt-hook.js";
|
|
23
23
|
import type { ReactDevToolsTarget, Unsubscribe } from "./rdt-hook.js";
|
|
24
|
+
import { getCurrentFiberFromRoot } from "./react-internals/current-fiber.js";
|
|
24
25
|
import {
|
|
25
26
|
getReactWorkTagsForFiber,
|
|
26
27
|
ReactBuildType,
|
|
@@ -64,8 +65,8 @@ export const isValidElement = (element: unknown): element is React.ReactElement
|
|
|
64
65
|
typeof element === "object" &&
|
|
65
66
|
element !== null &&
|
|
66
67
|
"$$typeof" in element &&
|
|
67
|
-
(
|
|
68
|
-
|
|
68
|
+
(element.$$typeof === Symbol.for("react.element") ||
|
|
69
|
+
element.$$typeof === Symbol.for("react.transitional.element"));
|
|
69
70
|
|
|
70
71
|
/**
|
|
71
72
|
* Returns `true` if object is a React Fiber.
|
|
@@ -78,7 +79,7 @@ export const isFiber = (fiber: unknown): fiber is Fiber =>
|
|
|
78
79
|
"return" in fiber &&
|
|
79
80
|
"child" in fiber &&
|
|
80
81
|
"sibling" in fiber &&
|
|
81
|
-
"flags" in fiber;
|
|
82
|
+
("flags" in fiber || "effectTag" in fiber);
|
|
82
83
|
|
|
83
84
|
const isFiberRoot = (fiberRoot: unknown): fiberRoot is FiberRoot =>
|
|
84
85
|
typeof fiberRoot === "object" &&
|
|
@@ -128,7 +129,7 @@ export const isCompositeFiber = (fiber: Fiber): boolean => {
|
|
|
128
129
|
*/
|
|
129
130
|
export const didFiberRender = (fiber: Fiber): boolean => {
|
|
130
131
|
const nextProps = fiber.memoizedProps;
|
|
131
|
-
const prevProps = fiber.alternate?.memoizedProps
|
|
132
|
+
const prevProps = fiber.alternate?.memoizedProps;
|
|
132
133
|
const flags = fiber.flags ?? fiber.effectTag ?? 0;
|
|
133
134
|
const workTags = getReactWorkTagsForFiber(fiber);
|
|
134
135
|
|
|
@@ -200,41 +201,57 @@ const shouldFilterFiber = (fiber: Fiber): boolean => {
|
|
|
200
201
|
}
|
|
201
202
|
};
|
|
202
203
|
|
|
204
|
+
interface TraverseFiber {
|
|
205
|
+
(
|
|
206
|
+
fiber: Fiber | null,
|
|
207
|
+
selector: (node: Fiber) => boolean | void,
|
|
208
|
+
ascending?: boolean,
|
|
209
|
+
): Fiber | null;
|
|
210
|
+
(
|
|
211
|
+
fiber: Fiber | null,
|
|
212
|
+
selector: (node: Fiber) => Promise<boolean | void>,
|
|
213
|
+
ascending?: boolean,
|
|
214
|
+
): Promise<Fiber | null>;
|
|
215
|
+
(
|
|
216
|
+
fiber: Fiber | null,
|
|
217
|
+
selector: FiberSelector,
|
|
218
|
+
ascending?: boolean,
|
|
219
|
+
): Fiber | null | Promise<Fiber | null>;
|
|
220
|
+
}
|
|
221
|
+
|
|
203
222
|
/**
|
|
204
223
|
* Traverses up or down a {@link Fiber}, return `true` to stop and select a node.
|
|
205
224
|
*/
|
|
206
|
-
export
|
|
207
|
-
fiber: Fiber | null,
|
|
208
|
-
selector: (node: Fiber) => boolean | void,
|
|
209
|
-
ascending?: boolean,
|
|
210
|
-
): Fiber | null;
|
|
211
|
-
export function traverseFiber(
|
|
212
|
-
fiber: Fiber | null,
|
|
213
|
-
selector: (node: Fiber) => Promise<boolean | void>,
|
|
214
|
-
ascending?: boolean,
|
|
215
|
-
): Promise<Fiber | null>;
|
|
216
|
-
export function traverseFiber(
|
|
217
|
-
fiber: Fiber | null,
|
|
218
|
-
selector: FiberSelector,
|
|
219
|
-
ascending?: boolean,
|
|
220
|
-
): Fiber | null | Promise<Fiber | null>;
|
|
221
|
-
export function traverseFiber(
|
|
225
|
+
export const traverseFiber = ((
|
|
222
226
|
fiber: Fiber | null,
|
|
223
227
|
selector: FiberSelector,
|
|
224
228
|
ascending = false,
|
|
225
|
-
): Fiber | null | Promise<Fiber | null> {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
);
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
229
|
+
): Fiber | null | Promise<Fiber | null> => {
|
|
230
|
+
const pendingSiblings: Fiber[] = [];
|
|
231
|
+
const getNextFiber = (currentFiber: Fiber): Fiber | null => {
|
|
232
|
+
if (ascending) return currentFiber.return;
|
|
233
|
+
if (currentFiber !== fiber && currentFiber.sibling) {
|
|
234
|
+
pendingSiblings.push(currentFiber.sibling);
|
|
235
|
+
}
|
|
236
|
+
return currentFiber.child ?? pendingSiblings.pop() ?? null;
|
|
237
|
+
};
|
|
238
|
+
const visit = (firstFiber: Fiber | null): Fiber | null | Promise<Fiber | null> => {
|
|
239
|
+
let currentFiber = firstFiber;
|
|
240
|
+
while (currentFiber) {
|
|
241
|
+
const selectedFiber = currentFiber;
|
|
242
|
+
const selection = selector(selectedFiber);
|
|
243
|
+
if (isPromiseLike<boolean | void>(selection)) {
|
|
244
|
+
return Promise.resolve(selection).then((didSelectFiber) =>
|
|
245
|
+
didSelectFiber === true ? selectedFiber : visit(getNextFiber(selectedFiber)),
|
|
246
|
+
);
|
|
247
|
+
}
|
|
248
|
+
if (selection === true) return selectedFiber;
|
|
249
|
+
currentFiber = getNextFiber(selectedFiber);
|
|
250
|
+
}
|
|
251
|
+
return null;
|
|
252
|
+
};
|
|
253
|
+
return visit(fiber);
|
|
254
|
+
}) as TraverseFiber;
|
|
238
255
|
|
|
239
256
|
const isPromiseLike = <Result>(value: unknown): value is PromiseLike<Result> =>
|
|
240
257
|
(typeof value === "object" || typeof value === "function") &&
|
|
@@ -242,32 +259,6 @@ const isPromiseLike = <Result>(value: unknown): value is PromiseLike<Result> =>
|
|
|
242
259
|
"then" in value &&
|
|
243
260
|
typeof value.then === "function";
|
|
244
261
|
|
|
245
|
-
const traverseFiberChildren = (
|
|
246
|
-
fiber: Fiber,
|
|
247
|
-
selector: FiberSelector,
|
|
248
|
-
ascending: boolean,
|
|
249
|
-
): Fiber | null | Promise<Fiber | null> => {
|
|
250
|
-
const firstChild = ascending ? fiber.return : fiber.child;
|
|
251
|
-
return traverseFiberSiblings(firstChild, selector, ascending);
|
|
252
|
-
};
|
|
253
|
-
|
|
254
|
-
const traverseFiberSiblings = (
|
|
255
|
-
fiber: Fiber | null,
|
|
256
|
-
selector: FiberSelector,
|
|
257
|
-
ascending: boolean,
|
|
258
|
-
): Fiber | null | Promise<Fiber | null> => {
|
|
259
|
-
if (!fiber) return null;
|
|
260
|
-
|
|
261
|
-
const nextSibling = ascending ? null : fiber.sibling;
|
|
262
|
-
const match = traverseFiber(fiber, selector, ascending);
|
|
263
|
-
if (isPromiseLike<Fiber | null>(match)) {
|
|
264
|
-
return Promise.resolve(match).then(
|
|
265
|
-
(resolvedMatch) => resolvedMatch ?? traverseFiberSiblings(nextSibling, selector, ascending),
|
|
266
|
-
);
|
|
267
|
-
}
|
|
268
|
-
return match ?? traverseFiberSiblings(nextSibling, selector, ascending);
|
|
269
|
-
};
|
|
270
|
-
|
|
271
262
|
/**
|
|
272
263
|
* Returns `true` if the {@link Fiber} uses React Compiler's memo cache.
|
|
273
264
|
*/
|
|
@@ -281,7 +272,14 @@ export const hasMemoCache = (fiber: Fiber): boolean => {
|
|
|
281
272
|
export const getType = (type: unknown): null | React.ComponentType<unknown> => {
|
|
282
273
|
if (isComponentType(type)) return type;
|
|
283
274
|
if (typeof type !== "object" || type === null) return null;
|
|
284
|
-
|
|
275
|
+
const visitedTypes = new Set<object>();
|
|
276
|
+
let currentType: unknown = type;
|
|
277
|
+
while (typeof currentType === "object" && currentType !== null) {
|
|
278
|
+
if (visitedTypes.has(currentType)) return null;
|
|
279
|
+
visitedTypes.add(currentType);
|
|
280
|
+
currentType = Reflect.get(currentType, "type") ?? Reflect.get(currentType, "render");
|
|
281
|
+
}
|
|
282
|
+
return isComponentType(currentType) ? currentType : null;
|
|
285
283
|
};
|
|
286
284
|
|
|
287
285
|
/**
|
|
@@ -331,6 +329,8 @@ const rootHooks = new WeakMap<FiberRoot, ReactDevToolsGlobalHook>();
|
|
|
331
329
|
export const getLatestFiber = (fiber: Fiber): Fiber => {
|
|
332
330
|
const alternate = fiber.alternate;
|
|
333
331
|
if (!alternate) return fiber;
|
|
332
|
+
const currentFiber = getCurrentFiberFromRoot(fiber);
|
|
333
|
+
if (currentFiber) return currentFiber;
|
|
334
334
|
|
|
335
335
|
let rootFiber = fiber;
|
|
336
336
|
while (rootFiber.return) {
|
|
@@ -483,13 +483,13 @@ const mountFiberRecursively = (
|
|
|
483
483
|
if (fallbackChildFragment) {
|
|
484
484
|
const fallbackChild = fallbackChildFragment.child;
|
|
485
485
|
if (fallbackChild !== null) {
|
|
486
|
-
mountFiberRecursively(onRender, fallbackChild,
|
|
486
|
+
mountFiberRecursively(onRender, fallbackChild, true);
|
|
487
487
|
}
|
|
488
488
|
}
|
|
489
489
|
} else {
|
|
490
490
|
const primaryChild = fiber.child?.child ?? null;
|
|
491
491
|
if (primaryChild !== null) {
|
|
492
|
-
mountFiberRecursively(onRender, primaryChild,
|
|
492
|
+
mountFiberRecursively(onRender, primaryChild, true);
|
|
493
493
|
}
|
|
494
494
|
}
|
|
495
495
|
} else if (fiber.child !== null) {
|
|
@@ -967,16 +967,17 @@ export const getFiber = <HostInstance>(
|
|
|
967
967
|
|
|
968
968
|
for (const key of Object.keys(hostInstance)) {
|
|
969
969
|
if (isFiberPropertyKey(key)) {
|
|
970
|
-
knownFiberPropertyKeys.add(key);
|
|
971
970
|
const fiber = Reflect.get(hostInstance, key);
|
|
972
|
-
if (isFiber(fiber))
|
|
971
|
+
if (isFiber(fiber)) {
|
|
972
|
+
knownFiberPropertyKeys.add(key);
|
|
973
|
+
return fiber;
|
|
974
|
+
}
|
|
973
975
|
}
|
|
974
976
|
}
|
|
975
977
|
}
|
|
976
978
|
|
|
977
979
|
if (
|
|
978
980
|
hostInstance !== null &&
|
|
979
|
-
hostInstance !== undefined &&
|
|
980
981
|
(typeof hostInstance === "object" || typeof hostInstance === "number")
|
|
981
982
|
) {
|
|
982
983
|
const targetFiberRoots = new Set<FiberRoot>();
|
package/src/rdt-hook.ts
CHANGED
|
@@ -49,6 +49,8 @@ export const isFiberRootUnmounted = (fiberRoot: FiberRoot): boolean => {
|
|
|
49
49
|
};
|
|
50
50
|
|
|
51
51
|
const checkDCE = (functionToCheck: unknown): void => {
|
|
52
|
+
// HACK: Node loads React's unbundled entrypoints, where development guards are intentionally not eliminated.
|
|
53
|
+
if (typeof process !== "undefined" && process.versions?.node) return;
|
|
52
54
|
try {
|
|
53
55
|
const code = Function.prototype.toString.call(functionToCheck);
|
|
54
56
|
if (code.indexOf("^_^") > -1) {
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// Adapted from ReactFiberTreeReflection.js. Copyright (c) Meta Platforms, Inc. and affiliates. MIT licensed.
|
|
2
|
+
import type { Fiber } from "./types.js";
|
|
3
|
+
import { getReactWorkTagsForFiber } from "./index.js";
|
|
4
|
+
|
|
5
|
+
export const getCurrentFiberFromRoot = (fiber: Fiber): Fiber | null => {
|
|
6
|
+
const alternate = fiber.alternate;
|
|
7
|
+
if (!alternate) return null;
|
|
8
|
+
let firstBranch = fiber;
|
|
9
|
+
let secondBranch = alternate;
|
|
10
|
+
|
|
11
|
+
while (firstBranch.return) {
|
|
12
|
+
const firstParent = firstBranch.return;
|
|
13
|
+
const secondParent = firstParent.alternate;
|
|
14
|
+
if (!secondParent) {
|
|
15
|
+
const nextParent = firstParent.return;
|
|
16
|
+
if (!nextParent) return null;
|
|
17
|
+
firstBranch = secondBranch = nextParent;
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (firstParent.child === secondParent.child) {
|
|
22
|
+
let child = firstParent.child;
|
|
23
|
+
while (child) {
|
|
24
|
+
if (child === firstBranch || child === secondBranch) {
|
|
25
|
+
let root = firstParent;
|
|
26
|
+
while (root.return) root = root.return;
|
|
27
|
+
if (root.tag !== getReactWorkTagsForFiber(root).HostRoot) return null;
|
|
28
|
+
return child === firstBranch ? fiber : alternate;
|
|
29
|
+
}
|
|
30
|
+
child = child.sibling;
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (firstBranch.return !== secondBranch.return) {
|
|
36
|
+
firstBranch = firstParent;
|
|
37
|
+
secondBranch = secondParent;
|
|
38
|
+
} else {
|
|
39
|
+
let didFindChild = false;
|
|
40
|
+
let child = firstParent.child;
|
|
41
|
+
while (child) {
|
|
42
|
+
if (child === firstBranch) {
|
|
43
|
+
firstBranch = firstParent;
|
|
44
|
+
secondBranch = secondParent;
|
|
45
|
+
didFindChild = true;
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
if (child === secondBranch) {
|
|
49
|
+
firstBranch = secondParent;
|
|
50
|
+
secondBranch = firstParent;
|
|
51
|
+
didFindChild = true;
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
child = child.sibling;
|
|
55
|
+
}
|
|
56
|
+
if (!didFindChild) {
|
|
57
|
+
child = secondParent.child;
|
|
58
|
+
while (child) {
|
|
59
|
+
if (child === firstBranch) {
|
|
60
|
+
firstBranch = secondParent;
|
|
61
|
+
secondBranch = firstParent;
|
|
62
|
+
didFindChild = true;
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
if (child === secondBranch) {
|
|
66
|
+
firstBranch = firstParent;
|
|
67
|
+
secondBranch = secondParent;
|
|
68
|
+
didFindChild = true;
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
child = child.sibling;
|
|
72
|
+
}
|
|
73
|
+
if (!didFindChild) return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (firstBranch.alternate !== secondBranch) return null;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (firstBranch.tag !== getReactWorkTagsForFiber(firstBranch).HostRoot) return null;
|
|
80
|
+
const root = firstBranch.stateNode;
|
|
81
|
+
if (typeof root !== "object" || root === null || !("current" in root)) return null;
|
|
82
|
+
if (root.current === firstBranch) return fiber;
|
|
83
|
+
return root.current === secondBranch ? alternate : null;
|
|
84
|
+
};
|
|
@@ -49,11 +49,16 @@ export const getReactWorkTagsForFiber = (fiber: Fiber): Readonly<ReactWorkTagMap
|
|
|
49
49
|
|
|
50
50
|
const traversedFibers: Fiber[] = [fiber];
|
|
51
51
|
let rootFiber = fiber;
|
|
52
|
+
let workTags = defaultReactWorkTags;
|
|
52
53
|
while (rootFiber.return) {
|
|
53
54
|
rootFiber = rootFiber.return;
|
|
55
|
+
const ancestorWorkTags = fiberReactWorkTags.get(rootFiber);
|
|
56
|
+
if (ancestorWorkTags) {
|
|
57
|
+
workTags = ancestorWorkTags;
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
54
60
|
traversedFibers.push(rootFiber);
|
|
55
61
|
}
|
|
56
|
-
const workTags = fiberReactWorkTags.get(rootFiber) ?? defaultReactWorkTags;
|
|
57
62
|
for (const traversedFiber of traversedFibers) {
|
|
58
63
|
fiberReactWorkTags.set(traversedFiber, workTags);
|
|
59
64
|
if (traversedFiber.alternate) {
|