bippy 0.0.24 → 0.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -10,6 +10,8 @@
10
10
  */
11
11
 
12
12
  // src/index.ts
13
+ var version = "0.0.25";
14
+ var BIPPY_INSTRUMENTATION_STRING = `bippy-${version}`;
13
15
  var ClassComponentTag = 1;
14
16
  var FunctionComponentTag = 0;
15
17
  var ContextConsumerTag = 9;
@@ -94,7 +96,7 @@ var traverseProps = (fiber, selector) => {
94
96
  for (const propName of allKeys) {
95
97
  const prevValue = prevProps?.[propName];
96
98
  const nextValue = nextProps?.[propName];
97
- if (selector(prevValue, nextValue) === true) return true;
99
+ if (selector(propName, nextValue, prevValue) === true) return true;
98
100
  }
99
101
  } catch {
100
102
  }
@@ -269,7 +271,7 @@ var installRDTHook = (onActive) => {
269
271
  }
270
272
  return nextID;
271
273
  },
272
- _instrumentationSource: "bippy",
274
+ _instrumentationSource: BIPPY_INSTRUMENTATION_STRING,
273
275
  _instrumentationIsActive: false
274
276
  };
275
277
  try {
@@ -409,7 +411,9 @@ var createFiberVisitor = ({
409
411
  }
410
412
  const { prevFiber } = rootInstance;
411
413
  try {
412
- if (prevFiber !== null) {
414
+ if (!rootFiber) {
415
+ unmountFiber(onRender, root);
416
+ } else if (prevFiber !== null) {
413
417
  const wasMounted = prevFiber && prevFiber.memoizedState != null && prevFiber.memoizedState.element != null && // A dehydrated root is not considered mounted
414
418
  prevFiber.memoizedState.isDehydrated !== true;
415
419
  const isMounted = rootFiber.memoizedState != null && rootFiber.memoizedState.element != null && // A dehydrated root is not considered mounted
@@ -447,7 +451,7 @@ var instrument = ({
447
451
  name
448
452
  }) => {
449
453
  const devtoolsHook = getRDTHook(onActive);
450
- devtoolsHook._instrumentationSource = name ?? "bippy";
454
+ devtoolsHook._instrumentationSource = name ?? BIPPY_INSTRUMENTATION_STRING;
451
455
  const prevOnCommitFiberRoot = devtoolsHook.onCommitFiberRoot;
452
456
  if (onCommitFiberRoot) {
453
457
  devtoolsHook.onCommitFiberRoot = (rendererID, root, priority) => {
@@ -479,6 +483,7 @@ if (isBrowser || !isNode) {
479
483
  installRDTHook();
480
484
  }
481
485
 
486
+ exports.BIPPY_INSTRUMENTATION_STRING = BIPPY_INSTRUMENTATION_STRING;
482
487
  exports.CONCURRENT_MODE_NUMBER = CONCURRENT_MODE_NUMBER;
483
488
  exports.CONCURRENT_MODE_SYMBOL_STRING = CONCURRENT_MODE_SYMBOL_STRING;
484
489
  exports.ChildDeletion = ChildDeletion;
@@ -539,3 +544,4 @@ exports.traverseState = traverseState;
539
544
  exports.unmountFiber = unmountFiber;
540
545
  exports.unmountFiberChildrenRecursively = unmountFiberChildrenRecursively;
541
546
  exports.updateFiberRecursively = updateFiberRecursively;
547
+ exports.version = version;
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { Fiber, FiberRoot } from 'react-reconciler';
2
+ import { FiberRoot, Fiber } from 'react-reconciler';
3
3
 
4
4
  interface ReactRenderer {
5
5
  version: string;
@@ -10,13 +10,15 @@ interface ReactDevToolsGlobalHook {
10
10
  supportsFiber: boolean;
11
11
  supportsFlight: boolean;
12
12
  renderers: Map<number, ReactRenderer>;
13
- onCommitFiberRoot: (rendererID: number, root: unknown, priority: void | number) => void;
14
- onCommitFiberUnmount: (rendererID: number, root: unknown) => void;
15
- onPostCommitFiberRoot: (rendererID: number, root: unknown) => void;
16
- inject: (renderer: unknown) => number;
13
+ onCommitFiberRoot: (rendererID: number, root: FiberRoot, priority: void | number) => void;
14
+ onCommitFiberUnmount: (rendererID: number, fiber: Fiber) => void;
15
+ onPostCommitFiberRoot: (rendererID: number, root: FiberRoot) => void;
16
+ inject: (renderer: ReactRenderer) => number;
17
17
  _instrumentationSource?: string;
18
18
  _instrumentationIsActive?: boolean;
19
19
  }
20
+ declare const version: string | undefined;
21
+ declare const BIPPY_INSTRUMENTATION_STRING: string;
20
22
  declare const ClassComponentTag = 1;
21
23
  declare const FunctionComponentTag = 0;
22
24
  declare const ContextConsumerTag = 9;
@@ -72,7 +74,7 @@ declare const traverseState: (fiber: Fiber, selector: (prevValue: {
72
74
  }, nextValue: {
73
75
  memoizedState: unknown;
74
76
  }) => boolean | void) => boolean;
75
- declare const traverseProps: (fiber: Fiber, selector: (prevValue: unknown, nextValue: unknown) => boolean | void) => boolean;
77
+ declare const traverseProps: (fiber: Fiber, selector: (propName: string, nextValue: unknown, prevValue: unknown) => boolean | void) => boolean;
76
78
  declare const didFiberRender: (fiber: Fiber) => boolean;
77
79
  /**
78
80
  * A commit is means reconciliation occured and the host tree is updated
@@ -129,10 +131,10 @@ declare const createFiberVisitor: ({ onRender: onRenderWithoutState, onError, }:
129
131
  */
130
132
  declare const instrument: ({ onCommitFiberRoot, onCommitFiberUnmount, onPostCommitFiberRoot, onActive, name, }: {
131
133
  onCommitFiberRoot?: (rendererID: number, root: FiberRoot, priority: void | number) => unknown;
132
- onCommitFiberUnmount?: (rendererID: number, root: FiberRoot) => unknown;
134
+ onCommitFiberUnmount?: (rendererID: number, fiber: Fiber) => unknown;
133
135
  onPostCommitFiberRoot?: (rendererID: number, root: FiberRoot) => unknown;
134
136
  onActive?: () => unknown;
135
137
  name?: string;
136
138
  }) => ReactDevToolsGlobalHook;
137
139
 
138
- export { CONCURRENT_MODE_NUMBER, CONCURRENT_MODE_SYMBOL_STRING, ChildDeletion, ClassComponentTag, Cloned, ContentReset, ContextConsumerTag, DEPRECATED_ASYNC_MODE_SYMBOL_STRING, DehydratedSuspenseComponent, DidCapture, ForwardRefTag, Fragment, FunctionComponentTag, HostComponentTag, HostHoistableTag, HostRoot, HostSingletonTag, HostText, Hydrating, LegacyHiddenComponent, MemoComponentTag, MutationMask, OffscreenComponent, OffscreenComponentTag, PerformedWork, Placement, type ReactDevToolsGlobalHook, type ReactRenderer, Ref, SimpleMemoComponentTag, Snapshot, SuspenseComponentTag, Update, Visibility, createFiberVisitor, detectReactBuildType, didFiberCommit, didFiberRender, getDisplayName, getFiberStack, getMutatedHostFibers, getNearestHostFiber, getRDTHook, getTimings, getType, hasMemoCache, installRDTHook, instrument, isCompositeFiber, isHostFiber, isInstrumentationActive, isUsingRDT, isValidElement, mountFiberRecursively, shouldFilterFiber, traverseContexts, traverseFiber, traverseProps, traverseState, unmountFiber, unmountFiberChildrenRecursively, updateFiberRecursively };
140
+ export { BIPPY_INSTRUMENTATION_STRING, CONCURRENT_MODE_NUMBER, CONCURRENT_MODE_SYMBOL_STRING, ChildDeletion, ClassComponentTag, Cloned, ContentReset, ContextConsumerTag, DEPRECATED_ASYNC_MODE_SYMBOL_STRING, DehydratedSuspenseComponent, DidCapture, ForwardRefTag, Fragment, FunctionComponentTag, HostComponentTag, HostHoistableTag, HostRoot, HostSingletonTag, HostText, Hydrating, LegacyHiddenComponent, MemoComponentTag, MutationMask, OffscreenComponent, OffscreenComponentTag, PerformedWork, Placement, type ReactDevToolsGlobalHook, type ReactRenderer, Ref, SimpleMemoComponentTag, Snapshot, SuspenseComponentTag, Update, Visibility, createFiberVisitor, detectReactBuildType, didFiberCommit, didFiberRender, getDisplayName, getFiberStack, getMutatedHostFibers, getNearestHostFiber, getRDTHook, getTimings, getType, hasMemoCache, installRDTHook, instrument, isCompositeFiber, isHostFiber, isInstrumentationActive, isUsingRDT, isValidElement, mountFiberRecursively, shouldFilterFiber, traverseContexts, traverseFiber, traverseProps, traverseState, unmountFiber, unmountFiberChildrenRecursively, updateFiberRecursively, version };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { Fiber, FiberRoot } from 'react-reconciler';
2
+ import { FiberRoot, Fiber } from 'react-reconciler';
3
3
 
4
4
  interface ReactRenderer {
5
5
  version: string;
@@ -10,13 +10,15 @@ interface ReactDevToolsGlobalHook {
10
10
  supportsFiber: boolean;
11
11
  supportsFlight: boolean;
12
12
  renderers: Map<number, ReactRenderer>;
13
- onCommitFiberRoot: (rendererID: number, root: unknown, priority: void | number) => void;
14
- onCommitFiberUnmount: (rendererID: number, root: unknown) => void;
15
- onPostCommitFiberRoot: (rendererID: number, root: unknown) => void;
16
- inject: (renderer: unknown) => number;
13
+ onCommitFiberRoot: (rendererID: number, root: FiberRoot, priority: void | number) => void;
14
+ onCommitFiberUnmount: (rendererID: number, fiber: Fiber) => void;
15
+ onPostCommitFiberRoot: (rendererID: number, root: FiberRoot) => void;
16
+ inject: (renderer: ReactRenderer) => number;
17
17
  _instrumentationSource?: string;
18
18
  _instrumentationIsActive?: boolean;
19
19
  }
20
+ declare const version: string | undefined;
21
+ declare const BIPPY_INSTRUMENTATION_STRING: string;
20
22
  declare const ClassComponentTag = 1;
21
23
  declare const FunctionComponentTag = 0;
22
24
  declare const ContextConsumerTag = 9;
@@ -72,7 +74,7 @@ declare const traverseState: (fiber: Fiber, selector: (prevValue: {
72
74
  }, nextValue: {
73
75
  memoizedState: unknown;
74
76
  }) => boolean | void) => boolean;
75
- declare const traverseProps: (fiber: Fiber, selector: (prevValue: unknown, nextValue: unknown) => boolean | void) => boolean;
77
+ declare const traverseProps: (fiber: Fiber, selector: (propName: string, nextValue: unknown, prevValue: unknown) => boolean | void) => boolean;
76
78
  declare const didFiberRender: (fiber: Fiber) => boolean;
77
79
  /**
78
80
  * A commit is means reconciliation occured and the host tree is updated
@@ -129,10 +131,10 @@ declare const createFiberVisitor: ({ onRender: onRenderWithoutState, onError, }:
129
131
  */
130
132
  declare const instrument: ({ onCommitFiberRoot, onCommitFiberUnmount, onPostCommitFiberRoot, onActive, name, }: {
131
133
  onCommitFiberRoot?: (rendererID: number, root: FiberRoot, priority: void | number) => unknown;
132
- onCommitFiberUnmount?: (rendererID: number, root: FiberRoot) => unknown;
134
+ onCommitFiberUnmount?: (rendererID: number, fiber: Fiber) => unknown;
133
135
  onPostCommitFiberRoot?: (rendererID: number, root: FiberRoot) => unknown;
134
136
  onActive?: () => unknown;
135
137
  name?: string;
136
138
  }) => ReactDevToolsGlobalHook;
137
139
 
138
- export { CONCURRENT_MODE_NUMBER, CONCURRENT_MODE_SYMBOL_STRING, ChildDeletion, ClassComponentTag, Cloned, ContentReset, ContextConsumerTag, DEPRECATED_ASYNC_MODE_SYMBOL_STRING, DehydratedSuspenseComponent, DidCapture, ForwardRefTag, Fragment, FunctionComponentTag, HostComponentTag, HostHoistableTag, HostRoot, HostSingletonTag, HostText, Hydrating, LegacyHiddenComponent, MemoComponentTag, MutationMask, OffscreenComponent, OffscreenComponentTag, PerformedWork, Placement, type ReactDevToolsGlobalHook, type ReactRenderer, Ref, SimpleMemoComponentTag, Snapshot, SuspenseComponentTag, Update, Visibility, createFiberVisitor, detectReactBuildType, didFiberCommit, didFiberRender, getDisplayName, getFiberStack, getMutatedHostFibers, getNearestHostFiber, getRDTHook, getTimings, getType, hasMemoCache, installRDTHook, instrument, isCompositeFiber, isHostFiber, isInstrumentationActive, isUsingRDT, isValidElement, mountFiberRecursively, shouldFilterFiber, traverseContexts, traverseFiber, traverseProps, traverseState, unmountFiber, unmountFiberChildrenRecursively, updateFiberRecursively };
140
+ export { BIPPY_INSTRUMENTATION_STRING, CONCURRENT_MODE_NUMBER, CONCURRENT_MODE_SYMBOL_STRING, ChildDeletion, ClassComponentTag, Cloned, ContentReset, ContextConsumerTag, DEPRECATED_ASYNC_MODE_SYMBOL_STRING, DehydratedSuspenseComponent, DidCapture, ForwardRefTag, Fragment, FunctionComponentTag, HostComponentTag, HostHoistableTag, HostRoot, HostSingletonTag, HostText, Hydrating, LegacyHiddenComponent, MemoComponentTag, MutationMask, OffscreenComponent, OffscreenComponentTag, PerformedWork, Placement, type ReactDevToolsGlobalHook, type ReactRenderer, Ref, SimpleMemoComponentTag, Snapshot, SuspenseComponentTag, Update, Visibility, createFiberVisitor, detectReactBuildType, didFiberCommit, didFiberRender, getDisplayName, getFiberStack, getMutatedHostFibers, getNearestHostFiber, getRDTHook, getTimings, getType, hasMemoCache, installRDTHook, instrument, isCompositeFiber, isHostFiber, isInstrumentationActive, isUsingRDT, isValidElement, mountFiberRecursively, shouldFilterFiber, traverseContexts, traverseFiber, traverseProps, traverseState, unmountFiber, unmountFiberChildrenRecursively, updateFiberRecursively, version };
@@ -6,5 +6,5 @@ var Bippy=(function(exports){'use strict';/**
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
- var P=1,M=0,z=9,I=13,A=22,N=11,V=14,U=15,j=5,L=26,B=27,G=18,W=6,$=7,K=23,Y=22,J=3,Q=60111,_="Symbol(react.concurrent_mode)",k="Symbol(react.async_mode)",q=1,X=2,Z=128,ee=4096,te=4,ne=8,oe=16,re=32,ie=512,se=1024,le=8192,ae=13366,ce=e=>typeof e=="object"&&e!=null&&"$$typeof"in e&&["Symbol(react.element)","Symbol(react.transitional.element)"].includes(String(e.$$typeof)),d=e=>e.tag===5||e.tag===26||e.tag===27,ue=e=>e.tag===0||e.tag===1||e.tag===15||e.tag===14||e.tag===11,me=(e,n)=>{try{let o=e.dependencies,t=e.alternate?.dependencies;if(!o||!t||typeof o!="object"||!("firstContext"in o)||typeof t!="object"||!("firstContext"in t))return !1;let s=o.firstContext,r=t.firstContext;for(;s&&typeof s=="object"&&"memoizedValue"in s&&r&&typeof r=="object"&&"memoizedValue"in r;){if(n(s,r)===!0)return !0;s=s.next,r=r.next;}}catch{}return !1},pe=(e,n)=>{try{let o=e.memoizedState,t=e.alternate?.memoizedState;for(;o&&t;){if(n(o,t)===!0)return !0;o=o.next,t=t.next;}}catch{}return !1},de=(e,n)=>{try{let o=e.memoizedProps,t=e.alternate?.memoizedProps||{},s=new Set([...Object.keys(t),...Object.keys(o)]);for(let r of s){let l=t?.[r],c=o?.[r];if(n(l,c)===!0)return !0}}catch{}return !1},C=e=>{let n=e.memoizedProps,o=e.alternate?.memoizedProps||{},t=e.flags??e.effectTag??0;switch(e.tag){case 1:case 0:case 9:case 11:case 14:case 15:return (t&1)===1;default:return e.alternate?o!==n||e.alternate.memoizedState!==e.memoizedState||e.alternate.ref!==e.ref:!0}},w=e=>!!(e.flags&22||e.subtreeFlags&22),be=e=>{let n=[],o=[e];for(;o.length;){let t=o.pop();t&&(d(t)&&w(t)&&C(t)&&n.push(t),t.child&&o.push(t.child),t.sibling&&o.push(t.sibling));}return n},fe=e=>{let n=[];for(;e.return;)n.push(e),e=e.return;let o=new Array(n.length);for(let t=0;t<n.length;t++)o[t]=n[n.length-t-1];return o},g=e=>{switch(e.tag){case 18:return !0;case 6:case 7:case 23:case 22:return !0;case 3:return !1;default:{let n=typeof e.type=="object"&&e.type!==null?e.type.$$typeof:e.type;switch(typeof n=="symbol"?n.toString():n){case 60111:case _:case k:return !0;default:return !1}}}},Ce=e=>{let n=b(e,d);return n||(n=b(e,d,!0)),n},b=(e,n,o=!1)=>{if(!e)return null;if(n(e)===!0)return e;let t=o?e.return:e.child;for(;t;){let s=b(t,n,o);if(s)return s;t=o?null:t.sibling;}return null},ge=e=>{let n=e?.actualDuration??0,o=n,t=e?.child??null;for(;n>0&&t!=null;)o-=t.actualDuration??0,t=t.sibling;return {selfTime:o,totalTime:n}},he=e=>!!e.updateQueue?.memoCache,F=e=>typeof e=="function"?e:typeof e=="object"&&e?F(e.type||e.render):null,xe=e=>{if(typeof e!="function"&&!(typeof e=="object"&&e))return null;let n=e.displayName||e.name||null;return n||(e=F(e),e&&(e.displayName||e.name)||null)},v=()=>globalThis.__REACT_DEVTOOLS_BACKEND_MANAGER_INJECTED__!=null,Fe=e=>{try{if(typeof e.version=="string"&&e.bundleType>0)return "development"}catch{}return "production"},O=e=>{try{Function.prototype.toString.call(e).indexOf("^_^")>-1&&setTimeout(()=>{throw new 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{}},p=()=>{},y=e=>{let n=new Map,o=0,t={checkDCE:O,supportsFiber:!0,supportsFlight:!0,renderers:n,onCommitFiberRoot:p,onCommitFiberUnmount:p,onPostCommitFiberRoot:p,inject(s){let r=++o;return n.set(r,s),t._instrumentationIsActive||(t._instrumentationIsActive=!0,e?.()),r},_instrumentationSource:"bippy",_instrumentationIsActive:!1};try{Object.defineProperty(globalThis,"__REACT_DEVTOOLS_GLOBAL_HOOK__",{configurable:!0,value:t});}catch{}return t},T=e=>{let n=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;return n&&e?.(),window.hasOwnProperty("__REACT_DEVTOOLS_GLOBAL_HOOK__")||(n=y(e)),n},ye=()=>!!T()._instrumentationIsActive||v(),m=(e,n,o)=>{let t=n;for(;t!=null;){if(!g(t)&&C(t)&&e(t,"mount"),t.tag===13)if(t.memoizedState!==null){let l=t.child,c=l?l.sibling:null;if(c){let i=c.child;i!==null&&m(e,i,!1);}}else {let l=null;t.child!==null&&(l=t.child.child),l!==null&&m(e,l,!1);}else t.child!=null&&m(e,t.child,!0);t=o?t.sibling:null;}},f=(e,n,o,t)=>{if(!o)return;let s=n.tag===13,r=!g(n);r&&C(n)&&e(n,"update");let l=s&&o.memoizedState!==null,c=s&&n.memoizedState!==null;if(l&&c){let i=n.child?.sibling??null,a=o.child?.sibling??null;i!==null&&a!==null&&f(e,i,a);}else if(l&&!c){let i=n.child;i!==null&&m(e,i,!0);}else if(!l&&c){S(e,o);let i=n.child?.sibling??null;i!==null&&m(e,i,!0);}else if(n.child!==o.child){let i=n.child;for(;i;){if(i.alternate){let a=i.alternate;f(e,i,a);}else m(e,i,!1);i=i.sibling;}}},R=(e,n)=>{(n.tag===3||!g(n))&&e(n,"unmount");},S=(e,n)=>{let o=n.tag===13&&n.memoizedState!==null,t=n.child;for(o&&(t=(n.child?.sibling??null)?.child??null);t!==null;)t.return!==null&&(R(e,t),S(e,t)),t=t.sibling;},D=0,x=new WeakMap,Te=({onRender:e,onError:n})=>(o,t,s)=>{let r=t.current,l=(a,u)=>e(a,u,s),c=x.get(t);c||(c={prevFiber:null,id:D++},x.set(t,c));let{prevFiber:i}=c;try{if(i!==null){let a=i&&i.memoizedState!=null&&i.memoizedState.element!=null&&i.memoizedState.isDehydrated!==!0,u=r.memoizedState!=null&&r.memoizedState.element!=null&&r.memoizedState.isDehydrated!==!0;!a&&u?m(l,r,!1):a&&u?f(l,r,r.alternate,null):a&&!u&&R(l,r);}else m(l,r,!1);}catch(a){if(n)n(a);else throw a}c.prevFiber=r;},Re=({onCommitFiberRoot:e,onCommitFiberUnmount:n,onPostCommitFiberRoot:o,onActive:t,name:s})=>{let r=T(t);r._instrumentationSource=s??"bippy";let l=r.onCommitFiberRoot;e&&(r.onCommitFiberRoot=(a,u,h)=>{l&&l(a,u,h),e(a,u,h);});let c=r.onCommitFiberUnmount;n&&(r.onCommitFiberUnmount=(a,u)=>{c&&c(a,u),n(a,u);});let i=r.onPostCommitFiberRoot;return o&&(r.onPostCommitFiberRoot=(a,u)=>{i&&i(a,u);}),r},H=typeof document<"u"&&typeof document.createElement=="function",E=typeof process<"u"&&process.versions!=null&&process.versions.node!=null;(H||!E)&&y();
10
- exports.CONCURRENT_MODE_NUMBER=Q;exports.CONCURRENT_MODE_SYMBOL_STRING=_;exports.ChildDeletion=oe;exports.ClassComponentTag=P;exports.Cloned=ne;exports.ContentReset=re;exports.ContextConsumerTag=z;exports.DEPRECATED_ASYNC_MODE_SYMBOL_STRING=k;exports.DehydratedSuspenseComponent=G;exports.DidCapture=Z;exports.ForwardRefTag=N;exports.Fragment=$;exports.FunctionComponentTag=M;exports.HostComponentTag=j;exports.HostHoistableTag=L;exports.HostRoot=J;exports.HostSingletonTag=B;exports.HostText=W;exports.Hydrating=ee;exports.LegacyHiddenComponent=K;exports.MemoComponentTag=V;exports.MutationMask=ae;exports.OffscreenComponent=Y;exports.OffscreenComponentTag=A;exports.PerformedWork=q;exports.Placement=X;exports.Ref=ie;exports.SimpleMemoComponentTag=U;exports.Snapshot=se;exports.SuspenseComponentTag=I;exports.Update=te;exports.Visibility=le;exports.createFiberVisitor=Te;exports.detectReactBuildType=Fe;exports.didFiberCommit=w;exports.didFiberRender=C;exports.getDisplayName=xe;exports.getFiberStack=fe;exports.getMutatedHostFibers=be;exports.getNearestHostFiber=Ce;exports.getRDTHook=T;exports.getTimings=ge;exports.getType=F;exports.hasMemoCache=he;exports.installRDTHook=y;exports.instrument=Re;exports.isCompositeFiber=ue;exports.isHostFiber=d;exports.isInstrumentationActive=ye;exports.isUsingRDT=v;exports.isValidElement=ce;exports.mountFiberRecursively=m;exports.shouldFilterFiber=g;exports.traverseContexts=me;exports.traverseFiber=b;exports.traverseProps=de;exports.traverseState=pe;exports.unmountFiber=R;exports.unmountFiberChildrenRecursively=S;exports.updateFiberRecursively=f;return exports;})({});
9
+ var A="0.0.25",v=`bippy-${A}`,k=1,w=0,M=9,C=13,V=22,O=11,D=14,E=15,j=5,B=26,L=27,U=18,G=6,$=7,K=23,W=22,H=3,Y=60111,J="Symbol(react.concurrent_mode)",Q="Symbol(react.async_mode)",T=1,p=2,le=128,q=4096,b=4,ae=8,f=16,X=32,ce=512,Z=1024,ee=8192,ue=p|b|f|X|q|ee|Z,me=e=>typeof e=="object"&&e!=null&&"$$typeof"in e&&["Symbol(react.element)","Symbol(react.transitional.element)"].includes(String(e.$$typeof)),h=e=>e.tag===j||e.tag===B||e.tag===L,de=e=>e.tag===w||e.tag===k||e.tag===E||e.tag===D||e.tag===O,pe=(e,n)=>{try{let o=e.dependencies,t=e.alternate?.dependencies;if(!o||!t||typeof o!="object"||!("firstContext"in o)||typeof t!="object"||!("firstContext"in t))return !1;let s=o.firstContext,r=t.firstContext;for(;s&&typeof s=="object"&&"memoizedValue"in s&&r&&typeof r=="object"&&"memoizedValue"in r;){if(n(s,r)===!0)return !0;s=s.next,r=r.next;}}catch{}return !1},be=(e,n)=>{try{let o=e.memoizedState,t=e.alternate?.memoizedState;for(;o&&t;){if(n(o,t)===!0)return !0;o=o.next,t=t.next;}}catch{}return !1},fe=(e,n)=>{try{let o=e.memoizedProps,t=e.alternate?.memoizedProps||{},s=new Set([...Object.keys(t),...Object.keys(o)]);for(let r of s){let l=t?.[r],c=o?.[r];if(n(r,c,l)===!0)return !0}}catch{}return !1},y=e=>{let n=e.memoizedProps,o=e.alternate?.memoizedProps||{},t=e.flags??e.effectTag??0;switch(e.tag){case k:case w:case M:case O:case D:case E:return (t&T)===T;default:return e.alternate?o!==n||e.alternate.memoizedState!==e.memoizedState||e.alternate.ref!==e.ref:!0}},te=e=>!!(e.flags&(b|p|f)||e.subtreeFlags&(b|p|f)),he=e=>{let n=[],o=[e];for(;o.length;){let t=o.pop();t&&(h(t)&&te(t)&&y(t)&&n.push(t),t.child&&o.push(t.child),t.sibling&&o.push(t.sibling));}return n},xe=e=>{let n=[];for(;e.return;)n.push(e),e=e.return;let o=new Array(n.length);for(let t=0;t<n.length;t++)o[t]=n[n.length-t-1];return o},R=e=>{switch(e.tag){case U:return !0;case G:case $:case K:case W:return !0;case H:return !1;default:{let n=typeof e.type=="object"&&e.type!==null?e.type.$$typeof:e.type;switch(typeof n=="symbol"?n.toString():n){case Y:case J:case Q:return !0;default:return !1}}}},Fe=e=>{let n=x(e,h);return n||(n=x(e,h,!0)),n},x=(e,n,o=!1)=>{if(!e)return null;if(n(e)===!0)return e;let t=o?e.return:e.child;for(;t;){let s=x(t,n,o);if(s)return s;t=o?null:t.sibling;}return null},ge=e=>{let n=e?.actualDuration??0,o=n,t=e?.child??null;for(;n>0&&t!=null;)o-=t.actualDuration??0,t=t.sibling;return {selfTime:o,totalTime:n}},Ce=e=>!!e.updateQueue?.memoCache,I=e=>typeof e=="function"?e:typeof e=="object"&&e?I(e.type||e.render):null,ye=e=>{if(typeof e!="function"&&!(typeof e=="object"&&e))return null;let n=e.displayName||e.name||null;return n||(e=I(e),e&&(e.displayName||e.name)||null)},ne=()=>globalThis.__REACT_DEVTOOLS_BACKEND_MANAGER_INJECTED__!=null,Re=e=>{try{if(typeof e.version=="string"&&e.bundleType>0)return "development"}catch{}return "production"},oe=e=>{try{Function.prototype.toString.call(e).indexOf("^_^")>-1&&setTimeout(()=>{throw new 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{}},d=()=>{},N=e=>{let n=new Map,o=0,t={checkDCE:oe,supportsFiber:!0,supportsFlight:!0,renderers:n,onCommitFiberRoot:d,onCommitFiberUnmount:d,onPostCommitFiberRoot:d,inject(s){let r=++o;return n.set(r,s),t._instrumentationIsActive||(t._instrumentationIsActive=!0,e?.()),r},_instrumentationSource:v,_instrumentationIsActive:!1};try{Object.defineProperty(globalThis,"__REACT_DEVTOOLS_GLOBAL_HOOK__",{configurable:!0,value:t});}catch{}return t},z=e=>{let n=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;return n&&e?.(),window.hasOwnProperty("__REACT_DEVTOOLS_GLOBAL_HOOK__")||(n=N(e)),n},Se=()=>!!z()._instrumentationIsActive||ne(),m=(e,n,o)=>{let t=n;for(;t!=null;){if(!R(t)&&y(t)&&e(t,"mount"),t.tag===C)if(t.memoizedState!==null){let l=t.child,c=l?l.sibling:null;if(c){let i=c.child;i!==null&&m(e,i,!1);}}else {let l=null;t.child!==null&&(l=t.child.child),l!==null&&m(e,l,!1);}else t.child!=null&&m(e,t.child,!0);t=o?t.sibling:null;}},F=(e,n,o,t)=>{if(!o)return;let s=n.tag===C,r=!R(n);r&&y(n)&&e(n,"update");let l=s&&o.memoizedState!==null,c=s&&n.memoizedState!==null;if(l&&c){let i=n.child?.sibling??null,a=o.child?.sibling??null;i!==null&&a!==null&&F(e,i,a);}else if(l&&!c){let i=n.child;i!==null&&m(e,i,!0);}else if(!l&&c){P(e,o);let i=n.child?.sibling??null;i!==null&&m(e,i,!0);}else if(n.child!==o.child){let i=n.child;for(;i;){if(i.alternate){let a=i.alternate;F(e,i,a);}else m(e,i,!1);i=i.sibling;}}},g=(e,n)=>{(n.tag===H||!R(n))&&e(n,"unmount");},P=(e,n)=>{let o=n.tag===C&&n.memoizedState!==null,t=n.child;for(o&&(t=(n.child?.sibling??null)?.child??null);t!==null;)t.return!==null&&(g(e,t),P(e,t)),t=t.sibling;},re=0,_=new WeakMap,Te=({onRender:e,onError:n})=>(o,t,s)=>{let r=t.current,l=(a,u)=>e(a,u,s),c=_.get(t);c||(c={prevFiber:null,id:re++},_.set(t,c));let{prevFiber:i}=c;try{if(!r)g(l,t);else if(i!==null){let a=i&&i.memoizedState!=null&&i.memoizedState.element!=null&&i.memoizedState.isDehydrated!==!0,u=r.memoizedState!=null&&r.memoizedState.element!=null&&r.memoizedState.isDehydrated!==!0;!a&&u?m(l,r,!1):a&&u?F(l,r,r.alternate,null):a&&!u&&g(l,r);}else m(l,r,!1);}catch(a){if(n)n(a);else throw a}c.prevFiber=r;},_e=({onCommitFiberRoot:e,onCommitFiberUnmount:n,onPostCommitFiberRoot:o,onActive:t,name:s})=>{let r=z(t);r._instrumentationSource=s??v;let l=r.onCommitFiberRoot;e&&(r.onCommitFiberRoot=(a,u,S)=>{l&&l(a,u,S),e(a,u,S);});let c=r.onCommitFiberUnmount;n&&(r.onCommitFiberUnmount=(a,u)=>{c&&c(a,u),n(a,u);});let i=r.onPostCommitFiberRoot;return o&&(r.onPostCommitFiberRoot=(a,u)=>{i&&i(a,u);}),r},ie=typeof document<"u"&&typeof document.createElement=="function",se=typeof process<"u"&&process.versions!=null&&process.versions.node!=null;(ie||!se)&&N();
10
+ exports.BIPPY_INSTRUMENTATION_STRING=v;exports.CONCURRENT_MODE_NUMBER=Y;exports.CONCURRENT_MODE_SYMBOL_STRING=J;exports.ChildDeletion=f;exports.ClassComponentTag=k;exports.Cloned=ae;exports.ContentReset=X;exports.ContextConsumerTag=M;exports.DEPRECATED_ASYNC_MODE_SYMBOL_STRING=Q;exports.DehydratedSuspenseComponent=U;exports.DidCapture=le;exports.ForwardRefTag=O;exports.Fragment=$;exports.FunctionComponentTag=w;exports.HostComponentTag=j;exports.HostHoistableTag=B;exports.HostRoot=H;exports.HostSingletonTag=L;exports.HostText=G;exports.Hydrating=q;exports.LegacyHiddenComponent=K;exports.MemoComponentTag=D;exports.MutationMask=ue;exports.OffscreenComponent=W;exports.OffscreenComponentTag=V;exports.PerformedWork=T;exports.Placement=p;exports.Ref=ce;exports.SimpleMemoComponentTag=E;exports.Snapshot=Z;exports.SuspenseComponentTag=C;exports.Update=b;exports.Visibility=ee;exports.createFiberVisitor=Te;exports.detectReactBuildType=Re;exports.didFiberCommit=te;exports.didFiberRender=y;exports.getDisplayName=ye;exports.getFiberStack=xe;exports.getMutatedHostFibers=he;exports.getNearestHostFiber=Fe;exports.getRDTHook=z;exports.getTimings=ge;exports.getType=I;exports.hasMemoCache=Ce;exports.installRDTHook=N;exports.instrument=_e;exports.isCompositeFiber=de;exports.isHostFiber=h;exports.isInstrumentationActive=Se;exports.isUsingRDT=ne;exports.isValidElement=me;exports.mountFiberRecursively=m;exports.shouldFilterFiber=R;exports.traverseContexts=pe;exports.traverseFiber=x;exports.traverseProps=fe;exports.traverseState=be;exports.unmountFiber=g;exports.unmountFiberChildrenRecursively=P;exports.updateFiberRecursively=F;exports.version=A;return exports;})({});
package/dist/index.js CHANGED
@@ -8,6 +8,8 @@
8
8
  */
9
9
 
10
10
  // src/index.ts
11
+ var version = "0.0.25";
12
+ var BIPPY_INSTRUMENTATION_STRING = `bippy-${version}`;
11
13
  var ClassComponentTag = 1;
12
14
  var FunctionComponentTag = 0;
13
15
  var ContextConsumerTag = 9;
@@ -92,7 +94,7 @@ var traverseProps = (fiber, selector) => {
92
94
  for (const propName of allKeys) {
93
95
  const prevValue = prevProps?.[propName];
94
96
  const nextValue = nextProps?.[propName];
95
- if (selector(prevValue, nextValue) === true) return true;
97
+ if (selector(propName, nextValue, prevValue) === true) return true;
96
98
  }
97
99
  } catch {
98
100
  }
@@ -267,7 +269,7 @@ var installRDTHook = (onActive) => {
267
269
  }
268
270
  return nextID;
269
271
  },
270
- _instrumentationSource: "bippy",
272
+ _instrumentationSource: BIPPY_INSTRUMENTATION_STRING,
271
273
  _instrumentationIsActive: false
272
274
  };
273
275
  try {
@@ -407,7 +409,9 @@ var createFiberVisitor = ({
407
409
  }
408
410
  const { prevFiber } = rootInstance;
409
411
  try {
410
- if (prevFiber !== null) {
412
+ if (!rootFiber) {
413
+ unmountFiber(onRender, root);
414
+ } else if (prevFiber !== null) {
411
415
  const wasMounted = prevFiber && prevFiber.memoizedState != null && prevFiber.memoizedState.element != null && // A dehydrated root is not considered mounted
412
416
  prevFiber.memoizedState.isDehydrated !== true;
413
417
  const isMounted = rootFiber.memoizedState != null && rootFiber.memoizedState.element != null && // A dehydrated root is not considered mounted
@@ -445,7 +449,7 @@ var instrument = ({
445
449
  name
446
450
  }) => {
447
451
  const devtoolsHook = getRDTHook(onActive);
448
- devtoolsHook._instrumentationSource = name ?? "bippy";
452
+ devtoolsHook._instrumentationSource = name ?? BIPPY_INSTRUMENTATION_STRING;
449
453
  const prevOnCommitFiberRoot = devtoolsHook.onCommitFiberRoot;
450
454
  if (onCommitFiberRoot) {
451
455
  devtoolsHook.onCommitFiberRoot = (rendererID, root, priority) => {
@@ -477,4 +481,4 @@ if (isBrowser || !isNode) {
477
481
  installRDTHook();
478
482
  }
479
483
 
480
- export { CONCURRENT_MODE_NUMBER, CONCURRENT_MODE_SYMBOL_STRING, ChildDeletion, ClassComponentTag, Cloned, ContentReset, ContextConsumerTag, DEPRECATED_ASYNC_MODE_SYMBOL_STRING, DehydratedSuspenseComponent, DidCapture, ForwardRefTag, Fragment, FunctionComponentTag, HostComponentTag, HostHoistableTag, HostRoot, HostSingletonTag, HostText, Hydrating, LegacyHiddenComponent, MemoComponentTag, MutationMask, OffscreenComponent, OffscreenComponentTag, PerformedWork, Placement, Ref, SimpleMemoComponentTag, Snapshot, SuspenseComponentTag, Update, Visibility, createFiberVisitor, detectReactBuildType, didFiberCommit, didFiberRender, getDisplayName, getFiberStack, getMutatedHostFibers, getNearestHostFiber, getRDTHook, getTimings, getType, hasMemoCache, installRDTHook, instrument, isCompositeFiber, isHostFiber, isInstrumentationActive, isUsingRDT, isValidElement, mountFiberRecursively, shouldFilterFiber, traverseContexts, traverseFiber, traverseProps, traverseState, unmountFiber, unmountFiberChildrenRecursively, updateFiberRecursively };
484
+ export { BIPPY_INSTRUMENTATION_STRING, CONCURRENT_MODE_NUMBER, CONCURRENT_MODE_SYMBOL_STRING, ChildDeletion, ClassComponentTag, Cloned, ContentReset, ContextConsumerTag, DEPRECATED_ASYNC_MODE_SYMBOL_STRING, DehydratedSuspenseComponent, DidCapture, ForwardRefTag, Fragment, FunctionComponentTag, HostComponentTag, HostHoistableTag, HostRoot, HostSingletonTag, HostText, Hydrating, LegacyHiddenComponent, MemoComponentTag, MutationMask, OffscreenComponent, OffscreenComponentTag, PerformedWork, Placement, Ref, SimpleMemoComponentTag, Snapshot, SuspenseComponentTag, Update, Visibility, createFiberVisitor, detectReactBuildType, didFiberCommit, didFiberRender, getDisplayName, getFiberStack, getMutatedHostFibers, getNearestHostFiber, getRDTHook, getTimings, getType, hasMemoCache, installRDTHook, instrument, isCompositeFiber, isHostFiber, isInstrumentationActive, isUsingRDT, isValidElement, mountFiberRecursively, shouldFilterFiber, traverseContexts, traverseFiber, traverseProps, traverseState, unmountFiber, unmountFiberChildrenRecursively, updateFiberRecursively, version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bippy",
3
- "version": "0.0.24",
3
+ "version": "0.0.25",
4
4
  "description": "a hacky way to get fibers from react",
5
5
  "keywords": [
6
6
  "react",