@rlabs-inc/signals 1.8.0 → 1.8.2
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/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.mjs +3 -3
- package/dist/primitives/props.d.ts +43 -4
- package/dist/primitives/props.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -23,5 +23,5 @@ export type { LinkedSignalOptions, LinkedSignalConfig } from './primitives/linke
|
|
|
23
23
|
export type { SelectorFn } from './primitives/selector.js';
|
|
24
24
|
export type { EffectScope } from './primitives/scope.js';
|
|
25
25
|
export type { Slot, SlotArray } from './primitives/slot.js';
|
|
26
|
-
export type { PropInput, PropsInput, ReactiveProps } from './primitives/props.js';
|
|
26
|
+
export type { PropInput, PropsInput, ReactiveProps, UnwrapPropInput, UnwrapPropInputs } from './primitives/props.js';
|
|
27
27
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1736,12 +1736,12 @@ function reactiveProps(rawProps) {
|
|
|
1736
1736
|
return result;
|
|
1737
1737
|
}
|
|
1738
1738
|
function unwrapProp(prop) {
|
|
1739
|
-
if (prop !== null && typeof prop === "object" && "value" in prop) {
|
|
1740
|
-
return prop.value;
|
|
1741
|
-
}
|
|
1742
1739
|
if (typeof prop === "function") {
|
|
1743
1740
|
return prop();
|
|
1744
1741
|
}
|
|
1742
|
+
if (prop !== null && typeof prop === "object" && "value" in prop) {
|
|
1743
|
+
return prop.value;
|
|
1744
|
+
}
|
|
1745
1745
|
return prop;
|
|
1746
1746
|
}
|
|
1747
1747
|
// src/collections/map.ts
|
package/dist/index.mjs
CHANGED
|
@@ -1605,12 +1605,12 @@ function reactiveProps(rawProps) {
|
|
|
1605
1605
|
return result;
|
|
1606
1606
|
}
|
|
1607
1607
|
function unwrapProp(prop) {
|
|
1608
|
-
if (prop !== null && typeof prop === "object" && "value" in prop) {
|
|
1609
|
-
return prop.value;
|
|
1610
|
-
}
|
|
1611
1608
|
if (typeof prop === "function") {
|
|
1612
1609
|
return prop();
|
|
1613
1610
|
}
|
|
1611
|
+
if (prop !== null && typeof prop === "object" && "value" in prop) {
|
|
1612
|
+
return prop.value;
|
|
1613
|
+
}
|
|
1614
1614
|
return prop;
|
|
1615
1615
|
}
|
|
1616
1616
|
// src/collections/map.ts
|
|
@@ -8,16 +8,47 @@ import type { DerivedSignal } from '../core/types.js';
|
|
|
8
8
|
export type PropInput<T> = T | (() => T) | {
|
|
9
9
|
readonly value: T;
|
|
10
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* Extract the inner type from a PropInput.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* type A = UnwrapPropInput<PropInput<string>> // string
|
|
17
|
+
* type B = UnwrapPropInput<string> // string
|
|
18
|
+
* type C = UnwrapPropInput<() => number> // number
|
|
19
|
+
* type D = UnwrapPropInput<Signal<boolean>> // boolean
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export type UnwrapPropInput<P> = P extends () => infer T ? T : P extends {
|
|
23
|
+
readonly value: infer T;
|
|
24
|
+
} ? T : P;
|
|
25
|
+
/**
|
|
26
|
+
* Unwrap all properties of an object from PropInput to their inner types.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* interface MyProps {
|
|
31
|
+
* name: PropInput<string>
|
|
32
|
+
* count: PropInput<number>
|
|
33
|
+
* }
|
|
34
|
+
* type Resolved = UnwrapPropInputs<MyProps>
|
|
35
|
+
* // { name: string; count: number }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export type UnwrapPropInputs<T> = {
|
|
39
|
+
[K in keyof T]: UnwrapPropInput<T[K]>;
|
|
40
|
+
};
|
|
11
41
|
/**
|
|
12
42
|
* The input type for reactiveProps - each property can be any PropInput
|
|
43
|
+
* @deprecated Use the props interface directly with PropInput<T> types
|
|
13
44
|
*/
|
|
14
|
-
export type PropsInput<T
|
|
45
|
+
export type PropsInput<T> = {
|
|
15
46
|
[K in keyof T]: PropInput<T[K]>;
|
|
16
47
|
};
|
|
17
48
|
/**
|
|
18
49
|
* The output type - each property is a DerivedSignal
|
|
19
50
|
*/
|
|
20
|
-
export type ReactiveProps<T
|
|
51
|
+
export type ReactiveProps<T> = {
|
|
21
52
|
readonly [K in keyof T]: DerivedSignal<T[K]>;
|
|
22
53
|
};
|
|
23
54
|
/**
|
|
@@ -31,9 +62,17 @@ export type ReactiveProps<T extends Record<string, unknown>> = {
|
|
|
31
62
|
* Returns an object where every property is a DerivedSignal,
|
|
32
63
|
* providing consistent `.value` access regardless of input type.
|
|
33
64
|
*
|
|
65
|
+
* **Type inference is automatic** - no need to specify the resolved type!
|
|
66
|
+
*
|
|
34
67
|
* @example
|
|
35
68
|
* ```ts
|
|
36
|
-
*
|
|
69
|
+
* interface MyComponentProps {
|
|
70
|
+
* name: PropInput<string>
|
|
71
|
+
* count: PropInput<number>
|
|
72
|
+
* }
|
|
73
|
+
*
|
|
74
|
+
* function MyComponent(rawProps: MyComponentProps) {
|
|
75
|
+
* // TypeScript infers: { name: DerivedSignal<string>, count: DerivedSignal<number> }
|
|
37
76
|
* const props = reactiveProps(rawProps)
|
|
38
77
|
*
|
|
39
78
|
* // Everything is now consistently reactive
|
|
@@ -47,5 +86,5 @@ export type ReactiveProps<T extends Record<string, unknown>> = {
|
|
|
47
86
|
* MyComponent({ name: nameSignal, count: () => getCount() })
|
|
48
87
|
* ```
|
|
49
88
|
*/
|
|
50
|
-
export declare function reactiveProps<T extends
|
|
89
|
+
export declare function reactiveProps<T extends object>(rawProps: T): ReactiveProps<UnwrapPropInputs<T>>;
|
|
51
90
|
//# sourceMappingURL=props.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../src/primitives/props.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAOrD;;;;;GAKG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAA;AAEhE
|
|
1
|
+
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../src/primitives/props.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAOrD;;;;;GAKG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAA;AAEhE;;;;;;;;;;GAUG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAC3B,CAAC,SAAS,MAAM,MAAM,CAAC,GAAG,CAAC,GAC3B,CAAC,SAAS;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GACzC,CAAC,CAAA;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;KAC/B,CAAC,IAAI,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAChC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAC7B,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7C,CAAA;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAC5C,QAAQ,EAAE,CAAC,GACV,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAWpC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rlabs-inc/signals",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.2",
|
|
4
4
|
"description": "Production-grade fine-grained reactivity for TypeScript. A complete standalone mirror of Svelte 5's reactivity system - signals, effects, derived values, deep reactivity, reactive collections, reactive bindings, and reactive slots.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|