@faiwer/react 0.9.0 → 19.0.2
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 +61 -10
- package/dist/core/actions/applyAction.d.ts.map +1 -1
- package/dist/core/actions/applyAction.js +4 -0
- package/dist/core/actions/applyAction.js.map +1 -1
- package/dist/core/actions/catchError.action.d.ts +10 -0
- package/dist/core/actions/catchError.action.d.ts.map +1 -0
- package/dist/core/actions/catchError.action.js +51 -0
- package/dist/core/actions/catchError.action.js.map +1 -0
- package/dist/core/actions/dom/value.d.ts +3 -2
- package/dist/core/actions/dom/value.d.ts.map +1 -1
- package/dist/core/actions/dom/value.js +20 -13
- package/dist/core/actions/dom/value.js.map +1 -1
- package/dist/core/actions/helpers.d.ts +6 -1
- package/dist/core/actions/helpers.d.ts.map +1 -1
- package/dist/core/actions/helpers.js +20 -3
- package/dist/core/actions/helpers.js.map +1 -1
- package/dist/core/actions/remove.action.d.ts.map +1 -1
- package/dist/core/actions/remove.action.js +4 -3
- package/dist/core/actions/remove.action.js.map +1 -1
- package/dist/core/actions/replace.action.d.ts.map +1 -1
- package/dist/core/actions/replace.action.js +4 -0
- package/dist/core/actions/replace.action.js.map +1 -1
- package/dist/core/actions/scheduleEffect.action.d.ts +7 -0
- package/dist/core/actions/scheduleEffect.action.d.ts.map +1 -0
- package/dist/core/actions/scheduleEffect.action.js +8 -0
- package/dist/core/actions/scheduleEffect.action.js.map +1 -0
- package/dist/core/actions/setAttr.action.d.ts.map +1 -1
- package/dist/core/actions/setAttr.action.js +2 -3
- package/dist/core/actions/setAttr.action.js.map +1 -1
- package/dist/core/actions/setRef.action.d.ts.map +1 -1
- package/dist/core/actions/setRef.action.js +1 -2
- package/dist/core/actions/setRef.action.js.map +1 -1
- package/dist/core/classComponent.d.ts +2 -1
- package/dist/core/classComponent.d.ts.map +1 -1
- package/dist/core/classComponent.js +17 -10
- package/dist/core/classComponent.js.map +1 -1
- package/dist/core/components.d.ts +5 -3
- package/dist/core/components.d.ts.map +1 -1
- package/dist/core/components.js +17 -4
- package/dist/core/components.js.map +1 -1
- package/dist/core/devTools/devTools.d.ts +2 -0
- package/dist/core/devTools/devTools.d.ts.map +1 -0
- package/dist/core/devTools/devTools.js +43 -0
- package/dist/core/devTools/devTools.js.map +1 -0
- package/dist/core/devTools/hmr.d.ts +6 -0
- package/dist/core/devTools/hmr.d.ts.map +1 -0
- package/dist/core/devTools/hmr.js +55 -0
- package/dist/core/devTools/hmr.js.map +1 -0
- package/dist/core/devTools/toRFiber.d.ts +7 -0
- package/dist/core/devTools/toRFiber.d.ts.map +1 -0
- package/dist/core/devTools/toRFiber.js +143 -0
- package/dist/core/devTools/toRFiber.js.map +1 -0
- package/dist/core/devTools/toRJsx.d.ts +10 -0
- package/dist/core/devTools/toRJsx.d.ts.map +1 -0
- package/dist/core/devTools/toRJsx.js +62 -0
- package/dist/core/devTools/toRJsx.js.map +1 -0
- package/dist/core/devTools/types.d.ts +157 -0
- package/dist/core/devTools/types.d.ts.map +1 -0
- package/dist/core/devTools/types.js +19 -0
- package/dist/core/devTools/types.js.map +1 -0
- package/dist/core/preact/connect.d.ts +3 -0
- package/dist/core/preact/connect.d.ts.map +1 -0
- package/dist/core/preact/connect.js +162 -0
- package/dist/core/preact/connect.js.map +1 -0
- package/dist/core/preact/helpers.d.ts +12 -0
- package/dist/core/preact/helpers.d.ts.map +1 -0
- package/dist/core/preact/helpers.js +52 -0
- package/dist/core/preact/helpers.js.map +1 -0
- package/dist/core/preact/inspect.d.ts +9 -0
- package/dist/core/preact/inspect.d.ts.map +1 -0
- package/dist/core/preact/inspect.js +169 -0
- package/dist/core/preact/inspect.js.map +1 -0
- package/dist/core/preact/toVNode.d.ts +11 -0
- package/dist/core/preact/toVNode.d.ts.map +1 -0
- package/dist/core/preact/toVNode.js +150 -0
- package/dist/core/preact/toVNode.js.map +1 -0
- package/dist/core/preact/types.d.ts +180 -0
- package/dist/core/preact/types.d.ts.map +1 -0
- package/dist/core/preact/types.js +29 -0
- package/dist/core/preact/types.js.map +1 -0
- package/dist/core/preact/update.d.ts +13 -0
- package/dist/core/preact/update.d.ts.map +1 -0
- package/dist/core/preact/update.js +40 -0
- package/dist/core/preact/update.js.map +1 -0
- package/dist/core/reactNodeToFiberNode.d.ts +3 -1
- package/dist/core/reactNodeToFiberNode.d.ts.map +1 -1
- package/dist/core/reactNodeToFiberNode.js +79 -16
- package/dist/core/reactNodeToFiberNode.js.map +1 -1
- package/dist/core/reconciliation/applyActions.d.ts.map +1 -1
- package/dist/core/reconciliation/applyActions.js +1 -0
- package/dist/core/reconciliation/applyActions.js.map +1 -1
- package/dist/core/reconciliation/collect/fromApp.d.ts +2 -1
- package/dist/core/reconciliation/collect/fromApp.d.ts.map +1 -1
- package/dist/core/reconciliation/collect/fromApp.js +15 -1
- package/dist/core/reconciliation/collect/fromApp.js.map +1 -1
- package/dist/core/reconciliation/collect/fromChildrenPair.d.ts +2 -1
- package/dist/core/reconciliation/collect/fromChildrenPair.d.ts.map +1 -1
- package/dist/core/reconciliation/collect/fromChildrenPair.js +26 -4
- package/dist/core/reconciliation/collect/fromChildrenPair.js.map +1 -1
- package/dist/core/reconciliation/collect/fromComponent.d.ts +2 -1
- package/dist/core/reconciliation/collect/fromComponent.d.ts.map +1 -1
- package/dist/core/reconciliation/collect/fromComponent.js +25 -3
- package/dist/core/reconciliation/collect/fromComponent.js.map +1 -1
- package/dist/core/reconciliation/collect/fromFiberPair.d.ts +2 -1
- package/dist/core/reconciliation/collect/fromFiberPair.d.ts.map +1 -1
- package/dist/core/reconciliation/collect/fromFiberPair.js +6 -1
- package/dist/core/reconciliation/collect/fromFiberPair.js.map +1 -1
- package/dist/core/reconciliation/compare/areFiberNodesEq.d.ts.map +1 -1
- package/dist/core/reconciliation/compare/areFiberNodesEq.js +4 -0
- package/dist/core/reconciliation/compare/areFiberNodesEq.js.map +1 -1
- package/dist/core/reconciliation/effects.d.ts +2 -2
- package/dist/core/reconciliation/effects.d.ts.map +1 -1
- package/dist/core/reconciliation/effects.js +53 -4
- package/dist/core/reconciliation/effects.js.map +1 -1
- package/dist/core/reconciliation/errors/ReactError.d.ts +8 -0
- package/dist/core/reconciliation/errors/ReactError.d.ts.map +1 -1
- package/dist/core/reconciliation/errors/ReactError.js +33 -0
- package/dist/core/reconciliation/errors/ReactError.js.map +1 -1
- package/dist/core/reconciliation/errors/stack.d.ts +1 -1
- package/dist/core/reconciliation/errors/stack.d.ts.map +1 -1
- package/dist/core/reconciliation/errors/stack.js +3 -3
- package/dist/core/reconciliation/errors/stack.js.map +1 -1
- package/dist/core/reconciliation/fibers.d.ts +12 -2
- package/dist/core/reconciliation/fibers.d.ts.map +1 -1
- package/dist/core/reconciliation/fibers.js +60 -1
- package/dist/core/reconciliation/fibers.js.map +1 -1
- package/dist/core/reconciliation/invalidateFiber.js +2 -2
- package/dist/core/reconciliation/invalidateFiber.js.map +1 -1
- package/dist/core/reconciliation/mount.d.ts.map +1 -1
- package/dist/core/reconciliation/mount.js +32 -2
- package/dist/core/reconciliation/mount.js.map +1 -1
- package/dist/core/reconciliation/postCommit.d.ts.map +1 -1
- package/dist/core/reconciliation/postCommit.js +1 -0
- package/dist/core/reconciliation/postCommit.js.map +1 -1
- package/dist/core/reconciliation/render.d.ts.map +1 -1
- package/dist/core/reconciliation/render.js +8 -2
- package/dist/core/reconciliation/render.js.map +1 -1
- package/dist/core/reconciliation/runFiberComponents.d.ts +3 -1
- package/dist/core/reconciliation/runFiberComponents.d.ts.map +1 -1
- package/dist/core/reconciliation/runFiberComponents.js +31 -4
- package/dist/core/reconciliation/runFiberComponents.js.map +1 -1
- package/dist/debug.d.ts +2 -0
- package/dist/debug.d.ts.map +1 -0
- package/dist/debug.js +2 -0
- package/dist/debug.js.map +1 -0
- package/dist/hooks/helpers.d.ts +2 -2
- package/dist/hooks/helpers.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useEffect.d.ts.map +1 -1
- package/dist/hooks/useEffect.js +20 -6
- package/dist/hooks/useEffect.js.map +1 -1
- package/dist/hooks/useError.d.ts +5 -0
- package/dist/hooks/useError.d.ts.map +1 -0
- package/dist/hooks/useError.js +19 -0
- package/dist/hooks/useError.js.map +1 -0
- package/dist/hooks/useReducer.d.ts +7 -0
- package/dist/hooks/useReducer.d.ts.map +1 -0
- package/dist/hooks/useReducer.js +10 -0
- package/dist/hooks/useReducer.js.map +1 -0
- package/dist/hooks/useState.d.ts.map +1 -1
- package/dist/hooks/useState.js +0 -1
- package/dist/hooks/useState.js.map +1 -1
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -1
- package/dist/types/actions.d.ts +12 -1
- package/dist/types/actions.d.ts.map +1 -1
- package/dist/types/app.d.ts +14 -1
- package/dist/types/app.d.ts.map +1 -1
- package/dist/types/component.d.ts +8 -0
- package/dist/types/component.d.ts.map +1 -1
- package/dist/types/fiber.d.ts +1 -1
- package/dist/types/fiber.d.ts.map +1 -1
- package/dist/types/hooks.d.ts +12 -2
- package/dist/types/hooks.d.ts.map +1 -1
- package/dist/types/react.d.ts +0 -4
- package/dist/types/react.d.ts.map +1 -1
- package/package.json +14 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyActions.d.ts","sourceRoot":"","sources":["../../../src/core/reconciliation/applyActions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD;;;GAGG;AACH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"applyActions.d.ts","sourceRoot":"","sources":["../../../src/core/reconciliation/applyActions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD;;;GAGG;AACH,eAAO,MAAM,YAAY,uCAOxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyActions.js","sourceRoot":"","sources":["../../../src/core/reconciliation/applyActions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAQ,EAAE,OAAiB,EAAQ,EAAE,CAAC;IACjE,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC;IACrB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,WAAW,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;AAAA,
|
|
1
|
+
{"version":3,"file":"applyActions.js","sourceRoot":"","sources":["../../../src/core/reconciliation/applyActions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAQ,EAAE,OAAiB,EAAQ,EAAE,CAAC;IACjE,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC;IACrB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,WAAW,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AAAA,CAC7B,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { App } from '../../../types';
|
|
2
2
|
import type { Action } from '../../../types/actions';
|
|
3
|
+
import { ReactError } from '../errors/ReactError';
|
|
3
4
|
/**
|
|
4
5
|
* Goes through the list of invalidated components, runs them, finds the diff,
|
|
5
6
|
* and returns the list of actions to convert the previous fiber tree to the new
|
|
6
7
|
* one.
|
|
7
8
|
*/
|
|
8
|
-
export declare const collectActionsFromApp: (app: App) => Action[];
|
|
9
|
+
export declare const collectActionsFromApp: (app: App) => Action[] | ReactError;
|
|
9
10
|
//# sourceMappingURL=fromApp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fromApp.d.ts","sourceRoot":"","sources":["../../../../src/core/reconciliation/collect/fromApp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"fromApp.d.ts","sourceRoot":"","sources":["../../../../src/core/reconciliation/collect/fromApp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIlD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,qCAwBjC,CAAC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { collectActionsFromComponent } from './fromComponent';
|
|
2
|
+
import { ReactError } from '../errors/ReactError';
|
|
3
|
+
import { collectActionsFromChildrenPair } from './fromChildrenPair';
|
|
4
|
+
import { cloneFiber, isRootFiber } from '../fibers';
|
|
2
5
|
/**
|
|
3
6
|
* Goes through the list of invalidated components, runs them, finds the diff,
|
|
4
7
|
* and returns the list of actions to convert the previous fiber tree to the new
|
|
@@ -8,7 +11,18 @@ export const collectActionsFromApp = (app) => {
|
|
|
8
11
|
const actions = [];
|
|
9
12
|
while (!app.invalidatedComponents.isEmpty()) {
|
|
10
13
|
const [fiber, props] = app.invalidatedComponents.poll();
|
|
11
|
-
|
|
14
|
+
const actionsX = isRootFiber(fiber)
|
|
15
|
+
? // HMR may require a root rerender, when one of the root's direct children
|
|
16
|
+
// components got hooks changes.
|
|
17
|
+
collectActionsFromChildrenPair(app.root, app.root.children.map((n) => cloneFiber(n)))
|
|
18
|
+
: collectActionsFromComponent(fiber, props);
|
|
19
|
+
if (actionsX instanceof ReactError) {
|
|
20
|
+
return actionsX.catchActionArrOrPassThru();
|
|
21
|
+
}
|
|
22
|
+
actions.push(...actionsX);
|
|
23
|
+
if (isRootFiber(fiber)) {
|
|
24
|
+
app.preact?.invalidated.add(fiber.id);
|
|
25
|
+
}
|
|
12
26
|
}
|
|
13
27
|
return actions;
|
|
14
28
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fromApp.js","sourceRoot":"","sources":["../../../../src/core/reconciliation/collect/fromApp.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"fromApp.js","sourceRoot":"","sources":["../../../../src/core/reconciliation/collect/fromApp.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEpD;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAQ,EAAyB,EAAE,CAAC;IACxE,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC;YACjC,CAAC,CAAC,0EAA0E;gBAC1E,gCAAgC;gBAChC,8BAA8B,CAC5B,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAC5C;YACH,CAAC,CAAC,2BAA2B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9C,IAAI,QAAQ,YAAY,UAAU,EAAE,CAAC;YACnC,OAAO,QAAQ,CAAC,wBAAwB,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAE1B,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AAAA,CAChB,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { FiberNode } from '../../../types';
|
|
2
2
|
import type { Action } from '../../../types/actions';
|
|
3
|
+
import { ReactError } from '../errors/ReactError';
|
|
3
4
|
/**
|
|
4
5
|
* Returns a list of actions needed to convert `before` to `after`, where
|
|
5
6
|
* `before` is a list of children from the last render, and `after` is the list
|
|
6
7
|
* of children of the same node from the current render.
|
|
7
8
|
*/
|
|
8
|
-
export declare const collectActionsFromChildrenPair: (fiber: FiberNode, after: FiberNode[]) => Action[];
|
|
9
|
+
export declare const collectActionsFromChildrenPair: (fiber: FiberNode, after: FiberNode[]) => Action[] | ReactError;
|
|
9
10
|
//# sourceMappingURL=fromChildrenPair.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fromChildrenPair.d.ts","sourceRoot":"","sources":["../../../../src/core/reconciliation/collect/fromChildrenPair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,SAAS,EAGV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"fromChildrenPair.d.ts","sourceRoot":"","sources":["../../../../src/core/reconciliation/collect/fromChildrenPair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,SAAS,EAGV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAQzD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,iEA8E1C,CAAC"}
|
|
@@ -5,6 +5,8 @@ import { collectActionsFromNewFiber } from '../../../core/reconciliation/collect
|
|
|
5
5
|
import { createFiberNode, FAKE_CONTAINER_TAG } from '../fibers';
|
|
6
6
|
import { areFiberNodesEq } from '../compare/areFiberNodesEq';
|
|
7
7
|
import { isContainerFiber } from '../typeGuards';
|
|
8
|
+
import { ReactError } from '../errors/ReactError';
|
|
9
|
+
import { isErrorBoundary } from '../../../hooks/useError';
|
|
8
10
|
/**
|
|
9
11
|
* Returns a list of actions needed to convert `before` to `after`, where
|
|
10
12
|
* `before` is a list of children from the last render, and `after` is the list
|
|
@@ -47,7 +49,11 @@ after) => {
|
|
|
47
49
|
// 1. There was no node with this key before. Create a new one.
|
|
48
50
|
// 2. There was one, but it was very different. Replace it.
|
|
49
51
|
relayoutNeeded = true;
|
|
50
|
-
|
|
52
|
+
const createActionsX = createFiberActions(app, r.fiber, fiber);
|
|
53
|
+
// If `fiber` is a component than `fromComponent` (a caller) will handled it.
|
|
54
|
+
if (createActionsX instanceof ReactError)
|
|
55
|
+
return createActionsX;
|
|
56
|
+
actions.push(...createActionsX);
|
|
51
57
|
if (l) {
|
|
52
58
|
// Don't run components from the removing node even if they were invalidated
|
|
53
59
|
uninvalidateFiberSubTree(app, l.fiber);
|
|
@@ -56,9 +62,13 @@ after) => {
|
|
|
56
62
|
continue;
|
|
57
63
|
}
|
|
58
64
|
else {
|
|
65
|
+
const diffActionsX = collectActionsFromFiberPair(app, l.fiber, r.fiber);
|
|
66
|
+
// If `fiber` is a component than `fromComponent` (a caller) will handle it.
|
|
67
|
+
if (diffActionsX instanceof ReactError)
|
|
68
|
+
return diffActionsX;
|
|
59
69
|
// No need to recreate the existing node, but we might need to update it
|
|
60
70
|
// or one of its children.
|
|
61
|
-
actions.push(...
|
|
71
|
+
actions.push(...diffActionsX);
|
|
62
72
|
}
|
|
63
73
|
// Handle the case when the node changed its position. It's possible for
|
|
64
74
|
// nodes with manual keys.
|
|
@@ -97,12 +107,24 @@ const createFiberActions = (app, fiber, parent) => {
|
|
|
97
107
|
// The Relayout action will move them into the real node and then reassign the
|
|
98
108
|
// parent.
|
|
99
109
|
fiber.parent = fakeParent;
|
|
110
|
+
const actions = [];
|
|
100
111
|
if (isContainerFiber(fiber)) {
|
|
112
|
+
const compActionsX = runFiberComponents(app, fiber);
|
|
113
|
+
if (compActionsX instanceof ReactError) {
|
|
114
|
+
if (isErrorBoundary(fiber)) {
|
|
115
|
+
// It should never happen, because this case is specially treated in
|
|
116
|
+
// `runFiberComponents`. So get here a ['CatchError'] action list.
|
|
117
|
+
throw new ReactError(fiber, `Unknown react error`);
|
|
118
|
+
}
|
|
119
|
+
else
|
|
120
|
+
return compActionsX;
|
|
121
|
+
}
|
|
101
122
|
// Since all inner components are also new we need to run them.
|
|
102
|
-
|
|
123
|
+
actions.push(...compActionsX);
|
|
103
124
|
}
|
|
104
125
|
// Reuse the same tooling we use for mounting the app.
|
|
105
|
-
|
|
126
|
+
actions.push(...collectActionsFromNewFiber(fiber));
|
|
127
|
+
return actions;
|
|
106
128
|
};
|
|
107
129
|
/**
|
|
108
130
|
* Create an <x-container/> DOM node that is not mounted to the real DOM tree.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fromChildrenPair.js","sourceRoot":"","sources":["../../../../src/core/reconciliation/collect/fromChildrenPair.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uDAAuD,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"fromChildrenPair.js","sourceRoot":"","sources":["../../../../src/core/reconciliation/collect/fromChildrenPair.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { FiberNode, UnknownProps } from '../../../types';
|
|
2
2
|
import type { Action } from '../../../types/actions';
|
|
3
|
+
import { ReactError } from '../errors/ReactError';
|
|
3
4
|
/**
|
|
4
5
|
* 1. Runs a component
|
|
5
6
|
* 2. Collects and returns a list of actions needed to actualize it
|
|
6
7
|
*
|
|
7
8
|
* Throws when the given component is not invalidated.
|
|
8
9
|
*/
|
|
9
|
-
export declare const collectActionsFromComponent: (fiber: FiberNode, props: UnknownProps | null) => Action[];
|
|
10
|
+
export declare const collectActionsFromComponent: (fiber: FiberNode, props: UnknownProps | null) => Action[] | ReactError;
|
|
10
11
|
//# sourceMappingURL=fromComponent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fromComponent.d.ts","sourceRoot":"","sources":["../../../../src/core/reconciliation/collect/fromComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"fromComponent.d.ts","sourceRoot":"","sources":["../../../../src/core/reconciliation/collect/fromComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAKzD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,yEAoCvC,CAAC"}
|
|
@@ -2,6 +2,8 @@ import { runComponent } from '../../components';
|
|
|
2
2
|
import { jsxElementToFiberNode } from '../../reactNodeToFiberNode';
|
|
3
3
|
import { collectActionsFromChildrenPair } from './fromChildrenPair';
|
|
4
4
|
import { toFiberChildren } from '../fibers';
|
|
5
|
+
import { ReactError } from '../errors/ReactError';
|
|
6
|
+
import { isErrorBoundary } from '../../../hooks/useError';
|
|
5
7
|
/**
|
|
6
8
|
* 1. Runs a component
|
|
7
9
|
* 2. Collects and returns a list of actions needed to actualize it
|
|
@@ -11,8 +13,28 @@ import { toFiberChildren } from '../fibers';
|
|
|
11
13
|
export const collectActionsFromComponent = (fiber,
|
|
12
14
|
/** Custom props (when `fiber.props` are stale). */
|
|
13
15
|
props) => {
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
const compActionsX = runComponent(fiber, props);
|
|
17
|
+
// Component cannot be its own error boundary. Pass it through.
|
|
18
|
+
if (compActionsX instanceof ReactError)
|
|
19
|
+
return compActionsX;
|
|
20
|
+
const [newReactChildren, compActions] = compActionsX;
|
|
21
|
+
const childrenX = jsxElementToFiberNode(newReactChildren, fiber, false);
|
|
22
|
+
if (childrenX instanceof ReactError) {
|
|
23
|
+
// It should never happen, because `childrenX` could be a `ReactError` only
|
|
24
|
+
// if ran some component that threw an error. But we don't unwrap components
|
|
25
|
+
// here.
|
|
26
|
+
throw new ReactError(fiber, `Unknown fiber error`);
|
|
27
|
+
}
|
|
28
|
+
let [newFiber, childrenActions] = childrenX;
|
|
29
|
+
let diffActionsX = collectActionsFromChildrenPair(fiber, toFiberChildren(newFiber));
|
|
30
|
+
if (diffActionsX instanceof ReactError) {
|
|
31
|
+
if (isErrorBoundary(fiber)) {
|
|
32
|
+
childrenActions = [];
|
|
33
|
+
diffActionsX = [diffActionsX.genCatchAction()];
|
|
34
|
+
}
|
|
35
|
+
else
|
|
36
|
+
return diffActionsX;
|
|
37
|
+
}
|
|
38
|
+
return [...compActions, ...childrenActions, ...diffActionsX];
|
|
17
39
|
};
|
|
18
40
|
//# sourceMappingURL=fromComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fromComponent.js","sourceRoot":"","sources":["../../../../src/core/reconciliation/collect/fromComponent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"fromComponent.js","sourceRoot":"","sources":["../../../../src/core/reconciliation/collect/fromComponent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,KAAgB;AAChB,mDAAmD;AACnD,KAA0B,EACH,EAAE,CAAC;IAC1B,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChD,+DAA+D;IAC/D,IAAI,YAAY,YAAY,UAAU;QAAE,OAAO,YAAY,CAAC;IAE5D,MAAM,CAAC,gBAAgB,EAAE,WAAW,CAAC,GAAG,YAAY,CAAC;IACrD,MAAM,SAAS,GAAG,qBAAqB,CACrC,gBAAgB,EAChB,KAAK,EACL,KAAK,CACN,CAAC;IACF,IAAI,SAAS,YAAY,UAAU,EAAE,CAAC;QACpC,2EAA2E;QAC3E,4EAA4E;QAC5E,QAAQ;QACR,MAAM,IAAI,UAAU,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,SAAS,CAAC;IAC5C,IAAI,YAAY,GAAG,8BAA8B,CAC/C,KAAK,EACL,eAAe,CAAC,QAAQ,CAAC,CAC1B,CAAC;IAEF,IAAI,YAAY,YAAY,UAAU,EAAE,CAAC;QACvC,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,eAAe,GAAG,EAAE,CAAC;YACrB,YAAY,GAAG,CAAC,YAAY,CAAC,cAAc,EAAG,CAAC,CAAC;QAClD,CAAC;;YAAM,OAAO,YAAY,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,GAAG,WAAW,EAAE,GAAG,eAAe,EAAE,GAAG,YAAY,CAAC,CAAC;AAAA,CAC9D,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { App, FiberNode } from '../../../types';
|
|
2
2
|
import type { Action } from '../../../types/actions';
|
|
3
|
+
import { ReactError } from '../errors/ReactError';
|
|
3
4
|
/**
|
|
4
5
|
* `l` and `r` are the same node, but `r` may have some updates. This method
|
|
5
6
|
* collects a list of actions that must be applied to convert `l` to `r`.
|
|
6
7
|
* This doesn't include removing or replacing the existing `l` node.
|
|
7
8
|
*/
|
|
8
|
-
export declare const collectActionsFromFiberPair: (app: App, l: FiberNode, r: FiberNode) => Action[];
|
|
9
|
+
export declare const collectActionsFromFiberPair: (app: App, l: FiberNode, r: FiberNode) => Action[] | ReactError;
|
|
9
10
|
//# sourceMappingURL=fromFiberPair.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fromFiberPair.d.ts","sourceRoot":"","sources":["../../../../src/core/reconciliation/collect/fromFiberPair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,GAAG,EAEH,SAAS,EAIV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"fromFiberPair.d.ts","sourceRoot":"","sources":["../../../../src/core/reconciliation/collect/fromFiberPair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,GAAG,EAEH,SAAS,EAIV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,4BAA4B,CAAC;AAIvE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,iEAkFvC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { collectActionsFromChildrenPair } from './fromChildrenPair';
|
|
2
2
|
import { areFiberPropsEq } from '../compare/areFiberPropsEq';
|
|
3
3
|
import { isFiberDead } from '../fibers';
|
|
4
|
+
import { ReactError } from '../errors/ReactError';
|
|
4
5
|
/**
|
|
5
6
|
* `l` and `r` are the same node, but `r` may have some updates. This method
|
|
6
7
|
* collects a list of actions that must be applied to convert `l` to `r`.
|
|
@@ -17,7 +18,11 @@ export const collectActionsFromFiberPair = (app, l, r) => {
|
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
20
|
if (l.type === 'tag' || l.type === 'fragment') {
|
|
20
|
-
|
|
21
|
+
const childrenActionsX = collectActionsFromChildrenPair(l, r.children);
|
|
22
|
+
// Tags & fragments cannot be error boundaries. Pass it through.
|
|
23
|
+
if (childrenActionsX instanceof ReactError)
|
|
24
|
+
return childrenActionsX;
|
|
25
|
+
actions.push(...childrenActionsX);
|
|
21
26
|
}
|
|
22
27
|
if (eqProps &&
|
|
23
28
|
// Component may have the same props, but changed internal state
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fromFiberPair.js","sourceRoot":"","sources":["../../../../src/core/reconciliation/collect/fromFiberPair.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"fromFiberPair.js","sourceRoot":"","sources":["../../../../src/core/reconciliation/collect/fromFiberPair.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"areFiberNodesEq.d.ts","sourceRoot":"","sources":["../../../../src/core/reconciliation/compare/areFiberNodesEq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"areFiberNodesEq.d.ts","sourceRoot":"","sources":["../../../../src/core/reconciliation/compare/areFiberNodesEq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,eAAe,8DAe3B,CAAC"}
|
|
@@ -7,6 +7,10 @@ export const areFiberNodesEq = (left, right) => {
|
|
|
7
7
|
return left === right;
|
|
8
8
|
if (left.type !== right.type || left.role !== right.role)
|
|
9
9
|
return false;
|
|
10
|
+
// HMR marked this component to be remounted. E.g., there were changes in the
|
|
11
|
+
// hooks order.
|
|
12
|
+
if (left.type === 'component' && left.data?.remount)
|
|
13
|
+
return false;
|
|
10
14
|
const lNode = left.tag ?? left.component;
|
|
11
15
|
const rNode = right.tag ?? right.component;
|
|
12
16
|
return lNode === rNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"areFiberNodesEq.js","sourceRoot":"","sources":["../../../../src/core/reconciliation/compare/areFiberNodesEq.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,IAAsB,EACtB,KAAuB,EACd,EAAE,CAAC;IACZ,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,KAAK,KAAK,CAAC;IAE3C,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"areFiberNodesEq.js","sourceRoot":"","sources":["../../../../src/core/reconciliation/compare/areFiberNodesEq.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,IAAsB,EACtB,KAAuB,EACd,EAAE,CAAC;IACZ,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,KAAK,KAAK,CAAC;IAE3C,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACvE,6EAA6E;IAC7E,eAAe;IACf,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO;QAAE,OAAO,KAAK,CAAC;IAElE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC;IAE3C,OAAO,KAAK,KAAK,KAAK,CAAC;AAAA,CACxB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { App, EffectMode } from '../../types';
|
|
1
|
+
import type { App, EffectMode, FiberNode } from '../../types';
|
|
2
2
|
/**
|
|
3
3
|
* Adds to a planner the given effect.
|
|
4
4
|
* - `refs` & `layout` effects are run in the same microtask queue
|
|
@@ -6,7 +6,7 @@ import type { App, EffectMode } from '../../types';
|
|
|
6
6
|
* be run in the same microtask queue (when one of the ref or layout effects
|
|
7
7
|
* invalidates a component).
|
|
8
8
|
*/
|
|
9
|
-
export declare const scheduleEffect: (
|
|
9
|
+
export declare const scheduleEffect: (fiber: FiberNode, fn: () => void, mode: EffectMode) => void;
|
|
10
10
|
/**
|
|
11
11
|
* Run scheduled effects one-by-one from the given queue.
|
|
12
12
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../../../src/core/reconciliation/effects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../../../src/core/reconciliation/effects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAOrE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,8DAM1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,sCAkCtB,CAAC"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import { getAppByFiber } from './app';
|
|
2
|
+
import { ReactError } from './errors/ReactError';
|
|
3
|
+
import { findClosestErrorBoundary } from '../../hooks/useError';
|
|
4
|
+
import { traverseFiberTree } from '../actions/helpers';
|
|
5
|
+
import { catchErrorAction } from '../actions/catchError.action';
|
|
1
6
|
/**
|
|
2
7
|
* Adds to a planner the given effect.
|
|
3
8
|
* - `refs` & `layout` effects are run in the same microtask queue
|
|
@@ -5,17 +10,61 @@
|
|
|
5
10
|
* be run in the same microtask queue (when one of the ref or layout effects
|
|
6
11
|
* invalidates a component).
|
|
7
12
|
*/
|
|
8
|
-
export const scheduleEffect = (
|
|
9
|
-
|
|
13
|
+
export const scheduleEffect = (fiber, fn, mode) => {
|
|
14
|
+
getAppByFiber(fiber).effects[mode].push({ fiber, fn, cancelled: false });
|
|
10
15
|
};
|
|
11
16
|
/**
|
|
12
17
|
* Run scheduled effects one-by-one from the given queue.
|
|
13
18
|
*/
|
|
14
19
|
export const runEffects = (app, mode) => {
|
|
15
20
|
const effects = app.effects[mode];
|
|
21
|
+
for (const { fn, fiber, cancelled } of effects) {
|
|
22
|
+
if (cancelled) {
|
|
23
|
+
// Another component within the same error boundary children group failed
|
|
24
|
+
// during running one of its effects.
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
fn(fiber);
|
|
29
|
+
}
|
|
30
|
+
catch (errorRaw) {
|
|
31
|
+
if (mode === 'refsMount' || mode === 'refsUnmount') {
|
|
32
|
+
fiber.ref = null; // Don't run the ref-destructor for this fiber.
|
|
33
|
+
}
|
|
34
|
+
const error = new ReactError(fiber, `Error during running effect. ${String(errorRaw)}`);
|
|
35
|
+
error.cause = errorRaw;
|
|
36
|
+
const boundary = findClosestErrorBoundary(fiber);
|
|
37
|
+
if (!boundary) {
|
|
38
|
+
throw error;
|
|
39
|
+
}
|
|
40
|
+
cancelSetEffects(app, collectBoundaryChildren(boundary));
|
|
41
|
+
catchErrorAction(boundary, { error });
|
|
42
|
+
}
|
|
43
|
+
}
|
|
16
44
|
app.effects[mode] = [];
|
|
17
|
-
|
|
18
|
-
|
|
45
|
+
};
|
|
46
|
+
/** Return IDs of all given error boundary fiber children. */
|
|
47
|
+
const collectBoundaryChildren = (boundary) => {
|
|
48
|
+
const fibers = new Set();
|
|
49
|
+
traverseFiberTree(boundary, (fiber) => {
|
|
50
|
+
if (fiber !== boundary) {
|
|
51
|
+
fibers.add(fiber.id);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
return fibers;
|
|
55
|
+
};
|
|
56
|
+
/** Cancels all effects that aren't destructors for given set of fibers. */
|
|
57
|
+
const cancelSetEffects = (app, fibers) => {
|
|
58
|
+
for (const group of [
|
|
59
|
+
app.effects.layout,
|
|
60
|
+
app.effects.normal,
|
|
61
|
+
app.effects.refsMount,
|
|
62
|
+
]) {
|
|
63
|
+
for (const effect of group) {
|
|
64
|
+
if (fibers.has(effect.fiber.id)) {
|
|
65
|
+
effect.cancelled = true;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
19
68
|
}
|
|
20
69
|
};
|
|
21
70
|
//# sourceMappingURL=effects.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effects.js","sourceRoot":"","sources":["../../../src/core/reconciliation/effects.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"effects.js","sourceRoot":"","sources":["../../../src/core/reconciliation/effects.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import type { FiberNode } from '../../../types';
|
|
2
|
+
import type { CatchErrorAction } from '../../../types/actions';
|
|
2
3
|
export declare class ReactError extends Error {
|
|
3
4
|
fiber: FiberNode;
|
|
5
|
+
fullStack: string;
|
|
4
6
|
constructor(fiber: FiberNode, error: unknown, prefix?: string);
|
|
7
|
+
/**
|
|
8
|
+
* Finds the closest error boundary and prepares a CatchError action. If a
|
|
9
|
+
* boundary wasn't found it returns null.
|
|
10
|
+
*/
|
|
11
|
+
genCatchAction(): CatchErrorAction | null;
|
|
12
|
+
catchActionArrOrPassThru(): CatchErrorAction[] | ReactError;
|
|
5
13
|
}
|
|
6
14
|
export declare const nullthrowsForFiber: <T>(fiber: FiberNode, val: T | null | undefined, label?: string) => T;
|
|
7
15
|
//# sourceMappingURL=ReactError.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactError.d.ts","sourceRoot":"","sources":["../../../../src/core/reconciliation/errors/ReactError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"ReactError.d.ts","sourceRoot":"","sources":["../../../../src/core/reconciliation/errors/ReactError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAKnE,qBAAa,UAAW,SAAQ,KAAK;IACnC,KAAK,EAAE,SAAS,CAAC;IAEjB,SAAS,EAAE,MAAM,CAAC;IAElB,YAAY,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAmB5D;IAED;;;OAGG;IACH,cAAc,IAAI,gBAAgB,GAAG,IAAI,CAcxC;IAED,wBAAwB,IAAI,gBAAgB,EAAE,GAAG,UAAU,CAG1D;CACF;AAUD,eAAO,MAAM,kBAAkB,GAAI,CAAC,mEAUnC,CAAC"}
|
|
@@ -1,14 +1,47 @@
|
|
|
1
1
|
import { captureStack, getFiberLabel } from './stack';
|
|
2
|
+
import { findClosestErrorBoundary } from '../../../hooks/useError';
|
|
3
|
+
import { traverseFiberTree } from '../../../core/actions/helpers';
|
|
4
|
+
import { getAppByFiber } from '../app';
|
|
2
5
|
export class ReactError extends Error {
|
|
3
6
|
fiber;
|
|
7
|
+
// Like .stack but contains the label of the node where the error occured.
|
|
8
|
+
fullStack;
|
|
4
9
|
constructor(fiber, error, prefix) {
|
|
5
10
|
let message = ((prefix ? `${prefix}. ` : '') + errToStr(error)).replace('%fiber%', getFiberLabel(fiber));
|
|
6
11
|
super(message);
|
|
7
12
|
this.fiber = fiber;
|
|
8
13
|
this.name = 'ReactError';
|
|
14
|
+
if (error instanceof Error && !(error instanceof ReactError)) {
|
|
15
|
+
this.cause = error;
|
|
16
|
+
}
|
|
9
17
|
const stack = captureStack(fiber);
|
|
10
18
|
this.message +=
|
|
11
19
|
'\nReact stack:\n' + stack.map((line) => ` ├— ${line}`).join('\n');
|
|
20
|
+
this.fullStack = captureStack(fiber, false)
|
|
21
|
+
.map((line) => ` ├— ${line}`)
|
|
22
|
+
.join('\n');
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Finds the closest error boundary and prepares a CatchError action. If a
|
|
26
|
+
* boundary wasn't found it returns null.
|
|
27
|
+
*/
|
|
28
|
+
genCatchAction() {
|
|
29
|
+
const boundary = findClosestErrorBoundary(this.fiber);
|
|
30
|
+
if (!boundary)
|
|
31
|
+
return null;
|
|
32
|
+
const app = getAppByFiber(this.fiber);
|
|
33
|
+
// Remove from the whole app.invalidatedComponents all components that are
|
|
34
|
+
// children from `fiber`?
|
|
35
|
+
traverseFiberTree(boundary, (child) => {
|
|
36
|
+
if (child.type === 'component') {
|
|
37
|
+
app.invalidatedComponents.delete(child);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
return { type: 'CatchError', fiber: boundary, error: this };
|
|
41
|
+
}
|
|
42
|
+
catchActionArrOrPassThru() {
|
|
43
|
+
const catchAction = this.genCatchAction();
|
|
44
|
+
return catchAction ? [catchAction] : this;
|
|
12
45
|
}
|
|
13
46
|
}
|
|
14
47
|
const errToStr = (error) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactError.js","sourceRoot":"","sources":["../../../../src/core/reconciliation/errors/ReactError.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEtD,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,KAAK,CAAY;
|
|
1
|
+
{"version":3,"file":"ReactError.js","sourceRoot":"","sources":["../../../../src/core/reconciliation/errors/ReactError.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,6 @@ import type { FiberNode } from '../../../types';
|
|
|
4
4
|
* @example
|
|
5
5
|
* ['<div.test/>', '<Label/>', '<App/>']
|
|
6
6
|
*/
|
|
7
|
-
export declare const captureStack: (fiber: FiberNode) => string[];
|
|
7
|
+
export declare const captureStack: (fiber: FiberNode, skipRoot?: boolean) => string[];
|
|
8
8
|
export declare const getFiberLabel: (fiber: FiberNode) => string;
|
|
9
9
|
//# sourceMappingURL=stack.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../../../src/core/reconciliation/errors/stack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,oBAAoB,CAAC;AAIlE;;;;GAIG;AACH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../../../src/core/reconciliation/errors/stack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,oBAAoB,CAAC;AAIlE;;;;GAIG;AACH,eAAO,MAAM,YAAY,oDASxB,CAAC;AAEF,eAAO,MAAM,aAAa,8BAoCzB,CAAC"}
|
|
@@ -5,8 +5,8 @@ import { isFiberDead } from '../fibers';
|
|
|
5
5
|
* @example
|
|
6
6
|
* ['<div.test/>', '<Label/>', '<App/>']
|
|
7
7
|
*/
|
|
8
|
-
export const captureStack = (fiber) => {
|
|
9
|
-
const result = [];
|
|
8
|
+
export const captureStack = (fiber, skipRoot = true) => {
|
|
9
|
+
const result = skipRoot ? [] : [getFiberLabel(fiber)];
|
|
10
10
|
while (fiber.parent && fiber.parent.tag !== 'root') {
|
|
11
11
|
result.push(getFiberLabel(fiber.parent));
|
|
12
12
|
fiber = fiber.parent;
|
|
@@ -28,7 +28,7 @@ export const getFiberLabel = (fiber) => {
|
|
|
28
28
|
// portal(<div#portal/>)
|
|
29
29
|
case 'tag':
|
|
30
30
|
return fiber.role === 'portal'
|
|
31
|
-
? `portal(<${fiber.
|
|
31
|
+
? `portal(<${fiber.data?.tagName.toLowerCase()}${tagAttrs(fiber.data)}/>`
|
|
32
32
|
: `<${fiber.tag}${tagAttrs(fiber)}/>${source(fiber)}`;
|
|
33
33
|
// #hello world
|
|
34
34
|
case 'text':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../../src/core/reconciliation/errors/stack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAgB,EAAY,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../../src/core/reconciliation/errors/stack.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FiberNode } from '../../types';
|
|
1
|
+
import type { ElementNode, FiberNode } from '../../types';
|
|
2
2
|
/**
|
|
3
3
|
* Theoretically, fiber can't change its level. So this function linearly
|
|
4
4
|
* calculates the fiber's level and caches the result in fiber.level.
|
|
@@ -34,9 +34,19 @@ export declare const NULL_FIBER: FiberNode;
|
|
|
34
34
|
*/
|
|
35
35
|
export declare const toFiberChildren: (fiber: FiberNode) => FiberNode[];
|
|
36
36
|
/**
|
|
37
|
-
*
|
|
37
|
+
* Returns `true` when the given fiber:
|
|
38
38
|
* - was removed
|
|
39
39
|
* - was abandoned (its content moved to another node)
|
|
40
40
|
*/
|
|
41
41
|
export declare const isFiberDead: (fiber: FiberNode) => boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Returns `true` if the given fiber is THE root of the whole fiber tree.
|
|
44
|
+
*/
|
|
45
|
+
export declare const isRootFiber: (fiber: FiberNode) => boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Returns a new fiber node that is identical to the given one, besides it
|
|
48
|
+
* doesn't have any state. Like if it was just created from a JSX element.
|
|
49
|
+
*/
|
|
50
|
+
export declare const cloneFiber: (node: FiberNode) => FiberNode;
|
|
51
|
+
export declare const isJsxElementNode: (node: unknown) => node is ElementNode;
|
|
42
52
|
//# sourceMappingURL=fibers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fibers.d.ts","sourceRoot":"","sources":["../../../src/core/reconciliation/fibers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"fibers.d.ts","sourceRoot":"","sources":["../../../src/core/reconciliation/fibers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGjE;;;GAGG;AACH,eAAO,MAAM,aAAa,8BAOzB,CAAC;AAEF;wEACwE;AACxE,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAEhD;iEACiE;AACjE,eAAO,MAAM,YAAY,eAAe,CAAC;AAGzC,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;CAiBmB,CAAC;AAEhD,eAAO,MAAM,UAAU,WAA+B,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,eAAe,mCAU3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,WAAW,+BAAqC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,WAAW,+BAAsD,CAAC;AAE/E;;;GAGG;AACH,eAAO,MAAM,UAAU,gCAyCtB,CAAC;AAEF,eAAO,MAAM,gBAAgB,wCAWV,CAAC"}
|