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
@@ -1,9 +1,9 @@
1
- /** @import { Block } from '#client' */
1
+ /** @import { Block, Derived, Tracked } from '#client' */
2
2
 
3
3
  import { destroy_block, root } from './internal/client/blocks.js';
4
4
  import { handle_root_events } from './internal/client/events.js';
5
5
  import { init_operations } from './internal/client/operations.js';
6
- import { active_block } from './internal/client/runtime.js';
6
+ import { active_block, tracked, derived } from './internal/client/runtime.js';
7
7
  import { create_anchor } from './internal/client/utils.js';
8
8
 
9
9
  // Re-export JSX runtime functions for jsxImportSource: "ripple"
@@ -15,28 +15,40 @@ export { jsx, jsxs, Fragment } from '../jsx-runtime.js';
15
15
  * @returns {() => void}
16
16
  */
17
17
  export function mount(component, options) {
18
- init_operations();
18
+ init_operations();
19
19
 
20
- const props = options.props || {};
21
- const target = options.target;
22
- const anchor = create_anchor();
23
- target.append(anchor);
20
+ const props = options.props || {};
21
+ const target = options.target;
22
+ const anchor = create_anchor();
23
+ target.append(anchor);
24
24
 
25
- const cleanup_events = handle_root_events(target);
25
+ const cleanup_events = handle_root_events(target);
26
26
 
27
- const _root = root(() => {
28
- component(anchor, props, active_block);
29
- });
27
+ const _root = root(() => {
28
+ component(anchor, props, active_block);
29
+ });
30
30
 
31
- return () => {
32
- cleanup_events();
33
- destroy_block(_root);
34
- };
31
+ return () => {
32
+ cleanup_events();
33
+ destroy_block(_root);
34
+ };
35
35
  }
36
36
 
37
37
  export { create_context as createContext } from './internal/client/context.js';
38
38
 
39
- export { flush_sync as flushSync, untrack, deferred, tracked } from './internal/client/runtime.js';
39
+ export { flush_sync as flushSync, untrack, deferred } from './internal/client/runtime.js';
40
+
41
+ /**
42
+ * @param {any} v
43
+ * @param {Block} b
44
+ * @returns {Tracked | Derived}
45
+ */
46
+ export function track(v, b) {
47
+ if (typeof v === 'function') {
48
+ return derived(v, b);
49
+ }
50
+ return tracked(v, b);
51
+ }
40
52
 
41
53
  export { RippleArray } from './array.js';
42
54
 
@@ -50,4 +62,4 @@ export { user_effect as effect } from './internal/client/blocks.js';
50
62
 
51
63
  export { Portal } from './internal/client/portal.js';
52
64
 
53
- export { ref_prop as createRefKey } from './internal/client/runtime.js';
65
+ export { ref_prop as createRefKey } from './internal/client/runtime.js';
@@ -11,20 +11,20 @@ const array_proto = Array.prototype;
11
11
  * @returns {T}
12
12
  */
13
13
  export function array_reduce(array, callback, initial_value) {
14
- // @ts-expect-error
15
- var tracked_properties = array[TRACKED_OBJECT];
14
+ // @ts-expect-error
15
+ var tracked_properties = array[TRACKED_OBJECT];
16
16
 
17
- if (tracked_properties === undefined || array.reduce !== array_proto.reduce) {
18
- return array.reduce(callback, initial_value);
19
- }
17
+ if (tracked_properties === undefined || array.reduce !== array_proto.reduce) {
18
+ return array.reduce(callback, initial_value);
19
+ }
20
20
 
21
- let accumulator = initial_value;
21
+ let accumulator = initial_value;
22
22
 
23
- for (let i = 0; i < array.length; i++) {
24
- accumulator = callback(accumulator, old_get_property(array, i), i, array);
25
- }
23
+ for (let i = 0; i < array.length; i++) {
24
+ accumulator = callback(accumulator, old_get_property(array, i), i, array);
25
+ }
26
26
 
27
- return accumulator;
27
+ return accumulator;
28
28
  }
29
29
 
30
30
  /**
@@ -34,21 +34,21 @@ export function array_reduce(array, callback, initial_value) {
34
34
  * @returns {string}
35
35
  */
