@lynx-js/react-canary 0.114.0-canary-20250919-ec5579fc → 0.114.0-canary-20250919-e2993a0b
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/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lynx-js/react-canary",
|
|
3
|
-
"version": "0.114.0-canary-20250919-
|
|
3
|
+
"version": "0.114.0-canary-20250919-e2993a0b",
|
|
4
4
|
"description": "ReactLynx is a framework for developing Lynx applications with familiar React.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
> @lynx-js/react-refresh@0.1.0 build /home/runner/work/lynx-stack/lynx-stack/packages/react/refresh
|
|
3
3
|
> rslib build
|
|
4
4
|
|
|
5
|
-
Rslib v0.13.
|
|
5
|
+
Rslib v0.13.3
|
|
6
6
|
|
|
7
7
|
info build started...
|
|
8
|
-
ready built in [1m0.
|
|
8
|
+
ready built in [1m0.19[22m s
|
|
9
9
|
|
|
10
10
|
[34mFile (esm) Size [39m
|
|
11
|
-
[2mdist/[22m[36mindex.js[39m
|
|
11
|
+
[2mdist/[22m[36mindex.js[39m 11.1 kB
|
|
12
12
|
|
package/refresh/dist/index.js
CHANGED
|
@@ -1,18 +1,29 @@
|
|
|
1
1
|
import { Component, options } from "@lynx-js/react/internal";
|
|
2
|
+
const VNODE_COMPONENT = '__c';
|
|
2
3
|
const NAMESPACE = '__PREFRESH__';
|
|
4
|
+
const COMPONENT_HOOKS = '__H';
|
|
5
|
+
const HOOKS_LIST = '__';
|
|
6
|
+
const EFFECTS_LIST = '__h';
|
|
7
|
+
const RERENDER_COUNT = '__r';
|
|
8
|
+
const CATCH_ERROR_OPTION = '__e';
|
|
9
|
+
const COMPONENT_DIRTY = '__d';
|
|
10
|
+
const COMPONENT_BITS = '__g';
|
|
11
|
+
const HOOK_VALUE = '__';
|
|
12
|
+
const HOOK_ARGS = '__H';
|
|
13
|
+
const HOOK_CLEANUP = '__c';
|
|
3
14
|
const COMPONENT_DIRTY_BIT = 8;
|
|
4
15
|
const isDirty = (vnode)=>{
|
|
5
|
-
if (vnode[
|
|
6
|
-
if (vnode[
|
|
16
|
+
if (vnode[VNODE_COMPONENT] && vnode[VNODE_COMPONENT][COMPONENT_DIRTY]) return true;
|
|
17
|
+
if (vnode[VNODE_COMPONENT] && vnode[VNODE_COMPONENT][COMPONENT_BITS] & COMPONENT_DIRTY_BIT) return true;
|
|
7
18
|
};
|
|
8
19
|
const unsetDirty = (vnode)=>{
|
|
9
|
-
if (vnode[
|
|
10
|
-
if (vnode[
|
|
11
|
-
if (vnode[
|
|
20
|
+
if (vnode[VNODE_COMPONENT]) {
|
|
21
|
+
if (vnode[VNODE_COMPONENT][COMPONENT_DIRTY]) vnode[VNODE_COMPONENT][COMPONENT_DIRTY] = false;
|
|
22
|
+
if (vnode[VNODE_COMPONENT][COMPONENT_BITS]) vnode[VNODE_COMPONENT][COMPONENT_BITS] &= ~COMPONENT_DIRTY_BIT;
|
|
12
23
|
}
|
|
13
24
|
};
|
|
14
|
-
const oldCatchError = options[
|
|
15
|
-
options[
|
|
25
|
+
const oldCatchError = options[CATCH_ERROR_OPTION];
|
|
26
|
+
options[CATCH_ERROR_OPTION] = (error, vnode, oldVNode, info)=>{
|
|
16
27
|
if (isDirty(vnode)) unsetDirty(vnode);
|
|
17
28
|
if (oldCatchError) oldCatchError(error, vnode, oldVNode, info);
|
|
18
29
|
};
|
|
@@ -22,7 +33,7 @@ options.debounceRendering = (process)=>{
|
|
|
22
33
|
try {
|
|
23
34
|
process();
|
|
24
35
|
} catch (e) {
|
|
25
|
-
process[
|
|
36
|
+
process[RERENDER_COUNT] = 0;
|
|
26
37
|
throw e;
|
|
27
38
|
}
|
|
28
39
|
});
|
|
@@ -57,7 +68,7 @@ options.vnode = (vnode)=>{
|
|
|
57
68
|
]);
|
|
58
69
|
}
|
|
59
70
|
vnode.type = foundType;
|
|
60
|
-
if (vnode[
|
|
71
|
+
if (vnode[VNODE_COMPONENT] && 'prototype' in vnode.type && vnode.type.prototype.render) vnode[VNODE_COMPONENT].constructor = vnode.type;
|
|
61
72
|
}
|
|
62
73
|
if (oldVnode) oldVnode(vnode);
|
|
63
74
|
};
|
|
@@ -144,13 +155,13 @@ function replaceComponent(OldType, NewType, resetHookState) {
|
|
|
144
155
|
}
|
|
145
156
|
if (!vnode || !vnode.__c || !vnode.__c.__P) return;
|
|
146
157
|
vnode.type = NewType;
|
|
147
|
-
if (vnode[
|
|
148
|
-
vnode[
|
|
158
|
+
if (vnode[VNODE_COMPONENT]) {
|
|
159
|
+
vnode[VNODE_COMPONENT].constructor = vnode.type;
|
|
149
160
|
try {
|
|
150
|
-
if (vnode[
|
|
151
|
-
const oldInst = vnode[
|
|
152
|
-
const newInst = new NewType(vnode[
|
|
153
|
-
vnode[
|
|
161
|
+
if (vnode[VNODE_COMPONENT] instanceof OldType) {
|
|
162
|
+
const oldInst = vnode[VNODE_COMPONENT];
|
|
163
|
+
const newInst = new NewType(vnode[VNODE_COMPONENT].props, vnode[VNODE_COMPONENT].context);
|
|
164
|
+
vnode[VNODE_COMPONENT] = newInst;
|
|
154
165
|
for(let i in oldInst){
|
|
155
166
|
const type = typeof oldInst[i];
|
|
156
167
|
if (i in newInst) {
|
|
@@ -160,41 +171,41 @@ function replaceComponent(OldType, NewType, resetHookState) {
|
|
|
160
171
|
}
|
|
161
172
|
}
|
|
162
173
|
} catch (e) {
|
|
163
|
-
vnode[
|
|
174
|
+
vnode[VNODE_COMPONENT].constructor = NewType;
|
|
164
175
|
}
|
|
165
176
|
if (resetHookState) {
|
|
166
|
-
if (vnode[
|
|
167
|
-
if (possibleEffect[
|
|
168
|
-
possibleEffect[
|
|
169
|
-
possibleEffect[
|
|
170
|
-
} else if (possibleEffect[
|
|
171
|
-
const cleanupKey = Object.keys(possibleEffect).find((key)=>
|
|
177
|
+
if (vnode[VNODE_COMPONENT][COMPONENT_HOOKS] && vnode[VNODE_COMPONENT][COMPONENT_HOOKS][HOOKS_LIST] && vnode[VNODE_COMPONENT][COMPONENT_HOOKS][HOOKS_LIST].length) vnode[VNODE_COMPONENT][COMPONENT_HOOKS][HOOKS_LIST].forEach((possibleEffect)=>{
|
|
178
|
+
if (possibleEffect[HOOK_CLEANUP] && 'function' == typeof possibleEffect[HOOK_CLEANUP]) {
|
|
179
|
+
possibleEffect[HOOK_CLEANUP]();
|
|
180
|
+
possibleEffect[HOOK_CLEANUP] = void 0;
|
|
181
|
+
} else if (possibleEffect[HOOK_ARGS] && possibleEffect[HOOK_VALUE] && 3 === Object.keys(possibleEffect).length) {
|
|
182
|
+
const cleanupKey = Object.keys(possibleEffect).find((key)=>key !== HOOK_ARGS && key !== HOOK_VALUE);
|
|
172
183
|
if (cleanupKey && 'function' == typeof possibleEffect[cleanupKey]) {
|
|
173
184
|
possibleEffect[cleanupKey]();
|
|
174
185
|
possibleEffect[cleanupKey] = void 0;
|
|
175
186
|
}
|
|
176
187
|
}
|
|
177
188
|
});
|
|
178
|
-
vnode[
|
|
179
|
-
[
|
|
180
|
-
[
|
|
189
|
+
vnode[VNODE_COMPONENT][COMPONENT_HOOKS] = {
|
|
190
|
+
[HOOKS_LIST]: [],
|
|
191
|
+
[EFFECTS_LIST]: []
|
|
181
192
|
};
|
|
182
|
-
} else if (vnode[
|
|
183
|
-
vnode[
|
|
184
|
-
if (possibleEffect[
|
|
185
|
-
possibleEffect[
|
|
186
|
-
possibleEffect[
|
|
187
|
-
} else if (possibleEffect[
|
|
188
|
-
const cleanupKey = Object.keys(possibleEffect).find((key)=>
|
|
193
|
+
} else if (vnode[VNODE_COMPONENT][COMPONENT_HOOKS] && vnode[VNODE_COMPONENT][COMPONENT_HOOKS][HOOKS_LIST] && vnode[VNODE_COMPONENT][COMPONENT_HOOKS][HOOKS_LIST].length) {
|
|
194
|
+
vnode[VNODE_COMPONENT][COMPONENT_HOOKS][HOOKS_LIST].forEach((possibleEffect)=>{
|
|
195
|
+
if (possibleEffect[HOOK_CLEANUP] && 'function' == typeof possibleEffect[HOOK_CLEANUP]) {
|
|
196
|
+
possibleEffect[HOOK_CLEANUP]();
|
|
197
|
+
possibleEffect[HOOK_CLEANUP] = void 0;
|
|
198
|
+
} else if (possibleEffect[HOOK_ARGS] && possibleEffect[HOOK_VALUE] && 3 === Object.keys(possibleEffect).length) {
|
|
199
|
+
const cleanupKey = Object.keys(possibleEffect).find((key)=>key !== HOOK_ARGS && key !== HOOK_VALUE);
|
|
189
200
|
if (cleanupKey && 'function' == typeof possibleEffect[cleanupKey]) possibleEffect[cleanupKey]();
|
|
190
201
|
possibleEffect[cleanupKey] = void 0;
|
|
191
202
|
}
|
|
192
203
|
});
|
|
193
|
-
vnode[
|
|
204
|
+
vnode[VNODE_COMPONENT][COMPONENT_HOOKS][HOOKS_LIST].forEach((hook)=>{
|
|
194
205
|
if (hook.__H && Array.isArray(hook.__H)) hook.__H = void 0;
|
|
195
206
|
});
|
|
196
207
|
}
|
|
197
|
-
Component.prototype.forceUpdate.call(vnode[
|
|
208
|
+
Component.prototype.forceUpdate.call(vnode[VNODE_COMPONENT]);
|
|
198
209
|
}
|
|
199
210
|
});
|
|
200
211
|
}
|