solid-js 1.3.0 → 1.3.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "solid-js",
3
3
  "description": "A declarative JavaScript library for building user interfaces.",
4
- "version": "1.3.0",
4
+ "version": "1.3.1",
5
5
  "author": "Ryan Carniato",
6
6
  "license": "MIT",
7
7
  "homepage": "https://solidjs.com",
@@ -124,9 +124,9 @@
124
124
  "build": "npm-run-all -cnl build:*",
125
125
  "build:link": "symlink-dir . node_modules/solid-js",
126
126
  "build:js": "ncp ../../node_modules/dom-expressions/src/jsx.d.ts ./src/jsx.d.ts && rollup -c",
127
- "build:types": "tsc",
128
- "build:types-store": "tsc --project ./store/tsconfig.json && tsconfig-replace-paths --project ./store/tsconfig.types.json",
129
- "build:types-web": "tsc --project ./web/tsconfig.json && tsconfig-replace-paths --project ./web/tsconfig.types.json",
127
+ "build:types": "tsc --project ./tsconfig.build.json",
128
+ "build:types-store": "tsc --project ./store/tsconfig.build.json && tsconfig-replace-paths --project ./store/tsconfig.types.json",
129
+ "build:types-web": "tsc --project ./web/tsconfig.build.json && tsconfig-replace-paths --project ./web/tsconfig.types.json",
130
130
  "build:types-html": "tsc --project ./html/tsconfig.json",
131
131
  "build:types-h": "tsc --project ./h/tsconfig.json",
132
132
  "build:types-universal": "tsc --project ./universal/tsconfig.json",
@@ -144,5 +144,5 @@
144
144
  "compiler",
145
145
  "performance"
146
146
  ],
147
- "gitHead": "9525e859cc86e444e2c8f043af218043e719b964"
147
+ "gitHead": "9198a44115b8450b0ae61355008a490c4e25007f"
148
148
  }
@@ -103,7 +103,7 @@ const proxyTraps$1 = {
103
103
  node = nodes[property] || (nodes[property] = createDataNode());
104
104
  node();
105
105
  }
106
- return wrappable ? wrap$1(value, target[$NAME] && `${target[$NAME]}:${property}`) : value;
106
+ return wrappable ? wrap$1(value, target[$NAME] && `${target[$NAME]}:${property.toString()}`) : value;
107
107
  },
