bippy 0.6.1 → 0.7.0-dev.697d535
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/LICENSE +1 -1
- package/README.md +223 -463
- package/dist/core.cjs +1 -1
- package/dist/core.js +1 -1
- package/dist/errors.d.cts +410 -0
- package/dist/errors.d.ts +410 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +153 -3
- package/dist/index.d.ts +153 -3
- package/dist/index.js +1 -1
- package/dist/install-hook-only.cjs +1 -1
- package/dist/install-hook-only.d.cts +9 -1
- package/dist/install-hook-only.d.ts +9 -1
- package/dist/install-hook-only.js +1 -1
- package/dist/rdt-hook.cjs +1 -1
- package/dist/rdt-hook.js +1 -1
- package/dist/source.cjs +14 -5
- package/dist/source.d.cts +86 -69
- package/dist/source.d.ts +86 -69
- package/dist/source.js +14 -5
- package/package.json +26 -27
- package/src/core.ts +353 -685
- package/src/errors.ts +34 -0
- package/src/index.ts +1 -0
- package/src/install-hook-only.ts +2 -2
- package/src/rdt-hook.ts +160 -161
- package/src/react-internals/generated/react-work-tags.ts +318 -0
- package/src/react-internals/index.ts +67 -0
- package/src/react-internals/semver.ts +80 -0
- package/src/react-internals/types.ts +186 -0
- package/src/react.ts +76 -0
- package/src/source/constants.ts +1 -1
- package/src/source/error-stack.ts +11 -0
- package/src/source/get-display-name-from-source.ts +44 -40
- package/src/source/get-source.ts +43 -26
- package/src/source/index.ts +11 -1
- package/src/source/inspect-hooks.ts +220 -207
- package/src/source/owner-stack.ts +119 -174
- package/src/source/parse-debug-stack.ts +4 -4
- package/src/source/parse-hook-names.ts +14 -53
- package/src/source/parse-stack.ts +14 -31
- package/src/source/renderer-dispatchers.ts +30 -0
- package/src/source/symbolication.ts +709 -120
- package/dist/core.d.cts +0 -214
- package/dist/core.d.ts +0 -214
- package/dist/core2.d.cts +0 -3
- package/dist/core2.d.ts +0 -3
- package/dist/get-source.cjs +0 -19
- package/dist/get-source.js +0 -19
- package/dist/index.iife.js +0 -9
- package/dist/install-hook-only.iife.js +0 -9
- package/dist/react-refresh.cjs +0 -9
- package/dist/react-refresh.d.cts +0 -66
- package/dist/react-refresh.d.ts +0 -66
- package/dist/react-refresh.js +0 -9
- package/dist/unsubscribe.d.cts +0 -298
- package/dist/unsubscribe.d.ts +0 -298
- package/src/react-refresh/constants.ts +0 -9
- package/src/react-refresh/detect-hmr-transport.ts +0 -33
- package/src/react-refresh/index.ts +0 -173
- package/src/react-refresh/metro-hmr-transport.ts +0 -188
- package/src/react-refresh/next-webpack-hmr-transport.ts +0 -72
- package/src/react-refresh/normalize-hmr-file-path.ts +0 -24
- package/src/react-refresh/types.ts +0 -7
- package/src/react-refresh/vite-hmr-transport.ts +0 -116
- package/src/types.ts +0 -438
- package/src/unsubscribe.ts +0 -17
package/src/react.ts
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import "./install-hook-only.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { isFiber } from "./core.js";
|
|
4
|
+
import type { Fiber } from "./react-internals/index.js";
|
|
5
|
+
|
|
6
|
+
export type { Fiber } from "./react-internals/index.js";
|
|
7
|
+
|
|
8
|
+
const preserveState = (state: undefined): undefined => state;
|
|
9
|
+
const readEmptySnapshot = (): undefined => undefined;
|
|
10
|
+
const unsubscribeFromEmptyStore = (): void => {};
|
|
11
|
+
const subscribeToEmptyStore = (): (() => void) => unsubscribeFromEmptyStore;
|
|
12
|
+
const useSyncExternalStore: unknown = Reflect.get(React, "useSyncExternalStore");
|
|
13
|
+
|
|
14
|
+
const captureFiberFromHook = (useCaptureHook: () => void): Fiber | null => {
|
|
15
|
+
const originalBind = Function.prototype.bind;
|
|
16
|
+
let capturedFiber: Fiber | null = null;
|
|
17
|
+
// HACK: React binds hook callbacks to the rendering Fiber in production but exposes no public API for it.
|
|
18
|
+
const bindProxy = new Proxy(originalBind, {
|
|
19
|
+
apply: (bind, functionToBind, boundArguments) => {
|
|
20
|
+
const fiber = boundArguments[1];
|
|
21
|
+
if (!capturedFiber && isFiber(fiber)) {
|
|
22
|
+
capturedFiber = fiber;
|
|
23
|
+
}
|
|
24
|
+
return Reflect.apply(bind, functionToBind, boundArguments);
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
Reflect.set(Function.prototype, "bind", bindProxy);
|
|
28
|
+
|
|
29
|
+
try {
|
|
30
|
+
useCaptureHook();
|
|
31
|
+
} finally {
|
|
32
|
+
if (Function.prototype.bind === bindProxy) {
|
|
33
|
+
Reflect.set(Function.prototype, "bind", originalBind);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return capturedFiber;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const useExternalStoreCapture = (): void => {
|
|
41
|
+
Reflect.apply(useSyncExternalStore, React, [
|
|
42
|
+
subscribeToEmptyStore,
|
|
43
|
+
readEmptySnapshot,
|
|
44
|
+
readEmptySnapshot,
|
|
45
|
+
]);
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
const useReducerCapture = (): void => {
|
|
49
|
+
React.useReducer(preserveState, undefined);
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
const useFiberWithExternalStore = (): Fiber | undefined =>
|
|
53
|
+
captureFiberFromHook(useExternalStoreCapture) ?? undefined;
|
|
54
|
+
|
|
55
|
+
const useFiberWithReducer = (): Fiber | undefined => {
|
|
56
|
+
const committedFiberRef = React.useRef<Fiber | null>(null);
|
|
57
|
+
const renderedFiberRef = React.useRef<Fiber | null>(null);
|
|
58
|
+
const hookFiber = captureFiberFromHook(useReducerCapture);
|
|
59
|
+
const fiber =
|
|
60
|
+
hookFiber ??
|
|
61
|
+
(renderedFiberRef.current !== committedFiberRef.current
|
|
62
|
+
? renderedFiberRef.current
|
|
63
|
+
: committedFiberRef.current?.alternate) ??
|
|
64
|
+
committedFiberRef.current;
|
|
65
|
+
|
|
66
|
+
renderedFiberRef.current = fiber;
|
|
67
|
+
|
|
68
|
+
React.useEffect(() => {
|
|
69
|
+
committedFiberRef.current = fiber;
|
|
70
|
+
}, [fiber]);
|
|
71
|
+
|
|
72
|
+
return fiber ?? undefined;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export const useFiber =
|
|
76
|
+
typeof useSyncExternalStore === "function" ? useFiberWithExternalStore : useFiberWithReducer;
|
package/src/source/constants.ts
CHANGED
|
@@ -18,7 +18,7 @@ export const SERVER_COMPONENT_URL_PREFIXES = ["rsc://", ABOUT_REACT_PREFIX] as c
|
|
|
18
18
|
|
|
19
19
|
export const ANONYMOUS_FILE_PATTERNS = ["<anonymous>", "eval", ""] as const;
|
|
20
20
|
|
|
21
|
-
export const SOURCE_FILE_EXTENSION_REGEX = /\.(jsx|
|
|
21
|
+
export const SOURCE_FILE_EXTENSION_REGEX = /\.(cjs|cts|js|jsx|mdx|mjs|mts|ts|tsx)$/;
|
|
22
22
|
|
|
23
23
|
export const BUNDLED_FILE_PATTERN_REGEX =
|
|
24
24
|
/(\.min|bundle|chunk|vendor|vendors|runtime|polyfill|polyfills)\.(js|mjs|cjs)$|(chunk|bundle|vendor|vendors|runtime|polyfill|polyfills|framework|app|main|index)[-_.][A-Za-z0-9_-]{4,}\.(js|mjs|cjs)$|[\da-f]{8,}\.(js|mjs|cjs)$|[-_.][\da-f]{20,}\.(js|mjs|cjs)$|\/dist\/|\/build\/|\/.next\/|\/out\/|\/node_modules\/|\.webpack\.|\.vite\.|\.turbopack\./i;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface ErrorConstructorWithPrepareStackTrace {
|
|
2
|
+
prepareStackTrace?: unknown;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
const errorConstructor: ErrorConstructorWithPrepareStackTrace = Error;
|
|
6
|
+
|
|
7
|
+
export const getPrepareStackTrace = (): unknown => errorConstructor.prepareStackTrace;
|
|
8
|
+
|
|
9
|
+
export const setPrepareStackTrace = (prepareStackTrace: unknown): void => {
|
|
10
|
+
errorConstructor.prepareStackTrace = prepareStackTrace;
|
|
11
|
+
};
|
|
@@ -1,8 +1,29 @@
|
|
|
1
|
-
import { Fiber } from "../
|
|
1
|
+
import type { Fiber } from "../react-internals/index.js";
|
|
2
2
|
import { getDisplayName } from "../core.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
3
|
+
import { getDefinitionFrameFromOwnedChild, getRawParentStack } from "./owner-stack.js";
|
|
4
|
+
import {
|
|
5
|
+
getSourceContentFromSourceMap,
|
|
6
|
+
getSourceFromSourceMap,
|
|
7
|
+
getSourceMap,
|
|
8
|
+
type SourceFetch,
|
|
9
|
+
} from "./symbolication.js";
|
|
10
|
+
import type { StackFrame } from "./parse-stack.js";
|
|
11
|
+
|
|
12
|
+
const COMPONENT_DECLARATION_PATTERNS = [
|
|
13
|
+
/(?:^|export\s+)(?:const|let|var)\s+(\w+)\s*=/,
|
|
14
|
+
/(?:^|export\s+)function\s+(\w+)/,
|
|
15
|
+
/(?:^|export\s+)class\s+(\w+)/,
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
const findComponentDeclarationOnLine = (line: string): string | null => {
|
|
19
|
+
for (const pattern of COMPONENT_DECLARATION_PATTERNS) {
|
|
20
|
+
const match = line.match(pattern);
|
|
21
|
+
if (match?.[1]) return match[1];
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const MAX_DECLARATION_LINE_DISTANCE = 5;
|
|
6
27
|
|
|
7
28
|
const extractComponentNameFromSource = (
|
|
8
29
|
sourceContent: string,
|
|
@@ -15,27 +36,16 @@ const extractComponentNameFromSource = (
|
|
|
15
36
|
return null;
|
|
16
37
|
}
|
|
17
38
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return arrowMatch[1];
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const functionMatch = contextLines.match(functionPattern);
|
|
32
|
-
if (functionMatch?.[1]) {
|
|
33
|
-
return functionMatch[1];
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const classMatch = contextLines.match(classPattern);
|
|
37
|
-
if (classMatch?.[1]) {
|
|
38
|
-
return classMatch[1];
|
|
39
|
+
for (let lineDistance = 0; lineDistance <= MAX_DECLARATION_LINE_DISTANCE; lineDistance++) {
|
|
40
|
+
const lineIndexes =
|
|
41
|
+
lineDistance === 0
|
|
42
|
+
? [targetLineIndex]
|
|
43
|
+
: [targetLineIndex - lineDistance, targetLineIndex + lineDistance];
|
|
44
|
+
for (const lineIndex of lineIndexes) {
|
|
45
|
+
if (lineIndex < 0 || lineIndex >= lines.length) continue;
|
|
46
|
+
const declarationName = findComponentDeclarationOnLine(lines[lineIndex]);
|
|
47
|
+
if (declarationName) return declarationName;
|
|
48
|
+
}
|
|
39
49
|
}
|
|
40
50
|
|
|
41
51
|
return null;
|
|
@@ -44,10 +54,11 @@ const extractComponentNameFromSource = (
|
|
|
44
54
|
export const getDisplayNameFromSource = async (
|
|
45
55
|
fiber: Fiber,
|
|
46
56
|
cache = true,
|
|
47
|
-
fetchFn?:
|
|
57
|
+
fetchFn?: SourceFetch,
|
|
48
58
|
): Promise<string | null> => {
|
|
49
|
-
const
|
|
50
|
-
|
|
59
|
+
const stackFrame =
|
|
60
|
+
getDefinitionFrameFromOwnedChild(fiber) ??
|
|
61
|
+
getRawParentStack(fiber).find((innerFrame) => innerFrame.fileName);
|
|
51
62
|
|
|
52
63
|
if (!stackFrame?.fileName) {
|
|
53
64
|
return getDisplayName(fiber.type);
|
|
@@ -73,21 +84,14 @@ export const getDisplayNameFromSource = async (
|
|
|
73
84
|
return getDisplayName(fiber.type);
|
|
74
85
|
}
|
|
75
86
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
const sourceIndex = bundleSourceMap.sources.indexOf(source.fileName);
|
|
81
|
-
if (sourceIndex === -1 || !bundleSourceMap.sourcesContent[sourceIndex]) {
|
|
82
|
-
return getDisplayName(fiber.type);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
const sourceContent = bundleSourceMap.sourcesContent[sourceIndex];
|
|
86
|
-
const extractedName = extractComponentNameFromSource(sourceContent, source.lineNumber);
|
|
87
|
+
const sourceContent = getSourceContentFromSourceMap(bundleSourceMap, source.fileName);
|
|
88
|
+
const extractedName = sourceContent
|
|
89
|
+
? extractComponentNameFromSource(sourceContent, source.lineNumber)
|
|
90
|
+
: null;
|
|
87
91
|
|
|
88
92
|
if (extractedName) {
|
|
89
93
|
return extractedName;
|
|
90
94
|
}
|
|
91
95
|
|
|
92
|
-
return getDisplayName(fiber.type);
|
|
96
|
+
return source.functionName ?? getDisplayName(fiber.type);
|
|
93
97
|
};
|
package/src/source/get-source.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Fiber } from "../
|
|
1
|
+
import type { Fiber } from "../react-internals/index.js";
|
|
2
|
+
import { getDisplayName } from "../core.js";
|
|
2
3
|
|
|
3
|
-
import { FiberSource } from "./types.js";
|
|
4
|
+
import type { FiberSource } from "./types.js";
|
|
4
5
|
import {
|
|
5
6
|
SCHEME_REGEX,
|
|
6
7
|
INTERNAL_SCHEME_PREFIXES,
|
|
@@ -12,8 +13,13 @@ import {
|
|
|
12
13
|
} from "./constants.js";
|
|
13
14
|
import { getDefinitionFrameFromOwnedChild, getParentStack, hasDebugStack } from "./owner-stack.js";
|
|
14
15
|
import { parseDebugStack } from "./parse-debug-stack.js";
|
|
15
|
-
import { StackFrame } from "./parse-stack.js";
|
|
16
|
-
import {
|
|
16
|
+
import { parseStack, type StackFrame } from "./parse-stack.js";
|
|
17
|
+
import {
|
|
18
|
+
getSourceFromSourceMapByFunctionName,
|
|
19
|
+
getSourceMap,
|
|
20
|
+
symbolicateStack,
|
|
21
|
+
type SourceFetch,
|
|
22
|
+
} from "./symbolication.js";
|
|
17
23
|
|
|
18
24
|
export const hasDebugSource = (
|
|
19
25
|
fiber: Fiber,
|
|
@@ -26,10 +32,8 @@ export const hasDebugSource = (
|
|
|
26
32
|
}
|
|
27
33
|
return (
|
|
28
34
|
typeof debugSource === "object" &&
|
|
29
|
-
debugSource !== null &&
|
|
30
|
-
"fileName" in debugSource &&
|
|
31
35
|
typeof debugSource.fileName === "string" &&
|
|
32
|
-
"
|
|
36
|
+
debugSource.fileName !== "(native)" &&
|
|
33
37
|
typeof debugSource.lineNumber === "number"
|
|
34
38
|
);
|
|
35
39
|
};
|
|
@@ -63,6 +67,30 @@ const getUsageFrameFromDebugStack = (fiber: Fiber): StackFrame | null => {
|
|
|
63
67
|
return null;
|
|
64
68
|
};
|
|
65
69
|
|
|
70
|
+
const getSourceByComponentName = async (
|
|
71
|
+
fiber: Fiber,
|
|
72
|
+
cache: boolean,
|
|
73
|
+
fetchFn: SourceFetch | undefined,
|
|
74
|
+
): Promise<FiberSource | null> => {
|
|
75
|
+
const functionName = getDisplayName(fiber.type);
|
|
76
|
+
if (!functionName) return null;
|
|
77
|
+
|
|
78
|
+
const runtimeStackFrames = parseStack(new Error().stack ?? "");
|
|
79
|
+
const visitedFileNames = new Set<string>();
|
|
80
|
+
for (const stackFrame of runtimeStackFrames) {
|
|
81
|
+
const fileName = stackFrame.fileName;
|
|
82
|
+
if (!fileName || visitedFileNames.has(fileName)) {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
visitedFileNames.add(fileName);
|
|
86
|
+
const sourceMap = await getSourceMap(fileName, cache, fetchFn);
|
|
87
|
+
if (!sourceMap) continue;
|
|
88
|
+
const source = getSourceFromSourceMapByFunctionName(sourceMap, functionName);
|
|
89
|
+
if (source && !source.isIgnoreListed) return toFiberSource(source);
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
};
|
|
93
|
+
|
|
66
94
|
/**
|
|
67
95
|
* Returns the source of where the component is used. Available only in dev, for composite {@link Fiber}s.
|
|
68
96
|
*
|
|
@@ -92,11 +120,10 @@ const getUsageFrameFromDebugStack = (fiber: Fiber): StackFrame | null => {
|
|
|
92
120
|
export const getSource = async (
|
|
93
121
|
fiber: Fiber,
|
|
94
122
|
cache = true,
|
|
95
|
-
fetchFn?:
|
|
123
|
+
fetchFn?: SourceFetch,
|
|
96
124
|
): Promise<FiberSource | null> => {
|
|
97
125
|
if (hasDebugSource(fiber)) {
|
|
98
|
-
|
|
99
|
-
return debugSource || null;
|
|
126
|
+
return fiber._debugSource;
|
|
100
127
|
}
|
|
101
128
|
|
|
102
129
|
const debugStackFrame =
|
|
@@ -115,16 +142,11 @@ export const getSource = async (
|
|
|
115
142
|
return toFiberSource(stackFrame);
|
|
116
143
|
}
|
|
117
144
|
}
|
|
118
|
-
return
|
|
145
|
+
return getSourceByComponentName(fiber, cache, fetchFn);
|
|
119
146
|
};
|
|
120
147
|
|
|
121
148
|
const getPathSegmentCount = (path: string): number => path.split("/").filter(Boolean).length;
|
|
122
149
|
|
|
123
|
-
const getFirstPathSegment = (path: string): string | null => {
|
|
124
|
-
const segments = path.split("/").filter(Boolean);
|
|
125
|
-
return segments[0] ?? null;
|
|
126
|
-
};
|
|
127
|
-
|
|
128
150
|
const stripSingleBasePathPrefix = (path: string): string => {
|
|
129
151
|
const firstSlashIndex = path.indexOf("/", 1);
|
|
130
152
|
if (firstSlashIndex === -1) {
|
|
@@ -141,15 +163,12 @@ const stripSingleBasePathPrefix = (path: string): string => {
|
|
|
141
163
|
return path;
|
|
142
164
|
}
|
|
143
165
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
const firstRemainderSegment = getFirstPathSegment(remainderPath);
|
|
149
|
-
if (!firstRemainderSegment) {
|
|
166
|
+
const remainderSegments = remainderPath.split("/").filter(Boolean);
|
|
167
|
+
if (remainderSegments.length < 2) {
|
|
150
168
|
return path;
|
|
151
169
|
}
|
|
152
170
|
|
|
171
|
+
const firstRemainderSegment = remainderSegments[0];
|
|
153
172
|
if (firstRemainderSegment.startsWith("@")) {
|
|
154
173
|
return path;
|
|
155
174
|
}
|
|
@@ -171,6 +190,7 @@ export const normalizeFileName = (fileName: string): string => {
|
|
|
171
190
|
}
|
|
172
191
|
|
|
173
192
|
let normalizedFileName = fileName;
|
|
193
|
+
const isWindowsDrivePath = /^[a-zA-Z]:[\\/]/.test(normalizedFileName);
|
|
174
194
|
|
|
175
195
|
const isHttpUrl =
|
|
176
196
|
normalizedFileName.startsWith("http://") || normalizedFileName.startsWith("https://");
|
|
@@ -179,9 +199,6 @@ export const normalizeFileName = (fileName: string): string => {
|
|
|
179
199
|
const parsedUrl = new URL(normalizedFileName);
|
|
180
200
|
normalizedFileName = parsedUrl.pathname;
|
|
181
201
|
} catch {}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
if (isHttpUrl) {
|
|
185
202
|
normalizedFileName = stripSingleBasePathPrefix(normalizedFileName);
|
|
186
203
|
}
|
|
187
204
|
|
|
@@ -214,7 +231,7 @@ export const normalizeFileName = (fileName: string): string => {
|
|
|
214
231
|
}
|
|
215
232
|
}
|
|
216
233
|
|
|
217
|
-
if (
|
|
234
|
+
if (!isWindowsDrivePath) {
|
|
218
235
|
const schemeMatch = normalizedFileName.match(SCHEME_REGEX);
|
|
219
236
|
if (schemeMatch) {
|
|
220
237
|
normalizedFileName = normalizedFileName.slice(schemeMatch[0].length);
|
package/src/source/index.ts
CHANGED
|
@@ -1,17 +1,27 @@
|
|
|
1
1
|
export { formatOwnerStack, getOwnerStack, getParentStack, hasDebugStack } from "./owner-stack.js";
|
|
2
2
|
export { getSource, isSourceFile, normalizeFileName } from "./get-source.js";
|
|
3
3
|
export {
|
|
4
|
+
getSourceContentFromSourceMap,
|
|
4
5
|
getSourceFromSourceMap,
|
|
6
|
+
getSourceFromSourceMapByFunctionName,
|
|
5
7
|
getSourceMap,
|
|
6
8
|
symbolicateStack,
|
|
7
9
|
type DecodedSourceMapSection,
|
|
8
10
|
type IndexSourceMap,
|
|
9
|
-
type
|
|
11
|
+
type SourceFetch,
|
|
10
12
|
type SourceMap,
|
|
13
|
+
type SourceMapRequestOptions,
|
|
11
14
|
type StandardSourceMap,
|
|
12
15
|
} from "./symbolication.js";
|
|
13
16
|
export type { FiberSource } from "./types.js";
|
|
14
17
|
export { parseStack, type ParseOptions, type StackFrame } from "./parse-stack.js";
|
|
15
18
|
export { getDisplayNameFromSource } from "./get-display-name-from-source.js";
|
|
19
|
+
export {
|
|
20
|
+
BippyError,
|
|
21
|
+
BippyHookInspectionError,
|
|
22
|
+
BippyHookRenderError,
|
|
23
|
+
BippySourceMapError,
|
|
24
|
+
BippyUnsupportedHookError,
|
|
25
|
+
} from "../errors.js";
|
|
16
26
|
export { getFiberHooks, type HookSource, type HooksNode, type HooksTree } from "./inspect-hooks.js";
|
|
17
27
|
export { parseHookNames, type HookNames } from "./parse-hook-names.js";
|