bippy 0.0.5 → 0.0.7
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 +54 -9
- package/dist/index.d.mts +6 -6
- package/dist/index.d.ts +6 -6
- package/dist/index.global.js +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +4 -1
package/README.md
CHANGED
|
@@ -9,22 +9,67 @@ bippy works by setting a "fake" version of the `__REACT_DEVTOOLS_GLOBAL_HOOK__`
|
|
|
9
9
|
|
|
10
10
|
## example
|
|
11
11
|
|
|
12
|
-
|
|
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 {
|
|
17
|
+
import {
|
|
18
|
+
instrument,
|
|
19
|
+
createFiberVisitor,
|
|
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 = createFiberVisitor({
|
|
29
|
+
onRender(fiber, phase) {
|
|
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
|
+
console.log(phase, render);
|
|
49
|
+
},
|
|
50
|
+
});
|
|
18
51
|
|
|
19
52
|
instrument({
|
|
20
|
-
onCommitFiberRoot:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if (!displayName) return;
|
|
24
|
-
console.log(`${displayName} rendered`, fiber);
|
|
25
|
-
},
|
|
26
|
-
}),
|
|
53
|
+
onCommitFiberRoot: (rendererID, fiberRoot) => {
|
|
54
|
+
visitor(rendererID, fiberRoot);
|
|
55
|
+
},
|
|
27
56
|
});
|
|
57
|
+
|
|
58
|
+
export const getRenderInfo = (componentType) => {
|
|
59
|
+
return componentRenderMap.get(componentType);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
function App() {
|
|
63
|
+
const [count, setCount] = useState(0);
|
|
64
|
+
const renderInfo = getRenderInfo(App);
|
|
65
|
+
return (
|
|
66
|
+
<button onClick={() => setCount(count + 1)}>
|
|
67
|
+
rendered: {JSON.stringify(renderInfo, null, 2)}
|
|
68
|
+
</button>
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
ReactDOM.createRoot(document.getElementById('root')).render(<App />);
|
|
28
73
|
```
|
|
29
74
|
|
|
30
75
|
## 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
|
|
63
|
-
onRender: (fiber: Fiber) => void;
|
|
61
|
+
declare const createFiberVisitor: ({ onRender, onError, }: {
|
|
62
|
+
onRender: (fiber: Fiber, phase: "mount" | "update" | "unmount") => 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,
|
|
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, createFiberVisitor, 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
|
|
63
|
-
onRender: (fiber: Fiber) => void;
|
|
61
|
+
declare const createFiberVisitor: ({ onRender, onError, }: {
|
|
62
|
+
onRender: (fiber: Fiber, phase: "mount" | "update" | "unmount") => 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,
|
|
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, createFiberVisitor, didFiberRender, getDisplayName, getNearestHostFiber, getRDTHook, getTimings, getType, hasMemoCache, instrument, isCompositeComponent, isHostComponent, shouldFilterFiber, traverseContexts, traverseFiber, traverseProps, traverseState };
|
package/dist/index.global.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var Bippy=function(e){"use strict";var t="Symbol(react.concurrent_mode)",
|
|
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.createFiberVisitor=({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,"mount"),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,"update"),t.child!==o.child){let e=t.child;for(;e;){const t=e.alternate;t?l(e,t):s(e,!1),e=e.sibling}}},m=t=>{!(3===t.tag)&&a(t)||e(t,"unmount")};!o&&i?s(t,!1):o&&i?l(t,t.alternate):o&&!i&&m(t)}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.
|
|
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.createFiberVisitor=({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,"mount"),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,"update"),t.child!==o.child){let e=t.child;for(;e;){const t=e.alternate;t?l(e,t):i(e,!1),e=e.sibling}}},m=t=>{!(3===t.tag)&&n(t)||e(t,"unmount")};!o&&a?i(t,!1):o&&a?l(t,t.alternate):o&&!a&&m(t)}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
|
|
1
|
+
var e=1,t=1,o=0,n=9,r=11,a=14,i=15,l=5,c=26,m=27,u=18,s=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,"mount"),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,"update"),t.child!==o.child){let e=t.child;for(;e;){const t=e.alternate;t?i(e,t):a(e,!1),e=e.sibling}}},l=t=>{!(3===t.tag)&&O(t)||e(t,"unmount")};!o&&r?a(t,!1):o&&r?i(t,t.alternate):o&&!r&&l(t)}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,u as DehydratedSuspenseComponent,r as ForwardRefTag,f as Fragment,o as FunctionComponentTag,l as HostComponentTag,c as HostHoistableTag,b as HostRoot,m as HostSingletonTag,s as HostText,d as LegacyHiddenComponent,a as MemoComponentTag,p as OffscreenComponent,e as PerformedWorkFlag,i as SimpleMemoComponentTag,B as createFiberVisitor,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.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "a kitchen sink of utilities for working with react fiber",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -58,6 +58,9 @@
|
|
|
58
58
|
"prettier": "prettier --config .prettierrc.mjs -w src",
|
|
59
59
|
"publint": "publint"
|
|
60
60
|
},
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"bippy": "^0.0.6"
|
|
63
|
+
},
|
|
61
64
|
"devDependencies": {
|
|
62
65
|
"@types/react": "^18.3.12",
|
|
63
66
|
"@types/react-reconciler": "^0.28.8",
|