bippy 0.0.20 → 0.0.22

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
@@ -43,7 +43,7 @@ var Snapshot = 1024;
43
43
  var Visibility = 8192;
44
44
  var MutationMask = Placement | Update | ChildDeletion | ContentReset | Hydrating | Visibility | Snapshot;
45
45
  var isValidElement = (element) => typeof element === "object" && element != null && "$$typeof" in element && // react 18 uses Symbol.for('react.element'), react 19 uses Symbol.for('react.transitional.element')
46
- ["react.element", "react.transitional.element"].includes(
46
+ ["Symbol(react.element)", "Symbol(react.transitional.element)"].includes(
47
47
  String(element.$$typeof)
48
48
  );
49
49
  var isHostFiber = (fiber) => fiber.tag === HostComponentTag || // @ts-expect-error: it exists
@@ -87,7 +87,11 @@ var traverseProps = (fiber, selector) => {
87
87
  try {
88
88
  const nextProps = fiber.memoizedProps;
89
89
  const prevProps = fiber.alternate?.memoizedProps || {};
90
- for (const propName in { ...prevProps, ...nextProps }) {
90
+ const allKeys = /* @__PURE__ */ new Set([
91
+ ...Object.keys(prevProps),
92
+ ...Object.keys(nextProps)
93
+ ]);
94
+ for (const propName of allKeys) {
91
95
  const prevValue = prevProps?.[propName];
92
96
  const nextValue = nextProps?.[propName];
93
97
  if (selector(prevValue, nextValue) === true) return true;
@@ -220,46 +224,71 @@ var getDisplayName = (type) => {
220
224
  if (!type) return null;
221
225
  return type.displayName || type.name || null;
222
226
  };
227
+ var isUsingRDT = () => globalThis.__REACT_DEVTOOLS_BACKEND_MANAGER_INJECTED__ != null;
228
+ var detectReactBuildType = (renderer) => {
229
+ try {
230
+ if (typeof renderer.version === "string" && renderer.bundleType > 0) {
231
+ return "development";
232
+ }
233
+ } catch {
234
+ }
235
+ return "production";
236
+ };
237
+ var checkDCE = (fn) => {
238
+ try {
239
+ const code = Function.prototype.toString.call(fn);
240
+ if (code.indexOf("^_^") > -1) {
241
+ setTimeout(() => {
242
+ throw new Error(
243
+ "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"
244
+ );
245
+ });
246
+ }
247
+ } catch {
248
+ }
249
+ };
223
250
  var NO_OP = () => {
224
251
  };
225
252
  var getRDTHook = (onActive) => {
226
253
  let rdtHook = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;
227
254
  const isActive = rdtHook && !("_instrumentationSource" in rdtHook);
228
255
  if (isActive) onActive?.();
229
- const renderers = /* @__PURE__ */ new Map();
230
- let i = 0;
231
- rdtHook ??= {
232
- checkDCE: NO_OP,
233
- supportsFiber: true,
234
- supportsFlight: true,
235
- renderers,
236
- onCommitFiberRoot: NO_OP,
237
- onCommitFiberUnmount: NO_OP,
238
- onPostCommitFiberRoot: NO_OP,
239
- inject(renderer) {
240
- const nextID = ++i;
241
- renderers.set(nextID, renderer);
242
- if (!rdtHook._instrumentationIsActive) {
243
- rdtHook._instrumentationIsActive = true;
244
- onActive?.();
245
- }
246
- return nextID;
247
- },
248
- _instrumentationSource: "bippy",
249
- _instrumentationIsActive: isActive
250
- };
251
- try {
252
- Object.defineProperty(globalThis, "__REACT_DEVTOOLS_GLOBAL_HOOK__", {
253
- configurable: true,
254
- value: rdtHook
255
- });
256
- } catch {
256
+ if (!window.hasOwnProperty("__REACT_DEVTOOLS_GLOBAL_HOOK__")) {
257
+ const renderers = /* @__PURE__ */ new Map();
258
+ let i = 0;
259
+ rdtHook ??= {
260
+ checkDCE,
261
+ supportsFiber: true,
262
+ supportsFlight: true,
263
+ renderers,
264
+ onCommitFiberRoot: NO_OP,
265
+ onCommitFiberUnmount: NO_OP,
266
+ onPostCommitFiberRoot: NO_OP,
267
+ inject(renderer) {
268
+ const nextID = ++i;
269
+ renderers.set(nextID, renderer);
270
+ if (!rdtHook._instrumentationIsActive) {
271
+ rdtHook._instrumentationIsActive = true;
272
+ onActive?.();
273
+ }
274
+ return nextID;
275
+ },
276
+ _instrumentationSource: "bippy",
277
+ _instrumentationIsActive: isActive
278
+ };
279
+ try {
280
+ Object.defineProperty(globalThis, "__REACT_DEVTOOLS_GLOBAL_HOOK__", {
281
+ configurable: true,
282
+ value: rdtHook
283
+ });
284
+ } catch {
285
+ }
257
286
  }
258
287
  return rdtHook;
259
288
  };
260
- var isInstrumentationActive = (onActive) => {
261
- const rdtHook = getRDTHook(onActive);
262
- return Boolean(rdtHook._instrumentationIsActive);
289
+ var isInstrumentationActive = () => {
290
+ const rdtHook = getRDTHook();
291
+ return Boolean(rdtHook._instrumentationIsActive) || isUsingRDT();
263
292
  };
264
293
  if (typeof window !== "undefined") {
265
294
  performance.now();
@@ -479,6 +508,7 @@ exports.SuspenseComponentTag = SuspenseComponentTag;
479
508
  exports.Update = Update;
480
509
  exports.Visibility = Visibility;
481
510
  exports.createFiberVisitor = createFiberVisitor;
511
+ exports.detectReactBuildType = detectReactBuildType;
482
512
  exports.didFiberCommit = didFiberCommit;
483
513
  exports.didFiberRender = didFiberRender;
484
514
  exports.getDisplayName = getDisplayName;
@@ -493,6 +523,7 @@ exports.instrument = instrument;
493
523
  exports.isCompositeFiber = isCompositeFiber;
494
524
  exports.isHostFiber = isHostFiber;
495
525
  exports.isInstrumentationActive = isInstrumentationActive;
526
+ exports.isUsingRDT = isUsingRDT;
496
527
  exports.isValidElement = isValidElement;
497
528
  exports.mountFiberRecursively = mountFiberRecursively;
498
529
  exports.shouldFilterFiber = shouldFilterFiber;
package/dist/index.d.cts CHANGED
@@ -1,11 +1,15 @@
1
1
  import * as React from 'react';
2
2
  import { Fiber, FiberRoot } from 'react-reconciler';
3
3
 
4
+ interface ReactRenderer {
5
+ version: string;
6
+ bundleType: 0 | 1;
7
+ }
4
8
  interface ReactDevToolsGlobalHook {
5
- checkDCE: () => void;
9
+ checkDCE: (fn: any) => void;
6
10
  supportsFiber: boolean;
7
11
  supportsFlight: boolean;
8
- renderers: Map<number, unknown>;
12
+ renderers: Map<number, ReactRenderer>;
9
13
  onCommitFiberRoot: (rendererID: number, root: unknown, priority: void | number) => void;
10
14
  onCommitFiberUnmount: (rendererID: number, root: unknown) => void;
11
15
  onPostCommitFiberRoot: (rendererID: number, root: unknown) => void;
@@ -75,8 +79,10 @@ declare const getTimings: (fiber?: Fiber | null | undefined) => {
75
79
  declare const hasMemoCache: (fiber: Fiber) => boolean;
76
80
  declare const getType: (type: any) => any;
77
81
  declare const getDisplayName: (type: any) => string | null;
82
+ declare const isUsingRDT: () => boolean;
83
+ declare const detectReactBuildType: (renderer: ReactRenderer) => "development" | "production";
78
84
  declare const getRDTHook: (onActive?: () => unknown) => ReactDevToolsGlobalHook;
79
- declare const isInstrumentationActive: (onActive?: () => unknown) => boolean;
85
+ declare const isInstrumentationActive: () => boolean;
80
86
  type RenderHandler = <S>(fiber: Fiber, phase: 'mount' | 'update' | 'unmount', state?: S) => unknown;
81
87
  declare const mountFiberRecursively: (onRender: RenderHandler, firstChild: Fiber, traverseSiblings: boolean) => void;
82
88
  declare const updateFiberRecursively: (onRender: RenderHandler, nextFiber: Fiber, prevFiber: Fiber, parentFiber: Fiber | null) => void;
@@ -94,4 +100,4 @@ declare const instrument: ({ onCommitFiberRoot, onCommitFiberUnmount, onPostComm
94
100
  name?: string;
95
101
  }) => ReactDevToolsGlobalHook;
96
102
 
97
- 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, Ref, SimpleMemoComponentTag, Snapshot, SuspenseComponentTag, Update, Visibility, createFiberVisitor, didFiberCommit, didFiberRender, getDisplayName, getFiberStack, getMutatedHostFibers, getNearestHostFiber, getRDTHook, getTimings, getType, hasMemoCache, instrument, isCompositeFiber, isHostFiber, isInstrumentationActive, isValidElement, mountFiberRecursively, shouldFilterFiber, traverseContexts, traverseFiber, traverseProps, traverseState, unmountFiber, unmountFiberChildrenRecursively, updateFiberRecursively };
103
+ 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, instrument, isCompositeFiber, isHostFiber, isInstrumentationActive, isUsingRDT, isValidElement, mountFiberRecursively, shouldFilterFiber, traverseContexts, traverseFiber, traverseProps, traverseState, unmountFiber, unmountFiberChildrenRecursively, updateFiberRecursively };
package/dist/index.d.ts CHANGED
@@ -1,11 +1,15 @@
1
1
  import * as React from 'react';
2
2
  import { Fiber, FiberRoot } from 'react-reconciler';
3
3
 
4
+ interface ReactRenderer {
5
+ version: string;
6
+ bundleType: 0 | 1;
7
+ }
4
8
  interface ReactDevToolsGlobalHook {
5
- checkDCE: () => void;
9
+ checkDCE: (fn: any) => void;
6
10
  supportsFiber: boolean;
7
11
  supportsFlight: boolean;
8
- renderers: Map<number, unknown>;
12
+ renderers: Map<number, ReactRenderer>;
9
13
  onCommitFiberRoot: (rendererID: number, root: unknown, priority: void | number) => void;
10
14
  onCommitFiberUnmount: (rendererID: number, root: unknown) => void;
11
15
  onPostCommitFiberRoot: (rendererID: number, root: unknown) => void;
@@ -75,8 +79,10 @@ declare const getTimings: (fiber?: Fiber | null | undefined) => {
75
79
  declare const hasMemoCache: (fiber: Fiber) => boolean;
76
80
  declare const getType: (type: any) => any;
77
81
  declare const getDisplayName: (type: any) => string | null;
82
+ declare const isUsingRDT: () => boolean;
83
+ declare const detectReactBuildType: (renderer: ReactRenderer) => "development" | "production";
78
84
  declare const getRDTHook: (onActive?: () => unknown) => ReactDevToolsGlobalHook;
79
- declare const isInstrumentationActive: (onActive?: () => unknown) => boolean;
85
+ declare const isInstrumentationActive: () => boolean;
80
86
  type RenderHandler = <S>(fiber: Fiber, phase: 'mount' | 'update' | 'unmount', state?: S) => unknown;
81
87
  declare const mountFiberRecursively: (onRender: RenderHandler, firstChild: Fiber, traverseSiblings: boolean) => void;
82
88
  declare const updateFiberRecursively: (onRender: RenderHandler, nextFiber: Fiber, prevFiber: Fiber, parentFiber: Fiber | null) => void;
@@ -94,4 +100,4 @@ declare const instrument: ({ onCommitFiberRoot, onCommitFiberUnmount, onPostComm
94
100
  name?: string;
95
101
  }) => ReactDevToolsGlobalHook;
96
102
 
97
- 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, Ref, SimpleMemoComponentTag, Snapshot, SuspenseComponentTag, Update, Visibility, createFiberVisitor, didFiberCommit, didFiberRender, getDisplayName, getFiberStack, getMutatedHostFibers, getNearestHostFiber, getRDTHook, getTimings, getType, hasMemoCache, instrument, isCompositeFiber, isHostFiber, isInstrumentationActive, isValidElement, mountFiberRecursively, shouldFilterFiber, traverseContexts, traverseFiber, traverseProps, traverseState, unmountFiber, unmountFiberChildrenRecursively, updateFiberRecursively };
103
+ 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, instrument, isCompositeFiber, isHostFiber, isInstrumentationActive, isUsingRDT, isValidElement, mountFiberRecursively, shouldFilterFiber, traverseContexts, traverseFiber, traverseProps, traverseState, unmountFiber, unmountFiberChildrenRecursively, updateFiberRecursively };
@@ -6,4 +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 _=1,D=0,H=9,O=13,P=22,z=11,M=14,I=15,E=5,N=26,V=27,A=18,U=6,j=7,L=23,B=22,W=3,$=60111,R="Symbol(react.concurrent_mode)",k="Symbol(react.async_mode)",G=1,Y=2,K=128,Q=4096,q=4,J=8,X=16,Z=32,ee=512,te=1024,ne=8192,oe=13366,re=e=>typeof e=="object"&&e!=null&&"$$typeof"in e&&["react.element","react.transitional.element"].includes(String(e.$$typeof)),d=e=>e.tag===5||e.tag===26||e.tag===27,ie=e=>e.tag===0||e.tag===1||e.tag===15||e.tag===14||e.tag===11,le=(e,t)=>{try{let o=e.dependencies,n=e.alternate?.dependencies;if(!o||!n||typeof o!="object"||!("firstContext"in o)||typeof n!="object"||!("firstContext"in n))return !1;let s=o.firstContext,r=n.firstContext;for(;s&&typeof s=="object"&&"memoizedValue"in s&&r&&typeof r=="object"&&"memoizedValue"in r;){if(t(s,r)===!0)return !0;s=s.next,r=r.next;}}catch{}return !1},se=(e,t)=>{try{let o=e.memoizedState,n=e.alternate?.memoizedState;for(;o&&n;){if(t(o,n)===!0)return !0;o=o.next,n=n.next;}}catch{}return !1},ae=(e,t)=>{try{let o=e.memoizedProps,n=e.alternate?.memoizedProps||{};for(let s in {...n,...o}){let r=n?.[s],l=o?.[s];if(t(r,l)===!0)return !0}}catch{}return !1},f=e=>{let t=e.memoizedProps,o=e.alternate?.memoizedProps||{},n=e.flags??e.effectTag??0;switch(e.tag){case 1:case 0:case 9:case 11:case 14:case 15:return (n&1)===1;default:return e.alternate?o!==t||e.alternate.memoizedState!==e.memoizedState||e.alternate.ref!==e.ref:!0}},w=e=>!!(e.flags&22||e.subtreeFlags&22),ue=e=>{let t=[],o=[e];for(;o.length;){let n=o.pop();n&&(d(n)&&w(n)&&f(n)&&t.push(n),n.child&&o.push(n.child),n.sibling&&o.push(n.sibling));}return t},ce=e=>{let t=[];for(;e.return;)t.push(e),e=e.return;let o=new Array(t.length);for(let n=0;n<t.length;n++)o[n]=t[t.length-n-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 t=typeof e.type=="object"&&e.type!==null?e.type.$$typeof:e.type;switch(typeof t=="symbol"?t.toString():t){case 60111:case R:case k:return !0;default:return !1}}}},me=e=>{let t=b(e,d);return t||(t=b(e,d,!0)),t},b=(e,t,o=!1)=>{if(!e)return null;if(t(e)===!0)return e;let n=o?e.return:e.child;for(;n;){let s=b(n,t,o);if(s)return s;n=o?null:n.sibling;}return null},pe=e=>{let t=e?.actualDuration??0,o=t,n=e?.child??null;for(;t>0&&n!=null;)o-=n.actualDuration??0,n=n.sibling;return {selfTime:o,totalTime:t}},de=e=>!!e.updateQueue?.memoCache,S=e=>typeof e=="function"?e:typeof e=="object"&&e?S(e.type||e.render):null,be=e=>{if(typeof e!="function"&&!(typeof e=="object"&&e))return null;let t=e.displayName||e.name||null;return t||(e=S(e),e&&(e.displayName||e.name)||null)},p=()=>{},h=e=>{let t=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__,o=t&&!("_instrumentationSource"in t);o&&e?.();let n=new Map,s=0;t??={checkDCE:p,supportsFiber:!0,supportsFlight:!0,renderers:n,onCommitFiberRoot:p,onCommitFiberUnmount:p,onPostCommitFiberRoot:p,inject(r){let l=++s;return n.set(l,r),t._instrumentationIsActive||(t._instrumentationIsActive=!0,e?.()),l},_instrumentationSource:"bippy",_instrumentationIsActive:o};try{Object.defineProperty(globalThis,"__REACT_DEVTOOLS_GLOBAL_HOOK__",{configurable:!0,value:t});}catch{}return t},Ce=e=>!!h(e)._instrumentationIsActive;typeof window<"u"&&(performance.now(),h());var m=(e,t,o)=>{let n=t;for(;n!=null;){if(!g(n)&&f(n)&&e(n,"mount"),n.tag===13)if(n.memoizedState!==null){let l=n.child,u=l?l.sibling:null;if(u){let i=u.child;i!==null&&m(e,i,!1);}}else {let l=null;n.child!==null&&(l=n.child.child),l!==null&&m(e,l,!1);}else n.child!=null&&m(e,n.child,!0);n=o?n.sibling:null;}},C=(e,t,o,n)=>{if(!o)return;let s=t.tag===13,r=!g(t);r&&f(t)&&e(t,"update");let l=s&&o.memoizedState!==null,u=s&&t.memoizedState!==null;if(l&&u){let i=t.child?.sibling??null,a=o.child?.sibling??null;i!==null&&a!==null&&C(e,i,a);}else if(l&&!u){let i=t.child;i!==null&&m(e,i,!0);}else if(!l&&u){T(e,o);let i=t.child?.sibling??null;i!==null&&m(e,i,!0);}else if(t.child!==o.child){let i=t.child;for(;i;){if(i.alternate){let a=i.alternate;C(e,i,a);}else m(e,i,!1);i=i.sibling;}}},y=(e,t)=>{(t.tag===3||!g(t))&&e(t,"unmount");},T=(e,t)=>{let o=t.tag===13&&t.memoizedState!==null,n=t.child;for(o&&(n=(t.child?.sibling??null)?.child??null);n!==null;)n.return!==null&&(y(e,n),T(e,n)),n=n.sibling;},v=0,x=new WeakMap,fe=({onRender:e,onError:t})=>(o,n,s)=>{let r=n.current,l=(a,c)=>e(a,c,s),u=x.get(n);u||(u={prevFiber:null,id:v++},x.set(n,u));let{prevFiber:i}=u;try{if(i!==null){let a=i&&i.memoizedState!=null&&i.memoizedState.element!=null&&i.memoizedState.isDehydrated!==!0,c=r.memoizedState!=null&&r.memoizedState.element!=null&&r.memoizedState.isDehydrated!==!0;!a&&c?m(l,r,!1):a&&c?C(l,r,r.alternate,null):a&&!c&&y(l,r);}else m(l,r,!1);}catch(a){if(t)t(a);else throw a}u.prevFiber=r;},ge=({onCommitFiberRoot:e,onCommitFiberUnmount:t,onPostCommitFiberRoot:o,onActive:n,name:s})=>{let r=h(n);r._instrumentationSource=s??"bippy";let l=r.onCommitFiberRoot;e&&(r.onCommitFiberRoot=(a,c,F)=>{l&&l(a,c,F),e(a,c,F);});let u=r.onCommitFiberUnmount;t&&(r.onCommitFiberUnmount=(a,c)=>{u&&u(a,c),t(a,c);});let i=r.onPostCommitFiberRoot;return o&&(r.onPostCommitFiberRoot=(a,c)=>{i&&i(a,c);}),r};exports.CONCURRENT_MODE_NUMBER=$;exports.CONCURRENT_MODE_SYMBOL_STRING=R;exports.ChildDeletion=X;exports.ClassComponentTag=_;exports.Cloned=J;exports.ContentReset=Z;exports.ContextConsumerTag=H;exports.DEPRECATED_ASYNC_MODE_SYMBOL_STRING=k;exports.DehydratedSuspenseComponent=A;exports.DidCapture=K;exports.ForwardRefTag=z;exports.Fragment=j;exports.FunctionComponentTag=D;exports.HostComponentTag=E;exports.HostHoistableTag=N;exports.HostRoot=W;exports.HostSingletonTag=V;exports.HostText=U;exports.Hydrating=Q;exports.LegacyHiddenComponent=L;exports.MemoComponentTag=M;exports.MutationMask=oe;exports.OffscreenComponent=B;exports.OffscreenComponentTag=P;exports.PerformedWork=G;exports.Placement=Y;exports.Ref=ee;exports.SimpleMemoComponentTag=I;exports.Snapshot=te;exports.SuspenseComponentTag=O;exports.Update=q;exports.Visibility=ne;exports.createFiberVisitor=fe;exports.didFiberCommit=w;exports.didFiberRender=f;exports.getDisplayName=be;exports.getFiberStack=ce;exports.getMutatedHostFibers=ue;exports.getNearestHostFiber=me;exports.getRDTHook=h;exports.getTimings=pe;exports.getType=S;exports.hasMemoCache=de;exports.instrument=ge;exports.isCompositeFiber=ie;exports.isHostFiber=d;exports.isInstrumentationActive=Ce;exports.isValidElement=re;exports.mountFiberRecursively=m;exports.shouldFilterFiber=g;exports.traverseContexts=le;exports.traverseFiber=b;exports.traverseProps=ae;exports.traverseState=se;exports.unmountFiber=y;exports.unmountFiberChildrenRecursively=T;exports.updateFiberRecursively=C;return exports;})({});
9
+ var D=1,H=0,E=9,P=13,M=22,z=11,I=14,A=15,N=5,V=26,U=27,j=18,L=6,B=7,G=23,W=22,$=3,K=60111,R="Symbol(react.concurrent_mode)",_="Symbol(react.async_mode)",Y=1,J=2,Q=128,q=4096,X=4,Z=8,ee=16,te=32,ne=512,oe=1024,re=8192,ie=13366,se=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,le=e=>e.tag===0||e.tag===1||e.tag===15||e.tag===14||e.tag===11,ae=(e,t)=>{try{let o=e.dependencies,n=e.alternate?.dependencies;if(!o||!n||typeof o!="object"||!("firstContext"in o)||typeof n!="object"||!("firstContext"in n))return !1;let l=o.firstContext,r=n.firstContext;for(;l&&typeof l=="object"&&"memoizedValue"in l&&r&&typeof r=="object"&&"memoizedValue"in r;){if(t(l,r)===!0)return !0;l=l.next,r=r.next;}}catch{}return !1},ce=(e,t)=>{try{let o=e.memoizedState,n=e.alternate?.memoizedState;for(;o&&n;){if(t(o,n)===!0)return !0;o=o.next,n=n.next;}}catch{}return !1},ue=(e,t)=>{try{let o=e.memoizedProps,n=e.alternate?.memoizedProps||{},l=new Set([...Object.keys(n),...Object.keys(o)]);for(let r of l){let s=n?.[r],c=o?.[r];if(t(s,c)===!0)return !0}}catch{}return !1},C=e=>{let t=e.memoizedProps,o=e.alternate?.memoizedProps||{},n=e.flags??e.effectTag??0;switch(e.tag){case 1:case 0:case 9:case 11:case 14:case 15:return (n&1)===1;default:return e.alternate?o!==t||e.alternate.memoizedState!==e.memoizedState||e.alternate.ref!==e.ref:!0}},w=e=>!!(e.flags&22||e.subtreeFlags&22),me=e=>{let t=[],o=[e];for(;o.length;){let n=o.pop();n&&(d(n)&&w(n)&&C(n)&&t.push(n),n.child&&o.push(n.child),n.sibling&&o.push(n.sibling));}return t},pe=e=>{let t=[];for(;e.return;)t.push(e),e=e.return;let o=new Array(t.length);for(let n=0;n<t.length;n++)o[n]=t[t.length-n-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 t=typeof e.type=="object"&&e.type!==null?e.type.$$typeof:e.type;switch(typeof t=="symbol"?t.toString():t){case 60111:case R:case _:return !0;default:return !1}}}},de=e=>{let t=b(e,d);return t||(t=b(e,d,!0)),t},b=(e,t,o=!1)=>{if(!e)return null;if(t(e)===!0)return e;let n=o?e.return:e.child;for(;n;){let l=b(n,t,o);if(l)return l;n=o?null:n.sibling;}return null},be=e=>{let t=e?.actualDuration??0,o=t,n=e?.child??null;for(;t>0&&n!=null;)o-=n.actualDuration??0,n=n.sibling;return {selfTime:o,totalTime:t}},fe=e=>!!e.updateQueue?.memoCache,y=e=>typeof e=="function"?e:typeof e=="object"&&e?y(e.type||e.render):null,Ce=e=>{if(typeof e!="function"&&!(typeof e=="object"&&e))return null;let t=e.displayName||e.name||null;return t||(e=y(e),e&&(e.displayName||e.name)||null)},k=()=>globalThis.__REACT_DEVTOOLS_BACKEND_MANAGER_INJECTED__!=null,ge=e=>{try{if(typeof e.version=="string"&&e.bundleType>0)return "development"}catch{}return "production"},v=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=()=>{},h=e=>{let t=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__,o=t&&!("_instrumentationSource"in t);if(o&&e?.(),!window.hasOwnProperty("__REACT_DEVTOOLS_GLOBAL_HOOK__")){let n=new Map,l=0;t??={checkDCE:v,supportsFiber:!0,supportsFlight:!0,renderers:n,onCommitFiberRoot:p,onCommitFiberUnmount:p,onPostCommitFiberRoot:p,inject(r){let s=++l;return n.set(s,r),t._instrumentationIsActive||(t._instrumentationIsActive=!0,e?.()),s},_instrumentationSource:"bippy",_instrumentationIsActive:o};try{Object.defineProperty(globalThis,"__REACT_DEVTOOLS_GLOBAL_HOOK__",{configurable:!0,value:t});}catch{}}return t},he=()=>!!h()._instrumentationIsActive||k();typeof window<"u"&&(performance.now(),h());var m=(e,t,o)=>{let n=t;for(;n!=null;){if(!g(n)&&C(n)&&e(n,"mount"),n.tag===13)if(n.memoizedState!==null){let s=n.child,c=s?s.sibling:null;if(c){let i=c.child;i!==null&&m(e,i,!1);}}else {let s=null;n.child!==null&&(s=n.child.child),s!==null&&m(e,s,!1);}else n.child!=null&&m(e,n.child,!0);n=o?n.sibling:null;}},f=(e,t,o,n)=>{if(!o)return;let l=t.tag===13,r=!g(t);r&&C(t)&&e(t,"update");let s=l&&o.memoizedState!==null,c=l&&t.memoizedState!==null;if(s&&c){let i=t.child?.sibling??null,a=o.child?.sibling??null;i!==null&&a!==null&&f(e,i,a);}else if(s&&!c){let i=t.child;i!==null&&m(e,i,!0);}else if(!s&&c){T(e,o);let i=t.child?.sibling??null;i!==null&&m(e,i,!0);}else if(t.child!==o.child){let i=t.child;for(;i;){if(i.alternate){let a=i.alternate;f(e,i,a);}else m(e,i,!1);i=i.sibling;}}},S=(e,t)=>{(t.tag===3||!g(t))&&e(t,"unmount");},T=(e,t)=>{let o=t.tag===13&&t.memoizedState!==null,n=t.child;for(o&&(n=(t.child?.sibling??null)?.child??null);n!==null;)n.return!==null&&(S(e,n),T(e,n)),n=n.sibling;},O=0,F=new WeakMap,xe=({onRender:e,onError:t})=>(o,n,l)=>{let r=n.current,s=(a,u)=>e(a,u,l),c=F.get(n);c||(c={prevFiber:null,id:O++},F.set(n,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(s,r,!1):a&&u?f(s,r,r.alternate,null):a&&!u&&S(s,r);}else m(s,r,!1);}catch(a){if(t)t(a);else throw a}c.prevFiber=r;},Fe=({onCommitFiberRoot:e,onCommitFiberUnmount:t,onPostCommitFiberRoot:o,onActive:n,name:l})=>{let r=h(n);r._instrumentationSource=l??"bippy";let s=r.onCommitFiberRoot;e&&(r.onCommitFiberRoot=(a,u,x)=>{s&&s(a,u,x),e(a,u,x);});let c=r.onCommitFiberUnmount;t&&(r.onCommitFiberUnmount=(a,u)=>{c&&c(a,u),t(a,u);});let i=r.onPostCommitFiberRoot;return o&&(r.onPostCommitFiberRoot=(a,u)=>{i&&i(a,u);}),r};
10
+ exports.CONCURRENT_MODE_NUMBER=K;exports.CONCURRENT_MODE_SYMBOL_STRING=R;exports.ChildDeletion=ee;exports.ClassComponentTag=D;exports.Cloned=Z;exports.ContentReset=te;exports.ContextConsumerTag=E;exports.DEPRECATED_ASYNC_MODE_SYMBOL_STRING=_;exports.DehydratedSuspenseComponent=j;exports.DidCapture=Q;exports.ForwardRefTag=z;exports.Fragment=B;exports.FunctionComponentTag=H;exports.HostComponentTag=N;exports.HostHoistableTag=V;exports.HostRoot=$;exports.HostSingletonTag=U;exports.HostText=L;exports.Hydrating=q;exports.LegacyHiddenComponent=G;exports.MemoComponentTag=I;exports.MutationMask=ie;exports.OffscreenComponent=W;exports.OffscreenComponentTag=M;exports.PerformedWork=Y;exports.Placement=J;exports.Ref=ne;exports.SimpleMemoComponentTag=A;exports.Snapshot=oe;exports.SuspenseComponentTag=P;exports.Update=X;exports.Visibility=re;exports.createFiberVisitor=xe;exports.detectReactBuildType=ge;exports.didFiberCommit=w;exports.didFiberRender=C;exports.getDisplayName=Ce;exports.getFiberStack=pe;exports.getMutatedHostFibers=me;exports.getNearestHostFiber=de;exports.getRDTHook=h;exports.getTimings=be;exports.getType=y;exports.hasMemoCache=fe;exports.instrument=Fe;exports.isCompositeFiber=le;exports.isHostFiber=d;exports.isInstrumentationActive=he;exports.isUsingRDT=k;exports.isValidElement=se;exports.mountFiberRecursively=m;exports.shouldFilterFiber=g;exports.traverseContexts=ae;exports.traverseFiber=b;exports.traverseProps=ue;exports.traverseState=ce;exports.unmountFiber=S;exports.unmountFiberChildrenRecursively=T;exports.updateFiberRecursively=f;return exports;})({});
package/dist/index.js CHANGED
@@ -41,7 +41,7 @@ var Snapshot = 1024;
41
41
  var Visibility = 8192;
42
42
  var MutationMask = Placement | Update | ChildDeletion | ContentReset | Hydrating | Visibility | Snapshot;
43
43
  var isValidElement = (element) => typeof element === "object" && element != null && "$$typeof" in element && // react 18 uses Symbol.for('react.element'), react 19 uses Symbol.for('react.transitional.element')
44
- ["react.element", "react.transitional.element"].includes(
44
+ ["Symbol(react.element)", "Symbol(react.transitional.element)"].includes(
45
45
  String(element.$$typeof)
46
46
  );
47
47
  var isHostFiber = (fiber) => fiber.tag === HostComponentTag || // @ts-expect-error: it exists
@@ -85,7 +85,11 @@ var traverseProps = (fiber, selector) => {
85
85
  try {
86
86
  const nextProps = fiber.memoizedProps;
87
87
  const prevProps = fiber.alternate?.memoizedProps || {};
88
- for (const propName in { ...prevProps, ...nextProps }) {
88
+ const allKeys = /* @__PURE__ */ new Set([
89
+ ...Object.keys(prevProps),
90
+ ...Object.keys(nextProps)
91
+ ]);
92
+ for (const propName of allKeys) {
89
93
  const prevValue = prevProps?.[propName];
90
94
  const nextValue = nextProps?.[propName];
91
95
  if (selector(prevValue, nextValue) === true) return true;
@@ -218,46 +222,71 @@ var getDisplayName = (type) => {
218
222
  if (!type) return null;
219
223
  return type.displayName || type.name || null;
220
224
  };
225
+ var isUsingRDT = () => globalThis.__REACT_DEVTOOLS_BACKEND_MANAGER_INJECTED__ != null;
226
+ var detectReactBuildType = (renderer) => {
227
+ try {
228
+ if (typeof renderer.version === "string" && renderer.bundleType > 0) {
229
+ return "development";
230
+ }
231
+ } catch {
232
+ }
233
+ return "production";
234
+ };
235
+ var checkDCE = (fn) => {
236
+ try {
237
+ const code = Function.prototype.toString.call(fn);
238
+ if (code.indexOf("^_^") > -1) {
239
+ setTimeout(() => {
240
+ throw new Error(
241
+ "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"
242
+ );
243
+ });
244
+ }
245
+ } catch {
246
+ }
247
+ };
221
248
  var NO_OP = () => {
222
249
  };
223
250
  var getRDTHook = (onActive) => {
224
251
  let rdtHook = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;
225
252
  const isActive = rdtHook && !("_instrumentationSource" in rdtHook);
226
253
  if (isActive) onActive?.();
227
- const renderers = /* @__PURE__ */ new Map();
228
- let i = 0;
229
- rdtHook ??= {
230
- checkDCE: NO_OP,
231
- supportsFiber: true,
232
- supportsFlight: true,
233
- renderers,
234
- onCommitFiberRoot: NO_OP,
235
- onCommitFiberUnmount: NO_OP,
236
- onPostCommitFiberRoot: NO_OP,
237
- inject(renderer) {
238
- const nextID = ++i;
239
- renderers.set(nextID, renderer);
240
- if (!rdtHook._instrumentationIsActive) {
241
- rdtHook._instrumentationIsActive = true;
242
- onActive?.();
243
- }
244
- return nextID;
245
- },
246
- _instrumentationSource: "bippy",
247
- _instrumentationIsActive: isActive
248
- };
249
- try {
250
- Object.defineProperty(globalThis, "__REACT_DEVTOOLS_GLOBAL_HOOK__", {
251
- configurable: true,
252
- value: rdtHook
253
- });
254
- } catch {
254
+ if (!window.hasOwnProperty("__REACT_DEVTOOLS_GLOBAL_HOOK__")) {
255
+ const renderers = /* @__PURE__ */ new Map();
256
+ let i = 0;
257
+ rdtHook ??= {
258
+ checkDCE,
259
+ supportsFiber: true,
260
+ supportsFlight: true,
261
+ renderers,
262
+ onCommitFiberRoot: NO_OP,
263
+ onCommitFiberUnmount: NO_OP,
264
+ onPostCommitFiberRoot: NO_OP,
265
+ inject(renderer) {
266
+ const nextID = ++i;
267
+ renderers.set(nextID, renderer);
268
+ if (!rdtHook._instrumentationIsActive) {
269
+ rdtHook._instrumentationIsActive = true;
270
+ onActive?.();
271
+ }
272
+ return nextID;
273
+ },
274
+ _instrumentationSource: "bippy",
275
+ _instrumentationIsActive: isActive
276
+ };
277
+ try {
278
+ Object.defineProperty(globalThis, "__REACT_DEVTOOLS_GLOBAL_HOOK__", {
279
+ configurable: true,
280
+ value: rdtHook
281
+ });
282
+ } catch {
283
+ }
255
284
  }
256
285
  return rdtHook;
257
286
  };
258
- var isInstrumentationActive = (onActive) => {
259
- const rdtHook = getRDTHook(onActive);
260
- return Boolean(rdtHook._instrumentationIsActive);
287
+ var isInstrumentationActive = () => {
288
+ const rdtHook = getRDTHook();
289
+ return Boolean(rdtHook._instrumentationIsActive) || isUsingRDT();
261
290
  };
262
291
  if (typeof window !== "undefined") {
263
292
  performance.now();
@@ -444,4 +473,4 @@ var instrument = ({
444
473
  return devtoolsHook;
445
474
  };
446
475
 
447
- 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, didFiberCommit, didFiberRender, getDisplayName, getFiberStack, getMutatedHostFibers, getNearestHostFiber, getRDTHook, getTimings, getType, hasMemoCache, instrument, isCompositeFiber, isHostFiber, isInstrumentationActive, isValidElement, mountFiberRecursively, shouldFilterFiber, traverseContexts, traverseFiber, traverseProps, traverseState, unmountFiber, unmountFiberChildrenRecursively, updateFiberRecursively };
476
+ 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, instrument, isCompositeFiber, isHostFiber, isInstrumentationActive, isUsingRDT, isValidElement, mountFiberRecursively, shouldFilterFiber, traverseContexts, traverseFiber, traverseProps, traverseState, unmountFiber, unmountFiberChildrenRecursively, updateFiberRecursively };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bippy",
3
- "version": "0.0.20",
3
+ "version": "0.0.22",
4
4
  "description": "a hacky way to get fibers from react",
5
5
  "keywords": [
6
6
  "react",