bippy
Version:
hack into react internals
9 lines • 13.7 kB
JavaScript
/**
* @license bippy
*
* Copyright (c) Aiden Bai
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var Bippy=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let t=e=>Object.assign(e,{[Symbol.dispose]:e}),n=`0.6.0`,r=`bippy-${n}`,i=Object.defineProperty,a=Object.prototype.hasOwnProperty,o=()=>{},s=e=>{try{Function.prototype.toString.call(e).indexOf(`^_^`)>-1&&setTimeout(()=>{throw Error(`React is running in production mode, but dead code elimination has not been applied. Read how to correctly configure React for production: https://reactjs.org/link/perf-use-production-build`)})}catch{}},c=(e=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__)=>!!(e&&`getFiberRoots`in e),ee=!1,l,u=(e=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__)=>ee?!0:(e&&typeof e.inject==`function`&&(l=e.inject.toString()),!!l?.includes(`(injected)`)),d=new Set,f=new Set,p=new Set,m=new WeakSet,te=null,ne=e=>{if(e.inject===te)return;let t=e.inject,n=n=>{let r=t.call(e,n);if(!m.has(n)){m.add(n);for(let e of p)e(n)}return r};e.inject=n,te=n},h=e=>(ne(y()),p.add(e),t(()=>{p.delete(e)})),g=e=>{e&&d.add(e);let t=new Map,n=0,a={_instrumentationIsActive:!1,_instrumentationSource:r,checkDCE:s,hasUnsupportedRendererAttached:!1,inject(e){let r=++n;return t.set(r,e),f.add(e),a._instrumentationIsActive||(a._instrumentationIsActive=!0,d.forEach(e=>e())),r},on:o,onCommitFiberRoot:o,onCommitFiberUnmount:o,onPostCommitFiberRoot:o,renderers:t,supportsFiber:!0,supportsFlight:!0};try{i(globalThis,`__REACT_DEVTOOLS_GLOBAL_HOOK__`,{configurable:!0,enumerable:!0,get(){return a},set(t){if(t&&typeof t==`object`){let n=a.renderers;a=t,n.size>0&&(n.forEach((e,n)=>{f.add(e),t.renderers.set(n,e)}),_(e))}}});let t=window.hasOwnProperty,n=!1;i(window,`hasOwnProperty`,{configurable:!0,value:function(...e){try{if(!n&&e[0]===`__REACT_DEVTOOLS_GLOBAL_HOOK__`)return globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__=void 0,n=!0,-0}catch{}return t.apply(this,e)},writable:!0})}catch{_(e)}return a},_=e=>{e&&d.add(e);try{let t=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!t)return;if(!t._instrumentationSource){t.checkDCE=s,t.supportsFiber=!0,t.supportsFlight=!0,t.hasUnsupportedRendererAttached=!1,t._instrumentationSource=r,t._instrumentationIsActive=!1;let e=c(t);if(e||(t.on=o),t.renderers.size){t._instrumentationIsActive=!0,d.forEach(e=>e());return}let n=t.inject,i=u(t);i&&!e&&(ee=!0,t.inject({scheduleRefresh(){}})&&(t._instrumentationIsActive=!0)),t.inject=e=>{let r=n(e);return f.add(e),i&&t.renderers.set(r,e),t._instrumentationIsActive=!0,d.forEach(e=>e()),r}}(t.renderers.size||t._instrumentationIsActive||u())&&e?.()}catch{}},v=()=>a.call(globalThis,`__REACT_DEVTOOLS_GLOBAL_HOOK__`),y=e=>v()?(_(e),globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__):g(e),re=()=>!!(typeof window<`u`&&(window.document?.createElement||window.navigator?.product===`ReactNative`)),b=()=>{try{re()&&y()}catch{}};b();let ie=60111,x=`Symbol(react.concurrent_mode)`,S=`Symbol(react.async_mode)`,C=13366,ae=e=>typeof e==`object`&&!!e&&`$$typeof`in e&&[`Symbol(react.element)`,`Symbol(react.transitional.element)`].includes(String(e.$$typeof)),oe=e=>typeof e==`object`&&!!e&&`tag`in e&&`stateNode`in e&&`return`in e&&`child`in e&&`sibling`in e&&`flags`in e,w=e=>{switch(e.tag){case 5:case 26:case 27:return!0;default:return typeof e.type==`string`}},se=e=>{switch(e.tag){case 1:case 11:case 0:case 14:case 15:return!0;default:return!1}},T=e=>!e||typeof e!=`object`?!1:`pendingProps`in e&&!(`containerInfo`in e),ce=(e,t)=>{try{let n=e.dependencies,r=e.alternate?.dependencies;if(!n||!r||typeof n!=`object`||!(`firstContext`in n)||typeof r!=`object`||!(`firstContext`in r))return!1;let i=n.firstContext,a=r.firstContext;for(;i&&typeof i==`object`&&`memoizedValue`in i||a&&typeof a==`object`&&`memoizedValue`in a;){if(t(i,a)===!0)return!0;i=i?.next,a=a?.next}}catch{}return!1},le=(e,t)=>{try{let n=e.memoizedState,r=e.alternate?.memoizedState;for(;n||r;){if(t(n,r)===!0)return!0;n=n?.next,r=r?.next}}catch{}return!1},ue=(e,t)=>{try{let n=e.memoizedProps,r=e.alternate?.memoizedProps||{};for(let e of Object.keys(n))if(t(e,n[e],r[e])===!0)return!0;for(let e of Object.keys(r))if(!(e in n)&&t(e,n[e],r[e])===!0)return!0}catch{}return!1},E=e=>{let t=e.memoizedProps,n=e.alternate?.memoizedProps||{},r=e.flags??e.effectTag??0;switch(e.tag){case 1:case 9:case 11:case 0:case 14:case 15:return(r&1)==1;default:return e.alternate?n!==t||e.alternate.memoizedState!==e.memoizedState||e.alternate.ref!==e.ref:!0}},de=e=>!!(e.flags&(C|8)||e.subtreeFlags&(C|8)),fe=e=>{let t=[],n=[e];for(;n.length;){let e=n.pop();e&&(w(e)&&de(e)&&E(e)&&t.push(e),e.child&&n.push(e.child),e.sibling&&n.push(e.sibling))}return t},pe=e=>{let t=[],n=e;for(;n.return;)t.push(n),n=n.return;return t},D=e=>{switch(e.tag){case 18:return!0;case 7:case 6:case 23:case 22:return!0;case 3:return!1;default:{let t=typeof e.type==`object`&&e.type!==null?e.type.$$typeof:e.type;if(typeof t==`symbol`)return t.description===`react.concurrent_mode`||t.description===`react.async_mode`;switch(t){case ie:case x:case S:return!0;default:return!1}}}},me=(e,t=!1)=>{let n=O(e,w,t);return n||=O(e,w,!t),n},he=e=>{let t=[],n=[];for(w(e)?t.push(e):e.child&&n.push(e.child);n.length;){let e=n.pop();if(!e)break;w(e)?t.push(e):e.child&&n.push(e.child),e.sibling&&n.push(e.sibling)}return t};function O(e,t,n=!1){if(!e)return null;let r=t(e);if(r instanceof Promise)return(async()=>{if(await r===!0)return e;let i=n?e.return:e.child;for(;i;){let e=await A(i,t,n);if(e)return e;i=n?null:i.sibling}return null})();if(r===!0)return e;let i=n?e.return:e.child;for(;i;){let e=k(i,t,n);if(e)return e;i=n?null:i.sibling}return null}let k=(e,t,n=!1)=>{if(!e)return null;if(t(e)===!0)return e;let r=n?e.return:e.child;for(;r;){let e=k(r,t,n);if(e)return e;r=n?null:r.sibling}return null},A=async(e,t,n=!1)=>{if(!e)return null;if(await t(e)===!0)return e;let r=n?e.return:e.child;for(;r;){let e=await A(r,t,n);if(e)return e;r=n?null:r.sibling}return null},ge=e=>{let t=e?.actualDuration??0,n=t,r=e?.child??null;for(;t>0&&r!=null;)n-=r.actualDuration??0,r=r.sibling;return{selfTime:n,totalTime:t}},_e=e=>!!e.updateQueue?.memoCache,j=e=>{let t=e;return typeof t==`function`?t:typeof t==`object`&&t?j(t.type||t.render):null},ve=e=>{let t=e;if(typeof t==`string`)return t;if(typeof t!=`function`&&!(typeof t==`object`&&t))return null;let n=t.displayName||t.name||null;if(n)return n;let r=j(t);return r&&(r.displayName||r.name)||null},ye=e=>{try{if(typeof e.version==`string`&&e.bundleType>0)return`development`}catch{}return`production`},be=()=>{let e=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;return!!e?._instrumentationIsActive||c(e)||u(e)},M=new Set,xe=e=>{let t=e.alternate;if(!t)return e;if(t.actualStartTime&&e.actualStartTime)return t.actualStartTime>e.actualStartTime?t:e;for(let t of M){let n=O(t.current,t=>{if(t===e)return!0});if(n)return n}return e},N=0,P=new WeakMap,F=(e,t=N++)=>{P.set(e,t)},I=e=>{let t=P.get(e);return!t&&e.alternate&&(t=P.get(e.alternate)),t||(t=N++,F(e,t)),t},L=(e,t,n)=>{let r=t;for(;r!=null;){if(P.has(r)||I(r),!D(r)&&E(r)&&e(r,`mount`),r.tag===13)if(r.memoizedState!==null){let t=r.child,n=t?t.sibling:null;if(n){let t=n.child;t!==null&&L(e,t,!1)}}else{let t=null;r.child!==null&&(t=r.child.child),t!==null&&L(e,t,!1)}else r.child!=null&&L(e,r.child,!0);r=n?r.sibling:null}},R=(e,t,n,r)=>{if(P.has(t)||I(t),!n)return;P.has(n)||I(n);let i=t.tag===13,a=!D(t);a&&E(t)&&e(t,`update`);let o=i&&n.memoizedState!==null,s=i&&t.memoizedState!==null;if(o&&s){let r=t.child?.sibling??null,i=n.child?.sibling??null;r!==null&&i!==null&&R(e,r,i,t)}else if(o&&!s){let n=t.child;n!==null&&L(e,n,!0)}else if(!o&&s){B(e,n);let r=t.child?.sibling??null;r!==null&&L(e,r,!0)}else if(t.child!==n.child){let n=t.child;for(;n;){if(n.alternate){let i=n.alternate;R(e,n,i,a?t:r)}else L(e,n,!1);n=n.sibling}}},z=(e,t)=>{(t.tag===3||!D(t))&&e(t,`unmount`)},B=(e,t)=>{let n=t.tag===13&&t.memoizedState!==null,r=t.child;for(n&&(r=(t.child?.sibling??null)?.child??null);r!==null;)r.return!==null&&(z(e,r),B(e,r)),r=r.sibling},Se=0,V=new WeakMap,Ce=(e,t)=>{let n=`current`in e?e.current:e,r=V.get(e);r||(r={id:Se++,prevFiber:null},V.set(e,r));let{prevFiber:i}=r;if(!n)z(t,n);else if(i!==null){let e=i&&i.memoizedState!=null&&i.memoizedState.element!=null&&i.memoizedState.isDehydrated!==!0,r=n.memoizedState!=null&&n.memoizedState.element!=null&&n.memoizedState.isDehydrated!==!0;!e&&r?L(t,n,!1):e&&r?R(t,n,n.alternate,null):e&&!r&&z(t,n)}else L(t,n,!0);r.prevFiber=n},H=new Set,U=!1,we=()=>{if(U||!v())return;let e=y();if(e?.renderers){U=!0,Ne(e);for(let t of e.renderers.values())H.add(t);h(e=>{H.add(e)})}},Te=e=>{if(!v())return null;let t=e;for(;t.return;)t=t.return;let n=Me.get(t.stateNode);return n===void 0?null:y().renderers?.get(n)??null},W=e=>{we();let t=Te(e);return t?[t]:Array.from(H)},G=(e,t,n,r)=>{for(let i of e)try{i.overrideProps?.(t,n,r)}catch{}},Ee=(e,t)=>{let n=e.memoizedState;for(let e=0;e<t;e++){if(!n?.next)return null;n=n.next}let r=n?.queue;return K(r)&&typeof r.dispatch==`function`?r.dispatch:null},De=(e,t)=>{let n=e;for(;n;){let e=n.type;if(e===t||e?.Provider===t)return n;n=n.return}return null},K=e=>Object.prototype.toString.call(e)===`[object Object]`&&(Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null),Oe=(e,t=[])=>{if(!K(e))return[{path:t,value:e}];let n=[];for(let r in e){let i=e[r],a=t.concat(r);K(i)?n.push(...Oe(i,a)):n.push({path:a,value:i})}return n},q=e=>K(e)?Oe(e):[{path:[],value:e}],ke=(e,t)=>{let n=W(e);for(let{path:r,value:i}of q(t))G(n,e,r,i)},Ae=(e,t,n)=>{let r=W(e).filter(e=>!!e.overrideHookState),i=q(n);if(r.length>0){let n=String(t);for(let t of r)for(let{path:r,value:a}of i)try{t.overrideHookState?.(e,n,r,a)}catch{}return}if(K(n))return;let a=Ee(e,t);if(a)try{a(n)}catch{}},je=(e,t,n)=>{let r=De(e,t);if(!r)return;let i=W(r);for(let{path:e,value:t}of q(n))G(i,r,[`value`,...e],t),r.alternate&&G(i,r.alternate,[`value`,...e],t)},J=new Set,Y=new Set,X=new Set,Z=new Set,Q=new WeakMap,Me=new WeakMap,Ne=e=>{let t=Q.get(e)??{};if(Q.set(e,t),!t.onCommitFiberRoot||e.onCommitFiberRoot!==t.onCommitFiberRoot){let n=e.onCommitFiberRoot,r=(t,i,a)=>{if(n?.(t,i,a),Q.get(e)?.onCommitFiberRoot===r){M.add(i),Me.set(i,t);for(let e of J)e(t,i,a)}};t.onCommitFiberRoot=r,e.onCommitFiberRoot=r}if(!t.onCommitFiberUnmount||e.onCommitFiberUnmount!==t.onCommitFiberUnmount){let n=e.onCommitFiberUnmount,r=(t,i)=>{if(n?.(t,i),Q.get(e)?.onCommitFiberUnmount===r)for(let e of Y)e(t,i)};t.onCommitFiberUnmount=r,e.onCommitFiberUnmount=r}if(!t.onPostCommitFiberRoot||e.onPostCommitFiberRoot!==t.onPostCommitFiberRoot){let n=e.onPostCommitFiberRoot,r=(t,i)=>{if(n?.(t,i),Q.get(e)?.onPostCommitFiberRoot===r)for(let e of X)e(t,i)};t.onPostCommitFiberRoot=r,e.onPostCommitFiberRoot=r}if(!t.onScheduleFiberRoot||e.onScheduleFiberRoot!==t.onScheduleFiberRoot){let n=e.onScheduleFiberRoot,r=(t,i,a)=>{if(n?.(t,i,a),Q.get(e)?.onScheduleFiberRoot===r)for(let e of Z)e(t,i,a)};t.onScheduleFiberRoot=r,e.onScheduleFiberRoot=r}},Pe=e=>{let n=y(e.onActive);n._instrumentationSource=e.name??r,Ne(n);let{onActive:i,onCommitFiberRoot:a,onCommitFiberUnmount:o,onPostCommitFiberRoot:s,onScheduleFiberRoot:c}=e;return a&&J.add(a),o&&Y.add(o),s&&X.add(s),c&&Z.add(c),t(()=>{i&&d.delete(i),a&&J.delete(a),o&&Y.delete(o),s&&X.delete(s),c&&Z.delete(c)})},$=new Set,Fe=e=>e.startsWith(`__reactContainer$`)||e.startsWith(`__reactInternalInstance$`)||e.startsWith(`__reactFiber`);return e.ActivityComponentTag=28,e.BIPPY_INSTRUMENTATION_STRING=r,e.CONCURRENT_MODE_NUMBER=ie,e.CONCURRENT_MODE_SYMBOL_DESCRIPTION=`react.concurrent_mode`,e.CONCURRENT_MODE_SYMBOL_STRING=x,e.ClassComponentTag=1,e.ContextConsumerTag=9,e.DEPRECATED_ASYNC_MODE_SYMBOL_DESCRIPTION=`react.async_mode`,e.DEPRECATED_ASYNC_MODE_SYMBOL_STRING=S,e.DehydratedSuspenseComponentTag=18,e.ELEMENT_TYPE_SYMBOL_STRING=`Symbol(react.element)`,e.ForwardRefTag=11,e.FragmentTag=7,e.FunctionComponentTag=0,e.HostComponentTag=5,e.HostHoistableTag=26,e.HostPortalTag=4,e.HostRootTag=3,e.HostSingletonTag=27,e.HostTextTag=6,e.LazyComponentTag=16,e.LegacyHiddenComponentTag=23,e.MemoComponentTag=14,e.OffscreenComponentTag=22,e.SimpleMemoComponentTag=15,e.SuspenseComponentTag=13,e.SuspenseListComponentTag=19,e.TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING=`Symbol(react.transitional.element)`,e.ViewTransitionComponentTag=30,e._fiberRoots=M,e._onActiveListeners=d,e._renderers=f,e.detectReactBuildType=ye,e.didFiberCommit=de,e.didFiberRender=E,e.getDisplayName=ve,e.getFiberFromHostInstance=e=>{let t=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t?.renderers)for(let n of t.renderers.values())try{let t=n.findFiberByHostInstance?.(e);if(t)return t}catch{}if(typeof e==`object`&&e){if(`_reactRootContainer`in e)return e._reactRootContainer?._internalRoot?.current?.child;let t=e.__internalInstanceHandle??e._internalInstanceHandle;if(T(t))return t;let n=e;for(let e of $){let t=n[e];if(t)return t}for(let e of Object.keys(n))if(Fe(e))return $.add(e),n[e]||null}return null},e.getFiberId=I,e.getFiberStack=pe,e.getLatestFiber=xe,e.getMutatedHostFibers=fe,e.getNearestHostFiber=me,e.getNearestHostFibers=he,e.getRDTHook=y,e.getTimings=ge,e.getType=j,e.hasMemoCache=_e,e.hasRDTHook=v,e.installRDTHook=g,e.instrument=Pe,e.isClientEnvironment=re,e.isCompositeFiber=se,e.isFiber=T,e.isHostFiber=w,e.isInstrumentationActive=be,e.isReactRefresh=u,e.isRealReactDevtools=c,e.isValidElement=ae,e.isValidFiber=oe,e.onRendererInject=h,e.overrideContext=je,e.overrideHookState=Ae,e.overrideProps=ke,e.patchRDTHook=_,e.safelyInstallRDTHook=b,e.setFiberId=F,e.toUnsubscribe=t,e.traverseContexts=ce,e.traverseFiber=O,e.traverseProps=ue,e.traverseRenderedFibers=Ce,e.traverseState=le,e.version=n,e})({});