From e81316261686ffd41a4329942593fcb4e39220cc Mon Sep 17 00:00:00 2001 From: Ihor Chulinda Date: Tue, 18 Sep 2018 13:49:19 +0200 Subject: [PATCH] fix(react): inital generated docs for better dev experience --- packages/react/src/ApplicationRoot.tsx | 35 +++++++++++++++++++++++ packages/react/src/MockRoot.tsx | 16 +++++++++++ packages/react/src/ResolvableComponent.ts | 10 +++++++ packages/react/src/Resolver.ts | 22 ++++++++++++++ 4 files changed, 83 insertions(+) diff --git a/packages/react/src/ApplicationRoot.tsx b/packages/react/src/ApplicationRoot.tsx index 3c206a9e..10e0f5c3 100644 --- a/packages/react/src/ApplicationRoot.tsx +++ b/packages/react/src/ApplicationRoot.tsx @@ -2,15 +2,39 @@ import { IOverrideResult } from 'metaf-resolvable'; import { Component } from 'react'; import { HOC, IRequirementsOverride, resolver } from './Resolver'; +/** + * // TODO: comment IApplicationRootProps + * @description application root props + */ export interface IApplicationRootProps { + + /** + * // TODO: comment dependencies + * @description + */ dependencies: IOverrideResult[]; + + /** + * // TODO: comment requirements + * @description + */ requirements: IRequirementsOverride[]; } interface IApplicationRootState { hocs: HOC[]; } + +/** + * // TODO: comment ApplicationRoot + * @description Application root + */ export class ApplicationRoot extends Component { + + /** + * // TODO: comment defaultProps + * @description Default props of application root + */ static defaultProps = { dependencies: [], requirements: [], @@ -19,12 +43,23 @@ export class ApplicationRoot extends Component) { super(props); this.resolver.setOverrides(props.dependencies); this.resolver.setRequirementsOverrides(props.requirements); this.resolver.subscribeForRequirements(this.requirementsUpdate); } + + /** + * // TODO: comment render + * @description Renders application root + * @returns + */ render() { return this.wrapInHocs(); } diff --git a/packages/react/src/MockRoot.tsx b/packages/react/src/MockRoot.tsx index bf4ae111..3bf5f57b 100644 --- a/packages/react/src/MockRoot.tsx +++ b/packages/react/src/MockRoot.tsx @@ -70,7 +70,17 @@ function resolveFor( } let isResolverFnChangedToMock = false; + +/** + * // TODO: comment MockRoot + * @description Mock root + */ export class MockRoot extends ApplicationRoot { + + /** + * Creates an instance of mock root. + * @param props + */ constructor(props: Readonly) { super(props); if (!isResolverFnChangedToMock) { @@ -79,6 +89,12 @@ export class MockRoot extends ApplicationRoot { } this.resolver = new ReactResolver(props.dependencies); } + + /** + * // TODO: comment render + * @description Renders mock root + * @returns + */ render() { return addPropsToAll(this.wrapInHocs(), this.resolver.resolveFor); } diff --git a/packages/react/src/ResolvableComponent.ts b/packages/react/src/ResolvableComponent.ts index 6df6135c..db460448 100644 --- a/packages/react/src/ResolvableComponent.ts +++ b/packages/react/src/ResolvableComponent.ts @@ -4,6 +4,16 @@ import { IRequirements } from './Resolver'; export type ResolvableComponent = new

(props: Readonly

) => AbstractResolvable & Component; + +/** + * // TODO: comment ResolvableComponent + * @description Resolvable component + * @template I + * @template R + * @param [injections] + * @param [requirements] + * @returns component + */ export function ResolvableComponent( injections: I = {} as I, requirements: R = {} as R): ResolvableComponent { diff --git a/packages/react/src/Resolver.ts b/packages/react/src/Resolver.ts index c6624dbe..7f53c7d8 100644 --- a/packages/react/src/Resolver.ts +++ b/packages/react/src/Resolver.ts @@ -2,11 +2,33 @@ import { Constructable, IDependencies, IInjections, IOverrideResult, Resolver, s import { ReactNode } from 'react'; export type HOC = (app: ReactNode) => JSX.Element; + +/** + * // TODO: comment IRequirements + * @description requirements + */ export interface IRequirements { [index: string]: HOC; } const requirementsOverride = Symbol('Requirements Override'); + +/** + * // TODO: comment IRequirementsOverride + * @description requirements override + * @template T + * @template R + */ export interface IRequirementsOverride { [requirementsOverride]: [T, R]; } + +/** + * // TODO: comment overrideRequirement + * @description Overrides requirement + * @template T + * @template R + * @param key + * @param value + * @returns requirement + */ export function overrideRequirement(key: T, value: R): IRequirementsOverride { return { [requirementsOverride]: [key, value] }; }