Skip to content

Commit cd099af

Browse files
Fix types on states
1 parent ccf9ffb commit cd099af

File tree

4 files changed

+18
-9
lines changed

4 files changed

+18
-9
lines changed

library/component.d.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,23 @@ export declare enum Callbacks {
3030
"disconnectedCallback",
3131
}
3232

33+
type ValueOf<T> = T[keyof T];
34+
3335
export function factorizeComponent<
34-
S extends State,
3536
E extends CustomElement = CustomElement,
37+
S extends State,
3638
>(
37-
render: (element: E, state: State) => void,
38-
state: State,
39+
render: (element: E, state: S) => void,
40+
state: S,
3941
...fs: Array<HOF<E, S>>
4042
): Constructor<E>;
4143

4244
export function useAttributes<E extends CustomElement, S extends State>(
43-
validateAttribute: <X>(
44-
attributes: { name: string; oldValue: X; value: X },
45+
validateAttribute: <X extends ValueOf<S>>(
46+
attributes: { name: keyof S; oldValue: X; value: X },
4547
element?: E,
4648
state?: S,
47-
) => S | boolean,
49+
) => Partial<S> | boolean,
4850
map?: { [K in keyof S]: (x: string) => S[K] },
4951
): HOF<E, S>;
5052

@@ -71,5 +73,5 @@ export function useShadow<E extends CustomElement, S extends State>(
7173

7274
export function useTemplate<E extends CustomElement, S extends State>(
7375
getTemplate: () => HTMLTemplateElement,
74-
map: { [k: string]: (e: E) => CustomElement },
76+
map?: { [k: string]: (e: E) => CustomElement },
7577
): HOF<E, S>;

library/testing.d.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import { Constructor, CustomElement } from "./component.d.ts";
22

3-
type ArgumentTypes<F extends (...xs: Array<unknown>) => unknown> = F extends (...args: infer A) => unknown ? A
3+
type ArgumentTypes<F extends (...xs: Array<unknown>) => unknown> = F extends
4+
(...args: infer A) => unknown ? A
45
: never;
56

67
export function constructComponent<E extends CustomElement>(
78
C: Constructor<E>,
89
): E;
910

10-
export function factorizeSpy<F extends (...xs: Array<unknown>) => unknown>(f?: F): [
11+
export function factorizeSpy<F extends (...xs: Array<unknown>) => unknown>(
12+
f?: F,
13+
): [
1114
F,
1215
{
1316
(

library/utilities.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ export function maybeCall<X, Y, E extends HTMLElement, XS extends Array<X>>(
3131
...xs: XS
3232
): Promise<Y | false>;
3333

34+
export function noop(..._: Array<unknown>): void;
35+
3436
export function parsePascalCaseToSpineCase(x: string): string;
3537

3638
export function parseSpineCaseToCamelCase(x: string): string;

library/utilities.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ export const maybeCall = (f, e, ...xs) => {
4444
return (p instanceof Promise ? p : Promise.resolve(p));
4545
};
4646

47+
export const noop = (..._) => undefined;
48+
4749
export const parseSelectorForElement = (e) => {
4850
const as = [e.localName];
4951
for (const { name, value } of e.attributes) {

0 commit comments

Comments
 (0)