fusion-plugin-introspect v1.6.6
fusion-plugin-introspect
Collects runtime metadata to aid debugging
Table of contents
Usage
import App from 'fusion-core';
import introspect from 'fusion-plugin-introspect';
const store = {
storeSync(data) {
// Log to stdout and collect data via log-entries, papertrail or similar
console.log(JSON.stringify(data));
}
async store(data, {myMetricsService}) {
// This is called once the app finishes collecting data
// We can obtain an arbitrary data storage service (`myMetricsService`) from the DI container
myMetricsService.emit('node-version', data.meta.nodeVersion);
}
}
export default () => {
const app = new App('<h1>Hello world</h1>', v => v);
app.register(
introspect(app, {
deps: {myMetricsService: SomeServiceToken},
store: !__DEV__ ? store : undefined,
})
)
}
Data schema
The data
that is passed to store
and storeSync
follows this schema:
{
version: string,
server: [{
timestamp: number,
dependencies: [{name: string, stack: string, dependencies: [string]}],
enhanced: [{name: string}],
}],
browser: [{
timestamp: number,
dependencies: [{name: string, stack: string, dependencies: [string]}],
enhanced: [{name: string}],
}],
runtime: {
timestamp: number,
pid: number,
nodeVersion: string,
npmVersion: string,
yarnVersion: string,
lockFileType: string,
dependencies: {[string]: string},
devDependencies: {[string]: string},
varNames: [string],
vars: {[string]: string},
}
}
version
- Data schema versionserver.timestamp
- When server-side DI graph data was collected. Note that this may differ from other timestampsserver.dependencies
- A list of tokens and their respective creation stack traces and dependenciesserver.enhanced
- A list of token names that have been enhancedbrowser.timestamp
- When client-side DI graph data was collected. Note that this may differ from other timestampsbrowser.dependencies
- A list of tokens and their respective creation stack traces and dependenciesbrowser.enhanced
- A list of token names that have been enhancedruntime.timestamp
- When DI graph data was collected. Note that this may differ from other timestampsruntime.pid
- The process IDruntime.nodeVersion
- Node versionruntime.npmVersion
- NPM versionruntime.yarnVersion
- Yarn versionruntime.lockFileType
- Eithernpm
,yarn
ornone
runtime.lockFile
- The contents of the lock filedependencies
- Thedependencies
field inpackage.json
devDependencies
- ThedevDependencies
field inpackage.json
varNames
- A list of all defined env var names (but not their values)vars
- A map of env vars, filtered by theenv
option
Flow types
export type IntrospectionSchema = {
version: string,
server: Array<Dependencies>,
browser: Array<Dependencies>,
runtime: Metadata,
};
export type Dependencies = {
timestamp: number,
dependencies: Array<Dependency>,
enhanced: Array<{name: string}>,
};
export type Dependency = {
name: string,
stack: string,
dependencies: Array<string>,
};
export type Metadata = {
timestamp: number,
pid: number,
nodeVersion: string,
npmVersion: string,
yarnVersion: string,
lockFileType: string,
dependencies: {[string]: string},
devDependencies: {[string]: string},
varNames: Array<string>,
vars: {[string]: string},
};
API
Registration API
introspect
import introspect from 'fusion-plugin-introspect';
app.register(introspect(app, {store, env}));
introspect: (app, {store, env}) => FusionPlugin<void, void>
- creates a Fusion pluginapp: FusionApp
- a Fusion app instance. Usually obtained fromfusion-react
orfusion-apollo
.store: {store, storeSync}
- a storage mechanism. Defaults tofsStore
store: (data, deps) => Promise<void>
- called when all runtime data is collected successfullydata: Object
- An object that conforms to the introspection data schemadeps: Object
- A map of dependencies. You can inject a service to consume the data.
storeSync: data => void
- called at startup time just in case the app crashes before data collection completes. Must not contain asynchronous code. See also the "Using'uncaughtException'
correctly" section in the Node docs. Note thatstoreSync
does not receive adeps
argument because the DI graph may not be resolvable.data: Object
- An object that conforms to the introspection data schema
env: ?Array<string>
- A list of env var names to be collected. Do not collect env vars that contain secrets or other sensitive data. Defaults to[]
.
Storage
fsStore
import {fsStore} from 'fusion-plugin-introspect';
fsStore: {store, storeSync}
- A storage mechanism that saves data to.fusion/fusion-stats.json
store: data => Promise<void>
- called when all runtime data is collected successfully. Saves data to a filedata: Object
- An object that conforms to the introspection data schema
storeSync: (data) => void
- called at startup time just in case the app crashes before data collection completes. Saves data to a file synchronouslydata: Object
- An object that conforms to the introspection data schema
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
1 year ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago