From da4fd6169717cfa04d644d0af0d23dd089a6e373 Mon Sep 17 00:00:00 2001 From: herbert Date: Sat, 14 Dec 2019 00:06:42 +0100 Subject: remove old version of devicemodel devicemanager oldux featureaggregator Issue-ID: SDNC-1004 Signed-off-by: herbert Change-Id: I5337643181e2398e5a8097e4ee14fa4ac96d0d4c --- sdnr/wt/odlux/framework/src/flux/action.ts | 8 -- sdnr/wt/odlux/framework/src/flux/connect.ts | 165 ------------------------- sdnr/wt/odlux/framework/src/flux/middleware.ts | 107 ---------------- sdnr/wt/odlux/framework/src/flux/store.ts | 98 --------------- 4 files changed, 378 deletions(-) delete mode 100644 sdnr/wt/odlux/framework/src/flux/action.ts delete mode 100644 sdnr/wt/odlux/framework/src/flux/connect.ts delete mode 100644 sdnr/wt/odlux/framework/src/flux/middleware.ts delete mode 100644 sdnr/wt/odlux/framework/src/flux/store.ts (limited to 'sdnr/wt/odlux/framework/src/flux') diff --git a/sdnr/wt/odlux/framework/src/flux/action.ts b/sdnr/wt/odlux/framework/src/flux/action.ts deleted file mode 100644 index 8a90f24b2..000000000 --- a/sdnr/wt/odlux/framework/src/flux/action.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Represents an action in the odlux flux architecture. - */ -export abstract class Action { } - -export interface IActionHandler { - (state: TState | undefined, action: TAction): TState; -} \ No newline at end of file diff --git a/sdnr/wt/odlux/framework/src/flux/connect.ts b/sdnr/wt/odlux/framework/src/flux/connect.ts deleted file mode 100644 index fca7df6fa..000000000 --- a/sdnr/wt/odlux/framework/src/flux/connect.ts +++ /dev/null @@ -1,165 +0,0 @@ -/** - * ============LICENSE_START======================================================================== - * ONAP : ccsdk feature sdnr wt odlux - * ================================================================================================= - * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. - * ================================================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - * ============LICENSE_END========================================================================== - */ -import * as React from 'react'; -import * as PropTypes from 'prop-types'; - -import { Dispatch } from '../flux/store'; - -import { ApplicationStore, IApplicationStoreState } from '../store/applicationStore'; - -interface IApplicationStoreContext { - applicationStore: ApplicationStore; -} - -export interface IDispatcher { - dispatch: Dispatch; -} - -interface IApplicationStoreProps { - state: IApplicationStoreState; -} - -interface IDispatchProps { - dispatch: Dispatch; -} - -type FuncInfer = { - ([...args]: any): T; -}; - -type FunctionResult = T extends FuncInfer ? U : never; - -type ComponentDecoratorInfer = { - (wrappedComponent: React.ComponentType): React.ComponentClass; -}; - -export type Connect = - (TMapProps extends undefined ? IApplicationStoreProps : FunctionResult) & - (TMapDispatch extends undefined ? IDispatchProps : FunctionResult); - -export function connect(): ComponentDecoratorInfer; - -export function connect( - mapStateToProps: (state: IApplicationStoreState) => TStateProps -): ComponentDecoratorInfer; - -export function connect( - mapStateToProps: (state: IApplicationStoreState) => TStateProps, - mapDispatchToProps: (dispatcher: IDispatcher) => TDispatchProps -): ComponentDecoratorInfer; - - -export function connect( - mapStateToProps: undefined, - mapDispatchToProps: (dispatcher: IDispatcher) => TDispatchProps -): ComponentDecoratorInfer; - - -export function connect( - mapStateToProps?: ((state: IApplicationStoreState) => TStateProps), - mapDispatchToProps?: ((dispatcher: IDispatcher) => TDispatchProps) -) : - ((WrappedComponent: React.ComponentType) => React.ComponentType) { - - const injectApplicationStore = (WrappedComponent: React.ComponentType): React.ComponentType => { - - class StoreAdapter extends React.Component { - public static contextTypes = { ...WrappedComponent.contextTypes, applicationStore: PropTypes.object.isRequired }; - context: IApplicationStoreContext; - - render(): JSX.Element { - - if (isWrappedComponentIsVersion1(WrappedComponent)) { - const element = React.createElement(WrappedComponent, { ...(this.props as any), state: this.store.state, dispatch: this.store.dispatch.bind(this.store) }); - return element; - } else if (mapStateToProps && isWrappedComponentIsVersion2(WrappedComponent)) { - const element = React.createElement(WrappedComponent, { ...(this.props as any), ...(mapStateToProps(this.store.state) as any), dispatch: this.store.dispatch.bind(this.store) }); - return element; - } else if (mapStateToProps && mapDispatchToProps && isWrappedComponentIsVersion3(WrappedComponent)) { - const element = React.createElement(WrappedComponent, { ...(this.props as any), ...(mapStateToProps(this.store.state) as any), ...(mapDispatchToProps({ dispatch: this.store.dispatch.bind(this.store)}) as any) }); - return element; - } else if (!mapStateToProps && mapDispatchToProps && isWrappedComponentIsVersion4(WrappedComponent)) { - const element = React.createElement(WrappedComponent, { ...(this.props as any), state: this.store.state, ...(mapDispatchToProps({ dispatch: this.store.dispatch.bind(this.store)}) as any) }); - return element; - } - throw new Error("Invalid arguments in connect."); - } - - componentDidMount(): void { - this.store && this.store.changed.addHandler(this.handleStoreChanged); - } - - componentWillUnmount(): void { - this.store && this.store.changed.removeHandler(this.handleStoreChanged); - } - - private get store(): ApplicationStore { - return this.context.applicationStore; - } - - private handleStoreChanged = () => { - this.forceUpdate(); - } - } - - return StoreAdapter; - } - - - return injectApplicationStore; - - /* inline methods */ - - function isWrappedComponentIsVersion1(wrappedComponent: any): wrappedComponent is React.ComponentType { - return !mapStateToProps && !mapDispatchToProps; - } - - function isWrappedComponentIsVersion2(wrappedComponent: any): wrappedComponent is React.ComponentType { - return !!mapStateToProps && !mapDispatchToProps; - } - - function isWrappedComponentIsVersion3(wrappedComponent: any): wrappedComponent is React.ComponentType { - return !!mapStateToProps && !!mapDispatchToProps; - } - - function isWrappedComponentIsVersion4(wrappedComponent: any): wrappedComponent is React.ComponentType { - return !mapStateToProps && !!mapDispatchToProps; - } -} - -interface ApplicationStoreProviderProps extends React.Props { - applicationStore: ApplicationStore; -} - -export class ApplicationStoreProvider extends React.Component - implements /* React.ComponentLifecycle, */ React.ChildContextProvider { - - public static childContextTypes = { applicationStore: PropTypes.object.isRequired }; - - getChildContext(): IApplicationStoreContext { - return { - applicationStore: this.props.applicationStore - }; - } - - render(): JSX.Element { - return React.Children.only(this.props.children); - } -} - -export default connect; \ No newline at end of file diff --git a/sdnr/wt/odlux/framework/src/flux/middleware.ts b/sdnr/wt/odlux/framework/src/flux/middleware.ts deleted file mode 100644 index 6179f3bcf..000000000 --- a/sdnr/wt/odlux/framework/src/flux/middleware.ts +++ /dev/null @@ -1,107 +0,0 @@ -/** - * ============LICENSE_START======================================================================== - * ONAP : ccsdk feature sdnr wt odlux - * ================================================================================================= - * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. - * ================================================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - * ============LICENSE_END========================================================================== - */ -import { Action, IActionHandler } from './action'; -import { Store, Dispatch, Enhancer } from './store'; - -export interface MiddlewareArg { - dispatch: Dispatch; - getState: () => T; -} - -export interface Middleware { - (obj: MiddlewareArg): Function; -} - -class InitialisationAction extends Action { }; -const initialisationAction = new InitialisationAction(); - -export type ActionHandlerMapObject = { - [K in keyof S]: IActionHandler -} - -export const combineActionHandler = (actionHandlers: ActionHandlerMapObject) : IActionHandler => { - const finalActionHandlers: ActionHandlerMapObject = {} as ActionHandlerMapObject; - Object.keys(actionHandlers).forEach(actionHandlerKey => { - const handler = actionHandlers[actionHandlerKey]; - if (typeof handler === 'function') { - finalActionHandlers[actionHandlerKey] = handler; - } - }); - - // ensure initialisation - Object.keys(finalActionHandlers).forEach(key => { - const actionHandler = finalActionHandlers[key]; - const initialState = actionHandler(undefined, initialisationAction); - if (typeof initialState === 'undefined') { - const errorMessage = `Action handler ${ key } returned undefiend during initialization.`; - throw new Error(errorMessage); - } - }); - - return function combination(state: TState = ({} as TState), action: TAction) { - let hasChanged = false; - const nextState : TState = {} as TState; - Object.keys(finalActionHandlers).forEach(key => { - const actionHandler = finalActionHandlers[key]; - const previousState = state[key]; - const nextStateKey = actionHandler(previousState, action); - if (typeof nextStateKey === 'undefined') { - const errorMessage = `Given ${ action.constructor } and action handler ${ key } returned undefiend.`; - throw new Error(errorMessage); - } - nextState[key] = nextStateKey; - hasChanged = hasChanged || nextStateKey !== previousState; - }); - return (hasChanged ? nextState : state) as TState; - }; -}; - -export const chainMiddleware = (...middlewares: Middleware[]): Enhancer => { - return (store: Store) => { - const middlewareAPI = { - getState() { return store.state }, - dispatch: (action: TAction) => store.dispatch(action) // we want to use the combinded dispatch - // we should NOT use the flux dispatcher here, since the action would affect ALL stores - }; - const chain = middlewares.map(middleware => middleware(middlewareAPI)); - return compose(...chain)(store.dispatch) as Dispatch; - } -}; - -/** - * Composes single-argument functions from right to left. The rightmost - * function can take multiple arguments as it provides the signature for - * the resulting composite function. - * - * @param {...Function} funcs The functions to compose. - * @returns {Function} A function obtained by composing the argument functions - * from right to left. For example, compose(f, g, h) is identical to doing - * (...args) => f(g(h(...args))). - */ -const compose = (...funcs: Function[]) => { - if (funcs.length === 0) { - return (arg: any) => arg - } - - if (funcs.length === 1) { - return funcs[0] - } - - return funcs.reduce((a, b) => (...args: any[]) => a(b(...args))); -}; - diff --git a/sdnr/wt/odlux/framework/src/flux/store.ts b/sdnr/wt/odlux/framework/src/flux/store.ts deleted file mode 100644 index dd80ce7ba..000000000 --- a/sdnr/wt/odlux/framework/src/flux/store.ts +++ /dev/null @@ -1,98 +0,0 @@ -/** - * ============LICENSE_START======================================================================== - * ONAP : ccsdk feature sdnr wt odlux - * ================================================================================================= - * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. - * ================================================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - * ============LICENSE_END========================================================================== - */ -import { Event } from "../common/event" - -import { Action } from './action'; -import { IActionHandler } from './action'; - -export interface Dispatch { - (action: TAction): TAction; -} - -export interface Enhancer { - (store: Store): Dispatch; -} - -class InitialisationAction extends Action { }; -const initialisationAction = new InitialisationAction(); - -export class Store { - - constructor(actionHandler: IActionHandler, enhancer?: Enhancer) - constructor(actionHandler: IActionHandler, initialState: TStoreState, enhancer?: Enhancer) - constructor(actionHandler: IActionHandler, initialState?: TStoreState | Enhancer, enhancer?: Enhancer) { - if (typeof initialState === 'function') { - enhancer = initialState as Enhancer; - initialState = undefined; - } - - this._isDispatching = false; - - this.changed = new Event(); // sollten wir hier eventuell sogar den state mit übergeben ? - - this._actionHandler = actionHandler; - - this._state = initialState as TStoreState; - if (enhancer) this._dispatch = enhancer(this); - - this._dispatch(initialisationAction); - } - - public changed: Event; - - private _dispatch: Dispatch = (payload: TAction): TAction => { - if (payload == null || !(payload instanceof Action)) { - throw new Error( - 'Actions must inherit from type Action. ' + - 'Use a custom middleware for async actions.' - ); - } - - if (this._isDispatching) { - throw new Error('ActionHandler may not dispatch actions.'); - } - - const oldState = this._state; - try { - this._isDispatching = true; - this._state = this._actionHandler(oldState, payload); - } finally { - this._isDispatching = false; - } - - if (this._state !== oldState) { - this.changed.invoke(); - } - - return payload; - } - - public get dispatch(): Dispatch { - return this._dispatch; - } - - public get state() { - return this._state - } - - private _state: TStoreState; - private _isDispatching: boolean; - private _actionHandler: IActionHandler; - -} - -- cgit 1.2.3-korg