@reckona/mreact-compat 0.0.1

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.
Files changed (163) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +32 -0
  3. package/dist/class-component.d.ts +48 -0
  4. package/dist/class-component.d.ts.map +1 -0
  5. package/dist/class-component.js +186 -0
  6. package/dist/class-component.js.map +1 -0
  7. package/dist/context.d.ts +31 -0
  8. package/dist/context.d.ts.map +1 -0
  9. package/dist/context.js +83 -0
  10. package/dist/context.js.map +1 -0
  11. package/dist/devtools.d.ts +5 -0
  12. package/dist/devtools.d.ts.map +1 -0
  13. package/dist/devtools.js +839 -0
  14. package/dist/devtools.js.map +1 -0
  15. package/dist/dom-children.d.ts +3 -0
  16. package/dist/dom-children.d.ts.map +1 -0
  17. package/dist/dom-children.js +23 -0
  18. package/dist/dom-children.js.map +1 -0
  19. package/dist/dom-props.d.ts +4 -0
  20. package/dist/dom-props.d.ts.map +1 -0
  21. package/dist/dom-props.js +266 -0
  22. package/dist/dom-props.js.map +1 -0
  23. package/dist/element.d.ts +94 -0
  24. package/dist/element.d.ts.map +1 -0
  25. package/dist/element.js +160 -0
  26. package/dist/element.js.map +1 -0
  27. package/dist/event-listeners.d.ts +12 -0
  28. package/dist/event-listeners.d.ts.map +1 -0
  29. package/dist/event-listeners.js +11 -0
  30. package/dist/event-listeners.js.map +1 -0
  31. package/dist/event-replay.d.ts +18 -0
  32. package/dist/event-replay.d.ts.map +1 -0
  33. package/dist/event-replay.js +94 -0
  34. package/dist/event-replay.js.map +1 -0
  35. package/dist/event-types.d.ts +19 -0
  36. package/dist/event-types.d.ts.map +1 -0
  37. package/dist/event-types.js +2 -0
  38. package/dist/event-types.js.map +1 -0
  39. package/dist/events.d.ts +6 -0
  40. package/dist/events.d.ts.map +1 -0
  41. package/dist/events.js +306 -0
  42. package/dist/events.js.map +1 -0
  43. package/dist/fiber-child.d.ts +4 -0
  44. package/dist/fiber-child.d.ts.map +1 -0
  45. package/dist/fiber-child.js +262 -0
  46. package/dist/fiber-child.js.map +1 -0
  47. package/dist/fiber-commit.d.ts +4 -0
  48. package/dist/fiber-commit.d.ts.map +1 -0
  49. package/dist/fiber-commit.js +54 -0
  50. package/dist/fiber-commit.js.map +1 -0
  51. package/dist/fiber-flags.d.ts +15 -0
  52. package/dist/fiber-flags.d.ts.map +1 -0
  53. package/dist/fiber-flags.js +18 -0
  54. package/dist/fiber-flags.js.map +1 -0
  55. package/dist/fiber-host.d.ts +16 -0
  56. package/dist/fiber-host.d.ts.map +1 -0
  57. package/dist/fiber-host.js +892 -0
  58. package/dist/fiber-host.js.map +1 -0
  59. package/dist/fiber-lanes.d.ts +30 -0
  60. package/dist/fiber-lanes.d.ts.map +1 -0
  61. package/dist/fiber-lanes.js +71 -0
  62. package/dist/fiber-lanes.js.map +1 -0
  63. package/dist/fiber-reconciler.d.ts +8 -0
  64. package/dist/fiber-reconciler.d.ts.map +1 -0
  65. package/dist/fiber-reconciler.js +385 -0
  66. package/dist/fiber-reconciler.js.map +1 -0
  67. package/dist/fiber-scheduler.d.ts +37 -0
  68. package/dist/fiber-scheduler.d.ts.map +1 -0
  69. package/dist/fiber-scheduler.js +307 -0
  70. package/dist/fiber-scheduler.js.map +1 -0
  71. package/dist/fiber-work-loop.d.ts +21 -0
  72. package/dist/fiber-work-loop.d.ts.map +1 -0
  73. package/dist/fiber-work-loop.js +116 -0
  74. package/dist/fiber-work-loop.js.map +1 -0
  75. package/dist/fiber.d.ts +50 -0
  76. package/dist/fiber.d.ts.map +1 -0
  77. package/dist/fiber.js +73 -0
  78. package/dist/fiber.js.map +1 -0
  79. package/dist/flight-decoder.d.ts +8 -0
  80. package/dist/flight-decoder.d.ts.map +1 -0
  81. package/dist/flight-decoder.js +132 -0
  82. package/dist/flight-decoder.js.map +1 -0
  83. package/dist/flight-element-builder.d.ts +6 -0
  84. package/dist/flight-element-builder.d.ts.map +1 -0
  85. package/dist/flight-element-builder.js +56 -0
  86. package/dist/flight-element-builder.js.map +1 -0
  87. package/dist/flight-parser.d.ts +3 -0
  88. package/dist/flight-parser.d.ts.map +1 -0
  89. package/dist/flight-parser.js +508 -0
  90. package/dist/flight-parser.js.map +1 -0
  91. package/dist/flight-protocol.d.ts +11 -0
  92. package/dist/flight-protocol.d.ts.map +1 -0
  93. package/dist/flight-protocol.js +61 -0
  94. package/dist/flight-protocol.js.map +1 -0
  95. package/dist/flight-types.d.ts +98 -0
  96. package/dist/flight-types.d.ts.map +1 -0
  97. package/dist/flight-types.js +2 -0
  98. package/dist/flight-types.js.map +1 -0
  99. package/dist/flight.d.ts +26 -0
  100. package/dist/flight.d.ts.map +1 -0
  101. package/dist/flight.js +66 -0
  102. package/dist/flight.js.map +1 -0
  103. package/dist/hooks.d.ts +214 -0
  104. package/dist/hooks.d.ts.map +1 -0
  105. package/dist/hooks.js +1296 -0
  106. package/dist/hooks.js.map +1 -0
  107. package/dist/hydration.d.ts +34 -0
  108. package/dist/hydration.d.ts.map +1 -0
  109. package/dist/hydration.js +164 -0
  110. package/dist/hydration.js.map +1 -0
  111. package/dist/index.d.ts +9 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +6 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/internal.d.ts +2 -0
  116. package/dist/internal.d.ts.map +1 -0
  117. package/dist/internal.js +2 -0
  118. package/dist/internal.js.map +1 -0
  119. package/dist/jsx-dev-runtime.d.ts +19 -0
  120. package/dist/jsx-dev-runtime.d.ts.map +1 -0
  121. package/dist/jsx-dev-runtime.js +6 -0
  122. package/dist/jsx-dev-runtime.js.map +1 -0
  123. package/dist/jsx-runtime.d.ts +24 -0
  124. package/dist/jsx-runtime.d.ts.map +1 -0
  125. package/dist/jsx-runtime.js +21 -0
  126. package/dist/jsx-runtime.js.map +1 -0
  127. package/dist/prop-comparison.d.ts +6 -0
  128. package/dist/prop-comparison.d.ts.map +1 -0
  129. package/dist/prop-comparison.js +28 -0
  130. package/dist/prop-comparison.js.map +1 -0
  131. package/dist/reconcile-types.d.ts +10 -0
  132. package/dist/reconcile-types.d.ts.map +1 -0
  133. package/dist/reconcile-types.js +2 -0
  134. package/dist/reconcile-types.js.map +1 -0
  135. package/dist/reconciler.d.ts +7 -0
  136. package/dist/reconciler.d.ts.map +1 -0
  137. package/dist/reconciler.js +318 -0
  138. package/dist/reconciler.js.map +1 -0
  139. package/dist/render.d.ts +7 -0
  140. package/dist/render.d.ts.map +1 -0
  141. package/dist/render.js +4 -0
  142. package/dist/render.js.map +1 -0
  143. package/dist/root.d.ts +44 -0
  144. package/dist/root.d.ts.map +1 -0
  145. package/dist/root.js +278 -0
  146. package/dist/root.js.map +1 -0
  147. package/dist/scheduler.d.ts +30 -0
  148. package/dist/scheduler.d.ts.map +1 -0
  149. package/dist/scheduler.js +90 -0
  150. package/dist/scheduler.js.map +1 -0
  151. package/dist/suspense.d.ts +8 -0
  152. package/dist/suspense.d.ts.map +1 -0
  153. package/dist/suspense.js +164 -0
  154. package/dist/suspense.js.map +1 -0
  155. package/dist/thenable.d.ts +2 -0
  156. package/dist/thenable.d.ts.map +1 -0
  157. package/dist/thenable.js +6 -0
  158. package/dist/thenable.js.map +1 -0
  159. package/dist/url-safety.d.ts +2 -0
  160. package/dist/url-safety.d.ts.map +1 -0
  161. package/dist/url-safety.js +2 -0
  162. package/dist/url-safety.js.map +1 -0
  163. package/package.json +65 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Tatsuo Kaniwa
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,32 @@
1
+ # @reckona/mreact-compat
2
+
3
+ `@reckona/mreact-compat` implements the React-compatible runtime used by
4
+ `@reckona/mreact`, `@reckona/mreact-dom`, and the compatibility benchmark path.
5
+ It includes element creation, hooks, context, roots, scheduling, reconciliation,
6
+ hydration, Suspense, and JSX runtimes.
7
+
8
+ ## Basic Usage
9
+
10
+ Most applications should import from `@reckona/mreact` instead:
11
+
12
+ ```ts
13
+ import { createElement, useState } from "@reckona/mreact";
14
+ ```
15
+
16
+ Use `@reckona/mreact-compat` directly only when testing or integrating the
17
+ compatibility runtime.
18
+
19
+ ## Exports
20
+
21
+ - `@reckona/mreact-compat` exposes the core compatibility APIs.
22
+ - `@reckona/mreact-compat/jsx-runtime` and `./jsx-dev-runtime` provide JSX
23
+ runtime entrypoints.
24
+ - `@reckona/mreact-compat/scheduler` exposes the scheduler-compatible API.
25
+ - `@reckona/mreact-compat/flight` and `./internal` are framework integration
26
+ entrypoints.
27
+
28
+ ## Notes
29
+
30
+ The compatibility runtime is useful for drop-in React-like behavior. The faster
31
+ compiled app path is owned by the compiler, router, server, and reactive DOM
32
+ packages.
@@ -0,0 +1,48 @@
1
+ import { type RootRuntime } from "./hooks.js";
2
+ import type { ReactCompatElement, ReactCompatNode } from "./element.js";
3
+ import { type RenderOptions } from "./hydration.js";
4
+ import type { ReconcileNode, ReconcileResult } from "./reconcile-types.js";
5
+ export interface ClassComponentInstance {
6
+ props: Record<string, unknown>;
7
+ state?: Record<string, unknown>;
8
+ setState?: (partial: Record<string, unknown> | ((previousState: Record<string, unknown>, props: Record<string, unknown>) => Record<string, unknown> | null), callback?: () => void) => void;
9
+ forceUpdate?: (callback?: () => void) => void;
10
+ render(): ReactCompatNode;
11
+ componentDidMount?: () => void;
12
+ componentDidUpdate?: (previousProps: Record<string, unknown>, previousState: Record<string, unknown>, snapshot?: unknown) => void;
13
+ componentWillUnmount?: () => void;
14
+ shouldComponentUpdate?: (nextProps: Record<string, unknown>, nextState: Record<string, unknown>) => boolean;
15
+ getSnapshotBeforeUpdate?: (previousProps: Record<string, unknown>, previousState: Record<string, unknown>) => unknown;
16
+ componentDidCatch?: (error: Error, info: {
17
+ componentStack: string;
18
+ }) => void;
19
+ }
20
+ export interface ClassComponentType {
21
+ new (props: Record<string, unknown>): ClassComponentInstance;
22
+ getDerivedStateFromError?: (error: Error) => Record<string, unknown> | null;
23
+ }
24
+ export declare class Component<P extends Record<string, unknown> = Record<string, unknown>, S extends Record<string, unknown> = Record<string, unknown>> {
25
+ props: P;
26
+ state?: S;
27
+ setState: ClassComponentInstance["setState"];
28
+ forceUpdate: ClassComponentInstance["forceUpdate"];
29
+ constructor(props: P);
30
+ render(): ReactCompatNode;
31
+ }
32
+ export declare class PureComponent<P extends Record<string, unknown> = Record<string, unknown>, S extends Record<string, unknown> = Record<string, unknown>> extends Component<P, S> {
33
+ shouldComponentUpdate(nextProps: P, nextState: S): boolean;
34
+ }
35
+ export type ClassComponentRenderResult = {
36
+ kind: "render";
37
+ node: ReactCompatNode;
38
+ instance: ClassComponentInstance;
39
+ type: ClassComponentType;
40
+ } | {
41
+ kind: "skip";
42
+ };
43
+ export declare function reconcileClassComponent(parent: ParentNode, previousNodes: readonly Node[], type: ClassComponentType, props: Record<string, unknown>, runtime: RootRuntime, path: string, options: RenderOptions, reconcileNode: ReconcileNode, onInstance?: (instance: ClassComponentInstance) => void): ReconcileResult;
44
+ export declare function renderClassComponentWithRuntime(type: ClassComponentType, props: Record<string, unknown>, runtime: RootRuntime, path: string): ClassComponentRenderResult;
45
+ export declare function recoverClassComponentError(type: ClassComponentType, instance: ClassComponentInstance, error: unknown): ReactCompatNode | undefined;
46
+ export declare function isClassComponentType(value: unknown): value is ClassComponentType;
47
+ export declare function reconcileErrorBoundary(parent: ParentNode, previousNodes: readonly Node[], element: ReactCompatElement, runtime: RootRuntime, path: string, options: RenderOptions, reconcileNode: ReconcileNode): ReconcileResult;
48
+ //# sourceMappingURL=class-component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-component.d.ts","sourceRoot":"","sources":["../src/class-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkD,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9F,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAI3E,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,CACT,OAAO,EACH,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,CAAC,CACC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,EACxC,QAAQ,CAAC,EAAE,MAAM,IAAI,KAClB,IAAI,CAAC;IACV,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IAC9C,MAAM,IAAI,eAAe,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,kBAAkB,CAAC,EAAE,CACnB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,QAAQ,CAAC,EAAE,OAAO,KACf,IAAI,CAAC;IACV,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,qBAAqB,CAAC,EAAE,CACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,OAAO,CAAC;IACb,uBAAuB,CAAC,EAAE,CACxB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACnC,OAAO,CAAC;IACb,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC9E;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,sBAAsB,CAAC;IAC7D,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7E;AAED,qBAAa,SAAS,CACpB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE3D,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,QAAQ,EAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAC9C,WAAW,EAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;gBAExC,KAAK,EAAE,CAAC;IAIpB,MAAM,IAAI,eAAe;CAG1B;AAED,qBAAa,aAAa,CACxB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC3D,SAAQ,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IACvB,qBAAqB,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,OAAO;CAG3D;AAaD,MAAM,MAAM,0BAA0B,GAClC;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,IAAI,EAAE,kBAAkB,CAAC;CAC1B,GACD;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,UAAU,EAClB,aAAa,EAAE,SAAS,IAAI,EAAE,EAC9B,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,aAAa,EAC5B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,sBAAsB,KAAK,IAAI,GACtD,eAAe,CA0CjB;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,GACX,0BAA0B,CAqE5B;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,OAAO,GACb,eAAe,GAAG,SAAS,CAkB7B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAMhF;AAMD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,UAAU,EAClB,aAAa,EAAE,SAAS,IAAI,EAAE,EAC9B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,aAAa,GAC3B,eAAe,CAsCjB"}
@@ -0,0 +1,186 @@
1
+ import { renderWithRootRuntime, useLayoutEffect, useRef } from "./hooks.js";
2
+ import { withHydrationComponentStack } from "./hydration.js";
3
+ import { isThenable } from "./thenable.js";
4
+ import { shallowEqual } from "./prop-comparison.js";
5
+ export class Component {
6
+ props;
7
+ state;
8
+ setState;
9
+ forceUpdate;
10
+ constructor(props) {
11
+ this.props = props;
12
+ }
13
+ render() {
14
+ return null;
15
+ }
16
+ }
17
+ export class PureComponent extends Component {
18
+ shouldComponentUpdate(nextProps, nextState) {
19
+ return !shallowEqual(this.props, nextProps) || !shallowEqual(this.state ?? {}, nextState ?? {});
20
+ }
21
+ }
22
+ const classLifecycleSnapshots = new WeakMap();
23
+ export function reconcileClassComponent(parent, previousNodes, type, props, runtime, path, options, reconcileNode, onInstance) {
24
+ const rendered = renderClassComponentWithRuntime(type, props, runtime, path);
25
+ if (rendered.kind === "skip") {
26
+ return { nodes: previousNodes.slice(0, 1), consumed: previousNodes.length };
27
+ }
28
+ onInstance?.(rendered.instance);
29
+ const childOptions = withHydrationComponentStack(options, getClassComponentName(type));
30
+ try {
31
+ return reconcileNode(parent, previousNodes, rendered.node, runtime, `${path}.class`, childOptions);
32
+ }
33
+ catch (error) {
34
+ const fallbackNode = recoverClassComponentError(rendered.type, rendered.instance, error);
35
+ if (fallbackNode === undefined) {
36
+ throw error;
37
+ }
38
+ return reconcileNode(parent, previousNodes, fallbackNode, runtime, `${path}.class.fallback`, childOptions);
39
+ }
40
+ }
41
+ export function renderClassComponentWithRuntime(type, props, runtime, path) {
42
+ return renderWithRootRuntime(runtime, path, () => {
43
+ const instanceRef = useRef(undefined);
44
+ const didCommitRef = useRef(false);
45
+ const previousInstance = instanceRef.current;
46
+ const hasDifferentType = previousInstance !== undefined && !(previousInstance instanceof type);
47
+ const replacedInstance = hasDifferentType ? previousInstance : undefined;
48
+ if (hasDifferentType) {
49
+ classLifecycleSnapshots.delete(previousInstance);
50
+ didCommitRef.current = false;
51
+ instanceRef.current = undefined;
52
+ }
53
+ const instance = instanceRef.current !== undefined && instanceRef.current instanceof type
54
+ ? instanceRef.current
55
+ : new type(props);
56
+ const previousProps = instance.props;
57
+ const snapshot = classLifecycleSnapshots.get(instance);
58
+ const previousState = snapshot?.previousState ?? instance.state ?? {};
59
+ const nextState = instance.state ?? {};
60
+ instanceRef.current = instance;
61
+ installClassUpdateMethods(instance, runtime);
62
+ const shouldSkipUpdate = didCommitRef.current &&
63
+ snapshot?.force !== true &&
64
+ instance.shouldComponentUpdate?.(props, nextState) === false;
65
+ instance.props = props;
66
+ installClassLifecycleEffects(instance, didCommitRef, previousProps, previousState, shouldSkipUpdate, replacedInstance);
67
+ if (shouldSkipUpdate) {
68
+ return { kind: "skip" };
69
+ }
70
+ try {
71
+ const node = instance.render();
72
+ if (didCommitRef.current) {
73
+ classLifecycleSnapshots.set(instance, {
74
+ ...classLifecycleSnapshots.get(instance),
75
+ snapshot: instance.getSnapshotBeforeUpdate?.(previousProps ?? {}, previousState),
76
+ });
77
+ }
78
+ return { kind: "render", node, instance, type };
79
+ }
80
+ catch (error) {
81
+ const fallbackNode = recoverClassComponentError(type, instance, error);
82
+ if (fallbackNode === undefined) {
83
+ throw error;
84
+ }
85
+ return { kind: "render", node: fallbackNode, instance, type };
86
+ }
87
+ });
88
+ }
89
+ export function recoverClassComponentError(type, instance, error) {
90
+ if (isThenable(error) || !isErrorBoundaryClass(type, instance)) {
91
+ return undefined;
92
+ }
93
+ const normalizedError = error instanceof Error ? error : new Error(String(error));
94
+ const derivedState = type.getDerivedStateFromError?.(normalizedError);
95
+ if (derivedState !== undefined && derivedState !== null) {
96
+ instance.state = {
97
+ ...instance.state,
98
+ ...derivedState,
99
+ };
100
+ }
101
+ instance.componentDidCatch?.(normalizedError, { componentStack: "" });
102
+ return instance.render();
103
+ }
104
+ export function isClassComponentType(value) {
105
+ return (typeof value === "function" &&
106
+ typeof value.prototype?.render ===
107
+ "function");
108
+ }
109
+ function getClassComponentName(type) {
110
+ return type.name === "" ? "Anonymous" : type.name;
111
+ }
112
+ export function reconcileErrorBoundary(parent, previousNodes, element, runtime, path, options, reconcileNode) {
113
+ try {
114
+ return reconcileNode(parent, previousNodes, element.props.children, runtime, `${path}.eb`, options);
115
+ }
116
+ catch (error) {
117
+ if (isThenable(error)) {
118
+ throw error;
119
+ }
120
+ const normalizedError = error instanceof Error ? error : new Error(String(error));
121
+ const onError = element.props.onError;
122
+ if (typeof onError === "function") {
123
+ onError(normalizedError);
124
+ }
125
+ const fallback = element.props.fallback;
126
+ const fallbackNode = typeof fallback === "function"
127
+ ? fallback(normalizedError)
128
+ : null;
129
+ return reconcileNode(parent, previousNodes, fallbackNode, runtime, `${path}.eb.fallback`, options);
130
+ }
131
+ }
132
+ function installClassUpdateMethods(instance, runtime) {
133
+ instance.setState = (partial, callback) => {
134
+ const previousState = instance.state ?? {};
135
+ if (!classLifecycleSnapshots.has(instance)) {
136
+ classLifecycleSnapshots.set(instance, { previousState });
137
+ }
138
+ const nextPartial = typeof partial === "function"
139
+ ? partial(previousState, instance.props)
140
+ : partial;
141
+ if (nextPartial !== null) {
142
+ instance.state = {
143
+ ...previousState,
144
+ ...nextPartial,
145
+ };
146
+ }
147
+ runtime.rerender();
148
+ callback?.call(instance);
149
+ };
150
+ instance.forceUpdate = (callback) => {
151
+ classLifecycleSnapshots.set(instance, {
152
+ previousState: instance.state ?? {},
153
+ force: true,
154
+ });
155
+ runtime.rerender();
156
+ callback?.call(instance);
157
+ };
158
+ }
159
+ function installClassLifecycleEffects(instance, didCommitRef, previousProps, previousState, skipUpdate, replacedInstance) {
160
+ useLayoutEffect(() => {
161
+ replacedInstance?.componentWillUnmount?.();
162
+ if (skipUpdate) {
163
+ classLifecycleSnapshots.delete(instance);
164
+ return;
165
+ }
166
+ if (didCommitRef.current) {
167
+ instance.componentDidUpdate?.(previousProps ?? {}, previousState, classLifecycleSnapshots.get(instance)?.snapshot);
168
+ }
169
+ else {
170
+ didCommitRef.current = true;
171
+ instance.componentDidMount?.();
172
+ }
173
+ classLifecycleSnapshots.delete(instance);
174
+ });
175
+ useLayoutEffect(() => {
176
+ return () => {
177
+ instance.componentWillUnmount?.();
178
+ classLifecycleSnapshots.delete(instance);
179
+ };
180
+ }, []);
181
+ }
182
+ function isErrorBoundaryClass(type, instance) {
183
+ return (typeof type.getDerivedStateFromError === "function" ||
184
+ typeof instance.componentDidCatch === "function");
185
+ }
186
+ //# sourceMappingURL=class-component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-component.js","sourceRoot":"","sources":["../src/class-component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ declare const REACT_COMPAT_PROVIDER_TYPE: unique symbol;
2
+ declare const REACT_COMPAT_CONSUMER_TYPE: unique symbol;
3
+ export interface ReactCompatContext<T> {
4
+ defaultValue: T;
5
+ values: T[];
6
+ Provider: ReactCompatProvider<T>;
7
+ Consumer: ReactCompatConsumer<T>;
8
+ displayName: string | undefined;
9
+ }
10
+ export interface ReactCompatProvider<T> {
11
+ $$typeof: typeof REACT_COMPAT_PROVIDER_TYPE;
12
+ context: ReactCompatContext<T>;
13
+ displayName: string | undefined;
14
+ }
15
+ export interface ReactCompatConsumer<T> {
16
+ $$typeof: typeof REACT_COMPAT_CONSUMER_TYPE;
17
+ context: ReactCompatContext<T>;
18
+ displayName: string | undefined;
19
+ }
20
+ export declare function createContext<T>(defaultValue: T): ReactCompatContext<T>;
21
+ export declare function useContext<T>(context: ReactCompatContext<T>): T;
22
+ export declare function isReactCompatProvider(value: unknown): value is ReactCompatProvider<unknown>;
23
+ export declare function isReactCompatContext(value: unknown): value is ReactCompatContext<unknown>;
24
+ export declare function isReactCompatConsumer(value: unknown): value is ReactCompatConsumer<unknown>;
25
+ export declare function renderWithContextProvider<T, R>(provider: ReactCompatProvider<T>, value: T, render: () => R): R;
26
+ export declare function pushContextProvider<T>(provider: ReactCompatProvider<T>, value: T): void;
27
+ export declare function popContextProvider<T>(provider: ReactCompatProvider<T>): void;
28
+ export declare function renderContextProviderToString<T>(provider: ReactCompatProvider<T>, value: T, render: () => string): string;
29
+ export declare function renderContextConsumerToString<T>(consumer: ReactCompatConsumer<T>, render: (value: T) => string): string;
30
+ export {};
31
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,0BAA0B,eAAuC,CAAC;AACxE,QAAA,MAAM,0BAA0B,eAAuC,CAAC;AAExE,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,YAAY,EAAE,CAAC,CAAC;IAChB,MAAM,EAAE,CAAC,EAAE,CAAC;IACZ,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,QAAQ,EAAE,OAAO,0BAA0B,CAAC;IAC5C,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAoBvE;AAqBD,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAE/D;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAMvC;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAStC;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAMvC;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAC5C,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAChC,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,MAAM,CAAC,GACd,CAAC,CAQH;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAChC,KAAK,EAAE,CAAC,GACP,IAAI,CAEN;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAE5E;AAED,wBAAgB,6BAA6B,CAAC,CAAC,EAC7C,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAChC,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,MAAM,MAAM,GACnB,MAAM,CAER;AAED,wBAAgB,6BAA6B,CAAC,CAAC,EAC7C,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAChC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAC3B,MAAM,CAER"}
@@ -0,0 +1,83 @@
1
+ const REACT_COMPAT_PROVIDER_TYPE = Symbol.for("modular.react.provider");
2
+ const REACT_COMPAT_CONSUMER_TYPE = Symbol.for("modular.react.consumer");
3
+ export function createContext(defaultValue) {
4
+ const context = {
5
+ defaultValue,
6
+ values: [],
7
+ Provider: undefined,
8
+ Consumer: undefined,
9
+ displayName: undefined,
10
+ };
11
+ context.Provider = {
12
+ $$typeof: REACT_COMPAT_PROVIDER_TYPE,
13
+ context,
14
+ displayName: undefined,
15
+ };
16
+ context.Consumer = {
17
+ $$typeof: REACT_COMPAT_CONSUMER_TYPE,
18
+ context,
19
+ displayName: undefined,
20
+ };
21
+ installContextDisplayName(context);
22
+ return context;
23
+ }
24
+ function installContextDisplayName(context) {
25
+ let displayName;
26
+ Object.defineProperty(context, "displayName", {
27
+ configurable: true,
28
+ enumerable: true,
29
+ get() {
30
+ return displayName;
31
+ },
32
+ set(value) {
33
+ displayName = value;
34
+ context.Provider.displayName =
35
+ value === undefined ? undefined : `${value}.Provider`;
36
+ context.Consumer.displayName =
37
+ value === undefined ? undefined : `${value}.Consumer`;
38
+ },
39
+ });
40
+ }
41
+ export function useContext(context) {
42
+ return context.values.at(-1) ?? context.defaultValue;
43
+ }
44
+ export function isReactCompatProvider(value) {
45
+ return (typeof value === "object" &&
46
+ value !== null &&
47
+ value.$$typeof === REACT_COMPAT_PROVIDER_TYPE);
48
+ }
49
+ export function isReactCompatContext(value) {
50
+ return (typeof value === "object" &&
51
+ value !== null &&
52
+ "Provider" in value &&
53
+ "Consumer" in value &&
54
+ isReactCompatProvider(value.Provider) &&
55
+ isReactCompatConsumer(value.Consumer));
56
+ }
57
+ export function isReactCompatConsumer(value) {
58
+ return (typeof value === "object" &&
59
+ value !== null &&
60
+ value.$$typeof === REACT_COMPAT_CONSUMER_TYPE);
61
+ }
62
+ export function renderWithContextProvider(provider, value, render) {
63
+ pushContextProvider(provider, value);
64
+ try {
65
+ return render();
66
+ }
67
+ finally {
68
+ popContextProvider(provider);
69
+ }
70
+ }
71
+ export function pushContextProvider(provider, value) {
72
+ provider.context.values.push(value);
73
+ }
74
+ export function popContextProvider(provider) {
75
+ provider.context.values.pop();
76
+ }
77
+ export function renderContextProviderToString(provider, value, render) {
78
+ return renderWithContextProvider(provider, value, render);
79
+ }
80
+ export function renderContextConsumerToString(consumer, render) {
81
+ return render(useContext(consumer.context));
82
+ }
83
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type ReactCompatNode } from "./element.js";
2
+ import type { FiberRoot } from "./fiber.js";
3
+ export declare function commitDevToolsRoot(container: Element, source: FiberRoot | ReactCompatNode, didError?: boolean): void;
4
+ export declare function unmountDevToolsRoot(container: Element): void;
5
+ //# sourceMappingURL=devtools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devtools.d.ts","sourceRoot":"","sources":["../src/devtools.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAS,SAAS,EAAY,MAAM,YAAY,CAAC;AAkI7D,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,OAAO,EAClB,MAAM,EAAE,SAAS,GAAG,eAAe,EACnC,QAAQ,UAAQ,GACf,IAAI,CAiCN;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAgB5D"}