ripple 0.2.140 → 0.2.141
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/1-parse/index.js +7 -3
- package/src/compiler/phases/2-analyze/index.js +11 -9
- package/src/compiler/phases/3-transform/client/index.js +24 -5
- package/src/compiler/utils.js +22 -11
- package/src/runtime/date.js +1 -1
- package/src/runtime/internal/client/index.js +3 -1
- package/src/runtime/internal/client/render.js +23 -23
- package/src/runtime/internal/client/runtime.js +44 -28
- package/src/runtime/map.js +182 -182
- package/src/runtime/media-query.js +1 -1
- package/src/runtime/proxy.js +279 -279
- package/src/runtime/set.js +168 -168
- package/src/runtime/url-search-params.js +5 -5
- package/src/runtime/url.js +18 -18
- package/tests/client/composite/composite.props.test.ripple +44 -2
- package/types/index.d.ts +1 -1
package/src/runtime/map.js
CHANGED
|
@@ -11,187 +11,187 @@ let init = false;
|
|
|
11
11
|
* @returns {TrackedMap<K, V>}
|
|
12
12
|
*/
|
|
13
13
|
export class TrackedMap extends Map {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
14
|
+
/** @type {Tracked} */
|
|
15
|
+
#tracked_size;
|
|
16
|
+
/** @type {Map<K, Tracked>} */
|
|
17
|
+
#tracked_items = new Map();
|
|
18
|
+
/** @type {Block} */
|
|
19
|
+
#block;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @param {Iterable<readonly [K, V]>} [iterable]
|
|
23
|
+
*/
|
|
24
|
+
constructor(iterable) {
|
|
25
|
+
super();
|
|
26
|
+
|
|
27
|
+
var block = this.#block = safe_scope();
|
|
28
|
+
|
|
29
|
+
if (iterable) {
|
|
30
|
+
for (var [key, value] of iterable) {
|
|
31
|
+
super.set(key, value);
|
|
32
|
+
this.#tracked_items.set(key, tracked(0, block));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
this.#tracked_size = tracked(super.size, block);
|
|
37
|
+
|
|
38
|
+
if (!init) {
|
|
39
|
+
init = true;
|
|
40
|
+
this.#init();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @returns {void}
|
|
46
|
+
*/
|
|
47
|
+
#init() {
|
|
48
|
+
var proto = TrackedMap.prototype;
|
|
49
|
+
var map_proto = Map.prototype;
|
|
50
|
+
|
|
51
|
+
for (const method of introspect_methods) {
|
|
52
52
|
/** @type {any} */ (proto)[method] = function (/** @type {...any} */ ...v) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
53
|
+
this.size;
|
|
54
|
+
this.#read_all();
|
|
55
|
+
|
|
56
|
+
return /** @type {any} */ (map_proto)[method].apply(this, v);
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @param {K} key
|
|
63
|
+
* @returns {V | undefined}
|
|
64
|
+
*/
|
|
65
|
+
get(key) {
|
|
66
|
+
var tracked_items = this.#tracked_items;
|
|
67
|
+
var t = tracked_items.get(key);
|
|
68
|
+
|
|
69
|
+
if (t === undefined) {
|
|
70
|
+
// same logic as has
|
|
71
|
+
this.size;
|
|
72
|
+
} else {
|
|
73
|
+
get(t);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return super.get(key);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* @param {K} key
|
|
81
|
+
* @returns {boolean}
|
|
82
|
+
*/
|
|
83
|
+
has(key) {
|
|
84
|
+
var has = super.has(key);
|
|
85
|
+
var tracked_items = this.#tracked_items;
|
|
86
|
+
var t = tracked_items.get(key);
|
|
87
|
+
|
|
88
|
+
if (t === undefined) {
|
|
89
|
+
// if no tracked it also means super didn't have it
|
|
90
|
+
// It's not possible to have a disconnect, we tract each key
|
|
91
|
+
// If the key doesn't exist, track the size in case it's added later
|
|
92
|
+
// but don't create tracked entries willy-nilly to track all possible keys
|
|
93
|
+
this.size;
|
|
94
|
+
} else {
|
|
95
|
+
get(t);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return has;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* @param {K} key
|
|
103
|
+
* @param {V} value
|
|
104
|
+
* @returns {this}
|
|
105
|
+
*/
|
|
106
|
+
set(key, value) {
|
|
107
|
+
var block = this.#block;
|
|
108
|
+
var tracked_items = this.#tracked_items;
|
|
109
|
+
var t = tracked_items.get(key);
|
|
110
|
+
var prev_res = super.get(key);
|
|
111
|
+
|
|
112
|
+
super.set(key, value);
|
|
113
|
+
|
|
114
|
+
if (!t) {
|
|
115
|
+
tracked_items.set(key, tracked(0, block));
|
|
116
|
+
set(this.#tracked_size, super.size);
|
|
117
|
+
} else if (prev_res !== value) {
|
|
118
|
+
increment(t);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return this;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* @param {K} key
|
|
126
|
+
* @returns {boolean}
|
|
127
|
+
*/
|
|
128
|
+
delete(key) {
|
|
129
|
+
var block = this.#block;
|
|
130
|
+
var tracked_items = this.#tracked_items;
|
|
131
|
+
var t = tracked_items.get(key);
|
|
132
|
+
var result = super.delete(key);
|
|
133
|
+
|
|
134
|
+
if (t) {
|
|
135
|
+
increment(t);
|
|
136
|
+
tracked_items.delete(key);
|
|
137
|
+
set(this.#tracked_size, super.size);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* @returns {void}
|
|
145
|
+
*/
|
|
146
|
+
clear() {
|
|
147
|
+
var block = this.#block;
|
|
148
|
+
|
|
149
|
+
if (super.size === 0) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
for (var [_, t] of this.#tracked_items) {
|
|
154
|
+
increment(t);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
super.clear();
|
|
158
|
+
this.#tracked_items.clear();
|
|
159
|
+
set(this.#tracked_size, 0);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* @returns {MapIterator<K>}
|
|
164
|
+
*/
|
|
165
|
+
keys() {
|
|
166
|
+
this.size;
|
|
167
|
+
return super.keys();
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* @returns {void}
|
|
172
|
+
*/
|
|
173
|
+
#read_all() {
|
|
174
|
+
for (const [, t] of this.#tracked_items) {
|
|
175
|
+
get(t);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* @returns {number}
|
|
181
|
+
*/
|
|
182
|
+
get size() {
|
|
183
|
+
return get(this.#tracked_size);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* @returns {Array<[K, V]>}
|
|
188
|
+
*/
|
|
189
|
+
toJSON() {
|
|
190
|
+
this.size;
|
|
191
|
+
this.#read_all();
|
|
192
|
+
|
|
193
|
+
return [...this];
|
|
194
|
+
}
|
|
195
195
|
}
|
|
196
196
|
|
|
197
197
|
/**
|
|
@@ -201,5 +201,5 @@ export class TrackedMap extends Map {
|
|
|
201
201
|
* @returns {TrackedMap<K, V>}
|
|
202
202
|
*/
|
|
203
203
|
export function tracked_map(block, ...args) {
|
|
204
|
-
|
|
205
|
-
}
|
|
204
|
+
return with_scope(block, () => new TrackedMap(...args));
|
|
205
|
+
}
|
|
@@ -32,7 +32,7 @@ export function MediaQuery(query, fallback) {
|
|
|
32
32
|
() => on(q, 'change', () => {
|
|
33
33
|
// skip wrapping in untrack as createSubscriber already does it
|
|
34
34
|
if (q.matches !== get(matches)) {
|
|
35
|
-
set(matches, q.matches
|
|
35
|
+
set(matches, q.matches)
|
|
36
36
|
}
|
|
37
37
|
})
|
|
38
38
|
);
|