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,yarnornoneruntime.lockFile- The contents of the lock filedependencies- Thedependenciesfield inpackage.jsondevDependencies- ThedevDependenciesfield inpackage.jsonvarNames- A list of all defined env var names (but not their values)vars- A map of env vars, filtered by theenvoption
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-reactorfusion-apollo.store: {store, storeSync}- a storage mechanism. Defaults tofsStorestore: (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 thatstoreSyncdoes not receive adepsargument 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.jsonstore: 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
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
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
4 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
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
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago