ripple 0.2.184 → 0.2.185
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/package.json +2 -2
- package/src/compiler/phases/2-analyze/index.js +5 -0
- package/src/compiler/phases/3-transform/client/index.js +181 -131
- package/src/compiler/phases/3-transform/server/index.js +135 -45
- package/src/compiler/types/index.d.ts +89 -63
- package/src/compiler/types/parse.d.ts +30 -0
- package/src/runtime/index-server.js +10 -27
- package/src/runtime/internal/client/operations.js +1 -1
- package/src/runtime/internal/client/runtime.js +8 -8
- package/src/runtime/internal/client/types.d.ts +5 -5
- package/src/runtime/internal/server/index.js +268 -17
- package/src/runtime/internal/server/types.d.ts +19 -11
- package/tests/client/switch.test.ripple +73 -23
- package/tests/server/basic.test.ripple +119 -0
- package/tests/server/composite.test.ripple +1 -1
- package/tests/server/context.test.ripple +31 -0
- package/tests/server/switch.test.ripple +21 -0
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
import { DERIVED, TRACKED, UNINITIALIZED } from './internal/client/constants.js';
|
|
4
4
|
import { is_tracked_object } from './internal/client/utils.js';
|
|
5
|
-
import { active_component } from './internal/server/index.js';
|
|
5
|
+
import { active_component, get, set, untrack } from './internal/server/index.js';
|
|
6
6
|
|
|
7
7
|
export { Context } from './internal/server/context.js';
|
|
8
8
|
|
|
9
|
+
export { get, set, untrack };
|
|
10
|
+
|
|
9
11
|
export function effect() {
|
|
10
12
|
// NO-OP
|
|
11
13
|
}
|
|
@@ -13,31 +15,6 @@ export function effect() {
|
|
|
13
15
|
var empty_get_set = { get: undefined, set: undefined };
|
|
14
16
|
|
|
15
17
|
/**
|
|
16
|
-
* @param {Derived | Tracked} tracked
|
|
17
|
-
* @returns {any}
|
|
18
|
-
*/
|
|
19
|
-
export function get(tracked) {
|
|
20
|
-
if (!is_tracked_object(tracked)) {
|
|
21
|
-
return tracked;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
var g = tracked.a.get;
|
|
25
|
-
|
|
26
|
-
return g ? g(tracked.v) : tracked.v;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* @param {Tracked} tracked
|
|
31
|
-
* @param {any} value
|
|
32
|
-
*/
|
|
33
|
-
export function set(tracked, value) {
|
|
34
|
-
var s = tracked.a.set;
|
|
35
|
-
|
|
36
|
-
tracked.v = s ? s(value, tracked.v) : value;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
*
|
|
41
18
|
* @param {any} v
|
|
42
19
|
* @param {Function} [get]
|
|
43
20
|
* @param {Function} [set]
|
|
@@ -53,7 +30,9 @@ export function track(v, get, set) {
|
|
|
53
30
|
if (typeof v === 'function') {
|
|
54
31
|
return {
|
|
55
32
|
a: get || set ? { get, set } : empty_get_set,
|
|
33
|
+
c: 0,
|
|
56
34
|
co: active_component,
|
|
35
|
+
d: null,
|
|
57
36
|
f: TRACKED | DERIVED,
|
|
58
37
|
fn: v,
|
|
59
38
|
v: UNINITIALIZED,
|
|
@@ -62,6 +41,8 @@ export function track(v, get, set) {
|
|
|
62
41
|
|
|
63
42
|
return {
|
|
64
43
|
a: get || set ? { get, set } : empty_get_set,
|
|
44
|
+
c: 0,
|
|
45
|
+
d: null,
|
|
65
46
|
f: TRACKED,
|
|
66
47
|
v,
|
|
67
48
|
};
|
|
@@ -91,5 +72,7 @@ export function MediaQuery(query, matches = false) {
|
|
|
91
72
|
* @param {any} _
|
|
92
73
|
*/
|
|
93
74
|
export function createSubscriber(_) {
|
|
94
|
-
return () => {
|
|
75
|
+
return () => {
|
|
76
|
+
/* NO-OP */
|
|
77
|
+
};
|
|
95
78
|
}
|
|
@@ -48,7 +48,7 @@ export function first_child(node) {
|
|
|
48
48
|
export function child_frag(node) {
|
|
49
49
|
var child = /** @type {Text} */ (first_child(node));
|
|
50
50
|
|
|
51
|
-
if (child.nodeType ===
|
|
51
|
+
if (child.nodeType === Node.COMMENT_NODE && child.data === '') {
|
|
52
52
|
return next_sibling(child);
|
|
53
53
|
}
|
|
54
54
|
return child;
|
|
@@ -429,7 +429,7 @@ export function track_split(v, l, b) {
|
|
|
429
429
|
}
|
|
430
430
|
|
|
431
431
|
/**
|
|
432
|
-
* @param {Tracked} tracked
|
|
432
|
+
* @param {Tracked | Derived} tracked
|
|
433
433
|
* @returns {Dependency}
|
|
434
434
|
*/
|
|
435
435
|
function create_dependency(tracked) {
|
|
@@ -512,10 +512,10 @@ export function async_computed(fn, block) {
|
|
|
512
512
|
|
|
513
513
|
var restore = capture();
|
|
514
514
|
/** @type {(() => void) | undefined} */
|
|
515
|
-
var
|
|
515
|
+
var unsuspend;
|
|
516
516
|
|
|
517
517
|
if (deferred === null) {
|
|
518
|
-
|
|
518
|
+
unsuspend = suspend();
|
|
519
519
|
} else {
|
|
520
520
|
for (var i = 0; i < deferred.length; i++) {
|
|
521
521
|
var tracked = deferred[i];
|
|
@@ -538,7 +538,7 @@ export function async_computed(fn, block) {
|
|
|
538
538
|
}
|
|
539
539
|
|
|
540
540
|
if (deferred === null) {
|
|
541
|
-
|
|
541
|
+
unsuspend?.();
|
|
542
542
|
} else if (promise === current) {
|
|
543
543
|
for (var i = 0; i < deferred.length; i++) {
|
|
544
544
|
var tracked = deferred[i];
|
|
@@ -586,16 +586,16 @@ function capture_deferred(fn) {
|
|
|
586
586
|
var value = fn();
|
|
587
587
|
/** @type {Tracked[] | null} */
|
|
588
588
|
var deferred = null;
|
|
589
|
-
var
|
|
589
|
+
var dependency = active_dependency;
|
|
590
590
|
|
|
591
|
-
while (
|
|
592
|
-
var tracked =
|
|
591
|
+
while (dependency !== null) {
|
|
592
|
+
var tracked = dependency.t;
|
|
593
593
|
if ((tracked.f & DEFERRED) !== 0) {
|
|
594
594
|
deferred ??= [];
|
|
595
595
|
deferred.push(tracked);
|
|
596
596
|
break;
|
|
597
597
|
}
|
|
598
|
-
|
|
598
|
+
dependency = dependency.n;
|
|
599
599
|
}
|
|
600
600
|
|
|
601
601
|
return [value, deferred];
|
|
@@ -19,7 +19,7 @@ export type Dependency = {
|
|
|
19
19
|
|
|
20
20
|
export type Tracked<V = any> = {
|
|
21
21
|
DO_NOT_ACCESS_THIS_OBJECT_DIRECTLY?: true;
|
|
22
|
-
a: { get?: Function
|
|
22
|
+
a: { get?: Function; set?: Function };
|
|
23
23
|
b: Block;
|
|
24
24
|
c: number;
|
|
25
25
|
f: number;
|
|
@@ -28,12 +28,12 @@ export type Tracked<V = any> = {
|
|
|
28
28
|
|
|
29
29
|
export type Derived = {
|
|
30
30
|
DO_NOT_ACCESS_THIS_OBJECT_DIRECTLY?: true;
|
|
31
|
-
a: { get?: Function
|
|
31
|
+
a: { get?: Function; set?: Function };
|
|
32
32
|
b: Block;
|
|
33
33
|
blocks: null | Block[];
|
|
34
34
|
c: number;
|
|
35
35
|
co: null | Component;
|
|
36
|
-
d: null;
|
|
36
|
+
d: null | Dependency;
|
|
37
37
|
f: number;
|
|
38
38
|
fn: Function;
|
|
39
39
|
__v: any;
|
|
@@ -58,8 +58,8 @@ export type CompatApi = {
|
|
|
58
58
|
createRoot: () => void;
|
|
59
59
|
createComponent: (node: any, children_fn: () => any) => void;
|
|
60
60
|
jsx: (type: any, props: any) => any;
|
|
61
|
-
}
|
|
61
|
+
};
|
|
62
62
|
|
|
63
63
|
export type CompatOptions = {
|
|
64
64
|
[key: string]: CompatApi;
|
|
65
|
-
}
|
|
65
|
+
};
|
|
@@ -1,18 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
@import { Component, Dependency, Derived, Tracked } from '#server';
|
|
3
|
+
@import { render, renderToStream, SSRComponent } from 'ripple/server';
|
|
4
|
+
*/
|
|
5
|
+
|
|
1
6
|
import { Readable } from 'stream';
|
|
2
|
-
/** @import { Component, Derived } from '#server' */
|
|
3
|
-
/** @import { render, renderToStream, SSRComponent } from 'ripple/server'*/
|
|
4
7
|
import { DERIVED, UNINITIALIZED } from '../client/constants.js';
|
|
5
8
|
import { is_tracked_object } from '../client/utils.js';
|
|
6
9
|
import { escape } from '../../../utils/escaping.js';
|
|
7
10
|
import { is_boolean_attribute } from '../../../compiler/utils.js';
|
|
8
11
|
import { clsx } from 'clsx';
|
|
12
|
+
import { normalize_css_property_name } from '../../../utils/normalize_css_property_name.js';
|
|
9
13
|
|
|
10
14
|
export { escape };
|
|
11
15
|
export { register_component_css as register_css } from './css-registry.js';
|
|
12
16
|
|
|
13
|
-
/** @type {
|
|
17
|
+
/** @type {null | Component} */
|
|
14
18
|
export let active_component = null;
|
|
15
19
|
|
|
20
|
+
/** @type {number} */
|
|
21
|
+
let clock = 0;
|
|
22
|
+
|
|
23
|
+
/** @type {null | Dependency} */
|
|
24
|
+
let active_dependency = null;
|
|
25
|
+
|
|
26
|
+
export let tracking = false;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @returns {number}
|
|
30
|
+
*/
|
|
31
|
+
function increment_clock() {
|
|
32
|
+
return ++clock;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @param {Tracked | Derived} tracked
|
|
37
|
+
* @returns {Dependency}
|
|
38
|
+
*/
|
|
39
|
+
function create_dependency(tracked) {
|
|
40
|
+
return {
|
|
41
|
+
c: tracked.c,
|
|
42
|
+
t: tracked,
|
|
43
|
+
n: null,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @param {Tracked | Derived} tracked
|
|
49
|
+
*/
|
|
50
|
+
function register_dependency(tracked) {
|
|
51
|
+
var dependency = active_dependency;
|
|
52
|
+
|
|
53
|
+
if (dependency === null) {
|
|
54
|
+
dependency = create_dependency(tracked);
|
|
55
|
+
active_dependency = dependency;
|
|
56
|
+
} else {
|
|
57
|
+
var current = dependency;
|
|
58
|
+
|
|
59
|
+
while (current !== null) {
|
|
60
|
+
if (current.t === tracked) {
|
|
61
|
+
current.c = tracked.c;
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
var next = current.n;
|
|
65
|
+
if (next === null) {
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
current = next;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
dependency = create_dependency(tracked);
|
|
72
|
+
current.n = dependency;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @param {Dependency | null} tracking
|
|
78
|
+
*/
|
|
79
|
+
function is_tracking_dirty(tracking) {
|
|
80
|
+
if (tracking === null) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
while (tracking !== null) {
|
|
84
|
+
var tracked = tracking.t;
|
|
85
|
+
|
|
86
|
+
if ((tracked.f & DERIVED) !== 0) {
|
|
87
|
+
update_derived(/** @type {Derived} **/ (tracked));
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (tracked.c > tracking.c) {
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
tracking = tracking.n;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* @template T
|
|
101
|
+
* @param {() => T} fn
|
|
102
|
+
* @returns {T}
|
|
103
|
+
*/
|
|
104
|
+
export function untrack(fn) {
|
|
105
|
+
var previous_tracking = tracking;
|
|
106
|
+
var previous_dependency = active_dependency;
|
|
107
|
+
tracking = false;
|
|
108
|
+
active_dependency = null;
|
|
109
|
+
try {
|
|
110
|
+
return fn();
|
|
111
|
+
} finally {
|
|
112
|
+
tracking = previous_tracking;
|
|
113
|
+
active_dependency = previous_dependency;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* @param {Derived} computed
|
|
119
|
+
*/
|
|
120
|
+
function update_derived(computed) {
|
|
121
|
+
var value = computed.v;
|
|
122
|
+
|
|
123
|
+
if (value === UNINITIALIZED || is_tracking_dirty(computed.d)) {
|
|
124
|
+
value = run_derived(computed);
|
|
125
|
+
|
|
126
|
+
if (value !== computed.v) {
|
|
127
|
+
computed.v = value;
|
|
128
|
+
computed.c = increment_clock();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* @param {Derived} computed
|
|
135
|
+
*/
|
|
136
|
+
function run_derived(computed) {
|
|
137
|
+
var previous_tracking = tracking;
|
|
138
|
+
var previous_dependency = active_dependency;
|
|
139
|
+
var previous_component = active_component;
|
|
140
|
+
|
|
141
|
+
try {
|
|
142
|
+
active_component = computed.co;
|
|
143
|
+
tracking = true;
|
|
144
|
+
active_dependency = null;
|
|
145
|
+
|
|
146
|
+
var value = computed.fn();
|
|
147
|
+
|
|
148
|
+
computed.d = active_dependency;
|
|
149
|
+
|
|
150
|
+
return value;
|
|
151
|
+
} finally {
|
|
152
|
+
tracking = previous_tracking;
|
|
153
|
+
active_dependency = previous_dependency;
|
|
154
|
+
active_component = previous_component;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
16
158
|
/**
|
|
17
159
|
* `<div translate={false}>` should be rendered as `<div translate="no">` and _not_
|
|
18
160
|
* `<div translate="false">`, which is equivalent to `<div translate="yes">`. There
|
|
@@ -141,7 +283,7 @@ export function push_component() {
|
|
|
141
283
|
*/
|
|
142
284
|
export function pop_component() {
|
|
143
285
|
var component = /** @type {Component} */ (active_component);
|
|
144
|
-
active_component = component;
|
|
286
|
+
active_component = component.p;
|
|
145
287
|
}
|
|
146
288
|
|
|
147
289
|
/**
|
|
@@ -161,30 +303,119 @@ export function aborted() {
|
|
|
161
303
|
}
|
|
162
304
|
|
|
163
305
|
/**
|
|
164
|
-
* @param {
|
|
306
|
+
* @param {any} tracked
|
|
165
307
|
* @returns {any}
|
|
166
308
|
*/
|
|
167
|
-
function
|
|
168
|
-
|
|
309
|
+
export function get(tracked) {
|
|
310
|
+
if (!is_tracked_object(tracked)) {
|
|
311
|
+
return tracked;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
if ((tracked.f & DERIVED) !== 0) {
|
|
315
|
+
update_derived(/** @type {Derived} **/ (tracked));
|
|
316
|
+
if (tracking) {
|
|
317
|
+
register_dependency(tracked);
|
|
318
|
+
}
|
|
319
|
+
} else if (tracking) {
|
|
320
|
+
register_dependency(tracked);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
var g = tracked.a.get;
|
|
324
|
+
return g ? g(tracked.v) : tracked.v;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* @param {Derived | Tracked} tracked
|
|
329
|
+
* @param {any} value
|
|
330
|
+
*/
|
|
331
|
+
export function set(tracked, value) {
|
|
332
|
+
var old_value = tracked.v;
|
|
169
333
|
|
|
170
|
-
if (
|
|
171
|
-
|
|
172
|
-
tracked.v = v;
|
|
334
|
+
if (value !== old_value) {
|
|
335
|
+
var s = tracked.a.set;
|
|
336
|
+
tracked.v = s ? s(value, tracked.v) : value;
|
|
337
|
+
tracked.c = increment_clock();
|
|
173
338
|
}
|
|
174
|
-
return v;
|
|
175
339
|
}
|
|
176
340
|
|
|
177
341
|
/**
|
|
178
|
-
* @param {
|
|
342
|
+
* @param {Tracked} tracked
|
|
343
|
+
* @param {number} [d]
|
|
344
|
+
* @returns {number}
|
|
345
|
+
*/
|
|
346
|
+
export function update(tracked, d = 1) {
|
|
347
|
+
var value = get(tracked);
|
|
348
|
+
var result = d === 1 ? value++ : value--;
|
|
349
|
+
set(tracked, value);
|
|
350
|
+
return result;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* @param {Tracked} tracked
|
|
355
|
+
* @param {number} [d]
|
|
356
|
+
* @returns {number}
|
|
357
|
+
*/
|
|
358
|
+
export function update_pre(tracked, d = 1) {
|
|
359
|
+
var value = get(tracked);
|
|
360
|
+
var new_value = d === 1 ? ++value : --value;
|
|
361
|
+
set(tracked, new_value);
|
|
362
|
+
return new_value;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
/**
|
|
366
|
+
* @param {any} obj
|
|
367
|
+
* @param {string | number | symbol} property
|
|
368
|
+
* @param {any} value
|
|
369
|
+
* @returns {void}
|
|
370
|
+
*/
|
|
371
|
+
export function set_property(obj, property, value) {
|
|
372
|
+
var tracked = obj[property];
|
|
373
|
+
set(tracked, value);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* @param {any} obj
|
|
378
|
+
* @param {string | number | symbol} property
|
|
379
|
+
* @param {boolean} [chain=false]
|
|
179
380
|
* @returns {any}
|
|
180
381
|
*/
|
|
181
|
-
export function
|
|
182
|
-
|
|
183
|
-
|
|
382
|
+
export function get_property(obj, property, chain = false) {
|
|
383
|
+
if (chain && obj == null) {
|
|
384
|
+
return undefined;
|
|
385
|
+
}
|
|
386
|
+
var tracked = obj[property];
|
|
387
|
+
if (tracked == null) {
|
|
184
388
|
return tracked;
|
|
185
389
|
}
|
|
390
|
+
return get(tracked);
|
|
391
|
+
}
|
|
186
392
|
|
|
187
|
-
|
|
393
|
+
/**
|
|
394
|
+
* @param {any} obj
|
|
395
|
+
* @param {string | number | symbol} property
|
|
396
|
+
* @param {number} [d=1]
|
|
397
|
+
* @returns {number}
|
|
398
|
+
*/
|
|
399
|
+
export function update_property(obj, property, d = 1) {
|
|
400
|
+
var tracked = obj[property];
|
|
401
|
+
var value = get(tracked);
|
|
402
|
+
var new_value = d === 1 ? value++ : value--;
|
|
403
|
+
set(tracked, value);
|
|
404
|
+
return new_value;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* @param {any} obj
|
|
409
|
+
* @param {string | number | symbol} property
|
|
410
|
+
* @param {number} [d=1]
|
|
411
|
+
* @returns {number}
|
|
412
|
+
*/
|
|
413
|
+
export function update_pre_property(obj, property, d = 1) {
|
|
414
|
+
var tracked = obj[property];
|
|
415
|
+
var value = get(tracked);
|
|
416
|
+
var new_value = d === 1 ? ++value : --value;
|
|
417
|
+
set(tracked, new_value);
|
|
418
|
+
return new_value;
|
|
188
419
|
}
|
|
189
420
|
|
|
190
421
|
/**
|
|
@@ -200,11 +431,31 @@ export function attr(name, value, is_boolean = false) {
|
|
|
200
431
|
}
|
|
201
432
|
if (value == null || (!value && is_boolean)) return '';
|
|
202
433
|
const normalized = (name in replacements && replacements[name].get(value)) || value;
|
|
203
|
-
|
|
434
|
+
let value_to_escape = name === 'class' ? clsx(normalized) : normalized;
|
|
435
|
+
value_to_escape =
|
|
436
|
+
name === 'style'
|
|
437
|
+
? typeof value !== 'string'
|
|
438
|
+
? get_styles(value)
|
|
439
|
+
: String(normalized).trim()
|
|
440
|
+
: value_to_escape;
|
|
204
441
|
const assignment = is_boolean ? '' : `="${escape(value_to_escape, true)}"`;
|
|
205
442
|
return ` ${name}${assignment}`;
|
|
206
443
|
}
|
|
207
444
|
|
|
445
|
+
/**
|
|
446
|
+
* @param {Record<string, string | number>} styles
|
|
447
|
+
* @returns {string}
|
|
448
|
+
*/
|
|
449
|
+
function get_styles(styles) {
|
|
450
|
+
var result = '';
|
|
451
|
+
for (const key in styles) {
|
|
452
|
+
const css_prop = normalize_css_property_name(key);
|
|
453
|
+
const value = String(styles[key]).trim();
|
|
454
|
+
result += `${css_prop}: ${value}; `;
|
|
455
|
+
}
|
|
456
|
+
return result.trim();
|
|
457
|
+
}
|
|
458
|
+
|
|
208
459
|
/**
|
|
209
460
|
* @param {Record<string, any>} attrs
|
|
210
461
|
* @param {string | undefined} css_hash
|
|
@@ -1,21 +1,29 @@
|
|
|
1
1
|
import type { Context } from './context.js';
|
|
2
2
|
|
|
3
3
|
export type Component = {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
c: null | Map<Context<any>, any>;
|
|
5
|
+
p: null | Component;
|
|
6
6
|
};
|
|
7
7
|
|
|
8
|
+
export type Dependency = {
|
|
9
|
+
c: number;
|
|
10
|
+
t: Tracked | Derived;
|
|
11
|
+
n: null | Dependency;
|
|
12
|
+
};
|
|
8
13
|
|
|
9
14
|
export type Derived = {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
a: { get?: Function; set?: Function };
|
|
16
|
+
c: number;
|
|
17
|
+
co: null | Component;
|
|
18
|
+
d: null | Dependency;
|
|
19
|
+
f: number;
|
|
20
|
+
fn: Function;
|
|
21
|
+
v: any;
|
|
15
22
|
};
|
|
16
23
|
|
|
17
24
|
export type Tracked = {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
a: { get?: Function; set?: Function };
|
|
26
|
+
c: number;
|
|
27
|
+
f: number;
|
|
28
|
+
v: any;
|
|
29
|
+
};
|