ripple 0.2.46 → 0.2.48

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.
Files changed (38) hide show
  1. package/package.json +1 -1
  2. package/src/compiler/phases/1-parse/index.js +52 -2
  3. package/src/compiler/phases/2-analyze/index.js +640 -667
  4. package/src/compiler/phases/3-transform/index.js +1878 -1879
  5. package/src/compiler/phases/3-transform/segments.js +2 -2
  6. package/src/compiler/utils.js +598 -550
  7. package/src/jsx-runtime.js +12 -12
  8. package/src/runtime/array.js +611 -609
  9. package/src/runtime/index.js +29 -17
  10. package/src/runtime/internal/client/array.js +121 -121
  11. package/src/runtime/internal/client/blocks.js +206 -206
  12. package/src/runtime/internal/client/constants.js +2 -2
  13. package/src/runtime/internal/client/context.js +40 -40
  14. package/src/runtime/internal/client/events.js +191 -191
  15. package/src/runtime/internal/client/for.js +355 -355
  16. package/src/runtime/internal/client/if.js +25 -25
  17. package/src/runtime/internal/client/index.js +57 -56
  18. package/src/runtime/internal/client/operations.js +32 -32
  19. package/src/runtime/internal/client/portal.js +19 -19
  20. package/src/runtime/internal/client/render.js +132 -132
  21. package/src/runtime/internal/client/runtime.js +839 -835
  22. package/src/runtime/internal/client/template.js +36 -36
  23. package/src/runtime/internal/client/try.js +113 -113
  24. package/src/runtime/internal/client/types.d.ts +12 -11
  25. package/src/runtime/internal/client/utils.js +5 -5
  26. package/src/runtime/map.js +139 -139
  27. package/src/runtime/set.js +130 -130
  28. package/src/utils/ast.js +189 -189
  29. package/src/utils/builders.js +244 -244
  30. package/src/utils/sanitize_template_string.js +1 -1
  31. package/tests/__snapshots__/composite.test.ripple.snap +1 -1
  32. package/tests/accessors-props.test.ripple +9 -9
  33. package/tests/basic.test.ripple +4 -4
  34. package/tests/boundaries.test.ripple +17 -17
  35. package/tests/compiler.test.ripple +14 -14
  36. package/tests/composite.test.ripple +43 -72
  37. package/tests/context.test.ripple +35 -12
  38. package/types/index.d.ts +38 -34
@@ -5,143 +5,143 @@ const introspect_methods = ['entries', 'forEach', 'values', Symbol.iterator];
5
5
  let init = false;
6
6
 
