UNPKG

infrastructure-components

Version:

Infrastructure-Components configure the infrastructure of your React-App as part of your React-Components.

63 lines (49 loc) 2.06 kB
import { IConfigParseResult } from './config-parse-result'; import * as deepmerge from 'deepmerge'; export interface IPlugin { /** * check whether the plugin applies to the provided component * @param component to process * @return boolean whether the plugin applies to the component */ applies: (component) => boolean, /** * process the provided component. return a tuple {Array<slsConfigs>, Array<webpackConfigs>, Array<postBuilds>} * * @param component component that this plugin applies to * * @param childConfigs list of the parsing result of the children * type: Array<{Array<slsConfigs>, Array<webpackConfigs>, Array<postBuilds>}> * @param compileMode boolean, if true, the components have beeen loaded statically only! */ process: ( component: any, childConfigs: Array<IConfigParseResult>, infrastructureMode: string | undefined, stage: string | undefined) => IConfigParseResult, } export const forwardChildPostBuilds = (childConfigs: Array<IConfigParseResult>) => ( childConfigs.reduce((result, config) => result.concat(config.postBuilds), []) ); /** * provide all client configs in a flat list */ export const forwardChildWebpackConfigs = (childConfigs: Array<IConfigParseResult>) => { return childConfigs.reduce((result, config) => result.concat(...config.webpackConfigs), []); } /** * provide all client configs in a flat list */ export const forwardChildIamRoleStatements = (childConfigs: Array<IConfigParseResult>) => { return childConfigs.reduce((result, config) => { //console.log("reduce iam: ", config.iamRoleStatements); const statements = (config.iamRoleStatements !== undefined && Array.isArray(config.iamRoleStatements)) ? config.iamRoleStatements : []; //console.log("iam result: ", statements) return result.concat(statements); }, []) }; /* export const mergeIamRoleStatements = (statements: Array<any>) => { return deepmerge.all(statements); };*/