thunderous 2.3.13 → 2.4.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/dist/index.cjs +197 -85
- package/dist/index.d.cts +5 -3
- package/dist/index.d.ts +5 -3
- package/dist/index.js +1152 -5
- package/package.json +54 -70
- package/dist/__test__/custom-element.test.js +0 -48
- package/dist/__test__/registry.test.js +0 -60
- package/dist/__test__/render.test.js +0 -48
- package/dist/__test__/server-side.test.js +0 -196
- package/dist/__test__/signals.test.js +0 -247
- package/dist/__test__/utilities.test.js +0 -8
- package/dist/constants.js +0 -13
- package/dist/custom-element.js +0 -391
- package/dist/registry.js +0 -95
- package/dist/render.js +0 -350
- package/dist/server-side.js +0 -136
- package/dist/signals.js +0 -115
- package/dist/utilities.js +0 -9
package/dist/signals.js
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
let subscriber = null;
|
|
2
|
-
/**
|
|
3
|
-
* Create a signal with an initial value.
|
|
4
|
-
* @example
|
|
5
|
-
* ```ts
|
|
6
|
-
* const [getCount, setCount] = createSignal(0);
|
|
7
|
-
* const increment = () => setCount(getCount() + 1);
|
|
8
|
-
* const decrement = () => setCount(getCount() - 1);
|
|
9
|
-
* ```
|
|
10
|
-
*/
|
|
11
|
-
export const createSignal = (initVal, options) => {
|
|
12
|
-
const subscribers = new Set();
|
|
13
|
-
let value = initVal;
|
|
14
|
-
const getter = (getterOptions) => {
|
|
15
|
-
if (subscriber !== null) {
|
|
16
|
-
subscribers.add(subscriber);
|
|
17
|
-
}
|
|
18
|
-
if (options?.debugMode === true || getterOptions?.debugMode === true) {
|
|
19
|
-
let label = 'anonymous signal';
|
|
20
|
-
if (options?.label !== undefined) {
|
|
21
|
-
label = `(${options.label})`;
|
|
22
|
-
if (getterOptions?.label !== undefined) {
|
|
23
|
-
label += ` ${getterOptions.label}`;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
else if (getterOptions?.label !== undefined) {
|
|
27
|
-
label = getterOptions.label;
|
|
28
|
-
}
|
|
29
|
-
console.log('Signal retrieved:', { value, subscribers, label });
|
|
30
|
-
}
|
|
31
|
-
return value;
|
|
32
|
-
};
|
|
33
|
-
getter.getter = true;
|
|
34
|
-
let stackLength = 0;
|
|
35
|
-
const setter = (newValue, setterOptions) => {
|
|
36
|
-
stackLength++;
|
|
37
|
-
queueMicrotask(() => stackLength--);
|
|
38
|
-
if (stackLength > 1000) {
|
|
39
|
-
console.error(new Error('Signal setter stack overflow detected. Possible infinite loop. Bailing out.'));
|
|
40
|
-
stackLength = 0;
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
const isObject = typeof newValue === 'object' && newValue !== null;
|
|
44
|
-
if (!isObject && value === newValue)
|
|
45
|
-
return;
|
|
46
|
-
if (isObject && typeof value === 'object' && value !== null) {
|
|
47
|
-
if (JSON.stringify(value) === JSON.stringify(newValue))
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
const oldValue = value;
|
|
51
|
-
value = newValue;
|
|
52
|
-
for (const fn of subscribers) {
|
|
53
|
-
try {
|
|
54
|
-
fn();
|
|
55
|
-
}
|
|
56
|
-
catch (error) {
|
|
57
|
-
console.error('Error in subscriber:', { error, oldValue, newValue, fn });
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
if (options?.debugMode === true || setterOptions?.debugMode === true) {
|
|
61
|
-
let label = 'anonymous signal';
|
|
62
|
-
if (options?.label !== undefined) {
|
|
63
|
-
label = `(${options.label})`;
|
|
64
|
-
if (setterOptions?.label !== undefined) {
|
|
65
|
-
label += ` ${setterOptions.label}`;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
else if (setterOptions?.label !== undefined) {
|
|
69
|
-
label = setterOptions.label;
|
|
70
|
-
}
|
|
71
|
-
console.log('Signal set:', { oldValue, newValue, subscribers, label });
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
return [getter, setter];
|
|
75
|
-
};
|
|
76
|
-
/**
|
|
77
|
-
* Create a derived signal that depends on other signals.
|
|
78
|
-
* @example
|
|
79
|
-
* ```ts
|
|
80
|
-
* const [getCount, setCount] = createSignal(0);
|
|
81
|
-
* const doubleCount = derived(() => getCount() * 2);
|
|
82
|
-
* ```
|
|
83
|
-
*/
|
|
84
|
-
export const derived = (fn, options) => {
|
|
85
|
-
const [getter, setter] = createSignal(undefined, options);
|
|
86
|
-
createEffect(() => {
|
|
87
|
-
try {
|
|
88
|
-
setter(fn());
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
console.error('Error in derived signal:', { error, fn });
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
return getter;
|
|
95
|
-
};
|
|
96
|
-
/**
|
|
97
|
-
* Create an effect that runs when signals change.
|
|
98
|
-
* @example
|
|
99
|
-
* ```ts
|
|
100
|
-
* const [getCount, setCount] = createSignal(0);
|
|
101
|
-
* createEffect(() => {
|
|
102
|
-
* console.log('Count:', getCount());
|
|
103
|
-
* });
|
|
104
|
-
* ```
|
|
105
|
-
*/
|
|
106
|
-
export const createEffect = (fn) => {
|
|
107
|
-
subscriber = fn;
|
|
108
|
-
try {
|
|
109
|
-
fn();
|
|
110
|
-
}
|
|
111
|
-
catch (error) {
|
|
112
|
-
console.error('Error in effect:', { error, fn });
|
|
113
|
-
}
|
|
114
|
-
subscriber = null;
|
|
115
|
-
};
|
package/dist/utilities.js
DELETED