ripple 0.2.215 → 0.3.0

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 (157) hide show
  1. package/CHANGELOG.md +86 -0
  2. package/package.json +16 -7
  3. package/src/compiler/errors.js +1 -1
  4. package/src/compiler/identifier-utils.js +2 -0
  5. package/src/compiler/index.d.ts +2 -6
  6. package/src/compiler/phases/1-parse/index.js +171 -233
  7. package/src/compiler/phases/2-analyze/index.js +216 -16
  8. package/src/compiler/phases/2-analyze/prune.js +2 -2
  9. package/src/compiler/phases/3-transform/client/index.js +326 -94
  10. package/src/compiler/phases/3-transform/segments.js +43 -15
  11. package/src/compiler/phases/3-transform/server/index.js +71 -21
  12. package/src/compiler/scope.js +31 -12
  13. package/src/compiler/source-map-utils.js +4 -6
  14. package/src/compiler/types/acorn.d.ts +11 -0
  15. package/src/compiler/types/estree-jsx.d.ts +11 -0
  16. package/src/compiler/types/estree.d.ts +11 -0
  17. package/src/compiler/types/import.d.ts +32 -18
  18. package/src/compiler/types/index.d.ts +75 -23
  19. package/src/compiler/types/parse.d.ts +7 -10
  20. package/src/compiler/utils.js +48 -0
  21. package/src/runtime/array.js +53 -22
  22. package/src/runtime/date.js +15 -5
  23. package/src/runtime/index-client.js +41 -7
  24. package/src/runtime/index-server.js +7 -7
  25. package/src/runtime/internal/client/bindings.js +2 -2
  26. package/src/runtime/internal/client/blocks.js +40 -1
  27. package/src/runtime/internal/client/context.js +8 -0
  28. package/src/runtime/internal/client/for.js +3 -3
  29. package/src/runtime/internal/client/index.js +32 -5
  30. package/src/runtime/internal/client/render.js +20 -8
  31. package/src/runtime/internal/client/runtime.js +9 -7
  32. package/src/runtime/internal/client/template.js +1 -1
  33. package/src/runtime/internal/client/try.js +15 -22
  34. package/src/runtime/internal/client/utils.js +1 -1
  35. package/src/runtime/internal/server/context.js +8 -0
  36. package/src/runtime/internal/server/index.js +99 -6
  37. package/src/runtime/map.js +7 -7
  38. package/src/runtime/media-query.js +10 -1
  39. package/src/runtime/object.js +6 -6
  40. package/src/runtime/proxy.js +6 -6
  41. package/src/runtime/set.js +11 -11
  42. package/src/runtime/url-search-params.js +13 -2
  43. package/src/runtime/url.js +15 -5
  44. package/src/utils/builders.js +13 -3
  45. package/tests/client/array/array.copy-within.test.ripple +11 -11
  46. package/tests/client/array/array.derived.test.ripple +42 -42
  47. package/tests/client/array/array.iteration.test.ripple +12 -12
  48. package/tests/client/array/array.mutations.test.ripple +25 -25
  49. package/tests/client/array/array.static.test.ripple +103 -106
  50. package/tests/client/array/array.to-methods.test.ripple +8 -8
  51. package/tests/client/async-suspend.test.ripple +94 -0
  52. package/tests/client/basic/basic.attributes.test.ripple +31 -31
  53. package/tests/client/basic/basic.collections.test.ripple +7 -7
  54. package/tests/client/basic/basic.components.test.ripple +48 -10
  55. package/tests/client/basic/basic.errors.test.ripple +111 -30
  56. package/tests/client/basic/basic.events.test.ripple +11 -11
  57. package/tests/client/basic/basic.get-set.test.ripple +18 -18
  58. package/tests/client/basic/basic.reactivity.test.ripple +47 -42
  59. package/tests/client/basic/basic.rendering.test.ripple +7 -7
  60. package/tests/client/basic/basic.utilities.test.ripple +4 -4
  61. package/tests/client/boundaries.test.ripple +7 -7
  62. package/tests/client/compiler/__snapshots__/compiler.assignments.test.ripple.snap +2 -2
  63. package/tests/client/compiler/compiler.assignments.test.ripple +21 -21
  64. package/tests/client/compiler/compiler.basic.test.ripple +223 -82
  65. package/tests/client/compiler/compiler.tracked-access.test.ripple +8 -9
  66. package/tests/client/composite/composite.dynamic-components.test.ripple +8 -8
  67. package/tests/client/composite/composite.generics.test.ripple +4 -4
  68. package/tests/client/composite/composite.props.test.ripple +9 -9
  69. package/tests/client/composite/composite.reactivity.test.ripple +32 -26
  70. package/tests/client/composite/composite.render.test.ripple +13 -4
  71. package/tests/client/computed-properties.test.ripple +3 -3
  72. package/tests/client/context.test.ripple +3 -3
  73. package/tests/client/css/global-additional-cases.test.ripple +4 -4
  74. package/tests/client/css/style-identifier.test.ripple +49 -41
  75. package/tests/client/date.test.ripple +40 -40
  76. package/tests/client/dynamic-elements.test.ripple +165 -30
  77. package/tests/client/events.test.ripple +25 -25
  78. package/tests/client/for.test.ripple +76 -8
  79. package/tests/client/function-overload.test.ripple +0 -1
  80. package/tests/client/head.test.ripple +7 -7
  81. package/tests/client/html.test.ripple +2 -2
  82. package/tests/client/input-value.test.ripple +174 -176
  83. package/tests/client/map.test.ripple +21 -21
  84. package/tests/client/media-query.test.ripple +4 -4
  85. package/tests/client/object.test.ripple +12 -12
  86. package/tests/client/portal.test.ripple +4 -4
  87. package/tests/client/ref.test.ripple +5 -5
  88. package/tests/client/return.test.ripple +17 -17
  89. package/tests/client/set.test.ripple +16 -16
  90. package/tests/client/svg.test.ripple +6 -7
  91. package/tests/client/switch.test.ripple +10 -10
  92. package/tests/client/tracked-expression.test.ripple +1 -3
  93. package/tests/client/try.test.ripple +56 -4
  94. package/tests/client/url/url.derived.test.ripple +10 -9
  95. package/tests/client/url/url.parsing.test.ripple +10 -10
  96. package/tests/client/url/url.partial-removal.test.ripple +10 -10
  97. package/tests/client/url/url.reactivity.test.ripple +17 -17
  98. package/tests/client/url/url.serialization.test.ripple +4 -4
  99. package/tests/client/url-search-params/url-search-params.derived.test.ripple +11 -10
  100. package/tests/client/url-search-params/url-search-params.initialization.test.ripple +5 -7
  101. package/tests/client/url-search-params/url-search-params.iteration.test.ripple +13 -13
  102. package/tests/client/url-search-params/url-search-params.mutation.test.ripple +19 -19
  103. package/tests/client/url-search-params/url-search-params.retrieval.test.ripple +17 -17
  104. package/tests/client/url-search-params/url-search-params.serialization.test.ripple +5 -5
  105. package/tests/client/url-search-params/url-search-params.tracked-url.test.ripple +5 -5
  106. package/tests/hydration/compiled/client/events.js +8 -11
  107. package/tests/hydration/compiled/client/for.js +20 -23
  108. package/tests/hydration/compiled/client/head.js +17 -19
  109. package/tests/hydration/compiled/client/hmr.js +84 -0
  110. package/tests/hydration/compiled/client/html.js +1 -15
  111. package/tests/hydration/compiled/client/if-children.js +7 -9
  112. package/tests/hydration/compiled/client/if.js +5 -7
  113. package/tests/hydration/compiled/client/mixed-control-flow.js +3 -5
  114. package/tests/hydration/compiled/client/portal.js +1 -1
  115. package/tests/hydration/compiled/client/reactivity.js +9 -11
  116. package/tests/hydration/compiled/client/return.js +11 -13
  117. package/tests/hydration/compiled/client/switch.js +4 -6
  118. package/tests/hydration/compiled/server/basic.js +0 -1
  119. package/tests/hydration/compiled/server/composite.js +0 -3
  120. package/tests/hydration/compiled/server/events.js +8 -12
  121. package/tests/hydration/compiled/server/for.js +20 -23
  122. package/tests/hydration/compiled/server/head.js +17 -19
  123. package/tests/hydration/compiled/server/hmr.js +107 -0
  124. package/tests/hydration/compiled/server/html.js +1 -35
  125. package/tests/hydration/compiled/server/if-children.js +7 -11
  126. package/tests/hydration/compiled/server/if.js +5 -7
  127. package/tests/hydration/compiled/server/mixed-control-flow.js +3 -5
  128. package/tests/hydration/compiled/server/portal.js +1 -9
  129. package/tests/hydration/compiled/server/reactivity.js +9 -11
  130. package/tests/hydration/compiled/server/return.js +11 -13
  131. package/tests/hydration/compiled/server/switch.js +4 -6
  132. package/tests/hydration/components/events.ripple +8 -9
  133. package/tests/hydration/components/for.ripple +20 -21
  134. package/tests/hydration/components/head.ripple +6 -8
  135. package/tests/hydration/components/hmr.ripple +34 -0
  136. package/tests/hydration/components/html.ripple +1 -3
  137. package/tests/hydration/components/if-children.ripple +7 -8
  138. package/tests/hydration/components/if.ripple +5 -6
  139. package/tests/hydration/components/mixed-control-flow.ripple +4 -6
  140. package/tests/hydration/components/portal.ripple +1 -1
  141. package/tests/hydration/components/reactivity.ripple +9 -10
  142. package/tests/hydration/components/return.ripple +11 -12
  143. package/tests/hydration/components/switch.ripple +6 -8
  144. package/tests/hydration/hmr.test.js +74 -0
  145. package/tests/server/await.test.ripple +2 -2
  146. package/tests/server/basic.attributes.test.ripple +19 -21
  147. package/tests/server/basic.components.test.ripple +13 -7
  148. package/tests/server/basic.test.ripple +20 -21
  149. package/tests/server/compiler.test.ripple +5 -5
  150. package/tests/server/composite.props.test.ripple +6 -7
  151. package/tests/server/composite.test.ripple +4 -4
  152. package/tests/server/context.test.ripple +1 -3
  153. package/tests/server/dynamic-elements.test.ripple +24 -24
  154. package/tests/server/head.test.ripple +5 -7
  155. package/tests/server/style-identifier.test.ripple +16 -17
  156. package/types/index.d.ts +266 -62
  157. package/types/server.d.ts +6 -6
