bippy 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,22 +9,66 @@ bippy works by setting a "fake" version of the `__REACT_DEVTOOLS_GLOBAL_HOOK__`
9
9
 
10
10
  ## example
11
11
 
12
- this script logs every rendered fiber in the current [commit](https://react.dev/learn/render-and-commit) via `onCommitFiberRoot`.
12
+ here i wrote a `getRenderInfo` function, where you're able to pass any component identifier and get back the number of times it rendered, as well as the total and self time. this is done by traversing the fiber tree during a [commit](https://react.dev/learn/render-and-commit) via `onCommitFiberRoot`.
13
13
 
14
14
  inspect it live [here](https://bippy.million.dev/).
15
15
 
16
16
  ```jsx
17
- import { instrument, traverseFiberRoot, getDisplayName } from 'bippy'; // must be imported BEFORE react
17
+ import {
18
+ instrument,
19
+ createRenderVisitor,
20
+ getTimings,
21
+ getDisplayName,
22
+ } from 'bippy'; // must be imported BEFORE react
23
+ import React, { useState } from 'react';
24
+ import ReactDOM from 'react-dom/client';
25
+
26
+ const componentRenderMap = new WeakMap();
27
+
28
+ const visitor = createRenderVisitor({
29
+ onRender(fiber) {
30
+ const componentType = fiber.elementType;
31
+ if (
32
+ typeof componentType !== 'function' &&
33
+ (typeof componentType !== 'object' || !componentType)
34
+ ) {
35
+ return;
36
+ }
37
+ const render = componentRenderMap.get(componentType) || {
38
+ count: 0,
39
+ selfTime: 0,
40
+ totalTime: 0,
41
+ displayName: getDisplayName(componentType),
42
+ };
43
+ render.count++;
44
+ const { selfTime, totalTime } = getTimings(fiber);
45
+ render.selfTime += selfTime;
46
+ render.totalTime += totalTime;
47
+ componentRenderMap.set(componentType, render);
48
+ },
49
+ });
18
50
 
19
51
  instrument({
20
- onCommitFiberRoot: traverseFiberRoot({
21
- onRender(fiber) {
22
- const displayName = getDisplayName(fiber.type);
23
- if (!displayName) return;
24
- console.log(`${displayName} rendered`, fiber);
25
- },
26
- }),
52
+ onCommitFiberRoot: (rendererID, fiberRoot) => {
53
+ visitor(rendererID, fiberRoot);
54
+ },
27
55
  });
56
+
57
+ export const getRenderInfo = (componentType) => {
58
+ return componentRenderMap.get(componentType);
59
+ };
60
+
61
+ function App() {
62
+ const [count, setCount] = useState(0);
63
+ const renderInfo = getRenderInfo(App);
64
+ return (
65
+ <button onClick={() => setCount(count + 1)}>
66
+ rendered: {JSON.stringify(renderInfo, null, 2)}
67
+ </button>
68
+ );
69
+ }
70
+
71
+ ReactDOM.createRoot(document.getElementById('root')).render(<App />);
28
72
  ```
29
73
 
30
74
  ## misc
package/dist/index.d.mts CHANGED
@@ -20,6 +20,8 @@ declare const HostRoot = 3;
20
20
  declare const CONCURRENT_MODE_NUMBER = 60111;
21
21
  declare const CONCURRENT_MODE_SYMBOL_STRING = "Symbol(react.concurrent_mode)";
22
22
  declare const DEPRECATED_ASYNC_MODE_SYMBOL_STRING = "Symbol(react.async_mode)";
23
+ declare const isHostComponent: (fiber: Fiber) => boolean;
24
+ declare const isCompositeComponent: (fiber: Fiber) => boolean;
23
25
  declare const traverseContexts: (fiber: Fiber, selector: (prevValue: {
24
26
  context: React.Context<unknown>;
25
27
  memoizedValue: unknown;
@@ -33,8 +35,6 @@ declare const traverseState: (fiber: Fiber, selector: (prevValue: {
33
35
  memoizedState: unknown;
34
36
  }) => boolean | void) => boolean;
35
37
  declare const traverseProps: (fiber: Fiber, selector: (prevValue: unknown, nextValue: unknown) => boolean | void) => boolean;
36
- declare const isHostComponent: (fiber: Fiber) => boolean;
37
- declare const isCompositeComponent: (fiber: Fiber) => boolean;
38
38
  declare const didFiberRender: (fiber: Fiber) => boolean;
39
39
  declare const shouldFilterFiber: (fiber: Fiber) => boolean;
40
40
  declare const getNearestHostFiber: (fiber: Fiber) => Fiber | null;
@@ -43,7 +43,6 @@ declare const getTimings: (fiber?: Fiber | null | undefined) => {
43
43
  selfTime: number;
44
44
  totalTime: number;
45
45
  };
46
- declare const getFiberFromElement: (element: HTMLElement) => Fiber | null;
47
46
  declare const hasMemoCache: (fiber: Fiber) => boolean;
48
47
  declare const getType: (type: any) => any;
49
48
  declare const getDisplayName: (type: any) => string | null;
@@ -59,8 +58,9 @@ declare const getRDTHook: () => {
59
58
  onPostCommitFiberRoot: (rendererID: number, root: unknown) => void;
60
59
  inject: (renderer: unknown) => number;
61
60
  };
62
- declare const traverseFiberRoot: ({ onRender, }: {
61
+ declare const createRenderVisitor: ({ onRender, onError, }: {
63
62
  onRender: (fiber: Fiber) => void;
63
+ onError?: (error: unknown) => void;
64
64
  }) => (_rendererID: number, root: FiberRoot) => void;
65
65
  declare const instrument: ({ onCommitFiberRoot, onCommitFiberUnmount, onPostCommitFiberRoot, }: {
66
66
  onCommitFiberRoot?: (rendererID: number, root: FiberRoot) => void;
@@ -79,4 +79,4 @@ declare const instrument: ({ onCommitFiberRoot, onCommitFiberUnmount, onPostComm
79
79
  inject: (renderer: unknown) => number;
80
80
  };
81
81
 
82
- export { CONCURRENT_MODE_NUMBER, CONCURRENT_MODE_SYMBOL_STRING, ClassComponentTag, ContextConsumerTag, DEPRECATED_ASYNC_MODE_SYMBOL_STRING, DehydratedSuspenseComponent, ForwardRefTag, Fragment, FunctionComponentTag, HostComponentTag, HostHoistableTag, HostRoot, HostSingletonTag, HostText, LegacyHiddenComponent, MemoComponentTag, OffscreenComponent, PerformedWorkFlag, SimpleMemoComponentTag, didFiberRender, getDisplayName, getFiberFromElement, getNearestHostFiber, getRDTHook, getTimings, getType, hasMemoCache, instrument, isCompositeComponent, isHostComponent, shouldFilterFiber, traverseContexts, traverseFiber, traverseFiberRoot, traverseProps, traverseState };
82
+ export { CONCURRENT_MODE_NUMBER, CONCURRENT_MODE_SYMBOL_STRING, ClassComponentTag, ContextConsumerTag, DEPRECATED_ASYNC_MODE_SYMBOL_STRING, DehydratedSuspenseComponent, ForwardRefTag, Fragment, FunctionComponentTag, HostComponentTag, HostHoistableTag, HostRoot, HostSingletonTag, HostText, LegacyHiddenComponent, MemoComponentTag, OffscreenComponent, PerformedWorkFlag, SimpleMemoComponentTag, createRenderVisitor, didFiberRender, getDisplayName, getNearestHostFiber, getRDTHook, getTimings, getType, hasMemoCache, instrument, isCompositeComponent, isHostComponent, shouldFilterFiber, traverseContexts, traverseFiber, traverseProps, traverseState };
package/dist/index.d.ts CHANGED
@@ -20,6 +20,8 @@ declare const HostRoot = 3;
20
20
  declare const CONCURRENT_MODE_NUMBER = 60111;
21
21
  declare const CONCURRENT_MODE_SYMBOL_STRING = "Symbol(react.concurrent_mode)";
22
22
  declare const DEPRECATED_ASYNC_MODE_SYMBOL_STRING = "Symbol(react.async_mode)";
23
+ declare const isHostComponent: (fiber: Fiber) => boolean;
24
+ declare const isCompositeComponent: (fiber: Fiber) => boolean;
23
25
  declare const traverseContexts: (fiber: Fiber, selector: (prevValue: {
24
26
  context: React.Context<unknown>;
25
27
  memoizedValue: unknown;
@@ -33,8 +35,6 @@ declare const traverseState: (fiber: Fiber, selector: (prevValue: {
33
35
  memoizedState: unknown;
34
36
  }) => boolean | void) => boolean;
35
37
  declare const traverseProps: (fiber: Fiber, selector: (prevValue: unknown, nextValue: unknown) => boolean | void) => boolean;
36
- declare const isHostComponent: (fiber: Fiber) => boolean;
37
- declare const isCompositeComponent: (fiber: Fiber) => boolean;
38
38
  declare const didFiberRender: (fiber: Fiber) => boolean;
39
39
  declare const shouldFilterFiber: (fiber: Fiber) => boolean;
40
40
  declare const getNearestHostFiber: (fiber: Fiber) => Fiber | null;
@@ -43,7 +43,6 @@ declare const getTimings: (fiber?: Fiber | null | undefined) => {
43
43
  selfTime: number;
44
44
  totalTime: number;
45
45
  };
46
- declare const getFiberFromElement: (element: HTMLElement) => Fiber | null;
47
46
  declare const hasMemoCache: (fiber: Fiber) => boolean;
48
47
  declare const getType: (type: any) => any;
49
48
  declare const getDisplayName: (type: any) => string | null;
@@ -59,8 +58,9 @@ declare const getRDTHook: () => {
59
58
  onPostCommitFiberRoot: (rendererID: number, root: unknown) => void;
60
59
  inject: (renderer: unknown) => number;
61
60
  };
62
- declare const traverseFiberRoot: ({ onRender, }: {
61
+ declare const createRenderVisitor: ({ onRender, onError, }: {
63
62
  onRender: (fiber: Fiber) => void;
63
+ onError?: (error: unknown) => void;
64
64
  }) => (_rendererID: number, root: FiberRoot) => void;
65
65
  declare const instrument: ({ onCommitFiberRoot, onCommitFiberUnmount, onPostCommitFiberRoot, }: {
66
66
  onCommitFiberRoot?: (rendererID: number, root: FiberRoot) => void;
@@ -79,4 +79,4 @@ declare const instrument: ({ onCommitFiberRoot, onCommitFiberUnmount, onPostComm
79
79
  inject: (renderer: unknown) => number;
80
80
  };
81
81
 
82
- export { CONCURRENT_MODE_NUMBER, CONCURRENT_MODE_SYMBOL_STRING, ClassComponentTag, ContextConsumerTag, DEPRECATED_ASYNC_MODE_SYMBOL_STRING, DehydratedSuspenseComponent, ForwardRefTag, Fragment, FunctionComponentTag, HostComponentTag, HostHoistableTag, HostRoot, HostSingletonTag, HostText, LegacyHiddenComponent, MemoComponentTag, OffscreenComponent, PerformedWorkFlag, SimpleMemoComponentTag, didFiberRender, getDisplayName, getFiberFromElement, getNearestHostFiber, getRDTHook, getTimings, getType, hasMemoCache, instrument, isCompositeComponent, isHostComponent, shouldFilterFiber, traverseContexts, traverseFiber, traverseFiberRoot, traverseProps, traverseState };
82
+ export { CONCURRENT_MODE_NUMBER, CONCURRENT_MODE_SYMBOL_STRING, ClassComponentTag, ContextConsumerTag, DEPRECATED_ASYNC_MODE_SYMBOL_STRING, DehydratedSuspenseComponent, ForwardRefTag, Fragment, FunctionComponentTag, HostComponentTag, HostHoistableTag, HostRoot, HostSingletonTag, HostText, LegacyHiddenComponent, MemoComponentTag, OffscreenComponent, PerformedWorkFlag, SimpleMemoComponentTag, createRenderVisitor, didFiberRender, getDisplayName, getNearestHostFiber, getRDTHook, getTimings, getType, hasMemoCache, instrument, isCompositeComponent, isHostComponent, shouldFilterFiber, traverseContexts, traverseFiber, traverseProps, traverseState };
@@ -1 +1 @@
1
- var Bippy=function(e){"use strict";var t="Symbol(react.concurrent_mode)",n="Symbol(react.async_mode)",o=e=>5===e.tag||26===e.tag||27===e.tag,r=e=>{const t=e.memoizedProps,n=e.alternate?.memoizedProps||{},o=e.flags??e.effectTag??0;switch(e.tag){case 1:case 0:case 9:case 11:case 14:case 15:return!(1&~o);default:return!e.alternate||(n!==t||e.alternate.memoizedState!==e.memoizedState||e.alternate.ref!==e.ref)}},a=e=>{switch(e.tag){case 18:case 6:case 7:case 23:case 22:return!0;case 3:return!1;default:{const o="object"==typeof e.type&&null!==e.type?e.type.$$typeof:e.type;switch("symbol"==typeof o?o.toString():o){case 60111:case t:case n:return!0;default:return!1}}}},i=(e,t,n=!1)=>{if(!e)return null;if(!0===t(e))return e;let o=n?e.return:e.child;for(;o;){const e=i(o,t,n);if(e)return e;o=n?null:o.sibling}return null},s=e=>"function"==typeof e?e:"object"==typeof e&&e?s(e.type||e.render):null,l=()=>{},c=()=>{let e=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;const t=new Map;let n=0;e??={checkDCE:l,supportsFiber:!0,supportsFlight:!0,renderers:t,onCommitFiberRoot:l,onCommitFiberUnmount:l,onPostCommitFiberRoot:l,inject(e){const o=++n;return t.set(o,e),o}};try{globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__=e}catch{}return e};"undefined"!=typeof window&&c();return e.CONCURRENT_MODE_NUMBER=60111,e.CONCURRENT_MODE_SYMBOL_STRING=t,e.ClassComponentTag=1,e.ContextConsumerTag=9,e.DEPRECATED_ASYNC_MODE_SYMBOL_STRING=n,e.DehydratedSuspenseComponent=18,e.ForwardRefTag=11,e.Fragment=7,e.FunctionComponentTag=0,e.HostComponentTag=5,e.HostHoistableTag=26,e.HostRoot=3,e.HostSingletonTag=27,e.HostText=6,e.LegacyHiddenComponent=23,e.MemoComponentTag=14,e.OffscreenComponent=22,e.PerformedWorkFlag=1,e.SimpleMemoComponentTag=15,e.didFiberRender=r,e.getDisplayName=e=>{if("function"!=typeof e&&("object"!=typeof e||!e))return null;const t=e.displayName||e.name||null;return t||((e=s(e))&&(e.displayName||e.name)||null)},e.getFiberFromElement=e=>{const{renderers:t}=c();if(!t)return null;for(const[n,o]of Array.from(t))try{const t=o.findFiberByHostInstance(e);if(t)return t}catch(e){}if("_reactRootContainer"in e)return e._reactRootContainer?._internalRoot?.current?.child;for(const t in e)if(t.startsWith("__reactInternalInstance$")||t.startsWith("__reactFiber"))return e[t];return null},e.getNearestHostFiber=e=>{let t=i(e,o);return t||(t=i(e,o,!0)),t},e.getRDTHook=c,e.getTimings=e=>{const t=e?.actualDuration??0;let n=t,o=e?.child??null;for(;t>0&&null!=o;)n-=o.actualDuration??0,o=o.sibling;return{selfTime:n,totalTime:t}},e.getType=s,e.hasMemoCache=e=>Boolean(e.updateQueue?.memoCache),e.instrument=({onCommitFiberRoot:e,onCommitFiberUnmount:t,onPostCommitFiberRoot:n})=>{const o=c(),r=o.onCommitFiberRoot;e&&(o.onCommitFiberRoot=(t,n)=>{r&&r(t,n),e(t,n)});const a=o.onCommitFiberUnmount;t&&(o.onCommitFiberUnmount=(e,n)=>{a&&a(e,n),t(e,n)});const i=o.onPostCommitFiberRoot;return n&&(o.onPostCommitFiberRoot=(e,t)=>{i&&i(e,t)}),o},e.isCompositeComponent=e=>0===e.tag||1===e.tag||15===e.tag||14===e.tag||11===e.tag,e.isHostComponent=o,e.shouldFilterFiber=a,e.traverseContexts=(e,t)=>{try{const n=e.dependencies,o=e.alternate?.dependencies;if(!n||!o)return!1;if("object"!=typeof n||!("firstContext"in n)||"object"!=typeof o||!("firstContext"in o))return!1;let r=n.firstContext,a=o.firstContext;for(;r&&"object"==typeof r&&"memoizedValue"in r&&a&&"object"==typeof a&&"memoizedValue"in a;){if(!0===t(r,a))return!0;r=r.next,a=a.next}}catch{}return!1},e.traverseFiber=i,e.traverseFiberRoot=({onRender:e})=>(t,n)=>{const o=n.current,i=null!==o.alternate&&Boolean(o.alternate.memoizedState?.element)&&!0!==o.alternate.memoizedState.isDehydrated,s=Boolean(o.memoizedState?.element),l=(t,n)=>{let o=t;for(;null!=o;){!a(o)&&r(o)&&e(o),null!=o.child&&l(o.child,!0),o=n?o.sibling:null}},c=(t,n)=>{if(!n)return;if(!a(t)&&r(t)&&e(t),t.child!==n.child){let e=t.child;for(;e;){const t=e.alternate;t?c(e,t):l(e,!1),e=e.sibling}}};!i&&s?l(o,!1):i&&s&&c(o,o.alternate)},e.traverseProps=(e,t)=>{try{const n=e.memoizedProps,o=e.alternate?.memoizedProps||{};for(const e in{...o,...n}){const r=o?.[e],a=n?.[e];if(!0===t(r,a))return!0}}catch{}return!1},e.traverseState=(e,t)=>{try{let n=e.memoizedState,o=e.alternate?.memoizedState;for(;n&&o;){if(!0===t(n,o))return!0;n=n.next,o=o.next}}catch{}return!1},e}({});
1
+ var Bippy=function(e){"use strict";var t="Symbol(react.concurrent_mode)",o="Symbol(react.async_mode)",n=e=>5===e.tag||26===e.tag||27===e.tag,r=e=>{const 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!(1&~n);default:return!e.alternate||(o!==t||e.alternate.memoizedState!==e.memoizedState||e.alternate.ref!==e.ref)}},a=e=>{switch(e.tag){case 18:case 6:case 7:case 23:case 22:return!0;case 3:return!1;default:{const n="object"==typeof e.type&&null!==e.type?e.type.$$typeof:e.type;switch("symbol"==typeof n?n.toString():n){case 60111:case t:case o:return!0;default:return!1}}}},i=(e,t,o=!1)=>{if(!e)return null;if(!0===t(e))return e;let n=o?e.return:e.child;for(;n;){const e=i(n,t,o);if(e)return e;n=o?null:n.sibling}return null},s=e=>"function"==typeof e?e:"object"==typeof e&&e?s(e.type||e.render):null,l=()=>{},m=()=>{let e=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;const t=new Map;let o=0;e??={checkDCE:l,supportsFiber:!0,supportsFlight:!0,renderers:t,onCommitFiberRoot:l,onCommitFiberUnmount:l,onPostCommitFiberRoot:l,inject(e){const n=++o;return t.set(n,e),n}};try{globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__=e}catch{}return e};"undefined"!=typeof window&&m();return e.CONCURRENT_MODE_NUMBER=60111,e.CONCURRENT_MODE_SYMBOL_STRING=t,e.ClassComponentTag=1,e.ContextConsumerTag=9,e.DEPRECATED_ASYNC_MODE_SYMBOL_STRING=o,e.DehydratedSuspenseComponent=18,e.ForwardRefTag=11,e.Fragment=7,e.FunctionComponentTag=0,e.HostComponentTag=5,e.HostHoistableTag=26,e.HostRoot=3,e.HostSingletonTag=27,e.HostText=6,e.LegacyHiddenComponent=23,e.MemoComponentTag=14,e.OffscreenComponent=22,e.PerformedWorkFlag=1,e.SimpleMemoComponentTag=15,e.createRenderVisitor=({onRender:e,onError:t})=>(o,n)=>{try{const t=n.current,o=null!==t.alternate&&Boolean(t.alternate.memoizedState?.element)&&!0!==t.alternate.memoizedState.isDehydrated,i=Boolean(t.memoizedState?.element),s=(t,o)=>{let n=t;for(;null!=n;){!a(n)&&r(n)&&e(n),null!=n.child&&s(n.child,!0),n=o?n.sibling:null}},l=(t,o)=>{if(!o)return;if(!a(t)&&r(t)&&e(t),t.child!==o.child){let e=t.child;for(;e;){const t=e.alternate;t?l(e,t):s(e,!1),e=e.sibling}}};!o&&i?s(t,!1):o&&i&&l(t,t.alternate)}catch(e){if(!t)throw e;t(e)}},e.didFiberRender=r,e.getDisplayName=e=>{if("function"!=typeof e&&("object"!=typeof e||!e))return null;const t=e.displayName||e.name||null;return t||((e=s(e))&&(e.displayName||e.name)||null)},e.getNearestHostFiber=e=>{let t=i(e,n);return t||(t=i(e,n,!0)),t},e.getRDTHook=m,e.getTimings=e=>{const t=e?.actualDuration??0;let o=t,n=e?.child??null;for(;t>0&&null!=n;)o-=n.actualDuration??0,n=n.sibling;return{selfTime:o,totalTime:t}},e.getType=s,e.hasMemoCache=e=>Boolean(e.updateQueue?.memoCache),e.instrument=({onCommitFiberRoot:e,onCommitFiberUnmount:t,onPostCommitFiberRoot:o})=>{const n=m(),r=n.onCommitFiberRoot;e&&(n.onCommitFiberRoot=(t,o)=>{r&&r(t,o),e(t,o)});const a=n.onCommitFiberUnmount;t&&(n.onCommitFiberUnmount=(e,o)=>{a&&a(e,o),t(e,o)});const i=n.onPostCommitFiberRoot;return o&&(n.onPostCommitFiberRoot=(e,t)=>{i&&i(e,t)}),n},e.isCompositeComponent=e=>0===e.tag||1===e.tag||15===e.tag||14===e.tag||11===e.tag,e.isHostComponent=n,e.shouldFilterFiber=a,e.traverseContexts=(e,t)=>{try{const o=e.dependencies,n=e.alternate?.dependencies;if(!o||!n)return!1;if("object"!=typeof o||!("firstContext"in o)||"object"!=typeof n||!("firstContext"in n))return!1;let r=o.firstContext,a=n.firstContext;for(;r&&"object"==typeof r&&"memoizedValue"in r&&a&&"object"==typeof a&&"memoizedValue"in a;){if(!0===t(r,a))return!0;r=r.next,a=a.next}}catch{}return!1},e.traverseFiber=i,e.traverseProps=(e,t)=>{try{const o=e.memoizedProps,n=e.alternate?.memoizedProps||{};for(const e in{...n,...o}){const r=n?.[e],a=o?.[e];if(!0===t(r,a))return!0}}catch{}return!1},e.traverseState=(e,t)=>{try{let o=e.memoizedState,n=e.alternate?.memoizedState;for(;o&&n;){if(!0===t(o,n))return!0;o=o.next,n=n.next}}catch{}return!1},e}({});
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e="Symbol(react.concurrent_mode)",t="Symbol(react.async_mode)",o=e=>5===e.tag||26===e.tag||27===e.tag,r=e=>{const t=e.memoizedProps,o=e.alternate?.memoizedProps||{},r=e.flags??e.effectTag??0;switch(e.tag){case 1:case 0:case 9:case 11:case 14:case 15:return!(1&~r);default:return!e.alternate||(o!==t||e.alternate.memoizedState!==e.memoizedState||e.alternate.ref!==e.ref)}},n=o=>{switch(o.tag){case 18:case 6:case 7:case 23:case 22:return!0;case 3:return!1;default:{const r="object"==typeof o.type&&null!==o.type?o.type.$$typeof:o.type;switch("symbol"==typeof r?r.toString():r){case 60111:case e:case t:return!0;default:return!1}}}},s=(e,t,o=!1)=>{if(!e)return null;if(!0===t(e))return e;let r=o?e.return:e.child;for(;r;){const e=s(r,t,o);if(e)return e;r=o?null:r.sibling}return null},a=e=>"function"==typeof e?e:"object"==typeof e&&e?a(e.type||e.render):null,i=()=>{},l=()=>{let e=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;const t=new Map;let o=0;e??={checkDCE:i,supportsFiber:!0,supportsFlight:!0,renderers:t,onCommitFiberRoot:i,onCommitFiberUnmount:i,onPostCommitFiberRoot:i,inject(e){const r=++o;return t.set(r,e),r}};try{globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__=e}catch{}return e};"undefined"!=typeof window&&l();exports.CONCURRENT_MODE_NUMBER=60111,exports.CONCURRENT_MODE_SYMBOL_STRING=e,exports.ClassComponentTag=1,exports.ContextConsumerTag=9,exports.DEPRECATED_ASYNC_MODE_SYMBOL_STRING=t,exports.DehydratedSuspenseComponent=18,exports.ForwardRefTag=11,exports.Fragment=7,exports.FunctionComponentTag=0,exports.HostComponentTag=5,exports.HostHoistableTag=26,exports.HostRoot=3,exports.HostSingletonTag=27,exports.HostText=6,exports.LegacyHiddenComponent=23,exports.MemoComponentTag=14,exports.OffscreenComponent=22,exports.PerformedWorkFlag=1,exports.SimpleMemoComponentTag=15,exports.didFiberRender=r,exports.getDisplayName=e=>{if("function"!=typeof e&&("object"!=typeof e||!e))return null;const t=e.displayName||e.name||null;return t||((e=a(e))&&(e.displayName||e.name)||null)},exports.getFiberFromElement=e=>{const{renderers:t}=l();if(!t)return null;for(const[o,r]of Array.from(t))try{const t=r.findFiberByHostInstance(e);if(t)return t}catch(e){}if("_reactRootContainer"in e)return e._reactRootContainer?._internalRoot?.current?.child;for(const t in e)if(t.startsWith("__reactInternalInstance$")||t.startsWith("__reactFiber"))return e[t];return null},exports.getNearestHostFiber=e=>{let t=s(e,o);return t||(t=s(e,o,!0)),t},exports.getRDTHook=l,exports.getTimings=e=>{const t=e?.actualDuration??0;let o=t,r=e?.child??null;for(;t>0&&null!=r;)o-=r.actualDuration??0,r=r.sibling;return{selfTime:o,totalTime:t}},exports.getType=a,exports.hasMemoCache=e=>Boolean(e.updateQueue?.memoCache),exports.instrument=({onCommitFiberRoot:e,onCommitFiberUnmount:t,onPostCommitFiberRoot:o})=>{const r=l(),n=r.onCommitFiberRoot;e&&(r.onCommitFiberRoot=(t,o)=>{n&&n(t,o),e(t,o)});const s=r.onCommitFiberUnmount;t&&(r.onCommitFiberUnmount=(e,o)=>{s&&s(e,o),t(e,o)});const a=r.onPostCommitFiberRoot;return o&&(r.onPostCommitFiberRoot=(e,t)=>{a&&a(e,t)}),r},exports.isCompositeComponent=e=>0===e.tag||1===e.tag||15===e.tag||14===e.tag||11===e.tag,exports.isHostComponent=o,exports.shouldFilterFiber=n,exports.traverseContexts=(e,t)=>{try{const o=e.dependencies,r=e.alternate?.dependencies;if(!o||!r)return!1;if("object"!=typeof o||!("firstContext"in o)||"object"!=typeof r||!("firstContext"in r))return!1;let n=o.firstContext,s=r.firstContext;for(;n&&"object"==typeof n&&"memoizedValue"in n&&s&&"object"==typeof s&&"memoizedValue"in s;){if(!0===t(n,s))return!0;n=n.next,s=s.next}}catch{}return!1},exports.traverseFiber=s,exports.traverseFiberRoot=({onRender:e})=>(t,o)=>{const s=o.current,a=null!==s.alternate&&Boolean(s.alternate.memoizedState?.element)&&!0!==s.alternate.memoizedState.isDehydrated,i=Boolean(s.memoizedState?.element),l=(t,o)=>{let s=t;for(;null!=s;){!n(s)&&r(s)&&e(s),null!=s.child&&l(s.child,!0),s=o?s.sibling:null}},m=(t,o)=>{if(!o)return;if(!n(t)&&r(t)&&e(t),t.child!==o.child){let e=t.child;for(;e;){const t=e.alternate;t?m(e,t):l(e,!1),e=e.sibling}}};!a&&i?l(s,!1):a&&i&&m(s,s.alternate)},exports.traverseProps=(e,t)=>{try{const o=e.memoizedProps,r=e.alternate?.memoizedProps||{};for(const e in{...r,...o}){const n=r?.[e],s=o?.[e];if(!0===t(n,s))return!0}}catch{}return!1},exports.traverseState=(e,t)=>{try{let o=e.memoizedState,r=e.alternate?.memoizedState;for(;o&&r;){if(!0===t(o,r))return!0;o=o.next,r=r.next}}catch{}return!1};
1
+ "use strict";var e="Symbol(react.concurrent_mode)",t="Symbol(react.async_mode)",o=e=>5===e.tag||26===e.tag||27===e.tag,r=e=>{const t=e.memoizedProps,o=e.alternate?.memoizedProps||{},r=e.flags??e.effectTag??0;switch(e.tag){case 1:case 0:case 9:case 11:case 14:case 15:return!(1&~r);default:return!e.alternate||(o!==t||e.alternate.memoizedState!==e.memoizedState||e.alternate.ref!==e.ref)}},n=o=>{switch(o.tag){case 18:case 6:case 7:case 23:case 22:return!0;case 3:return!1;default:{const r="object"==typeof o.type&&null!==o.type?o.type.$$typeof:o.type;switch("symbol"==typeof r?r.toString():r){case 60111:case e:case t:return!0;default:return!1}}}},s=(e,t,o=!1)=>{if(!e)return null;if(!0===t(e))return e;let r=o?e.return:e.child;for(;r;){const e=s(r,t,o);if(e)return e;r=o?null:r.sibling}return null},a=e=>"function"==typeof e?e:"object"==typeof e&&e?a(e.type||e.render):null,i=()=>{},l=()=>{let e=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;const t=new Map;let o=0;e??={checkDCE:i,supportsFiber:!0,supportsFlight:!0,renderers:t,onCommitFiberRoot:i,onCommitFiberUnmount:i,onPostCommitFiberRoot:i,inject(e){const r=++o;return t.set(r,e),r}};try{globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__=e}catch{}return e};"undefined"!=typeof window&&l();exports.CONCURRENT_MODE_NUMBER=60111,exports.CONCURRENT_MODE_SYMBOL_STRING=e,exports.ClassComponentTag=1,exports.ContextConsumerTag=9,exports.DEPRECATED_ASYNC_MODE_SYMBOL_STRING=t,exports.DehydratedSuspenseComponent=18,exports.ForwardRefTag=11,exports.Fragment=7,exports.FunctionComponentTag=0,exports.HostComponentTag=5,exports.HostHoistableTag=26,exports.HostRoot=3,exports.HostSingletonTag=27,exports.HostText=6,exports.LegacyHiddenComponent=23,exports.MemoComponentTag=14,exports.OffscreenComponent=22,exports.PerformedWorkFlag=1,exports.SimpleMemoComponentTag=15,exports.createRenderVisitor=({onRender:e,onError:t})=>(o,s)=>{try{const t=s.current,o=null!==t.alternate&&Boolean(t.alternate.memoizedState?.element)&&!0!==t.alternate.memoizedState.isDehydrated,a=Boolean(t.memoizedState?.element),i=(t,o)=>{let s=t;for(;null!=s;){!n(s)&&r(s)&&e(s),null!=s.child&&i(s.child,!0),s=o?s.sibling:null}},l=(t,o)=>{if(!o)return;if(!n(t)&&r(t)&&e(t),t.child!==o.child){let e=t.child;for(;e;){const t=e.alternate;t?l(e,t):i(e,!1),e=e.sibling}}};!o&&a?i(t,!1):o&&a&&l(t,t.alternate)}catch(e){if(!t)throw e;t(e)}},exports.didFiberRender=r,exports.getDisplayName=e=>{if("function"!=typeof e&&("object"!=typeof e||!e))return null;const t=e.displayName||e.name||null;return t||((e=a(e))&&(e.displayName||e.name)||null)},exports.getNearestHostFiber=e=>{let t=s(e,o);return t||(t=s(e,o,!0)),t},exports.getRDTHook=l,exports.getTimings=e=>{const t=e?.actualDuration??0;let o=t,r=e?.child??null;for(;t>0&&null!=r;)o-=r.actualDuration??0,r=r.sibling;return{selfTime:o,totalTime:t}},exports.getType=a,exports.hasMemoCache=e=>Boolean(e.updateQueue?.memoCache),exports.instrument=({onCommitFiberRoot:e,onCommitFiberUnmount:t,onPostCommitFiberRoot:o})=>{const r=l(),n=r.onCommitFiberRoot;e&&(r.onCommitFiberRoot=(t,o)=>{n&&n(t,o),e(t,o)});const s=r.onCommitFiberUnmount;t&&(r.onCommitFiberUnmount=(e,o)=>{s&&s(e,o),t(e,o)});const a=r.onPostCommitFiberRoot;return o&&(r.onPostCommitFiberRoot=(e,t)=>{a&&a(e,t)}),r},exports.isCompositeComponent=e=>0===e.tag||1===e.tag||15===e.tag||14===e.tag||11===e.tag,exports.isHostComponent=o,exports.shouldFilterFiber=n,exports.traverseContexts=(e,t)=>{try{const o=e.dependencies,r=e.alternate?.dependencies;if(!o||!r)return!1;if("object"!=typeof o||!("firstContext"in o)||"object"!=typeof r||!("firstContext"in r))return!1;let n=o.firstContext,s=r.firstContext;for(;n&&"object"==typeof n&&"memoizedValue"in n&&s&&"object"==typeof s&&"memoizedValue"in s;){if(!0===t(n,s))return!0;n=n.next,s=s.next}}catch{}return!1},exports.traverseFiber=s,exports.traverseProps=(e,t)=>{try{const o=e.memoizedProps,r=e.alternate?.memoizedProps||{};for(const e in{...r,...o}){const n=r?.[e],s=o?.[e];if(!0===t(n,s))return!0}}catch{}return!1},exports.traverseState=(e,t)=>{try{let o=e.memoizedState,r=e.alternate?.memoizedState;for(;o&&r;){if(!0===t(o,r))return!0;o=o.next,r=r.next}}catch{}return!1};
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- var t=1,e=1,n=0,o=9,r=11,i=14,a=15,l=5,c=26,s=27,u=18,m=6,f=7,d=23,p=22,b=3,y=60111,h="Symbol(react.concurrent_mode)",_="Symbol(react.async_mode)",C=(t,e)=>{try{const n=t.dependencies,o=t.alternate?.dependencies;if(!n||!o)return!1;if("object"!=typeof n||!("firstContext"in n)||"object"!=typeof o||!("firstContext"in o))return!1;let r=n.firstContext,i=o.firstContext;for(;r&&"object"==typeof r&&"memoizedValue"in r&&i&&"object"==typeof i&&"memoizedValue"in i;){if(!0===e(r,i))return!0;r=r.next,i=i.next}}catch{}return!1},g=(t,e)=>{try{let n=t.memoizedState,o=t.alternate?.memoizedState;for(;n&&o;){if(!0===e(n,o))return!0;n=n.next,o=o.next}}catch{}return!1},F=(t,e)=>{try{const n=t.memoizedProps,o=t.alternate?.memoizedProps||{};for(const t in{...o,...n}){const r=o?.[t],i=n?.[t];if(!0===e(r,i))return!0}}catch{}return!1},R=t=>5===t.tag||26===t.tag||27===t.tag,z=t=>0===t.tag||1===t.tag||15===t.tag||14===t.tag||11===t.tag,S=t=>{const e=t.memoizedProps,n=t.alternate?.memoizedProps||{},o=t.flags??t.effectTag??0;switch(t.tag){case 1:case 0:case 9:case 11:case 14:case 15:return!(1&~o);default:return!t.alternate||(n!==e||t.alternate.memoizedState!==t.memoizedState||t.alternate.ref!==t.ref)}},O=t=>{switch(t.tag){case 18:case 6:case 7:case 23:case 22:return!0;case 3:return!1;default:{const e="object"==typeof t.type&&null!==t.type?t.type.$$typeof:t.type;switch("symbol"==typeof e?e.toString():e){case 60111:case h:case _:return!0;default:return!1}}}},x=t=>{let e=T(t,R);return e||(e=T(t,R,!0)),e},T=(t,e,n=!1)=>{if(!t)return null;if(!0===e(t))return t;let o=n?t.return:t.child;for(;o;){const t=T(o,e,n);if(t)return t;o=n?null:o.sibling}return null},j=t=>{const e=t?.actualDuration??0;let n=e,o=t?.child??null;for(;e>0&&null!=o;)n-=o.actualDuration??0,o=o.sibling;return{selfTime:n,totalTime:e}},P=t=>{const{renderers:e}=A();if(!e)return null;for(const[n,o]of Array.from(e))try{const e=o.findFiberByHostInstance(t);if(e)return e}catch(t){}if("_reactRootContainer"in t)return t._reactRootContainer?._internalRoot?.current?.child;for(const e in t)if(e.startsWith("__reactInternalInstance$")||e.startsWith("__reactFiber"))return t[e];return null},w=t=>Boolean(t.updateQueue?.memoCache),B=t=>"function"==typeof t?t:"object"==typeof t&&t?B(t.type||t.render):null,D=t=>{if("function"!=typeof t&&("object"!=typeof t||!t))return null;const e=t.displayName||t.name||null;return e||((t=B(t))&&(t.displayName||t.name)||null)},L=()=>{},A=()=>{let t=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;const e=new Map;let n=0;t??={checkDCE:L,supportsFiber:!0,supportsFlight:!0,renderers:e,onCommitFiberRoot:L,onCommitFiberUnmount:L,onPostCommitFiberRoot:L,inject(t){const o=++n;return e.set(o,t),o}};try{globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__=t}catch{}return t};"undefined"!=typeof window&&A();var E=({onRender:t})=>(e,n)=>{const o=n.current,r=null!==o.alternate&&Boolean(o.alternate.memoizedState?.element)&&!0!==o.alternate.memoizedState.isDehydrated,i=Boolean(o.memoizedState?.element),a=(e,n)=>{let o=e;for(;null!=o;){!O(o)&&S(o)&&t(o),null!=o.child&&a(o.child,!0),o=n?o.sibling:null}},l=(e,n)=>{if(!n)return;if(!O(e)&&S(e)&&t(e),e.child!==n.child){let t=e.child;for(;t;){const e=t.alternate;e?l(t,e):a(t,!1),t=t.sibling}}};!r&&i?a(o,!1):r&&i&&l(o,o.alternate)},U=({onCommitFiberRoot:t,onCommitFiberUnmount:e,onPostCommitFiberRoot:n})=>{const o=A(),r=o.onCommitFiberRoot;t&&(o.onCommitFiberRoot=(e,n)=>{r&&r(e,n),t(e,n)});const i=o.onCommitFiberUnmount;e&&(o.onCommitFiberUnmount=(t,n)=>{i&&i(t,n),e(t,n)});const a=o.onPostCommitFiberRoot;return n&&(o.onPostCommitFiberRoot=(t,e)=>{a&&a(t,e)}),o};export{y as CONCURRENT_MODE_NUMBER,h as CONCURRENT_MODE_SYMBOL_STRING,e as ClassComponentTag,o as ContextConsumerTag,_ as DEPRECATED_ASYNC_MODE_SYMBOL_STRING,u as DehydratedSuspenseComponent,r as ForwardRefTag,f as Fragment,n as FunctionComponentTag,l as HostComponentTag,c as HostHoistableTag,b as HostRoot,s as HostSingletonTag,m as HostText,d as LegacyHiddenComponent,i as MemoComponentTag,p as OffscreenComponent,t as PerformedWorkFlag,a as SimpleMemoComponentTag,S as didFiberRender,D as getDisplayName,P as getFiberFromElement,x as getNearestHostFiber,A as getRDTHook,j as getTimings,B as getType,w as hasMemoCache,U as instrument,z as isCompositeComponent,R as isHostComponent,O as shouldFilterFiber,C as traverseContexts,T as traverseFiber,E as traverseFiberRoot,F as traverseProps,g as traverseState};
1
+ var e=1,t=1,o=0,n=9,r=11,a=14,i=15,l=5,c=26,m=27,s=18,u=6,f=7,d=23,p=22,b=3,y=60111,h="Symbol(react.concurrent_mode)",g="Symbol(react.async_mode)",C=e=>5===e.tag||26===e.tag||27===e.tag,_=e=>0===e.tag||1===e.tag||15===e.tag||14===e.tag||11===e.tag,F=(e,t)=>{try{const o=e.dependencies,n=e.alternate?.dependencies;if(!o||!n)return!1;if("object"!=typeof o||!("firstContext"in o)||"object"!=typeof n||!("firstContext"in n))return!1;let r=o.firstContext,a=n.firstContext;for(;r&&"object"==typeof r&&"memoizedValue"in r&&a&&"object"==typeof a&&"memoizedValue"in a;){if(!0===t(r,a))return!0;r=r.next,a=a.next}}catch{}return!1},z=(e,t)=>{try{let o=e.memoizedState,n=e.alternate?.memoizedState;for(;o&&n;){if(!0===t(o,n))return!0;o=o.next,n=n.next}}catch{}return!1},S=(e,t)=>{try{const o=e.memoizedProps,n=e.alternate?.memoizedProps||{};for(const e in{...n,...o}){const r=n?.[e],a=o?.[e];if(!0===t(r,a))return!0}}catch{}return!1},R=e=>{const 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!(1&~n);default:return!e.alternate||(o!==t||e.alternate.memoizedState!==e.memoizedState||e.alternate.ref!==e.ref)}},O=e=>{switch(e.tag){case 18:case 6:case 7:case 23:case 22:return!0;case 3:return!1;default:{const t="object"==typeof e.type&&null!==e.type?e.type.$$typeof:e.type;switch("symbol"==typeof t?t.toString():t){case 60111:case h:case g:return!0;default:return!1}}}},x=e=>{let t=T(e,C);return t||(t=T(e,C,!0)),t},T=(e,t,o=!1)=>{if(!e)return null;if(!0===t(e))return e;let n=o?e.return:e.child;for(;n;){const e=T(n,t,o);if(e)return e;n=o?null:n.sibling}return null},j=e=>{const t=e?.actualDuration??0;let o=t,n=e?.child??null;for(;t>0&&null!=n;)o-=n.actualDuration??0,n=n.sibling;return{selfTime:o,totalTime:t}},P=e=>Boolean(e.updateQueue?.memoCache),w=e=>"function"==typeof e?e:"object"==typeof e&&e?w(e.type||e.render):null,D=e=>{if("function"!=typeof e&&("object"!=typeof e||!e))return null;const t=e.displayName||e.name||null;return t||((e=w(e))&&(e.displayName||e.name)||null)},E=()=>{},L=()=>{let e=globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;const t=new Map;let o=0;e??={checkDCE:E,supportsFiber:!0,supportsFlight:!0,renderers:t,onCommitFiberRoot:E,onCommitFiberUnmount:E,onPostCommitFiberRoot:E,inject(e){const n=++o;return t.set(n,e),n}};try{globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__=e}catch{}return e};"undefined"!=typeof window&&L();var B=({onRender:e,onError:t})=>(o,n)=>{try{const t=n.current,o=null!==t.alternate&&Boolean(t.alternate.memoizedState?.element)&&!0!==t.alternate.memoizedState.isDehydrated,r=Boolean(t.memoizedState?.element),a=(t,o)=>{let n=t;for(;null!=n;){!O(n)&&R(n)&&e(n),null!=n.child&&a(n.child,!0),n=o?n.sibling:null}},i=(t,o)=>{if(!o)return;if(!O(t)&&R(t)&&e(t),t.child!==o.child){let e=t.child;for(;e;){const t=e.alternate;t?i(e,t):a(e,!1),e=e.sibling}}};!o&&r?a(t,!1):o&&r&&i(t,t.alternate)}catch(e){if(!t)throw e;t(e)}},A=({onCommitFiberRoot:e,onCommitFiberUnmount:t,onPostCommitFiberRoot:o})=>{const n=L(),r=n.onCommitFiberRoot;e&&(n.onCommitFiberRoot=(t,o)=>{r&&r(t,o),e(t,o)});const a=n.onCommitFiberUnmount;t&&(n.onCommitFiberUnmount=(e,o)=>{a&&a(e,o),t(e,o)});const i=n.onPostCommitFiberRoot;return o&&(n.onPostCommitFiberRoot=(e,t)=>{i&&i(e,t)}),n};export{y as CONCURRENT_MODE_NUMBER,h as CONCURRENT_MODE_SYMBOL_STRING,t as ClassComponentTag,n as ContextConsumerTag,g as DEPRECATED_ASYNC_MODE_SYMBOL_STRING,s as DehydratedSuspenseComponent,r as ForwardRefTag,f as Fragment,o as FunctionComponentTag,l as HostComponentTag,c as HostHoistableTag,b as HostRoot,m as HostSingletonTag,u as HostText,d as LegacyHiddenComponent,a as MemoComponentTag,p as OffscreenComponent,e as PerformedWorkFlag,i as SimpleMemoComponentTag,B as createRenderVisitor,R as didFiberRender,D as getDisplayName,x as getNearestHostFiber,L as getRDTHook,j as getTimings,w as getType,P as hasMemoCache,A as instrument,_ as isCompositeComponent,C as isHostComponent,O as shouldFilterFiber,F as traverseContexts,T as traverseFiber,S as traverseProps,z as traverseState};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bippy",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "description": "a kitchen sink of utilities for working with react fiber",
5
5
  "keywords": [
6
6
  "react",