36
36
  export function array_join(array, separator) {
37
- // @ts-expect-error
38
- var tracked_properties = array[TRACKED_OBJECT];
39
- if (tracked_properties === undefined || array.join !== array_proto.join) {
40
- return array.join(separator);
41
- }
42
-
43
- let result = '';
44
- for (let i = 0; i < array.length; i++) {
45
- if (i > 0 && separator !== undefined) {
46
- result += separator;
47
- }
48
- result += String(old_get_property(array, i));
49
- }
50
-
51
- return result;
37
+ // @ts-expect-error
38
+ var tracked_properties = array[TRACKED_OBJECT];
39
+ if (tracked_properties === undefined || array.join !== array_proto.join) {
40
+ return array.join(separator);
41
+ }
42
+
43
+ let result = '';
44
+ for (let i = 0; i < array.length; i++) {
45
+ if (i > 0 && separator !== undefined) {
46
+ result += separator;
47
+ }
48
+ result += String(old_get_property(array, i));
49
+ }
50
+
51
+ return result;
52
52
  }
53
53
 
54
54
  /**
@@ -59,20 +59,20 @@ export function array_join(array, separator) {
59
59
  * @returns {Array<U>}
60
60
  */
61
61
  export function array_map(array, callback) {
62
- // @ts-expect-error
63
- var tracked_properties = array[TRACKED_OBJECT];
64
- if (tracked_properties === undefined || array.map !== array_proto.map) {
65
- return array.map(callback);
66
- }
67
-
68
- const result = [];
69
- for (let i = 0; i < array.length; i++) {
70
- if (i in array) {
71
- result[i] = callback(old_get_property(array, i), i, array);
72
- }
73
- }
74
-
75
- return result;
62
+ // @ts-expect-error
63
+ var tracked_properties = array[TRACKED_OBJECT];
64
+ if (tracked_properties === undefined || array.map !== array_proto.map) {
65
+ return array.map(callback);
66
+ }
67
+
68
+ const result = [];
69
+ for (let i = 0; i < array.length; i++) {
70
+ if (i in array) {
71
+ result[i] = callback(old_get_property(array, i), i, array);
72
+ }
73
+ }
74
+
75
+ return result;
76
76
  }
77
77
 
78
78
  /**
@@ -82,23 +82,23 @@ export function array_map(array, callback) {
82
82
  * @returns {Array<T>}
83
83
  */
84
84
  export function array_filter(array, callback) {
85
- // @ts-expect-error
86
- var tracked_properties = array[TRACKED_OBJECT];
87
- if (tracked_properties === undefined || array.filter !== array_proto.filter) {
88
- return array.filter(callback);
89
- }
90
-
91
- const result = [];
92
- for (let i = 0; i < array.length; i++) {
93
- if (i in array) {
94
- const value = old_get_property(array, i);
95
- if (callback(value, i, array)) {
96
- result.push(value);
97
- }
98
- }
99
- }
100
-
101
- return result;
85
+ // @ts-expect-error
86
+ var tracked_properties = array[TRACKED_OBJECT];
87
+ if (tracked_properties === undefined || array.filter !== array_proto.filter) {
88
+ return array.filter(callback);
89
+ }
90
+
91
+ const result = [];
92
+ for (let i = 0; i < array.length; i++) {
93
+ if (i in array) {
94
+ const value = old_get_property(array, i);
95
+ if (callback(value, i, array)) {
96
+ result.push(value);
97
+ }
98
+ }
99
+ }
100
+
101
+ return result;
102
102
  }
103
103
 
104
104
  /**
@@ -108,17 +108,17 @@ export function array_filter(array, callback) {
108
108
  * @returns {void}
109
109
  */
110
110
  export function array_forEach(array, callback) {
111
- // @ts-expect-error
112
- var tracked_properties = array[TRACKED_OBJECT];
113
- if (tracked_properties === undefined || array.forEach !== array_proto.forEach) {
114
- return array.forEach(callback);
115
- }
116
-
117
- for (let i = 0; i < array.length; i++) {
118
- if (i in array) {
119
- callback(old_get_property(array, i), i, array);
120
- }
121
- }
111
+ // @ts-expect-error
112
+ var tracked_properties = array[TRACKED_OBJECT];
113
+ if (tracked_properties === undefined || array.forEach !== array_proto.forEach) {
114
+ return array.forEach(callback);
115
+ }
116
+
117
+ for (let i = 0; i < array.length; i++) {
118
+ if (i in array) {
119
+ callback(old_get_property(array, i), i, array);
120
+ }
121
+ }
122
122
  }
123
123
 
124
124
  /**
@@ -128,19 +128,19 @@ export function array_forEach(array, callback) {
128
128
  * @returns {boolean}
129
129
  */