package/types/index.d.ts CHANGED
@@ -28,40 +28,92 @@ export function flushSync<T>(fn?: () => T): T;
28
28
 
29
29
  export function effect(fn: (() => void) | (() => () => void)): void;
30
30
 
31
- export interface TrackedArrayConstructor {
32
- new <T>(...elements: T[]): TrackedArray<T>; // must be used with `new`
33
- from<T>(arrayLike: ArrayLike<T>): TrackedArray<T>;
34
- of<T>(...items: T[]): TrackedArray<T>;
35
- fromAsync<T>(iterable: AsyncIterable<T>): Promise<TrackedArray<T>>;
36
- }
31
+ export interface RippleArrayStatics {
32
+ from: {
33
+ <T>(array_like: ArrayLike<T>): RippleArray<T>;
34
+ <T, U>(
35
+ array_like: ArrayLike<T>,
36
+ mapfn: (value: T, index: number) => U,
37
+ this_arg?: any,
38
+ ): RippleArray<U>;
39
+ <T>(iterable: Iterable<T>): RippleArray<T>;
40
+ <T, U>(
41
+ iterable: Iterable<T>,
42
+ mapfn: (value: T, index: number) => U,
43
+ this_arg?: any,
44
+ ): RippleArray<U>;
45
+ };
37
46
 
38
- export interface TrackedArray<T> extends Array<T> {}
47
+ of: {
48
+ <T>(...items: T[]): RippleArray<T>;
49
+ };
39
50
 
40
- export const TrackedArray: TrackedArrayConstructor;
51
+ fromAsync: {
52
+ <T>(
53
+ iterable_or_array_like: AsyncIterable<T> | Iterable<T> | ArrayLike<T>,
54
+ ): Promise<RippleArray<Awaited<T>>>;
55
+ <T, U>(
56
+ iterable_or_array_like: AsyncIterable<T> | Iterable<T> | ArrayLike<T>,
57
+ mapfn: (value: Awaited<T>, index: number) => U | PromiseLike<U>,
58
+ this_arg?: any,
59
+ ): Promise<RippleArray<Awaited<U>>>;
60
+ };
61
+ }
62
+ export interface RippleArrayCallable extends RippleArrayStatics {
63
+ <T>(...elements: T[]): RippleArray<T>;
64
+ }
65
+ export interface RippleArrayConstructor extends RippleArrayStatics {
66
+ new <T>(...elements: T[]): RippleArray<T>;
67
+ }
68
+ export interface RippleArray<T> extends Array<T> {}
69
+ export const RippleArray: RippleArrayConstructor;
41
70
 