7
7
  export class RippleMap extends Map {
8
- #tracked_size;
9
- #tracked_items = new Map();
10
-
11
- constructor(iterable) {
12
- super();
13
-
14
- var block = safe_scope();
15
-
16
- if (iterable) {
17
- for (var [key, value] of iterable) {
18
- super.set(key, value);
19
- this.#tracked_items.set(key, tracked(0, block));
20
- }
21
- }
22
-
23
- this.#tracked_size = tracked(this.size, block);
24
-
25
- if (!init) {
26
- init = true;
27
- this.#init();
28
- }
29
- }
30
-
31
- #init() {
32
- var proto = RippleMap.prototype;
33
- var map_proto = Map.prototype;
34
-
35
- for (const method of introspect_methods) {
36
- proto[method] = function (...v) {
37
- this.$size;
38
- this.#read_all();
39
-
40
- return map_proto[method].apply(this, v);
41
- };
42
- }
43
- }
44
-
45
- get(key) {
46
- var tracked_items = this.#tracked_items;
47
- var t = tracked_items.get(key);
48
-
49
- if (t === undefined) {
50
- // same logic as has
51
- this.$size;
52
- } else {
53
- get(t);
54
- }
55
-
56
- return super.get(key);
57
- }
58
-
59
- has(key) {
60
- var has = super.has(key);
61
- var tracked_items = this.#tracked_items;
62
- var t = tracked_items.get(key);
63
-
64
- if (t === undefined) {
65
- // if no tracked it also means super didn't have it
66
- // It's not possible to have a disconnect, we tract each key
67
- // If the key doesn't exist, track the size in case it's added later
68
- // but don't create tracked entries willy-nilly to track all possible keys
69
- this.$size;
70
- } else {
71
- get(t);
72
- }
73
-
74
- return has;
75
- }
76
-
77
- set(key, value) {
78
- var block = safe_scope();
79
- var tracked_items = this.#tracked_items;
80
- var t = tracked_items.get(key);
81
- var prev_res = super.get(key);
82
-
83
- super.set(key, value);
84
-
85
- if (!t) {
86
- tracked_items.set(key, tracked(0, block));
87
- set(this.#tracked_size, this.size, block);
88
- } else if (prev_res !== value) {
89
- increment(t, block);
90
- }
91
-
92
- return this;
93
- }
94
-
95
- delete(key) {
96
- var block = safe_scope();
97
- var tracked_items = this.#tracked_items;
98
- var t = tracked_items.get(key);
99
- var result = super.delete(key);
100
-
101
- if (t) {
102
- increment(t, block);
103
- tracked_items.delete(key);
104
- set(this.#tracked_size, this.size, block);
105
- }
106
-
107
- return result;
108
- }
109
-
110
- clear() {
111
- var block = safe_scope();
112
-
113
- if (super.size === 0) {
114
- return;
115
- }
116
-
117
- for (var [_, t] of this.#tracked_items) {
118
- increment(t, block);
119
- }
120
-
121
- super.clear();
122
- this.#tracked_items.clear();
123
- set(this.#tracked_size, 0, block);
124
- }
125
-
126
- keys() {
127
- this.$size;
128
- return super.keys();
129
- }
130
-
131
- #read_all() {
132
- for (const [, t] of this.#tracked_items) {
133
- get(t);
134
- }
135
- }
136
-
137
- get $size() {
138
- return get(this.#tracked_size);
139
- }
140
-
141
- toJSON() {
142
- this.$size;
143
- this.#read_all();
144
-
145
- return [...this];
146
- }
8
+ #tracked_size;
9
+ #tracked_items = new Map();
10
+
11
+ constructor(iterable) {
12
+ super();
13
+
14
+ var block = safe_scope();
15
+
16
+ if (iterable) {
17
+ for (var [key, value] of iterable) {
18
+ super.set(key, value);
19
+ this.#tracked_items.set(key, tracked(0, block));
20
+ }
21
+ }
22
+
23
+ this.#tracked_size = tracked(this.size, block);
24
+
25
+ if (!init) {
26
+ init = true;
27
+ this.#init();
28
+ }
29
+ }
30
+
31
+ #init() {
32
+ var proto = RippleMap.prototype;
33
+ var map_proto = Map.prototype;
34
+
35
+ for (const method of introspect_methods) {
36
+ proto[method] = function (...v) {
37
+ this.$size;
38
+ this.#read_all();
39
+
40
+ return map_proto[method].apply(this, v);
41
+ };
42
+ }
43
+ }
44
+
45
+ get(key) {
46
+ var tracked_items = this.#tracked_items;
47
+ var t = tracked_items.get(key);
48
+
49
+ if (t === undefined) {
50
+ // same logic as has
51
+ this.$size;
52
+ } else {
53
+ get(t);
54
+ }
55
+
56
+ return super.get(key);
57
+ }
58
+
59
+ has(key) {
60
+ var has = super.has(key);
61
+ var tracked_items = this.#tracked_items;
62
+ var t = tracked_items.get(key);
63
+
64
+ if (t === undefined) {
65
+ // if no tracked it also means super didn't have it
66
+ // It's not possible to have a disconnect, we tract each key
67
+ // If the key doesn't exist, track the size in case it's added later
68
+ // but don't create tracked entries willy-nilly to track all possible keys
69
+ this.$size;
70
+ } else {
71
+ get(t);
72
+ }
73
+
74
+ return has;
75
+ }
76
+
77
+ set(key, value) {
78
+ var block = safe_scope();
79
+ var tracked_items = this.#tracked_items;
80
+ var t = tracked_items.get(key);
81
+ var prev_res = super.get(key);
82
+
83
+ super.set(key, value);
84
+
85
+ if (!t) {
86
+ tracked_items.set(key, tracked(0, block));
87
+ set(this.#tracked_size, this.size, block);
88
+ } else if (prev_res !== value) {
89
+ increment(t, block);
90
+ }
91
+
92
+ return this;
93
+ }
94
+
95
+ delete(key) {
96
+ var block = safe_scope();
97
+ var tracked_items = this.#tracked_items;
98
+ var t = tracked_items.get(key);
99
+ var result = super.delete(key);
100
+
101
+ if (t) {
102
+ increment(t, block);
103
+ tracked_items.delete(key);
104
+ set(this.#tracked_size, this.size, block);
105
+ }
106
+
107
+ return result;
108
+ }
109
+
110
+ clear() {
111
+ var block = safe_scope();
112
+
113
+ if (super.size === 0) {
114
+ return;
115
+ }
116
+
117
+ for (var [_, t] of this.#tracked_items) {
118
+ increment(t, block);
119
+ }
120
+
121
+ super.clear();
122
+ this.#tracked_items.clear();
123
+ set(this.#tracked_size, 0, block);
124
+ }
125
+
126
+ keys() {
127
+ this.$size;
128
+ return super.keys();
129
+ }
130
+
131
+ #read_all() {
132
+ for (const [, t] of this.#tracked_items) {
133
+ get(t);
134
+ }
135
+ }
136
+
137
+ get $size() {
138
+ return get(this.#tracked_size);
139
+ }
140
+
141
+ toJSON() {
142
+ this.$size;
143
+ this.#read_all();
144
+
145
+ return [...this];
146
+ }
147
147
  }
@@ -9,148 +9,148 @@ const new_other_methods = ['difference', 'intersection', 'symmetricDifference',
9
9
  let init = false;
10
10
 
11
11
  export class RippleSet extends Set {
12
- #tracked_size;
13
- #tracked_items = new Map();
12
+ #tracked_size;
13
+ #tracked_items = new Map();
14
14
 
15
- constructor(iterable) {
16
- super();
15
+ constructor(iterable) {
16
+ super();
17
17
 
18
- var block = safe_scope();
18
+ var block = safe_scope();
19
19
 
20
- if (iterable) {
21
- for (var item of iterable) {
22
- super.add(item);
23
- this.#tracked_items.set(item, tracked(0, block));
24
- }
25
- }
26
-
27
- this.#tracked_size = tracked(this.size, block);
28
-
29
- if (!init) {
30
- init = true;
31
- this.#init();
32
- }
33
- }
20
+ if (iterable) {
21
+ for (var item of iterable) {
22
+ super.add(item);
23
+ this.#tracked_items.set(item, tracked(0, block));
24
+ }
25
+ }
26
+
27
+ this.#tracked_size = tracked(this.size, block);
28
+
29
+ if (!init) {
30
+ init = true;
31
+ this.#init();
32
+ }
33
+ }
34
34
 
35
- #init() {
36
- var proto = RippleSet.prototype;
37
- var set_proto = Set.prototype;
35
+ #init() {
36
+ var proto = RippleSet.prototype;
37
+ var set_proto = Set.prototype;
38
38
 
39
- for (const method of introspect_methods) {
40
- if (!(method in set_proto)) {
41
- continue;
42
- }
43
-
44
- proto[method] = function (...v) {
45
- this.$size;
39
+ for (const method of introspect_methods) {
40
+ if (!(method in set_proto)) {
41
+ continue;
42
+ }
43
+
44
+ proto[method] = function (...v) {
45
+ this.$size;
46
46
 
47
- return set_proto[method].apply(this, v);
48
- };
49
- }
47
+ return set_proto[method].apply(this, v);
48
+ };
49
+ }
50
50
 
51
- for (const method of compare_other_methods) {
52
- if (!(method in set_proto)) {
53
- continue;
54
- }
55
-
56
- proto[method] = function (other, ...v) {
57
- this.$size;
58
-
59
- if (other instanceof RippleSet) {
60
- other.$size;
61
- }
62
-
63
- return set_proto[method].apply(this, [other, ...v]);
64
- };
65
- }
66
-
67
- for (const method of new_other_methods) {
68
- if (!(method in set_proto)) {
69
- continue;
70
- }
71
-
72
- proto[method] = function (other, ...v) {
73
- this.$size;
74
-
75
- if (other instanceof RippleSet) {
76
- other.$size;
77
- }
78
-
79
- return new RippleSet(set_proto[method].apply(this, [other, ...v]));
80
- };
81
- }
82
- }
83
-
84
- add(value) {
85
- var block = safe_scope();
86
-
87
- if (!super.has(value)) {
88
- super.add(value);
89
- this.#tracked_items.set(value, tracked(0, block));
90
- set(this.#tracked_size, this.size, block);
91
- }
92
-
93
- return this;
94
- }
95
-
96
- delete(value) {
97
- var block = safe_scope();
98
-
99
- if (!super.delete(value)) {
100
- return false;
101
- }
102
-
103
- var t = this.#tracked_items.get(value);
104
-
105
- increment(t, block);
106
- this.#tracked_items.delete(value);
107
- set(this.#tracked_size, this.size, block);
108
-
109
- return true;
110
- }
111
-
112
- has(value) {
113
- var block = safe_scope();
114
- var has = super.has(value);
115
- var tracked_items = this.#tracked_items;
116
- var t = tracked_items.get(value);
51
+ for (const method of compare_other_methods) {
52
+ if (!(method in set_proto)) {
53
+ continue;
54
+ }
55
+
56
+ proto[method] = function (other, ...v) {
57
+ this.$size;
58
+
59
+ if (other instanceof RippleSet) {
60
+ other.$size;
61
+ }
62
+
63
+ return set_proto[method].apply(this, [other, ...v]);
64
+ };
65
+ }
66
+
67
+ for (const method of new_other_methods) {
68
+ if (!(method in set_proto)) {
69
+ continue;
70
+ }
71
+
72
+ proto[method] = function (other, ...v) {
73
+ this.$size;
74
+
75
+ if (other instanceof RippleSet) {
76
+ other.$size;
77
+ }
78
+
79
+ return new RippleSet(set_proto[method].apply(this, [other, ...v]));
80
+ };
81
+ }
82
+ }
83
+
84
+ add(value) {
85
+ var block = safe_scope();
86
+
87
+ if (!super.has(value)) {
88
+ super.add(value);
89
+ this.#tracked_items.set(value, tracked(0, block));
90
+ set(this.#tracked_size, this.size, block);
91
+ }
92
+
93
+ return this;
94
+ }
95
+
96
+ delete(value) {
97
+ var block = safe_scope();
98
+
99
+ if (!super.delete(value)) {
100
+ return false;
101
+ }
102
+
103
+ var t = this.#tracked_items.get(value);
104
+
105
+ increment(t, block);
106
+ this.#tracked_items.delete(value);
107
+ set(this.#tracked_size, this.size, block);
108
+
109
+ return true;
110
+ }
111
+
112
+ has(value) {
113
+ var block = safe_scope();
114
+ var has = super.has(value);
115
+ var tracked_items = this.#tracked_items;
116
+ var t = tracked_items.get(value);
117
117
 
118
- if (t === undefined) {
119
- // if no tracked it also means super didn't have it
120
- // It's not possible to have a disconnect, we track each value
121
- // If the value doesn't exist, track the size in case it's added later
122
- // but don't create tracked entries willy-nilly to track all possible values
123
- this.$size;
124
- } else {
125
- get(t);
126
- }
127
-
128
- return has;
129
- }
130
-
131
- clear() {
132
- var block = safe_scope();
118
+ if (t === undefined) {
119
+ // if no tracked it also means super didn't have it
120
+ // It's not possible to have a disconnect, we track each value
121
+ // If the value doesn't exist, track the size in case it's added later
122
+ // but don't create tracked entries willy-nilly to track all possible values
123
+ this.$size;
124
+ } else {
125
+ get(t);
126
+ }
127
+
128
+ return has;
129
+ }
130
+
131
+ clear() {
132
+ var block = safe_scope();
133
133
 
134
- if (super.size === 0) {
135
- return;
136
- }
134
+ if (super.size === 0) {
135
+ return;
136
+ }
137
137
 
138
- for (var [_, t] of this.#tracked_items) {
139
- increment(t, block);
140
- }
138
+ for (var [_, t] of this.#tracked_items) {
139
+ increment(t, block);
140
+ }
141
141
 
142
- super.clear();
143
- this.#tracked_items.clear();
144
- set(this.#tracked_size, 0, block);
145
- }
142
+ super.clear();
143
+ this.#tracked_items.clear();
144
+ set(this.#tracked_size, 0, block);
145
+ }
146
146
 
147
- get $size() {
148
- return get(this.#tracked_size);
149
- }
147
+ get $size() {
148
+ return get(this.#tracked_size);
149
+ }
150
150
 
151
- toJSON() {
152
- this.$size;
151
+ toJSON() {
152
+ this.$size;
153
153
 
154
- return [...this];
155
- }
154
+ return [...this];
155
+ }
156
156
  }