130
130
  export function array_includes(array, value) {
131
- // @ts-expect-error
132
- var tracked_properties = array[TRACKED_OBJECT];
133
- if (tracked_properties === undefined || array.includes !== array_proto.includes) {
134
- return array.includes(value);
135
- }
136
-
137
- for (let i = 0; i < array.length; i++) {
138
- if (i in array && old_get_property(array, i) === value) {
139
- return true;
140
- }
141
- }
142
-
143
- return false;
131
+ // @ts-expect-error
132
+ var tracked_properties = array[TRACKED_OBJECT];
133
+ if (tracked_properties === undefined || array.includes !== array_proto.includes) {
134
+ return array.includes(value);
135
+ }
136
+
137
+ for (let i = 0; i < array.length; i++) {
138
+ if (i in array && old_get_property(array, i) === value) {
139
+ return true;
140
+ }
141
+ }
142
+
143
+ return false;
144
144
  }
145
145
 
146
146
  /**
@@ -150,19 +150,19 @@ export function array_includes(array, value) {
150
150
  * @returns {number}
151
151
  */
152
152
  export function array_indexOf(array, value) {
153
- // @ts-expect-error
154
- var tracked_properties = array[TRACKED_OBJECT];
155
- if (tracked_properties === undefined || array.indexOf !== array_proto.indexOf) {
156
- return array.indexOf(value);
157
- }
158
-
159
- for (let i = 0; i < array.length; i++) {
160
- if (i in array && old_get_property(array, i) === value) {
161
- return i;
162
- }
163
- }
164
-
165
- return -1;
153
+ // @ts-expect-error
154
+ var tracked_properties = array[TRACKED_OBJECT];
155
+ if (tracked_properties === undefined || array.indexOf !== array_proto.indexOf) {
156
+ return array.indexOf(value);
157
+ }
158
+
159
+ for (let i = 0; i < array.length; i++) {
160
+ if (i in array && old_get_property(array, i) === value) {
161
+ return i;
162
+ }
163
+ }
164
+
165
+ return -1;
166
166
  }
167
167
 
168
168
  /**
@@ -172,19 +172,19 @@ export function array_indexOf(array, value) {
172
172
  * @returns {number}
173
173
  */
174
174
  export function array_lastIndexOf(array, value) {
175
- // @ts-expect-error
176
- var tracked_properties = array[TRACKED_OBJECT];
177
- if (tracked_properties === undefined || array.lastIndexOf !== array_proto.lastIndexOf) {
178
- return array.lastIndexOf(value);
179
- }
180
-
181
- for (let i = array.length - 1; i >= 0; i--) {
182
- if (i in array && old_get_property(array, i) === value) {
183
- return i;
184
- }
185
- }
186
-
187
- return -1;
175
+ // @ts-expect-error
176
+ var tracked_properties = array[TRACKED_OBJECT];
177
+ if (tracked_properties === undefined || array.lastIndexOf !== array_proto.lastIndexOf) {
178
+ return array.lastIndexOf(value);
179
+ }
180
+
181
+ for (let i = array.length - 1; i >= 0; i--) {
182
+ if (i in array && old_get_property(array, i) === value) {
183
+ return i;
184
+ }
185
+ }
186
+
187
+ return -1;
188
188
  }
189
189
 
190
190
  /**
@@ -334,19 +334,19 @@ export function array_values(array) {
334
334
  * @returns {IterableIterator<[number, T]>}
335
335
  */
336
336
  export function array_entries(array) {
337
- // @ts-expect-error
338
- var tracked_properties = array[TRACKED_OBJECT];
339
- if (tracked_properties === undefined || array.entries !== array_proto.entries) {
340
- return array.entries();
341
- }
342
-
343
- /** @type {Array<[number, T]>} */
344
- const result = [];
345
- for (let i = 0; i < array.length; i++) {
346
- if (i in array) {
347
- result.push([i, old_get_property(array, i)]);
348
- }
349
- }
350
-
351
- return result[Symbol.iterator]();
337
+ // @ts-expect-error
338
+ var tracked_properties = array[TRACKED_OBJECT];
339
+ if (tracked_properties === undefined || array.entries !== array_proto.entries) {
340
+ return array.entries();
341
+ }
342
+
343
+ /** @type {Array<[number, T]>} */
344
+ const result = [];
345
+ for (let i = 0; i < array.length; i++) {
346
+ if (i in array) {
347
+ result.push([i, old_get_property(array, i)]);
348
+ }
349
+ }
350
+
351
+ return result[Symbol.iterator]();
352
352
  }