108
108
  set() {
109
109
  console.warn("Cannot mutate a Store directly");
@@ -344,8 +344,7 @@ function reconcile(value, options = {}) {
344
344
  key = "id"
345
345
  } = options,
346
346
  v = unwrap(value);
347
- return s => {
348
- const state = s;
347
+ return state => {
349
348
  if (!isWrappable(state) || !isWrappable(v)) return v;
350
349
  applyState(v, {
351
350
  state
@@ -369,8 +368,7 @@ const setterTraps = {
369
368
  }
370
369
  };
371
370
  function produce(fn) {
372
- return s => {
373
- const state = s;
371
+ return state => {
374
372
  if (isWrappable(state)) fn(new Proxy(state, setterTraps));
375
373
  return state;
376
374
  };
package/store/dist/dev.js CHANGED
@@ -99,7 +99,7 @@ const proxyTraps$1 = {
99
99
  node = nodes[property] || (nodes[property] = createDataNode());
100
100
  node();
101
101
  }
102
- return wrappable ? wrap$1(value, target[$NAME] && `${target[$NAME]}:${property}`) : value;
102
+ return wrappable ? wrap$1(value, target[$NAME] && `${target[$NAME]}:${property.toString()}`) : value;
103
103
  },
104
104
  set() {
105
105
  console.warn("Cannot mutate a Store directly");
@@ -340,8 +340,7 @@ function reconcile(value, options = {}) {
340
340
  key = "id"
341
341
  } = options,
342
342
  v = unwrap(value);
343
- return s => {
344
- const state = s;
343
+ return state => {
345
344
  if (!isWrappable(state) || !isWrappable(v)) return v;
346
345
  applyState(v, {
347
346
  state
@@ -365,8 +364,7 @@ const setterTraps = {
365
364
  }
366
365
  };
367
366
  function produce(fn) {
368
- return s => {
369
- const state = s;
367
+ return state => {
370
368
  if (isWrappable(state)) fn(new Proxy(state, setterTraps));
371
369
  return state;
372
370
  };
@@ -324,8 +324,7 @@ function reconcile(value, options = {}) {
324
324
  key = "id"
325
325
  } = options,
326
326
  v = unwrap(value);
327
- return s => {
328
- const state = s;
327
+ return state => {
329
328
  if (!isWrappable(state) || !isWrappable(v)) return v;
330
329
  applyState(v, {
331
330
  state
@@ -349,8 +348,7 @@ const setterTraps = {
349
348
  }
350
349
  };
351
350
  function produce(fn) {
352
- return s => {
353
- const state = s;
351
+ return state => {
354
352
  if (isWrappable(state)) fn(new Proxy(state, setterTraps));
355
353
  return state;
356
354
  };
@@ -320,8 +320,7 @@ function reconcile(value, options = {}) {
320
320
  key = "id"
321
321
  } = options,
322
322
  v = unwrap(value);
323
- return s => {
324
- const state = s;
323
+ return state => {
325
324
  if (!isWrappable(state) || !isWrappable(v)) return v;
326
325
  applyState(v, {
327
326
  state
@@ -345,8 +344,7 @@ const setterTraps = {
345
344
  }
346
345
  };
347
346
  function produce(fn) {
348
- return s => {
349
- const state = s;
347
+ return state => {
350
348
  if (isWrappable(state)) fn(new Proxy(state, setterTraps));
351
349
  return state;
352
350
  };
@@ -1,4 +1,4 @@
1
1
  export { createStore, unwrap, $RAW } from "./store";
2
- export type { Store, SetStoreFunction, NotWrappable, StoreNode, StoreSetter, StorePathRange, ArrayFilterFn, Part, Next, Readonly, DeepReadonly } from "./store";
2
+ export type { Store, SetStoreFunction, NotWrappable, StoreNode, StoreSetter, StorePathRange, ArrayFilterFn, Part, Next, WrappableNext, DeepReadonly } from "./store";
3
3
  export * from "./mutable";
4
4
  export * from "./modifiers";
@@ -1,7 +1,7 @@
1
- import { Store, NotWrappable, DeepReadonly } from "./store";
1
+ import { Store } from "./store";
2
2
  export declare type ReconcileOptions = {
3
3
  key?: string | null;
4
4
  merge?: boolean;
5
5
  };
6
- export declare function reconcile<T>(value: T | Store<T>, options?: ReconcileOptions): (state: T extends NotWrappable ? T : Store<DeepReadonly<T>>) => T extends NotWrappable ? T : Store<T>;
7
- export declare function produce<T>(fn: (state: T) => void): (state: T extends NotWrappable ? T : Store<DeepReadonly<T>>) => T extends NotWrappable ? T : Store<T>;
6
+ export declare function reconcile<T>(value: T, options?: ReconcileOptions): (state: unknown) => Store<T>;
7
+ export declare function produce<T>(fn: (state: T) => void): (state: Store<T>) => Store<T>;
@@ -1,4 +1,4 @@
1
- import { StoreNode, Store } from "./store";
2
- export declare function createMutable<T extends StoreNode>(state: T | Store<T>, options?: {
1
+ import { StoreNode } from "./store";
2
+ export declare function createMutable<T extends StoreNode>(state: T, options?: {
3
3
  name?: string;
4
- }): Store<T>;
4
+ }): T;
@@ -1,50 +1,15 @@
1
+ import { SetStoreFunction, Store } from "store";
1
2
  export declare const $RAW: unique symbol;
2
- declare type AddSymbolToPrimitive<T> = T extends {
3
- [Symbol.toPrimitive]: infer V;
4
- } ? {
5
- [Symbol.toPrimitive]: V;
6
- } : {};
7
- declare type AddCallable<T> = T extends {
8
- (...x: any[]): infer V;
9
- } ? {
10
- (...x: Parameters<T>): V;
11
- } : {};
12
- declare type NotWrappable = string | number | boolean | Function | null;
13
- export declare type Store<T> = {
14
- [P in keyof T]: T[P] extends object ? Store<T[P]> : T[P];
15
- } & {
16
- [$RAW]?: T;
17
- } & AddSymbolToPrimitive<T> & AddCallable<T>;
18
3
  export declare function isWrappable(obj: any): boolean;
19
4
  export declare function unwrap<T>(item: any): T;
20
5
  export declare function setProperty(state: any, property: string | number, value: any, force?: boolean): void;
21
6
  export declare function updatePath(current: any, path: any[], traversed?: (number | string)[]): void;
22
- declare type StoreSetter<T> = Partial<T> | ((prevState: T extends NotWrappable ? T : Store<T>, traversed?: (string | number)[]) => Partial<T> | void);
23
- declare type StorePathRange = {
24
- from?: number;
25
- to?: number;
26
- by?: number;
27
- };
28
- declare type ArrayFilterFn<T> = (item: T extends any[] ? T[number] : never, index: number) => boolean;
29
- declare type Part<T> = keyof T | Array<keyof T> | StorePathRange | ArrayFilterFn<T>;
30
- declare type Next<T, K> = K extends keyof T ? T[K] : K extends Array<keyof T> ? T[K[number]] : T extends any[] ? K extends StorePathRange ? T[number] : K extends ArrayFilterFn<T> ? T[number] : never : never;
31
- export interface SetStoreFunction<T> {
32
- <Setter extends StoreSetter<T>>(...args: [Setter]): void;
33
- <K1 extends Part<T>, Setter extends StoreSetter<Next<T, K1>>>(...args: [K1, Setter]): void;
34
- <K1 extends Part<T>, K2 extends Part<Next<T, K1>>, Setter extends StoreSetter<Next<Next<T, K1>, K2>>>(...args: [K1, K2, Setter]): void;
35
- <K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, Setter extends StoreSetter<Next<Next<Next<T, K1>, K2>, K3>>>(...args: [K1, K2, K3, Setter]): void;
36
- <K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, Setter extends StoreSetter<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>>(...args: [K1, K2, K3, K4, Setter]): void;
37
- <K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, K5 extends Part<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>, Setter extends StoreSetter<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>>>(...args: [K1, K2, K3, K4, K5, Setter]): void;
38
- <K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, K5 extends Part<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>, K6 extends Part<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>>, Setter extends StoreSetter<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>>>(...args: [K1, K2, K3, K4, K5, K6, Setter]): void;
39
- <K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, K5 extends Part<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>, K6 extends Part<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>>, K7 extends Part<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>>, Setter extends StoreSetter<Next<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>, K7>>>(...args: [K1, K2, K3, K4, K5, K6, K7, Setter]): void;
40
- <K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, K5 extends Part<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>, K6 extends Part<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>>, K7 extends Part<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>>, K8 extends Part<Next<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>, K7>>>(...args: [K1, K2, K3, K4, K5, K6, K7, K8, ...(Part<any> | StoreSetter<any>)[]]): void;
41
- }
42
7
  export declare function createStore<T>(state: T | Store<T>): [Store<T>, SetStoreFunction<T>];
43
8
  export declare function createMutable<T>(state: T | Store<T>): Store<T>;
44
9
  declare type ReconcileOptions = {
45
10
  key?: string | null;
46
11
  merge?: boolean;
47
12
  };
48
- export declare function reconcile<T>(value: T | Store<T>, options?: ReconcileOptions): (state: T extends NotWrappable ? T : Store<T>) => void;
49
- export declare function produce<T>(fn: (state: T) => void): (state: T extends NotWrappable ? T : Store<T>) => T extends NotWrappable ? T : Store<T>;
13
+ export declare function reconcile<T>(value: T | Store<T>, options?: ReconcileOptions): (state: Store<T>) => void;
14
+ export declare function produce<T>(fn: (state: T) => void): (state: Store<T>) => Store<T>;
50
15
  export {};
@@ -1,72 +1,44 @@
1
- import { $PROXY, Accessor } from "../..";
1
+ import { Accessor } from "../..";
2
2
  export declare const $RAW: unique symbol, $NODE: unique symbol, $NAME: unique symbol;
3
- export declare type StoreNode = {
4
- [$NODE]?: any;
5
- [$PROXY]?: any;
6
- [$NAME]?: string;
7
- [k: string]: any;
8
- [k: number]: any;
9
- };
10
- declare type AddSymbolToPrimitive<T> = T extends {
11
- [Symbol.toPrimitive]: infer V;
12
- } ? {
13
- [Symbol.toPrimitive]: V;
14
- } : {};
15
- declare type AddSymbolIterator<T> = T extends {
16
- [Symbol.iterator]: infer V;
17
- } ? {
18
- [Symbol.iterator]: V;
19
- } : {};
20
- declare type AddSymbolToStringTag<T> = T extends {
21
- [Symbol.toStringTag]: infer V;
22
- } ? {
23
- [Symbol.toStringTag]: V;
24
- } : {};
25
- declare type AddCallable<T> = T extends {
26
- (...x: any[]): infer V;
27
- } ? {
28
- (...x: Parameters<T>): V;
29
- } : {};
30
- export declare type NotWrappable = string | number | boolean | Function | null;
31
- export declare type Store<T> = {
32
- [P in keyof T]: T[P] extends object ? Store<T[P]> & T[P] : T[P];
33
- } & {
34
- [$RAW]?: T;
35
- } & AddSymbolToPrimitive<T> & AddSymbolIterator<T> & AddSymbolToStringTag<T> & AddCallable<T>;
3
+ export declare type StoreNode = Record<keyof any, any>;
4
+ export declare type NotWrappable = string | number | bigint | symbol | boolean | Function | null | undefined;
5
+ export declare type Store<T> = DeepReadonly<T>;
36
6
  export declare function isWrappable(obj: any): any;
37
7
  export declare function unwrap<T extends StoreNode>(item: any, set?: Set<unknown>): T;
38
8
  export declare function getDataNodes(target: StoreNode): any;
39
- export declare function proxyDescriptor(target: StoreNode, property: string | number | symbol): PropertyDescriptor | undefined;
9
+ export declare function proxyDescriptor(target: StoreNode, property: keyof any): PropertyDescriptor | undefined;
40
10
  export declare function ownKeys(target: StoreNode): (string | symbol)[];
41
11
  export declare function createDataNode(): Accessor<void> & {
42
12
  $: () => void;
43
13
  };
44
- export declare function setProperty(state: StoreNode, property: string | number, value: any): void;
45
- export declare function updatePath(current: StoreNode, path: any[], traversed?: (number | string)[]): void;
46
- export declare type Readonly<T> = {
47
- readonly [K in keyof T]: DeepReadonly<T[K]>;
14
+ export declare function setProperty(state: StoreNode, property: keyof any, value: any): void;
15
+ export declare function updatePath(current: StoreNode, path: any[], traversed?: (keyof any)[]): void;
16
+ export declare type DeepReadonly<T> = {
17
+ readonly [K in keyof T]: T[K] extends NotWrappable ? T[K] : DeepReadonly<T[K]>;
48
18
  };
49
- export declare type DeepReadonly<T> = T extends [infer A] ? Readonly<[A]> : T extends [infer A, infer B] ? Readonly<[A, B]> : T extends [infer A, infer B, infer C] ? Readonly<[A, B, C]> : T extends [infer A, infer B, infer C, infer D] ? Readonly<[A, B, C, D]> : T extends [infer A, infer B, infer C, infer D, infer E] ? Readonly<[A, B, C, D, E]> : T extends [infer A, infer B, infer C, infer D, infer E, infer F] ? Readonly<[A, B, C, D, E, F]> : T extends [infer A, infer B, infer C, infer D, infer E, infer F, infer G] ? Readonly<[A, B, C, D, E, F, G]> : T extends [infer A, infer B, infer C, infer D, infer E, infer F, infer G, infer H] ? Readonly<[A, B, C, D, E, F, G, H]> : T extends object ? Readonly<T> : T;
50
- export declare type StoreSetter<T> = Partial<T> | ((prevState: T extends NotWrappable ? T : Store<DeepReadonly<T>>, traversed?: (string | number)[]) => Partial<T | DeepReadonly<T>> | void);
19
+ export declare type StoreSetter<T> = T | Partial<T> | ((prevState: T, traversed?: (keyof any)[]) => Partial<T> | void);
51
20
  export declare type StorePathRange = {
52
21
  from?: number;
53
22
  to?: number;
54
23
  by?: number;
55
24
  };
56
- export declare type ArrayFilterFn<T> = (item: T extends any[] ? T[number] : never, index: number) => boolean;
57
- export declare type Part<T> = T extends any[] ? keyof T | Array<keyof T> | ArrayFilterFn<T> | StorePathRange : T extends object ? keyof T | Array<keyof T> : never;
58
- export declare type NullableNext<T, K> = K extends keyof T ? T[K] : K extends Array<keyof T> ? T[K[number]] : T extends any[] ? K extends StorePathRange ? T[number] : K extends ArrayFilterFn<T> ? T[number] : never : never;
59
- export declare type Next<T, K> = NonNullable<NullableNext<T, K>>;
60
- export interface SetStoreFunction<T> {
61
- <Setter extends StoreSetter<T>>(...args: [Setter]): void;
62
- <K1 extends Part<T>, Setter extends StoreSetter<NullableNext<T, K1>>>(...args: [K1, Setter]): void;
63
- <K1 extends Part<T>, K2 extends Part<Next<T, K1>>, Setter extends StoreSetter<NullableNext<Next<T, K1>, K2>>>(...args: [K1, K2, Setter]): void;
64
- <K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, Setter extends StoreSetter<NullableNext<Next<Next<T, K1>, K2>, K3>>>(...args: [K1, K2, K3, Setter]): void;
65
- <K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, Setter extends StoreSetter<NullableNext<Next<Next<Next<T, K1>, K2>, K3>, K4>>>(...args: [K1, K2, K3, K4, Setter]): void;
66
- <K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, K5 extends Part<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>, Setter extends StoreSetter<NullableNext<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>>>(...args: [K1, K2, K3, K4, K5, Setter]): void;
67
- <K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, K5 extends Part<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>, K6 extends Part<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>>, Setter extends StoreSetter<NullableNext<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>>>(...args: [K1, K2, K3, K4, K5, K6, Setter]): void;
68
- <K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, K5 extends Part<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>, K6 extends Part<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>>, K7 extends Part<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>>, Setter extends StoreSetter<NullableNext<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>, K7>>>(...args: [K1, K2, K3, K4, K5, K6, K7, Setter]): void;
69
- <K1 extends Part<T>, K2 extends Part<Next<T, K1>>, K3 extends Part<Next<Next<T, K1>, K2>>, K4 extends Part<Next<Next<Next<T, K1>, K2>, K3>>, K5 extends Part<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>>, K6 extends Part<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>>, K7 extends Part<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>>, K8 extends Part<Next<Next<Next<Next<Next<Next<Next<T, K1>, K2>, K3>, K4>, K5>, K6>, K7>>>(...args: [K1, K2, K3, K4, K5, K6, K7, K8, ...(Part<any> | StoreSetter<any>)[]]): void;
25
+ export declare type ArrayFilterFn<T> = (item: T, index: number) => boolean;
26
+ export declare type Part<T> = [T] extends [never] ? never : [keyof T] extends [never] ? never : keyof T | (keyof T)[] | (number extends keyof T ? ArrayFilterFn<T[number]> | StorePathRange : never);
27
+ export declare type Next<T, K extends Part<T>> = [K] extends [never] ? never : K extends keyof T ? T[K] : K extends (keyof T)[] ? T[K[number]] : number extends keyof T ? T[number] : never;
28
+ export declare type WrappableNext<T, K extends Part<T>> = Exclude<Next<T, K>, NotWrappable>;
29
+ declare type DistributeRest<T, K extends Part<T>> = K extends K ? [K, ...Rest<Next<T, K>>] : never;
30
+ export declare type Rest<T> = 0 extends 1 & T ? [...(keyof any)[], any] : [StoreSetter<T>] | (T extends NotWrappable ? never : DistributeRest<T, Part<T>>);
31
+ export declare type SetStoreFunction<T> = _SetStoreFunction<Store<T>>;
32
+ interface _SetStoreFunction<T> {
33
+ <K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, K4 extends Part<T3>, K5 extends Part<T4>, K6 extends Part<T5>, K7 extends Part<T6>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>, T3 extends WrappableNext<T2, K3>, T4 extends WrappableNext<T3, K4>, T5 extends WrappableNext<T4, K5>, T6 extends WrappableNext<T5, K6>>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6, k7: K7, ...rest: Rest<Next<T6, K7>>): void;
34
+ <K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, K4 extends Part<T3>, K5 extends Part<T4>, K6 extends Part<T5>, K7 extends Part<T6>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>, T3 extends WrappableNext<T2, K3>, T4 extends WrappableNext<T3, K4>, T5 extends WrappableNext<T4, K5>, T6 extends WrappableNext<T5, K6>>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6, k7: K7, setter: StoreSetter<Next<T6, K7>>): void;
35
+ <K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, K4 extends Part<T3>, K5 extends Part<T4>, K6 extends Part<T5>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>, T3 extends WrappableNext<T2, K3>, T4 extends WrappableNext<T3, K4>, T5 extends WrappableNext<T4, K5>>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6, setter: StoreSetter<Next<T5, K6>>): void;
36
+ <K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, K4 extends Part<T3>, K5 extends Part<T4>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>, T3 extends WrappableNext<T2, K3>, T4 extends WrappableNext<T3, K4>>(k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, setter: StoreSetter<Next<T4, K5>>): void;
37
+ <K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, K4 extends Part<T3>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>, T3 extends WrappableNext<T2, K3>>(k1: K1, k2: K2, k3: K3, k4: K4, setter: StoreSetter<Next<T3, K4>>): void;
38
+ <K1 extends Part<T>, K2 extends Part<T1>, K3 extends Part<T2>, T1 extends WrappableNext<T, K1>, T2 extends WrappableNext<T1, K2>>(k1: K1, k2: K2, k3: K3, setter: StoreSetter<Next<T2, K3>>): void;
39
+ <K1 extends Part<T>, K2 extends Part<T1>, T1 extends WrappableNext<T, K1>>(k1: K1, k2: K2, setter: StoreSetter<Next<T1, K2>>): void;
40
+ <K extends Part<T>>(k: K, setter: StoreSetter<Next<T, K>>): void;
41
+ (setter: StoreSetter<T>): void;
70
42
  }
71
43
  /**
72
44
  * creates a reactive store that can be read through a proxy object and written with a setter function
package/web/dist/dev.cjs CHANGED
@@ -452,7 +452,7 @@ function cleanChildren(parent, current, marker, replacement) {
452
452
  if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && parent.removeChild(el);
453
453
  } else inserted = true;
454
454
  }
455
- } else parent.insertBefore(node, marker);
455
+ } else if (current instanceof Node) parent.replaceChild(node, current);else parent.insertBefore(node, marker);
456
456
  return [node];
457
457
  }
458
458
  function gatherHydratable(element, root) {
package/web/dist/dev.js CHANGED
@@ -449,7 +449,7 @@ function cleanChildren(parent, current, marker, replacement) {
449
449
  if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && parent.removeChild(el);
450
450
  } else inserted = true;
451
451
  }
452
- } else parent.insertBefore(node, marker);
452
+ } else if (current instanceof Node) parent.replaceChild(node, current);else parent.insertBefore(node, marker);
453
453
  return [node];
454
454
  }
455
455
  function gatherHydratable(element, root) {
@@ -607,7 +607,7 @@ function waitForFragments(registry, key) {
607
607
  function serializeSet(registry, key, value) {
608
608
  const exist = registry.get(value);
609
609
  if (exist) return `_$HY.set("${key}", _$HY.r["${exist}"][0]);`;
610
- registry.set(value, key);
610
+ value !== null && typeof value === "object" && registry.set(value, key);
611
611
  return `_$HY.set("${key}", ${devalue(value)});`;
612
612
  }
613
613
  function pipeToNodeWritable(code, writable, options = {}) {
@@ -604,7 +604,7 @@ function waitForFragments(registry, key) {
604
604
  function serializeSet(registry, key, value) {
605
605
  const exist = registry.get(value);
606
606
  if (exist) return `_$HY.set("${key}", _$HY.r["${exist}"][0]);`;
607
- registry.set(value, key);
607
+ value !== null && typeof value === "object" && registry.set(value, key);
608
608
  return `_$HY.set("${key}", ${devalue(value)});`;
609
609
  }
610
610
  function pipeToNodeWritable(code, writable, options = {}) {
package/web/dist/web.cjs CHANGED
@@ -451,7 +451,7 @@ function cleanChildren(parent, current, marker, replacement) {
451
451
  if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && parent.removeChild(el);
452
452
  } else inserted = true;
453
453
  }
454
- } else parent.insertBefore(node, marker);
454
+ } else if (current instanceof Node) parent.replaceChild(node, current);else parent.insertBefore(node, marker);
455
455
  return [node];
456
456
  }
457
457
  function gatherHydratable(element, root) {
package/web/dist/web.js CHANGED
@@ -448,7 +448,7 @@ function cleanChildren(parent, current, marker, replacement) {
448
448
  if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && parent.removeChild(el);
449
449
  } else inserted = true;
450
450
  }
451
- } else parent.insertBefore(node, marker);
451
+ } else if (current instanceof Node) parent.replaceChild(node, current);else parent.insertBefore(node, marker);
452
452
  return [node];
453
453
  }
454
454
  function gatherHydratable(element, root) {
@@ -53,7 +53,7 @@ export function dynamicProperty(props: unknown, key: string): unknown;
53
53
  export function hydrate(
54
54
  fn: () => JSX.Element,
55
55
  node: MountableElement,
56
- options: { renderId?: string }
56
+ options?: { renderId?: string }
57
57
  ): () => void;
58
58
  export function getHydrationKey(): string;
59
59
  export function getNextElement(template?: HTMLTemplateElement): Element;