From 071d1c4250efd7b08317187dd1dec2bbfb28f395 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 21 Apr 2023 15:45:52 -0400 Subject: [PATCH 1/3] first stab --- package.json | 1 + types/index.d.ts | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 types/index.d.ts diff --git a/package.json b/package.json index d3a9c56..132a028 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "prepublish": "npm run compile", "release": "standard-version" }, + "types": "types/index.d.ts", "homepage": "http://github.com/mongodb-js/connect-backbone-to-react", "repository": { "type": "git", diff --git a/types/index.d.ts b/types/index.d.ts new file mode 100644 index 0000000..8adb541 --- /dev/null +++ b/types/index.d.ts @@ -0,0 +1,22 @@ +import { type Component, type ReactElement, type FunctionComponentElement, type ProviderProps, type FC, type PropsWithChildren } from "react"; + +type Models = Record + +type MapModelToProps = (models: M, props: P) => Partial

; + +interface Options { + debounce?: boolean, + events?: Record> + modelTypes?: Models, + withRef?: boolean +} + +export declare function connectBackboneToReact(mapModelToProps: MapModelToProps, options?: Options): (component: FC

| Component

) => (subcomponent: Partial

) => JSX.Element + +interface BackboneProviderProps { + children: ReactElement + models: M +} + +// do we need generics here? +export declare function BackboneProvider(props: BackboneProviderProps): FunctionComponentElement>; From b3da9837b02098b0413dfaf853f91e4da6417eae Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 21 Apr 2023 16:01:33 -0400 Subject: [PATCH 2/3] clean up a bit --- types/index.d.ts | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/types/index.d.ts b/types/index.d.ts index 8adb541..341f4bb 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -1,22 +1,21 @@ -import { type Component, type ReactElement, type FunctionComponentElement, type ProviderProps, type FC, type PropsWithChildren } from "react"; - -type Models = Record - -type MapModelToProps = (models: M, props: P) => Partial

; +import { type FunctionComponentElement, type ProviderProps, type PropsWithChildren } from "react"; interface Options { debounce?: boolean, events?: Record> - modelTypes?: Models, + modelTypes?: Record, withRef?: boolean } -export declare function connectBackboneToReact(mapModelToProps: MapModelToProps, options?: Options): (component: FC

| Component

) => (subcomponent: Partial

) => JSX.Element +export declare function connectBackboneToReact( + mapModelToProps: (models: Model, props: ModelProps) => Partial, options?: Options +): ( + wrappedComponent: React.ComponentType +) => React.ComponentType>; + interface BackboneProviderProps { - children: ReactElement models: M } -// do we need generics here? -export declare function BackboneProvider(props: BackboneProviderProps): FunctionComponentElement>; +export declare function BackboneProvider(props: PropsWithChildren>): FunctionComponentElement>; From 140d280dc4c2cfce79fcf3b0eb369dff90a52fc2 Mon Sep 17 00:00:00 2001 From: Scott Davis Date: Fri, 21 Apr 2023 16:02:50 -0400 Subject: [PATCH 3/3] make generic name consistent --- types/index.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/types/index.d.ts b/types/index.d.ts index 341f4bb..2510aab 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -14,8 +14,8 @@ export declare function connectBackboneToReact React.ComponentType>; -interface BackboneProviderProps { - models: M +interface BackboneProviderProps { + models: Models } export declare function BackboneProvider(props: PropsWithChildren>): FunctionComponentElement>;