42
- export class Context<T = undefined> {
43
- constructor(initial_value?: T);
71
+ export interface ContextCallable {
72
+ <T = undefined>(initial_value?: T): Context<T>;
73
+ }
74
+ export interface ContextConstructor {
75
+ new <T = undefined>(initial_value?: T): Context<T>;
76
+ }
77
+ declare const CONTEXT_BRAND: unique symbol;
78
+ export interface Context<T = undefined> {
44
79
  get(): T;
45
80
  set(value: T): void;
46
- #private;
81
+ [CONTEXT_BRAND]: void;
47
82
  }
83
+ export declare const Context: ContextConstructor;
48
84
 
49
- export class TrackedSet<T> extends Set<T> {
50
- isDisjointFrom<U>(other: ReadonlySetLike<U> | TrackedSet<U>): boolean;
51
- isSubsetOf<U>(other: ReadonlySetLike<U> | TrackedSet<U>): boolean;
52
- isSupersetOf<U>(other: ReadonlySetLike<U> | TrackedSet<U>): boolean;
53
- difference<U>(other: ReadonlySetLike<U> | TrackedSet<U>): TrackedSet<T>;
54
- intersection<U>(other: ReadonlySetLike<U> | TrackedSet<U>): TrackedSet<T & U>;
55
- symmetricDifference<U>(other: ReadonlySetLike<U> | TrackedSet<U>): TrackedSet<T | U>;
56
- union<U>(other: ReadonlySetLike<U> | TrackedSet<U>): TrackedSet<T | U>;
85
+ export interface RippleSetCallable {
86
+ <T>(values?: readonly T[] | null): RippleSet<T>;
87
+ }
88
+ export interface RippleSetConstructor {
89
+ new <T>(values?: readonly T[] | null): RippleSet<T>;
90
+ }
91
+ declare const RIPPLE_SET_BRAND: unique symbol;
92
+ export interface RippleSet<T> extends Set<T> {
93
+ isDisjointFrom<U>(other: ReadonlySetLike<U> | RippleSet<U>): boolean;
94
+ isSubsetOf<U>(other: ReadonlySetLike<U> | RippleSet<U>): boolean;
95
+ isSupersetOf<U>(other: ReadonlySetLike<U> | RippleSet<U>): boolean;
96
+ difference<U>(other: ReadonlySetLike<U> | RippleSet<U>): RippleSet<T>;
97
+ intersection<U>(other: ReadonlySetLike<U> | RippleSet<U>): RippleSet<T & U>;
98
+ symmetricDifference<U>(other: ReadonlySetLike<U> | RippleSet<U>): RippleSet<T | U>;
99
+ union<U>(other: ReadonlySetLike<U> | RippleSet<U>): RippleSet<T | U>;
57
100
  toJSON(): T[];
58
- #private;
101
+ [RIPPLE_SET_BRAND]: void;
59
102
  }
103
+ export const RippleSet: RippleSetConstructor;
60
104
 
61
- export class TrackedMap<K, V> extends Map<K, V> {
105
+ export interface RippleMapCallable {
106
+ <K, V>(entries?: readonly (readonly [K, V])[] | null): RippleMap<K, V>;
107
+ }
108
+ export interface RippleMapConstructor {
109
+ new <K, V>(entries?: readonly (readonly [K, V])[] | null): RippleMap<K, V>;
110
+ }
111
+ declare const RIPPLE_MAP_BRAND: unique symbol;
112
+ export interface RippleMap<K, V> extends Map<K, V> {
62
113
  toJSON(): [K, V][];
63
- #private;
114
+ [RIPPLE_MAP_BRAND]: void;
64
115
  }
116
+ export const RippleMap: RippleMapConstructor;
65
117
 
66
118
  // Compiler-injected runtime symbols (for Ripple component development)
67
119
  declare global {
@@ -82,6 +134,7 @@ declare global {
82
134
  get_tracked(node: any): any;
83
135
  get_derived(node: any): any;
84
136
  set(node: any, value: any): any;
137
+ document: Document;
85
138
  // Add other runtime functions as needed for TypeScript analysis
86
139
  };
87
140
  }
@@ -108,6 +161,9 @@ export type PropsWithExtras<T extends object> = Props & T & Record<string, unkno
108
161
  export type PropsWithChildren<T extends object = {}> = Expand<
109
162
  Omit<T, 'children'> & { children: Component }
110
163
  >;
164
+ export type PropsWithChildrenOptional<T extends object = {}> = Expand<
165
+ Omit<T, 'children'> & { children?: Component }
166
+ >;
111
167
  export type PropsNoChildren<T extends object = {}> = Expand<T>;
112
168
 
113
169
  type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;
@@ -129,6 +185,8 @@ export function get<V>(tracked: Tracked<V>): V;
129
185
 
130
186
  export function set<V>(tracked: Tracked<V>, value: V): void;
131
187
 
188
+ // Overload for tracked values - returns the original tracked value type
189
+ export function track<V>(value: Tracked<V>): Tracked<V>;
132
190
  // Overload for function values - infers the return type of the function
133
191
  export function track<V>(
134
192
  value: () => V,
@@ -190,11 +248,11 @@ export function on(
190
248
  options?: ExtendedEventOptions | undefined,
191
249
  ): OnEventListenerRemover;
192
250
 
193
- export type TrackedObjectShallow<T> = {
251
+ export type RippleObjectShallow<T> = {
194
252
  [K in keyof T]: T[K] | Tracked<T[K]>;
195
253
  };
196
254
 
197
- export type TrackedObjectDeep<T> = T extends
255
+ export type RippleObjectDeep<T> = T extends
198
256
  | string
199
257
  | number
200
258
  | boolean
@@ -203,66 +261,125 @@ export type TrackedObjectDeep<T> = T extends
203
261
  | symbol
204
262
  | bigint
205
263
  ? T | Tracked<T>
206
- : T extends TrackedArray<infer U>
207
- ? TrackedArray<U> | Tracked<TrackedArray<U>>
208
- : T extends TrackedSet<infer U>
209
- ? TrackedSet<U> | Tracked<TrackedSet<U>>
210
- : T extends TrackedMap<infer K, infer V>
211
- ? TrackedMap<K, V> | Tracked<TrackedMap<K, V>>
264
+ : T extends RippleArray<infer U>
265
+ ? RippleArray<U> | Tracked<RippleArray<U>>
266
+ : T extends RippleSet<infer U>
267
+ ? RippleSet<U> | Tracked<RippleSet<U>>
268
+ : T extends RippleMap<infer K, infer V>
269
+ ? RippleMap<K, V> | Tracked<RippleMap<K, V>>
212
270
  : T extends Array<infer U>
213
- ? Array<TrackedObjectDeep<U>> | Tracked<Array<TrackedObjectDeep<U>>>
271
+ ? Array<RippleObjectDeep<U>> | Tracked<Array<RippleObjectDeep<U>>>
214
272
  : T extends Set<infer U>
215
- ? Set<TrackedObjectDeep<U>> | Tracked<Set<TrackedObjectDeep<U>>>
273
+ ? Set<RippleObjectDeep<U>> | Tracked<Set<RippleObjectDeep<U>>>
216
274
  : T extends Map<infer K, infer V>
217
275
  ?
218
- | Map<TrackedObjectDeep<K>, TrackedObjectDeep<V>>
219
- | Tracked<Map<TrackedObjectDeep<K>, TrackedObjectDeep<V>>>
276
+ | Map<RippleObjectDeep<K>, RippleObjectDeep<V>>
277
+ | Tracked<Map<RippleObjectDeep<K>, RippleObjectDeep<V>>>
220
278
  : T extends object
221
- ? { [K in keyof T]: TrackedObjectDeep<T[K]> | Tracked<TrackedObjectDeep<T[K]>> }
279
+ ? { [K in keyof T]: RippleObjectDeep<T[K]> | Tracked<RippleObjectDeep<T[K]>> }
222
280
  : T | Tracked<T>;
223
281
 
224
- export type TrackedObject<T extends object = object> = T & {};
225
-
226
- export interface TrackedObjectConstructor {
227
- new <T extends Object>(obj: T): TrackedObject<T>;
282
+ export interface RippleObjectCallable {
283
+ <T extends Object>(obj: T): RippleObject<T>;
228
284
  }
229
-
230
- export const TrackedObject: TrackedObjectConstructor;
231
-
232
- export class TrackedDate extends Date {
233
- constructor(...params: any[]);
234
- #private;
285
+ export interface RippleObjectConstructor {
286
+ new <T extends Object>(obj: T): RippleObject<T>;
287
+ }
288
+ export interface RippleObject<T> extends Object {}
289
+ export const RippleObject: RippleObjectConstructor;
290
+
291
+ export interface RippleDateCallable {
292
+ (): RippleDate;
293
+ (value: number | string): RippleDate;
294
+ (
295
+ year: number,
296
+ monthIndex: number,
297
+ date?: number,
298
+ hours?: number,
299
+ minutes?: number,
300
+ seconds?: number,
301
+ ms?: number,
302
+ ): RippleDate;
303
+ }
304
+ export interface RippleDateConstructor {
305
+ new (): RippleDate;
306
+ new (value: number | string): RippleDate;
307
+ new (
308
+ year: number,
309
+ monthIndex: number,
310
+ date?: number,
311
+ hours?: number,
312
+ minutes?: number,
313
+ seconds?: number,
314
+ ms?: number,
315
+ ): RippleDate;
316
+ }
317
+ declare const RIPPLE_DATE_BRAND: unique symbol;
318
+ export interface RippleDate extends Date {
319
+ [RIPPLE_DATE_BRAND]: void;
320
+ }
321
+ export const RippleDate: RippleDateConstructor;
322
+
323
+ export interface RippleURLSearchParamsCallable {
324
+ (
325
+ init?:
326
+ | string
327
+ | readonly (readonly [string, string])[]
328
+ | Record<string, string>
329
+ | URLSearchParams
330
+ | RippleURLSearchParams,
331
+ ): RippleURLSearchParams;
332
+ }
333
+ export interface RippleURLSearchParamsConstructor {
334
+ new (
335
+ init?:
336
+ | string
337
+ | readonly (readonly [string, string])[]
338
+ | Record<string, string>
339
+ | URLSearchParams
340
+ | RippleURLSearchParams,
341
+ ): RippleURLSearchParams;
235
342
  }
236
-
237
343
  declare const REPLACE: unique symbol;
238
-
239
- export class TrackedURLSearchParams extends URLSearchParams {
344
+ declare const RIPPLE_URL_SEARCH_PARAMS_BRAND: unique symbol;
345
+ export interface RippleURLSearchParams extends URLSearchParams {
240
346
  [REPLACE](params: URLSearchParams): void;
241
- #private;
347
+ [RIPPLE_URL_SEARCH_PARAMS_BRAND]: void;
242
348
  }
349
+ export const RippleURLSearchParams: RippleURLSearchParamsConstructor;
243
350
 
244
- export class TrackedURL extends URL {
245
- get searchParams(): TrackedURLSearchParams;
246
- #private;
351
+ export interface RippleURLCallable {
352
+ (url: string | URL, base?: string | URL | RippleURL): RippleURL;
353
+ }
354
+ export interface RippleURLConstructor {
355
+ new (url: string | URL, base?: string | URL | RippleURL): RippleURL;
247
356
  }
357
+ declare const RIPPLE_URL_BRAND: unique symbol;
358
+ export interface RippleURL extends URL {
359
+ get searchParams(): RippleURLSearchParams;
360
+ [RIPPLE_URL_BRAND]: void;
361
+ }
362
+ export const RippleURL: RippleURLConstructor;
248
363
 
249
364
  export function createSubscriber(start: () => void | (() => void)): () => void;
250
365
 
366
+ declare const REACTIVE_VALUE_BRAND: unique symbol;
251
367
  interface ReactiveValue<V> extends Tracked<V> {
252
368
  new (fn: () => Tracked<V>, start: () => void | (() => void)): Tracked<V>;
253
- /** @private */
254
- _brand: void;
369
+ [REACTIVE_VALUE_BRAND]: void;
255
370
  }
256
371
 
257
- export interface MediaQuery extends Tracked<boolean> {
258
- new (query: string, fallback?: boolean | undefined): Tracked<boolean>;
259
- /** @private */
260
- _brand: void;
372
+ export interface MediaQueryCallable {
373
+ (query: string, fallback?: boolean | undefined): Tracked<boolean>;
261
374
  }
262
-
263
- export const MediaQuery: {
375
+ export interface MediaQueryConstructor {
264
376
  new (query: string, fallback?: boolean | undefined): Tracked<boolean>;
265
- };
377
+ }
378
+ declare const MEDIA_QUERY_BRAND: unique symbol;
379
+ export interface MediaQuery extends Tracked<boolean> {
380
+ [MEDIA_QUERY_BRAND]: void;
381
+ }
382
+ export const MediaQuery: MediaQueryConstructor;
266
383
 
267
384
  export function Portal<V = HTMLElement>({
268
385
  target,
@@ -279,83 +396,170 @@ export function bindValue<V>(
279
396
  tracked: Tracked<V> | GetFunction<V>,
280
397
  setter?: SetFunction<V>,
281
398
  ): (node: HTMLInputElement | HTMLSelectElement) => void;
399
+ export function bindValue<V>(
400
+ tracked: Tracked<V> | GetFunction<V>,
401
+ setter?: SetFunction<NonNullable<V>>,
402
+ ): (node: HTMLInputElement | HTMLSelectElement) => void;
282
403
 
283
404
  export function bindChecked<V>(
284
405
  tracked: Tracked<V> | GetFunction<V>,
285
406
  setter?: SetFunction<V>,
286
407
  ): (node: HTMLInputElement) => void;
408
+ export function bindChecked<V>(
409
+ tracked: Tracked<V> | GetFunction<V>,
410
+ setter?: SetFunction<NonNullable<V>>,
411
+ ): (node: HTMLInputElement) => void;
287
412
 
288
413
  export function bindClientWidth<V>(
289
414
  tracked: Tracked<V> | GetFunction<V>,
290
415
  setter?: SetFunction<V>,
291
416
  ): (node: HTMLElement) => void;
417
+ export function bindClientWidth<V>(
418
+ tracked: Tracked<V> | GetFunction<V>,
419
+ setter?: SetFunction<NonNullable<V>>,
420
+ ): (node: HTMLElement) => void;
292
421
 
293
422
  export function bindClientHeight<V>(
294
423
  tracked: Tracked<V> | GetFunction<V>,
295
424
  setter?: SetFunction<V>,
296
425
  ): (node: HTMLElement) => void;
426
+ export function bindClientHeight<V>(
427
+ tracked: Tracked<V> | GetFunction<V>,
428
+ setter?: SetFunction<NonNullable<V>>,
429
+ ): (node: HTMLElement) => void;
297
430
 
298
431
  export function bindContentRect<V>(
299
432
  tracked: Tracked<V> | GetFunction<V>,
300
433
  setter?: SetFunction<V>,
301
434
  ): (node: HTMLElement) => void;
435
+ export function bindContentRect<V>(
436
+ tracked: Tracked<V> | GetFunction<V>,
437
+ setter?: SetFunction<NonNullable<V>>,
438
+ ): (node: HTMLElement) => void;
302
439
 
303
440
  export function bindContentBoxSize<V>(
304
441
  tracked: Tracked<V> | GetFunction<V>,
305
442
  setter?: SetFunction<V>,
306
443
  ): (node: HTMLElement) => void;
444
+ export function bindContentBoxSize<V>(
445
+ tracked: Tracked<V> | GetFunction<V>,
446
+ setter?: SetFunction<NonNullable<V>>,
447
+ ): (node: HTMLElement) => void;
307
448
 
308
449
  export function bindBorderBoxSize<V>(
309
450
  tracked: Tracked<V> | GetFunction<V>,
310
451
  setter?: SetFunction<V>,
311
452
  ): (node: HTMLElement) => void;
453
+ export function bindBorderBoxSize<V>(
454
+ tracked: Tracked<V> | GetFunction<V>,
455
+ setter?: SetFunction<NonNullable<V>>,
456
+ ): (node: HTMLElement) => void;
312
457
 
313
458
  export function bindDevicePixelContentBoxSize<V>(
314
459
  tracked: Tracked<V> | GetFunction<V>,
315
460
  setter?: SetFunction<V>,
316
461
  ): (node: HTMLElement) => void;
462
+ export function bindDevicePixelContentBoxSize<V>(
463
+ tracked: Tracked<V> | GetFunction<V>,
464
+ setter?: SetFunction<NonNullable<V>>,
465
+ ): (node: HTMLElement) => void;
317
466
 
318
467
  export function bindInnerHTML<V>(
319
468
  tracked: Tracked<V> | GetFunction<V>,
320
469
  setter?: SetFunction<V>,
321
470
  ): (node: HTMLElement) => void;
471
+ export function bindInnerHTML<V>(
472
+ tracked: Tracked<V> | GetFunction<V>,
473
+ setter?: SetFunction<NonNullable<V>>,
474
+ ): (node: HTMLElement) => void;
322
475
 
323
476
  export function bindInnerText<V>(
324
477
  tracked: Tracked<V> | GetFunction<V>,
325
478
  setter?: SetFunction<V>,
326
479
  ): (node: HTMLElement) => void;
480
+ export function bindInnerText<V>(
481
+ tracked: Tracked<V> | GetFunction<V>,
482
+ setter?: SetFunction<NonNullable<V>>,
483
+ ): (node: HTMLElement) => void;
327
484
 
328
485
  export function bindTextContent<V>(
329
486
  tracked: Tracked<V> | GetFunction<V>,
330
487
  setter?: SetFunction<V>,
331
488
  ): (node: HTMLElement) => void;
489
+ export function bindTextContent<V>(
490
+ tracked: Tracked<V> | GetFunction<V>,
491
+ setter?: SetFunction<NonNullable<V>>,
492
+ ): (node: HTMLElement) => void;
332
493
 
333
494
  export function bindNode<V>(
334
495
  tracked: Tracked<V> | GetFunction<V>,
335
496
  setter?: SetFunction<V>,
336
497
  ): (node: HTMLElement) => void;
498
+ export function bindNode<V>(
499
+ tracked: Tracked<V> | GetFunction<V>,
500
+ setter?: SetFunction<NonNullable<V>>,
501
+ ): (node: HTMLElement) => void;
337
502
 
338
503
  export function bindGroup<V>(
339
504
  tracked: Tracked<V> | GetFunction<V>,
340
505
  setter?: SetFunction<V>,
341
506
  ): (node: HTMLInputElement) => void;
507
+ export function bindGroup<V>(
508
+ tracked: Tracked<V> | GetFunction<V>,
509
+ setter?: SetFunction<NonNullable<V>>,
510
+ ): (node: HTMLInputElement) => void;
342
511
 
343
512
  export function bindOffsetHeight<V>(
344
513
  tracked: Tracked<V> | GetFunction<V>,
345
514
  setter?: SetFunction<V>,
346
515
  ): (node: HTMLElement) => void;
516
+ export function bindOffsetHeight<V>(
517
+ tracked: Tracked<V> | GetFunction<V>,
518
+ setter?: SetFunction<NonNullable<V>>,
519
+ ): (node: HTMLElement) => void;
347
520
 
348
521
  export function bindOffsetWidth<V>(
349
522
  tracked: Tracked<V> | GetFunction<V>,
350
523
  setter?: SetFunction<V>,
351
524
  ): (node: HTMLElement) => void;
525
+ export function bindOffsetWidth<V>(
526
+ tracked: Tracked<V> | GetFunction<V>,
527
+ setter?: SetFunction<NonNullable<V>>,
528
+ ): (node: HTMLElement) => void;
352
529
 
353
530
  export function bindIndeterminate<V>(
354
531
  tracked: Tracked<V> | GetFunction<V>,
355
532
  setter?: SetFunction<V>,
356
533
  ): (node: HTMLInputElement) => void;
534
+ export function bindIndeterminate<V>(
535
+ tracked: Tracked<V> | GetFunction<V>,
536
+ setter?: SetFunction<NonNullable<V>>,
537
+ ): (node: HTMLInputElement) => void;
357
538
 
358
- export function bindFiles<V>(
539
+ export function bindFiles<V extends FileList>(
359
540
  tracked: Tracked<V> | GetFunction<V>,
360
541
  setter?: SetFunction<V>,
361
542
  ): (node: HTMLInputElement) => void;
543
+ export function bindFiles<V extends FileList>(
544
+ tracked: Tracked<V | null | undefined> | GetFunction<V | null | undefined>,
545
+ setter?: SetFunction<V>,
546
+ ): (node: HTMLInputElement) => void;
547
+
548
+ export interface RippleNamespace {
549
+ array: RippleArrayCallable;
550
+ object: RippleObjectCallable;
551
+ context: ContextCallable;
552
+ date: RippleDateCallable;
553
+ effect: typeof effect;
554
+ map: RippleMapCallable;
555
+ mediaQuery: MediaQueryCallable;
556
+ set: RippleSetCallable;
557
+ url: RippleURLCallable;
558
+ urlSearchParams: RippleURLSearchParamsCallable;
559
+ untrack: typeof untrack;
560
+ track: typeof track;
561
+ trackSplit: typeof trackSplit;
562
+ style: Record<string, string>; // Placeholder for style-related runtime class names (e.g., #ripple.style.someClass)
563
+ }
564
+
565
+ export declare const ripple_namespace: RippleNamespace;
package/types/server.d.ts CHANGED
@@ -9,12 +9,12 @@ export {
9
9
  effect,
10
10
  tick,
11
11
  Context,
12
- TrackedArray,
13
- TrackedSet,
14
- TrackedMap,
15
- TrackedDate,
16
- TrackedURL,
17
- TrackedURLSearchParams,
12
+ RippleArray,
13
+ RippleSet,
14
+ RippleMap,
15
+ RippleDate,
16
+ RippleURL,
17
+ RippleURLSearchParams,
18
18
  } from './index.js';
19
19
 
20
20
  export interface SSRRenderOutput {