@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.
- package/LICENSE +21 -0
- package/README.md +32 -0
- package/dist/class-component.d.ts +48 -0
- package/dist/class-component.d.ts.map +1 -0
- package/dist/class-component.js +186 -0
- package/dist/class-component.js.map +1 -0
- package/dist/context.d.ts +31 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +83 -0
- package/dist/context.js.map +1 -0
- package/dist/devtools.d.ts +5 -0
- package/dist/devtools.d.ts.map +1 -0
- package/dist/devtools.js +839 -0
- package/dist/devtools.js.map +1 -0
- package/dist/dom-children.d.ts +3 -0
- package/dist/dom-children.d.ts.map +1 -0
- package/dist/dom-children.js +23 -0
- package/dist/dom-children.js.map +1 -0
- package/dist/dom-props.d.ts +4 -0
- package/dist/dom-props.d.ts.map +1 -0
- package/dist/dom-props.js +266 -0
- package/dist/dom-props.js.map +1 -0
- package/dist/element.d.ts +94 -0
- package/dist/element.d.ts.map +1 -0
- package/dist/element.js +160 -0
- package/dist/element.js.map +1 -0
- package/dist/event-listeners.d.ts +12 -0
- package/dist/event-listeners.d.ts.map +1 -0
- package/dist/event-listeners.js +11 -0
- package/dist/event-listeners.js.map +1 -0
- package/dist/event-replay.d.ts +18 -0
- package/dist/event-replay.d.ts.map +1 -0
- package/dist/event-replay.js +94 -0
- package/dist/event-replay.js.map +1 -0
- package/dist/event-types.d.ts +19 -0
- package/dist/event-types.d.ts.map +1 -0
- package/dist/event-types.js +2 -0
- package/dist/event-types.js.map +1 -0
- package/dist/events.d.ts +6 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +306 -0
- package/dist/events.js.map +1 -0
- package/dist/fiber-child.d.ts +4 -0
- package/dist/fiber-child.d.ts.map +1 -0
- package/dist/fiber-child.js +262 -0
- package/dist/fiber-child.js.map +1 -0
- package/dist/fiber-commit.d.ts +4 -0
- package/dist/fiber-commit.d.ts.map +1 -0
- package/dist/fiber-commit.js +54 -0
- package/dist/fiber-commit.js.map +1 -0
- package/dist/fiber-flags.d.ts +15 -0
- package/dist/fiber-flags.d.ts.map +1 -0
- package/dist/fiber-flags.js +18 -0
- package/dist/fiber-flags.js.map +1 -0
- package/dist/fiber-host.d.ts +16 -0
- package/dist/fiber-host.d.ts.map +1 -0
- package/dist/fiber-host.js +892 -0
- package/dist/fiber-host.js.map +1 -0
- package/dist/fiber-lanes.d.ts +30 -0
- package/dist/fiber-lanes.d.ts.map +1 -0
- package/dist/fiber-lanes.js +71 -0
- package/dist/fiber-lanes.js.map +1 -0
- package/dist/fiber-reconciler.d.ts +8 -0
- package/dist/fiber-reconciler.d.ts.map +1 -0
- package/dist/fiber-reconciler.js +385 -0
- package/dist/fiber-reconciler.js.map +1 -0
- package/dist/fiber-scheduler.d.ts +37 -0
- package/dist/fiber-scheduler.d.ts.map +1 -0
- package/dist/fiber-scheduler.js +307 -0
- package/dist/fiber-scheduler.js.map +1 -0
- package/dist/fiber-work-loop.d.ts +21 -0
- package/dist/fiber-work-loop.d.ts.map +1 -0
- package/dist/fiber-work-loop.js +116 -0
- package/dist/fiber-work-loop.js.map +1 -0
- package/dist/fiber.d.ts +50 -0
- package/dist/fiber.d.ts.map +1 -0
- package/dist/fiber.js +73 -0
- package/dist/fiber.js.map +1 -0
- package/dist/flight-decoder.d.ts +8 -0
- package/dist/flight-decoder.d.ts.map +1 -0
- package/dist/flight-decoder.js +132 -0
- package/dist/flight-decoder.js.map +1 -0
- package/dist/flight-element-builder.d.ts +6 -0
- package/dist/flight-element-builder.d.ts.map +1 -0
- package/dist/flight-element-builder.js +56 -0
- package/dist/flight-element-builder.js.map +1 -0
- package/dist/flight-parser.d.ts +3 -0
- package/dist/flight-parser.d.ts.map +1 -0
- package/dist/flight-parser.js +508 -0
- package/dist/flight-parser.js.map +1 -0
- package/dist/flight-protocol.d.ts +11 -0
- package/dist/flight-protocol.d.ts.map +1 -0
- package/dist/flight-protocol.js +61 -0
- package/dist/flight-protocol.js.map +1 -0
- package/dist/flight-types.d.ts +98 -0
- package/dist/flight-types.d.ts.map +1 -0
- package/dist/flight-types.js +2 -0
- package/dist/flight-types.js.map +1 -0
- package/dist/flight.d.ts +26 -0
- package/dist/flight.d.ts.map +1 -0
- package/dist/flight.js +66 -0
- package/dist/flight.js.map +1 -0
- package/dist/hooks.d.ts +214 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +1296 -0
- package/dist/hooks.js.map +1 -0
- package/dist/hydration.d.ts +34 -0
- package/dist/hydration.d.ts.map +1 -0
- package/dist/hydration.js +164 -0
- package/dist/hydration.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/internal.d.ts +2 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +2 -0
- package/dist/internal.js.map +1 -0
- package/dist/jsx-dev-runtime.d.ts +19 -0
- package/dist/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/jsx-dev-runtime.js +6 -0
- package/dist/jsx-dev-runtime.js.map +1 -0
- package/dist/jsx-runtime.d.ts +24 -0
- package/dist/jsx-runtime.d.ts.map +1 -0
- package/dist/jsx-runtime.js +21 -0
- package/dist/jsx-runtime.js.map +1 -0
- package/dist/prop-comparison.d.ts +6 -0
- package/dist/prop-comparison.d.ts.map +1 -0
- package/dist/prop-comparison.js +28 -0
- package/dist/prop-comparison.js.map +1 -0
- package/dist/reconcile-types.d.ts +10 -0
- package/dist/reconcile-types.d.ts.map +1 -0
- package/dist/reconcile-types.js +2 -0
- package/dist/reconcile-types.js.map +1 -0
- package/dist/reconciler.d.ts +7 -0
- package/dist/reconciler.d.ts.map +1 -0
- package/dist/reconciler.js +318 -0
- package/dist/reconciler.js.map +1 -0
- package/dist/render.d.ts +7 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +4 -0
- package/dist/render.js.map +1 -0
- package/dist/root.d.ts +44 -0
- package/dist/root.d.ts.map +1 -0
- package/dist/root.js +278 -0
- package/dist/root.js.map +1 -0
- package/dist/scheduler.d.ts +30 -0
- package/dist/scheduler.d.ts.map +1 -0
- package/dist/scheduler.js +90 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/suspense.d.ts +8 -0
- package/dist/suspense.d.ts.map +1 -0
- package/dist/suspense.js +164 -0
- package/dist/suspense.js.map +1 -0
- package/dist/thenable.d.ts +2 -0
- package/dist/thenable.d.ts.map +1 -0
- package/dist/thenable.js +6 -0
- package/dist/thenable.js.map +1 -0
- package/dist/url-safety.d.ts +2 -0
- package/dist/url-safety.d.ts.map +1 -0
- package/dist/url-safety.js +2 -0
- package/dist/url-safety.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export type SchedulerPriority = "immediate" | "user-blocking" | "normal" | "low" | "idle";
|
|
2
|
+
export type SchedulerCallback = (didTimeout: boolean) => SchedulerCallback | void;
|
|
3
|
+
export interface SchedulerTask {
|
|
4
|
+
id: number;
|
|
5
|
+
callback: SchedulerCallback | null;
|
|
6
|
+
priority: SchedulerPriority;
|
|
7
|
+
startTime: number;
|
|
8
|
+
expirationTime: number;
|
|
9
|
+
sortIndex: number;
|
|
10
|
+
}
|
|
11
|
+
export type SchedulerProfilingEventType = "schedule" | "cancel" | "start" | "complete" | "yield" | "error";
|
|
12
|
+
export interface SchedulerProfilingEvent {
|
|
13
|
+
type: SchedulerProfilingEventType;
|
|
14
|
+
taskId: number;
|
|
15
|
+
priority: SchedulerPriority;
|
|
16
|
+
time: number;
|
|
17
|
+
}
|
|
18
|
+
export interface SchedulerHost {
|
|
19
|
+
now(): number;
|
|
20
|
+
scheduleHostCallback(callback: () => void): unknown;
|
|
21
|
+
scheduleHostTimeout(callback: () => void, ms: number): unknown;
|
|
22
|
+
cancelHostTimeout(id: unknown): void;
|
|
23
|
+
isInputPending?(): boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare function scheduleCallback(priority: SchedulerPriority, callback: SchedulerCallback, options?: {
|
|
26
|
+
delay?: number;
|
|
27
|
+
}): SchedulerTask;
|
|
28
|
+
export declare function cancelCallback(task: SchedulerTask): void;
|
|
29
|
+
export declare function getFirstCallbackNode(): SchedulerTask | null;
|
|
30
|
+
export declare function shouldYieldToHost(): boolean;
|
|
31
|
+
export declare function requestPaint(): void;
|
|
32
|
+
export declare function forceFrameRate(fps: number): void;
|
|
33
|
+
export declare function now(): number;
|
|
34
|
+
export declare function setSchedulerHostForTesting(host: SchedulerHost | undefined): void;
|
|
35
|
+
export declare function startLoggingSchedulerProfilingEvents(): void;
|
|
36
|
+
export declare function stopLoggingSchedulerProfilingEvents(): SchedulerProfilingEvent[] | null;
|
|
37
|
+
//# sourceMappingURL=fiber-scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fiber-scheduler.d.ts","sourceRoot":"","sources":["../src/fiber-scheduler.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,eAAe,GACf,QAAQ,GACR,KAAK,GACL,MAAM,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAC9B,UAAU,EAAE,OAAO,KAChB,iBAAiB,GAAG,IAAI,CAAC;AAE9B,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,2BAA2B,GACnC,UAAU,GACV,QAAQ,GACR,OAAO,GACP,UAAU,GACV,OAAO,GACP,OAAO,CAAC;AAEZ,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,2BAA2B,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,IAAI,MAAM,CAAC;IACd,oBAAoB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC;IACpD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/D,iBAAiB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,cAAc,CAAC,IAAI,OAAO,CAAC;CAC5B;AA2BD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3B,aAAa,CAsCf;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAGxD;AAED,wBAAgB,oBAAoB,IAAI,aAAa,GAAG,IAAI,CAE3D;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAc3C;AAED,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAMhD;AAED,wBAAgB,GAAG,IAAI,MAAM,CAE5B;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,aAAa,GAAG,SAAS,GAC9B,IAAI,CAGN;AAED,wBAAgB,oCAAoC,IAAI,IAAI,CAE3D;AAED,wBAAgB,mCAAmC,IAC/C,uBAAuB,EAAE,GACzB,IAAI,CAIP"}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
const maxSigned31BitInt = 1073741823;
|
|
2
|
+
const defaultFrameInterval = 5;
|
|
3
|
+
const priorityTimeouts = {
|
|
4
|
+
immediate: -1,
|
|
5
|
+
"user-blocking": 250,
|
|
6
|
+
normal: 5000,
|
|
7
|
+
low: 10000,
|
|
8
|
+
idle: maxSigned31BitInt,
|
|
9
|
+
};
|
|
10
|
+
let taskIdCounter = 1;
|
|
11
|
+
let taskQueue = [];
|
|
12
|
+
let timerQueue = [];
|
|
13
|
+
let currentTask = null;
|
|
14
|
+
let isPerformingWork = false;
|
|
15
|
+
let isHostCallbackScheduled = false;
|
|
16
|
+
let isHostTimeoutScheduled = false;
|
|
17
|
+
let isMessageLoopRunning = false;
|
|
18
|
+
let taskTimeoutId;
|
|
19
|
+
let frameInterval = defaultFrameInterval;
|
|
20
|
+
let startTime = -1;
|
|
21
|
+
let needsPaint = false;
|
|
22
|
+
let testHost;
|
|
23
|
+
let profilingEvents;
|
|
24
|
+
export function scheduleCallback(priority, callback, options) {
|
|
25
|
+
const currentTime = now();
|
|
26
|
+
const delay = options?.delay;
|
|
27
|
+
const start = typeof delay === "number" && delay > 0 ? currentTime + delay : currentTime;
|
|
28
|
+
const timeout = priorityTimeouts[priority];
|
|
29
|
+
const expirationTime = start + timeout;
|
|
30
|
+
const task = {
|
|
31
|
+
id: taskIdCounter,
|
|
32
|
+
callback,
|
|
33
|
+
priority,
|
|
34
|
+
startTime: start,
|
|
35
|
+
expirationTime,
|
|
36
|
+
sortIndex: start > currentTime ? start : expirationTime,
|
|
37
|
+
};
|
|
38
|
+
taskIdCounter += 1;
|
|
39
|
+
if (start > currentTime) {
|
|
40
|
+
timerQueue.push(task);
|
|
41
|
+
sortQueue(timerQueue);
|
|
42
|
+
if (taskQueue.length === 0 && timerQueue[0] === task) {
|
|
43
|
+
if (isHostTimeoutScheduled) {
|
|
44
|
+
getHost().cancelHostTimeout(taskTimeoutId);
|
|
45
|
+
}
|
|
46
|
+
isHostTimeoutScheduled = true;
|
|
47
|
+
taskTimeoutId = getHost().scheduleHostTimeout(handleTimeout, start - currentTime);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
taskQueue.push(task);
|
|
52
|
+
sortQueue(taskQueue);
|
|
53
|
+
requestHostCallbackIfNeeded();
|
|
54
|
+
}
|
|
55
|
+
recordProfilingEvent("schedule", task);
|
|
56
|
+
return task;
|
|
57
|
+
}
|
|
58
|
+
export function cancelCallback(task) {
|
|
59
|
+
task.callback = null;
|
|
60
|
+
recordProfilingEvent("cancel", task);
|
|
61
|
+
}
|
|
62
|
+
export function getFirstCallbackNode() {
|
|
63
|
+
return peek(taskQueue);
|
|
64
|
+
}
|
|
65
|
+
export function shouldYieldToHost() {
|
|
66
|
+
if (startTime < 0) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
if (needsPaint) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
if (getHost().isInputPending?.() === true) {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
return now() - startTime >= frameInterval;
|
|
76
|
+
}
|
|
77
|
+
export function requestPaint() {
|
|
78
|
+
needsPaint = true;
|
|
79
|
+
}
|
|
80
|
+
export function forceFrameRate(fps) {
|
|
81
|
+
if (fps < 0 || fps > 125) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
frameInterval = fps > 0 ? Math.floor(1000 / fps) : defaultFrameInterval;
|
|
85
|
+
}
|
|
86
|
+
export function now() {
|
|
87
|
+
return getHost().now();
|
|
88
|
+
}
|
|
89
|
+
export function setSchedulerHostForTesting(host) {
|
|
90
|
+
testHost = host;
|
|
91
|
+
resetSchedulerState();
|
|
92
|
+
}
|
|
93
|
+
export function startLoggingSchedulerProfilingEvents() {
|
|
94
|
+
profilingEvents = [];
|
|
95
|
+
}
|
|
96
|
+
export function stopLoggingSchedulerProfilingEvents() {
|
|
97
|
+
const events = profilingEvents;
|
|
98
|
+
profilingEvents = undefined;
|
|
99
|
+
return events ?? null;
|
|
100
|
+
}
|
|
101
|
+
function flushWork(initialTime) {
|
|
102
|
+
isHostCallbackScheduled = false;
|
|
103
|
+
if (isHostTimeoutScheduled) {
|
|
104
|
+
isHostTimeoutScheduled = false;
|
|
105
|
+
getHost().cancelHostTimeout(taskTimeoutId);
|
|
106
|
+
}
|
|
107
|
+
isPerformingWork = true;
|
|
108
|
+
try {
|
|
109
|
+
return workLoop(initialTime);
|
|
110
|
+
}
|
|
111
|
+
finally {
|
|
112
|
+
currentTask = null;
|
|
113
|
+
isPerformingWork = false;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function workLoop(initialTime) {
|
|
117
|
+
let currentTime = initialTime;
|
|
118
|
+
advanceTimers(currentTime);
|
|
119
|
+
currentTask = peek(taskQueue);
|
|
120
|
+
while (currentTask !== null) {
|
|
121
|
+
if (currentTask.expirationTime > currentTime &&
|
|
122
|
+
shouldYieldToHost()) {
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
const callback = currentTask.callback;
|
|
126
|
+
if (typeof callback === "function") {
|
|
127
|
+
currentTask.callback = null;
|
|
128
|
+
const didTimeout = currentTask.expirationTime <= currentTime;
|
|
129
|
+
recordProfilingEvent("start", currentTask);
|
|
130
|
+
let continuation;
|
|
131
|
+
try {
|
|
132
|
+
continuation = callback(didTimeout);
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
recordProfilingEvent("error", currentTask);
|
|
136
|
+
throw error;
|
|
137
|
+
}
|
|
138
|
+
currentTime = now();
|
|
139
|
+
if (typeof continuation === "function") {
|
|
140
|
+
currentTask.callback = continuation;
|
|
141
|
+
recordProfilingEvent("yield", currentTask);
|
|
142
|
+
advanceTimers(currentTime);
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
if (currentTask === peek(taskQueue)) {
|
|
146
|
+
taskQueue.shift();
|
|
147
|
+
}
|
|
148
|
+
recordProfilingEvent("complete", currentTask);
|
|
149
|
+
advanceTimers(currentTime);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
taskQueue.shift();
|
|
153
|
+
}
|
|
154
|
+
currentTask = peek(taskQueue);
|
|
155
|
+
}
|
|
156
|
+
if (currentTask !== null) {
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
const firstTimer = peek(timerQueue);
|
|
160
|
+
if (firstTimer !== null) {
|
|
161
|
+
isHostTimeoutScheduled = true;
|
|
162
|
+
taskTimeoutId = getHost().scheduleHostTimeout(handleTimeout, firstTimer.startTime - currentTime);
|
|
163
|
+
}
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
function handleTimeout() {
|
|
167
|
+
isHostTimeoutScheduled = false;
|
|
168
|
+
advanceTimers(now());
|
|
169
|
+
if (!isHostCallbackScheduled) {
|
|
170
|
+
if (peek(taskQueue) !== null) {
|
|
171
|
+
requestHostCallbackIfNeeded();
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
const firstTimer = peek(timerQueue);
|
|
175
|
+
if (firstTimer !== null) {
|
|
176
|
+
isHostTimeoutScheduled = true;
|
|
177
|
+
taskTimeoutId = getHost().scheduleHostTimeout(handleTimeout, firstTimer.startTime - now());
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
function advanceTimers(currentTime) {
|
|
182
|
+
let timer = peek(timerQueue);
|
|
183
|
+
while (timer !== null) {
|
|
184
|
+
if (timer.callback === null) {
|
|
185
|
+
timerQueue.shift();
|
|
186
|
+
}
|
|
187
|
+
else if (timer.startTime <= currentTime) {
|
|
188
|
+
timerQueue.shift();
|
|
189
|
+
timer.sortIndex = timer.expirationTime;
|
|
190
|
+
taskQueue.push(timer);
|
|
191
|
+
sortQueue(taskQueue);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
timer = peek(timerQueue);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
function requestHostCallbackIfNeeded() {
|
|
200
|
+
if (!isHostCallbackScheduled && !isPerformingWork) {
|
|
201
|
+
isHostCallbackScheduled = true;
|
|
202
|
+
requestHostCallback();
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
function requestHostCallback() {
|
|
206
|
+
if (isMessageLoopRunning) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
isMessageLoopRunning = true;
|
|
210
|
+
getHost().scheduleHostCallback(performWorkUntilDeadline);
|
|
211
|
+
}
|
|
212
|
+
function performWorkUntilDeadline() {
|
|
213
|
+
needsPaint = false;
|
|
214
|
+
if (!isMessageLoopRunning) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
startTime = now();
|
|
218
|
+
let hasMoreWork = true;
|
|
219
|
+
try {
|
|
220
|
+
hasMoreWork = flushWork(startTime);
|
|
221
|
+
}
|
|
222
|
+
finally {
|
|
223
|
+
if (hasMoreWork) {
|
|
224
|
+
getHost().scheduleHostCallback(performWorkUntilDeadline);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
isMessageLoopRunning = false;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
function peek(queue) {
|
|
232
|
+
return queue[0] ?? null;
|
|
233
|
+
}
|
|
234
|
+
function sortQueue(queue) {
|
|
235
|
+
queue.sort((left, right) => left.sortIndex - right.sortIndex || left.id - right.id);
|
|
236
|
+
}
|
|
237
|
+
function getHost() {
|
|
238
|
+
return testHost ?? defaultHost;
|
|
239
|
+
}
|
|
240
|
+
function resetSchedulerState() {
|
|
241
|
+
taskQueue = [];
|
|
242
|
+
timerQueue = [];
|
|
243
|
+
currentTask = null;
|
|
244
|
+
isPerformingWork = false;
|
|
245
|
+
isHostCallbackScheduled = false;
|
|
246
|
+
isHostTimeoutScheduled = false;
|
|
247
|
+
isMessageLoopRunning = false;
|
|
248
|
+
taskTimeoutId = undefined;
|
|
249
|
+
startTime = -1;
|
|
250
|
+
needsPaint = false;
|
|
251
|
+
}
|
|
252
|
+
function recordProfilingEvent(type, task) {
|
|
253
|
+
profilingEvents?.push({
|
|
254
|
+
type,
|
|
255
|
+
taskId: task.id,
|
|
256
|
+
priority: task.priority,
|
|
257
|
+
time: now(),
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
const defaultInputPendingChecker = createInputPendingChecker();
|
|
261
|
+
const defaultHost = {
|
|
262
|
+
now() {
|
|
263
|
+
if (typeof performance === "object" &&
|
|
264
|
+
typeof performance.now === "function") {
|
|
265
|
+
return performance.now();
|
|
266
|
+
}
|
|
267
|
+
return Date.now();
|
|
268
|
+
},
|
|
269
|
+
scheduleHostCallback: createDefaultHostCallbackScheduler(),
|
|
270
|
+
scheduleHostTimeout(callback, ms) {
|
|
271
|
+
return setTimeout(callback, ms);
|
|
272
|
+
},
|
|
273
|
+
cancelHostTimeout(id) {
|
|
274
|
+
clearTimeout(id);
|
|
275
|
+
},
|
|
276
|
+
...(defaultInputPendingChecker === undefined
|
|
277
|
+
? {}
|
|
278
|
+
: { isInputPending: defaultInputPendingChecker }),
|
|
279
|
+
};
|
|
280
|
+
function createDefaultHostCallbackScheduler() {
|
|
281
|
+
const immediate = globalThis
|
|
282
|
+
.setImmediate;
|
|
283
|
+
if (typeof immediate === "function") {
|
|
284
|
+
return (callback) => immediate(callback);
|
|
285
|
+
}
|
|
286
|
+
if (typeof MessageChannel !== "undefined") {
|
|
287
|
+
const channel = new MessageChannel();
|
|
288
|
+
const callbacks = [];
|
|
289
|
+
channel.port1.onmessage = () => {
|
|
290
|
+
callbacks.shift()?.();
|
|
291
|
+
};
|
|
292
|
+
return (callback) => {
|
|
293
|
+
callbacks.push(callback);
|
|
294
|
+
channel.port2.postMessage(null);
|
|
295
|
+
return callback;
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
return (callback) => setTimeout(callback, 0);
|
|
299
|
+
}
|
|
300
|
+
function createInputPendingChecker() {
|
|
301
|
+
const scheduling = globalThis.navigator?.scheduling;
|
|
302
|
+
if (typeof scheduling?.isInputPending === "function") {
|
|
303
|
+
return () => scheduling.isInputPending?.() === true;
|
|
304
|
+
}
|
|
305
|
+
return undefined;
|
|
306
|
+
}
|
|
307
|
+
//# sourceMappingURL=fiber-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fiber-scheduler.js","sourceRoot":"","sources":["../src/fiber-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type Fiber, type FiberRoot } from "./fiber.js";
|
|
2
|
+
import { type Lane, type Lanes } from "./fiber-lanes.js";
|
|
3
|
+
export interface ConcurrentRenderOptions {
|
|
4
|
+
shouldYield?: () => boolean;
|
|
5
|
+
}
|
|
6
|
+
export type ConcurrentRenderResult = {
|
|
7
|
+
status: "completed";
|
|
8
|
+
finishedWork: Fiber;
|
|
9
|
+
} | {
|
|
10
|
+
status: "yielded";
|
|
11
|
+
};
|
|
12
|
+
export declare function createContainerFiberRoot(container: Element): FiberRoot;
|
|
13
|
+
export declare function getFiberRootForContainer(container: Element): FiberRoot | undefined;
|
|
14
|
+
export declare function enqueueRootRender(root: FiberRoot, element: unknown, lane: Lane, commit: () => Fiber | void): void;
|
|
15
|
+
export declare function shouldYieldAfterUnits(limit: number): () => boolean;
|
|
16
|
+
export declare function prepareFreshStack(root: FiberRoot, element: unknown, lanes: Lanes): void;
|
|
17
|
+
export declare function renderRootConcurrent(root: FiberRoot, lanes: Lanes, options?: ConcurrentRenderOptions): ConcurrentRenderResult;
|
|
18
|
+
export declare function performConcurrentWorkOnRoot(root: FiberRoot, options?: ConcurrentRenderOptions): ConcurrentRenderResult;
|
|
19
|
+
export declare function scheduleConcurrentWorkOnRoot(root: FiberRoot, lanes: Lanes): void;
|
|
20
|
+
export declare function performSyncWorkOnRoot(root: FiberRoot, element: unknown, commit: () => Fiber | void): void;
|
|
21
|
+
//# sourceMappingURL=fiber-work-loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fiber-work-loop.d.ts","sourceRoot":"","sources":["../src/fiber-work-loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAGL,KAAK,IAAI,EACT,KAAK,KAAK,EACX,MAAM,kBAAkB,CAAC;AAa1B,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,YAAY,EAAE,KAAK,CAAA;CAAE,GAC5C;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAE1B,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAUtE;AAED,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,OAAO,GACjB,SAAS,GAAG,SAAS,CAEvB;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,KAAK,GAAG,IAAI,GACzB,IAAI,CAIN;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,OAAO,CAOlE;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,GACX,IAAI,CAYN;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,uBAA4B,GACpC,sBAAsB,CAiCxB;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,SAAS,EACf,OAAO,GAAE,uBAA4B,GACpC,sBAAsB,CAGxB;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,KAAK,GACX,IAAI,CAKN;AAeD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,KAAK,GAAG,IAAI,GACzB,IAAI,CAeN"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { createFiberRoot, createWorkInProgress, } from "./fiber.js";
|
|
2
|
+
import { getNextLanes, markRootUpdated, } from "./fiber-lanes.js";
|
|
3
|
+
import { scheduleCallback, shouldYieldToHost, } from "./fiber-scheduler.js";
|
|
4
|
+
import { cleanupUnfinishedWork, performUnitOfWork, } from "./fiber-reconciler.js";
|
|
5
|
+
const fiberRootsByContainer = new WeakMap();
|
|
6
|
+
export function createContainerFiberRoot(container) {
|
|
7
|
+
const existing = fiberRootsByContainer.get(container);
|
|
8
|
+
if (existing !== undefined) {
|
|
9
|
+
return existing;
|
|
10
|
+
}
|
|
11
|
+
const root = createFiberRoot(container);
|
|
12
|
+
fiberRootsByContainer.set(container, root);
|
|
13
|
+
return root;
|
|
14
|
+
}
|
|
15
|
+
export function getFiberRootForContainer(container) {
|
|
16
|
+
return fiberRootsByContainer.get(container);
|
|
17
|
+
}
|
|
18
|
+
export function enqueueRootRender(root, element, lane, commit) {
|
|
19
|
+
markRootUpdated(root, lane);
|
|
20
|
+
root.workInProgressElement = element;
|
|
21
|
+
performSyncWorkOnRoot(root, element, commit);
|
|
22
|
+
}
|
|
23
|
+
export function shouldYieldAfterUnits(limit) {
|
|
24
|
+
let units = 0;
|
|
25
|
+
return () => {
|
|
26
|
+
units += 1;
|
|
27
|
+
return units > limit;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export function prepareFreshStack(root, element, lanes) {
|
|
31
|
+
const workInProgress = createWorkInProgress(root.current, {
|
|
32
|
+
children: element,
|
|
33
|
+
});
|
|
34
|
+
workInProgress.lanes = lanes;
|
|
35
|
+
workInProgress.memoizedProps = { children: element };
|
|
36
|
+
root.workInProgress = workInProgress;
|
|
37
|
+
root.workInProgressRootRenderLanes = lanes;
|
|
38
|
+
root.workInProgressElement = element;
|
|
39
|
+
root.finishedWork = undefined;
|
|
40
|
+
markRootUpdated(root, lanes);
|
|
41
|
+
}
|
|
42
|
+
export function renderRootConcurrent(root, lanes, options = {}) {
|
|
43
|
+
if (shouldPreemptWorkInProgress(root.workInProgressRootRenderLanes, lanes)) {
|
|
44
|
+
discardWorkInProgress(root);
|
|
45
|
+
}
|
|
46
|
+
if (root.workInProgress === undefined) {
|
|
47
|
+
prepareFreshStack(root, root.workInProgressElement ??
|
|
48
|
+
root.current.memoizedProps?.children, lanes);
|
|
49
|
+
}
|
|
50
|
+
while (root.workInProgress !== undefined) {
|
|
51
|
+
if (options.shouldYield?.() === true || shouldYieldToHost()) {
|
|
52
|
+
return { status: "yielded" };
|
|
53
|
+
}
|
|
54
|
+
root.workInProgress = performUnitOfWork(root, root.workInProgress);
|
|
55
|
+
}
|
|
56
|
+
const finishedWork = root.finishedWork;
|
|
57
|
+
if (finishedWork === undefined) {
|
|
58
|
+
throw new Error("Fiber concurrent render completed without finished work.");
|
|
59
|
+
}
|
|
60
|
+
finishedWork.lanes = lanes;
|
|
61
|
+
root.workInProgressRootRenderLanes = 0;
|
|
62
|
+
return { status: "completed", finishedWork };
|
|
63
|
+
}
|
|
64
|
+
export function performConcurrentWorkOnRoot(root, options = {}) {
|
|
65
|
+
const lanes = getNextLanes(root);
|
|
66
|
+
return renderRootConcurrent(root, lanes, options);
|
|
67
|
+
}
|
|
68
|
+
export function scheduleConcurrentWorkOnRoot(root, lanes) {
|
|
69
|
+
scheduleCallback(getSchedulerPriorityForLanes(lanes), createConcurrentRootCallback(root, lanes));
|
|
70
|
+
}
|
|
71
|
+
function createConcurrentRootCallback(root, lanes) {
|
|
72
|
+
const callback = () => {
|
|
73
|
+
const result = renderRootConcurrent(root, lanes);
|
|
74
|
+
return result.status === "yielded" ? callback : undefined;
|
|
75
|
+
};
|
|
76
|
+
return callback;
|
|
77
|
+
}
|
|
78
|
+
export function performSyncWorkOnRoot(root, element, commit) {
|
|
79
|
+
const lanes = root.pendingLanes;
|
|
80
|
+
const fallbackFinishedWork = createWorkInProgress(root.current, { children: element });
|
|
81
|
+
fallbackFinishedWork.lanes = lanes;
|
|
82
|
+
fallbackFinishedWork.memoizedProps = { children: element };
|
|
83
|
+
const committedWork = commit();
|
|
84
|
+
const finishedWork = committedWork ?? fallbackFinishedWork;
|
|
85
|
+
root.current = finishedWork;
|
|
86
|
+
root.current.stateNode = root;
|
|
87
|
+
root.finishedWork = undefined;
|
|
88
|
+
root.workInProgress = undefined;
|
|
89
|
+
root.workInProgressRootRenderLanes = 0;
|
|
90
|
+
root.pendingLanes &= ~lanes;
|
|
91
|
+
root.callbackPriority = root.pendingLanes & -root.pendingLanes;
|
|
92
|
+
}
|
|
93
|
+
function shouldPreemptWorkInProgress(currentLanes, nextLanes) {
|
|
94
|
+
return currentLanes !== 0 && nextLanes !== 0 && nextLanes < currentLanes;
|
|
95
|
+
}
|
|
96
|
+
function discardWorkInProgress(root) {
|
|
97
|
+
cleanupUnfinishedWork(root.current.alternate);
|
|
98
|
+
if (root.current.alternate === root.workInProgress) {
|
|
99
|
+
root.current.alternate = undefined;
|
|
100
|
+
}
|
|
101
|
+
root.workInProgress = undefined;
|
|
102
|
+
root.workInProgressRootRenderLanes = 0;
|
|
103
|
+
}
|
|
104
|
+
function getSchedulerPriorityForLanes(lanes) {
|
|
105
|
+
if ((lanes & 1) !== 0) {
|
|
106
|
+
return "immediate";
|
|
107
|
+
}
|
|
108
|
+
if ((lanes & 2) !== 0) {
|
|
109
|
+
return "user-blocking";
|
|
110
|
+
}
|
|
111
|
+
if ((lanes & 8) !== 0) {
|
|
112
|
+
return "normal";
|
|
113
|
+
}
|
|
114
|
+
return "low";
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=fiber-work-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fiber-work-loop.js","sourceRoot":"","sources":["../src/fiber-work-loop.ts"],"names":[],"mappings":"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"}
|
package/dist/fiber.d.ts
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type Flags } from "./fiber-flags.js";
|
|
2
|
+
import { type Lane, type Lanes } from "./fiber-lanes.js";
|
|
3
|
+
export type FiberTag = "host-root" | "host-component" | "host-text" | "fragment" | "function-component" | "forward-ref" | "class-component" | "context-provider" | "context-consumer" | "portal" | "memo" | "lazy" | "profiler" | "strict-mode" | "suspense" | "suspense-list" | "error-boundary";
|
|
4
|
+
export interface Fiber {
|
|
5
|
+
tag: FiberTag;
|
|
6
|
+
type: unknown;
|
|
7
|
+
key: string | undefined;
|
|
8
|
+
pendingProps: unknown;
|
|
9
|
+
memoizedProps: unknown;
|
|
10
|
+
memoizedState: unknown;
|
|
11
|
+
return: Fiber | undefined;
|
|
12
|
+
child: Fiber | undefined;
|
|
13
|
+
sibling: Fiber | undefined;
|
|
14
|
+
alternate: Fiber | undefined;
|
|
15
|
+
stateNode: unknown;
|
|
16
|
+
flags: Flags;
|
|
17
|
+
subtreeFlags: Flags;
|
|
18
|
+
deletions: Fiber[] | undefined;
|
|
19
|
+
lanes: Lanes;
|
|
20
|
+
childLanes: Lanes;
|
|
21
|
+
hydrateExisting: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface FiberRoot {
|
|
24
|
+
container: Element;
|
|
25
|
+
current: Fiber;
|
|
26
|
+
finishedWork: Fiber | undefined;
|
|
27
|
+
pendingLanes: Lanes;
|
|
28
|
+
suspendedLanes: Lanes;
|
|
29
|
+
pingedLanes: Lanes;
|
|
30
|
+
expiredLanes: Lanes;
|
|
31
|
+
entangledLanes: Lanes;
|
|
32
|
+
callbackNode: unknown;
|
|
33
|
+
callbackPriority: Lane;
|
|
34
|
+
workInProgress: Fiber | undefined;
|
|
35
|
+
workInProgressRootRenderLanes: Lanes;
|
|
36
|
+
workInProgressElement: unknown;
|
|
37
|
+
hydrationState: FiberHydrationState | undefined;
|
|
38
|
+
}
|
|
39
|
+
export interface FiberHydrationState {
|
|
40
|
+
parent: ParentNode;
|
|
41
|
+
nextHydratableNode: Node | null;
|
|
42
|
+
before: ChildNode | null;
|
|
43
|
+
after: ChildNode | null;
|
|
44
|
+
resumeId?: string;
|
|
45
|
+
}
|
|
46
|
+
export declare function createFiber(tag: FiberTag, pendingProps?: unknown, key?: string): Fiber;
|
|
47
|
+
export declare function createHostRootFiber(): Fiber;
|
|
48
|
+
export declare function createFiberRoot(container: Element): FiberRoot;
|
|
49
|
+
export declare function createWorkInProgress(current: Fiber, pendingProps: unknown): Fiber;
|
|
50
|
+
//# sourceMappingURL=fiber.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fiber.d.ts","sourceRoot":"","sources":["../src/fiber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAW,KAAK,IAAI,EAAE,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,MAAM,QAAQ,GAChB,WAAW,GACX,gBAAgB,GAChB,WAAW,GACX,UAAU,GACV,oBAAoB,GACpB,aAAa,GACb,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,QAAQ,GACR,MAAM,GACN,MAAM,GACN,UAAU,GACV,aAAa,GACb,UAAU,GACV,eAAe,GACf,gBAAgB,CAAC;AAErB,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,QAAQ,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,KAAK,GAAG,SAAS,CAAC;IAC3B,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,YAAY,EAAE,KAAK,CAAC;IACpB,SAAS,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,KAAK,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC;IACf,YAAY,EAAE,KAAK,GAAG,SAAS,CAAC;IAChC,YAAY,EAAE,KAAK,CAAC;IACpB,cAAc,EAAE,KAAK,CAAC;IACtB,WAAW,EAAE,KAAK,CAAC;IACnB,YAAY,EAAE,KAAK,CAAC;IACpB,cAAc,EAAE,KAAK,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,IAAI,CAAC;IACvB,cAAc,EAAE,KAAK,GAAG,SAAS,CAAC;IAClC,6BAA6B,EAAE,KAAK,CAAC;IACrC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,cAAc,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACjD;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,UAAU,CAAC;IACnB,kBAAkB,EAAE,IAAI,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,QAAQ,EACb,YAAY,GAAE,OAAmB,EACjC,GAAG,CAAC,EAAE,MAAM,GACX,KAAK,CAoBP;AAED,wBAAgB,mBAAmB,IAAI,KAAK,CAE3C;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAoB7D;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,KAAK,EACd,YAAY,EAAE,OAAO,GACpB,KAAK,CAyBP"}
|
package/dist/fiber.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { NoFlags } from "./fiber-flags.js";
|
|
2
|
+
import { NoLanes } from "./fiber-lanes.js";
|
|
3
|
+
export function createFiber(tag, pendingProps = undefined, key) {
|
|
4
|
+
return {
|
|
5
|
+
tag,
|
|
6
|
+
type: undefined,
|
|
7
|
+
key,
|
|
8
|
+
pendingProps,
|
|
9
|
+
memoizedProps: undefined,
|
|
10
|
+
memoizedState: undefined,
|
|
11
|
+
return: undefined,
|
|
12
|
+
child: undefined,
|
|
13
|
+
sibling: undefined,
|
|
14
|
+
alternate: undefined,
|
|
15
|
+
stateNode: undefined,
|
|
16
|
+
flags: NoFlags,
|
|
17
|
+
subtreeFlags: NoFlags,
|
|
18
|
+
deletions: undefined,
|
|
19
|
+
lanes: NoLanes,
|
|
20
|
+
childLanes: NoLanes,
|
|
21
|
+
hydrateExisting: false,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export function createHostRootFiber() {
|
|
25
|
+
return createFiber("host-root", undefined);
|
|
26
|
+
}
|
|
27
|
+
export function createFiberRoot(container) {
|
|
28
|
+
const current = createHostRootFiber();
|
|
29
|
+
const root = {
|
|
30
|
+
container,
|
|
31
|
+
current,
|
|
32
|
+
finishedWork: undefined,
|
|
33
|
+
pendingLanes: NoLanes,
|
|
34
|
+
suspendedLanes: NoLanes,
|
|
35
|
+
pingedLanes: NoLanes,
|
|
36
|
+
expiredLanes: NoLanes,
|
|
37
|
+
entangledLanes: NoLanes,
|
|
38
|
+
callbackNode: undefined,
|
|
39
|
+
callbackPriority: NoLanes,
|
|
40
|
+
workInProgress: undefined,
|
|
41
|
+
workInProgressRootRenderLanes: NoLanes,
|
|
42
|
+
workInProgressElement: undefined,
|
|
43
|
+
hydrationState: undefined,
|
|
44
|
+
};
|
|
45
|
+
current.stateNode = root;
|
|
46
|
+
return root;
|
|
47
|
+
}
|
|
48
|
+
export function createWorkInProgress(current, pendingProps) {
|
|
49
|
+
let workInProgress = current.alternate;
|
|
50
|
+
if (workInProgress === undefined) {
|
|
51
|
+
workInProgress = createFiber(current.tag, pendingProps, current.key);
|
|
52
|
+
workInProgress.type = current.type;
|
|
53
|
+
workInProgress.stateNode = current.stateNode;
|
|
54
|
+
workInProgress.alternate = current;
|
|
55
|
+
current.alternate = workInProgress;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
workInProgress.pendingProps = pendingProps;
|
|
59
|
+
workInProgress.flags = NoFlags;
|
|
60
|
+
workInProgress.subtreeFlags = NoFlags;
|
|
61
|
+
workInProgress.deletions = undefined;
|
|
62
|
+
}
|
|
63
|
+
workInProgress.child = current.child;
|
|
64
|
+
workInProgress.sibling = current.sibling;
|
|
65
|
+
workInProgress.return = current.return;
|
|
66
|
+
workInProgress.memoizedProps = current.memoizedProps;
|
|
67
|
+
workInProgress.memoizedState = current.memoizedState;
|
|
68
|
+
workInProgress.lanes = current.lanes;
|
|
69
|
+
workInProgress.childLanes = current.childLanes;
|
|
70
|
+
workInProgress.hydrateExisting = false;
|
|
71
|
+
return workInProgress;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=fiber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fiber.js","sourceRoot":"","sources":["../src/fiber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAc,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAyB,MAAM,kBAAkB,CAAC;AAkElE,MAAM,UAAU,WAAW,CACzB,GAAa,EACb,eAAwB,SAAS,EACjC,GAAY;IAEZ,OAAO;QACL,GAAG;QACH,IAAI,EAAE,SAAS;QACf,GAAG;QACH,YAAY;QACZ,aAAa,EAAE,SAAS;QACxB,aAAa,EAAE,SAAS;QACxB,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,OAAO;QACd,YAAY,EAAE,OAAO;QACrB,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,OAAO;QACnB,eAAe,EAAE,KAAK;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAkB;IAChD,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACtC,MAAM,IAAI,GAAc;QACtB,SAAS;QACT,OAAO;QACP,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,OAAO;QACrB,cAAc,EAAE,OAAO;QACvB,WAAW,EAAE,OAAO;QACpB,YAAY,EAAE,OAAO;QACrB,cAAc,EAAE,OAAO;QACvB,YAAY,EAAE,SAAS;QACvB,gBAAgB,EAAE,OAAO;QACzB,cAAc,EAAE,SAAS;QACzB,6BAA6B,EAAE,OAAO;QACtC,qBAAqB,EAAE,SAAS;QAChC,cAAc,EAAE,SAAS;KAC1B,CAAC;IACF,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IACzB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAc,EACd,YAAqB;IAErB,IAAI,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;IAEvC,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACrE,cAAc,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACnC,cAAc,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QAC7C,cAAc,CAAC,SAAS,GAAG,OAAO,CAAC;QACnC,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,cAAc,CAAC,YAAY,GAAG,YAAY,CAAC;QAC3C,cAAc,CAAC,KAAK,GAAG,OAAO,CAAC;QAC/B,cAAc,CAAC,YAAY,GAAG,OAAO,CAAC;QACtC,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC;IACvC,CAAC;IAED,cAAc,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACrC,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACzC,cAAc,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACvC,cAAc,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IACrD,cAAc,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IACrD,cAAc,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACrC,cAAc,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAC/C,cAAc,CAAC,eAAe,GAAG,KAAK,CAAC;IACvC,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ElementType } from "./element.js";
|
|
2
|
+
import type { FlightClientReference, FlightModel, FlightResponse, FlightServerReference } from "./flight-types.js";
|
|
3
|
+
export interface DecodeFlightOptions {
|
|
4
|
+
loadClientReference(reference: FlightClientReference): ElementType<Record<string, unknown>>;
|
|
5
|
+
callServerReference?(reference: FlightServerReference, args: unknown[]): unknown | Promise<unknown>;
|
|
6
|
+
}
|
|
7
|
+
export declare function decodeFlightModel(model: FlightModel, response: FlightResponse, options: DecodeFlightOptions, depth?: number): unknown;
|
|
8
|
+
//# sourceMappingURL=flight-decoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flight-decoder.d.ts","sourceRoot":"","sources":["../src/flight-decoder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAKhD,OAAO,KAAK,EACV,qBAAqB,EACrB,WAAW,EACX,cAAc,EACd,qBAAqB,EAEtB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,mBAAmB;IAClC,mBAAmB,CAAC,SAAS,EAAE,qBAAqB,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5F,mBAAmB,CAAC,CAClB,SAAS,EAAE,qBAAqB,EAChC,IAAI,EAAE,OAAO,EAAE,GACd,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/B;AAaD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,mBAAmB,EAC5B,KAAK,SAAI,GACR,OAAO,CA4HT"}
|