-
Notifications
You must be signed in to change notification settings - Fork 24
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(demos): add custom logging demo (#418)
- Loading branch information
1 parent
e67fc27
commit 6ad41b9
Showing
10 changed files
with
284 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
import {FeatureAppContainer} from '@feature-hub/react'; | ||
import * as React from 'react'; | ||
import featureAppDefinition from './feature-app'; | ||
|
||
export function App(): JSX.Element { | ||
return ( | ||
<> | ||
<FeatureAppContainer | ||
featureAppDefinition={featureAppDefinition} | ||
idSpecifier="first" | ||
/> | ||
<FeatureAppContainer | ||
featureAppDefinition={featureAppDefinition} | ||
idSpecifier="second" | ||
/> | ||
</> | ||
); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
import {Card, Label} from '@blueprintjs/core'; | ||
import {FeatureAppDefinition} from '@feature-hub/core'; | ||
import {Logger} from '@feature-hub/logger'; | ||
import {ReactFeatureApp} from '@feature-hub/react'; | ||
import * as React from 'react'; | ||
|
||
interface Dependencies { | ||
readonly 's2:logger': Logger; | ||
} | ||
|
||
const featureAppDefinition: FeatureAppDefinition< | ||
ReactFeatureApp, | ||
undefined, | ||
undefined, | ||
Dependencies | ||
> = { | ||
id: 'test:logging-app', | ||
|
||
dependencies: { | ||
externals: {react: '^16.7.0'}, | ||
featureServices: {'s2:logger': '^1.0.0'} | ||
}, | ||
|
||
create: env => { | ||
const logger = env.featureServices['s2:logger']; | ||
|
||
logger.trace('logger trace test'); | ||
logger.debug('logger debug test'); | ||
logger.info('logger info test'); | ||
logger.warn('logger warn test'); | ||
logger.error('logger error test'); | ||
|
||
return { | ||
render: () => ( | ||
<Card style={{margin: '20px'}}> | ||
<Label>This is the {env.idSpecifier} Feature App!</Label> | ||
</Card> | ||
) | ||
}; | ||
} | ||
}; | ||
|
||
export default featureAppDefinition; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
import {createFeatureHub} from '@feature-hub/core'; | ||
import {defineLogger} from '@feature-hub/logger'; | ||
import {loadCommonJsModule} from '@feature-hub/module-loader-commonjs'; | ||
import {FeatureHubContextProvider} from '@feature-hub/react'; | ||
import pino from 'pino'; | ||
import * as React from 'react'; | ||
import * as ReactDOM from 'react-dom/server'; | ||
import {getPkgVersion} from '../get-pkg-version'; | ||
import {AppRendererResult} from '../start-server'; | ||
import {App} from './app'; | ||
|
||
export default async function renderApp(): Promise<AppRendererResult> { | ||
const logger = pino({prettyPrint: {translateTime: true}, level: 'trace'}); | ||
|
||
const {featureAppManager} = createFeatureHub('test:integrator', { | ||
logger, | ||
moduleLoader: loadCommonJsModule, | ||
providedExternals: {react: getPkgVersion('react')}, | ||
featureServiceDefinitions: [ | ||
defineLogger(consumerUid => logger.child({consumerUid})) | ||
] | ||
}); | ||
|
||
const html = ReactDOM.renderToString( | ||
<FeatureHubContextProvider value={{featureAppManager, logger}}> | ||
<App /> | ||
</FeatureHubContextProvider> | ||
); | ||
|
||
return {html}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
import {createFeatureHub} from '@feature-hub/core'; | ||
import {ConsumerLoggerCreator, defineLogger} from '@feature-hub/logger'; | ||
import {defineExternals, loadAmdModule} from '@feature-hub/module-loader-amd'; | ||
import {FeatureHubContextProvider} from '@feature-hub/react'; | ||
import * as React from 'react'; | ||
import * as ReactDOM from 'react-dom'; | ||
import '../blueprint-css'; | ||
import {App} from './app'; | ||
|
||
defineExternals({react: React}); | ||
|
||
const createConsumerConsole: ConsumerLoggerCreator = consumerUid => { | ||
const prefixArgs = [`%c${consumerUid}`, 'font-weight: bold']; | ||
|
||
return { | ||
trace: console.trace.bind(console, ...prefixArgs), | ||
debug: console.debug.bind(console, ...prefixArgs), | ||
info: console.info.bind(console, ...prefixArgs), | ||
warn: console.warn.bind(console, ...prefixArgs), | ||
error: console.error.bind(console, ...prefixArgs) | ||
}; | ||
}; | ||
|
||
const {featureAppManager} = createFeatureHub('test:integrator', { | ||
moduleLoader: loadAmdModule, | ||
providedExternals: {react: process.env.REACT_VERSION as string}, | ||
featureServiceDefinitions: [defineLogger(createConsumerConsole)] | ||
}); | ||
|
||
ReactDOM.hydrate( | ||
<FeatureHubContextProvider value={{featureAppManager}}> | ||
<App /> | ||
</FeatureHubContextProvider>, | ||
document.querySelector('main') | ||
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
// @ts-check | ||
const path = require('path'); | ||
const webpack = require('webpack'); | ||
const merge = require('webpack-merge'); | ||
const webpackBaseConfig = require('../webpack-base-config'); | ||
|
||
/** | ||
* @type {webpack.Configuration[]} | ||
*/ | ||
const configs = [ | ||
merge.smart(webpackBaseConfig, { | ||
entry: path.join(__dirname, './integrator.tsx'), | ||
output: { | ||
filename: 'integrator.js', | ||
publicPath: '/' | ||
} | ||
}) | ||
]; | ||
|
||
module.exports = configs; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.