@mwcp/otel
Version:
midway component for open telemetry
157 lines • 6.37 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
import assert from 'node:assert';
import { App, Configuration, Inject, Logger, MidwayEnvironmentService, MidwayFrameworkService, MidwayInformationService, MidwayWebRouterService, } from '@midwayjs/core';
import { MConfig, deleteRouter, registerMiddleware, } from '@mwcp/share';
import { sleep } from '@waiting/shared-core';
import * as DefaultConfig from './config/config.default.js';
import * as LocalConfig from './config/config.local.js';
import * as UnittestConfig from './config/config.unittest.js';
import { useComponents } from './imports.js';
import { OtelComponent } from './lib/component.js';
import { TraceInit } from './lib/index.js';
import { AutoRegister } from './lib/reg-decorator.js';
import { ConfigKey, } from './lib/types.js';
import { TraceMiddleware, TraceMiddlewareGRpc, TraceMiddlewareInner, TraceMiddlewareInnerGRpc, } from './middleware/index.middleware.js';
let AutoConfiguration = class AutoConfiguration {
app;
grpcApp;
config;
mwConfig;
environmentService;
informationService;
webRouterService;
frameworkService;
Reg;
otel;
logger;
async onConfigLoad() {
if (!this.config.enableDefaultRoute) {
await deleteRouter(`/_${ConfigKey.namespace}`, this.webRouterService);
}
// else if (this.mwConfig.ignore) {
// this.mwConfig.ignore.push(new RegExp(`/_${ConfigKey.namespace}/.+`, 'u'))
// }
}
async onReady(container) {
void container;
assert(this.app, 'this.app undefined. If start for development, please set env first like `export MIDWAY_SERVER_ENV=local`');
registerMiddleware(this.app, TraceMiddlewareInner, 'last');
const grpcFramework = this.frameworkService.getFramework('gRPC');
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (grpcFramework) {
const rpcApp = grpcFramework.getApplication();
if (rpcApp) {
registerMiddleware(rpcApp, TraceMiddlewareInnerGRpc, 'last');
}
}
}
async onServerReady(container) {
void container;
if (this.config.enable) {
registerMiddleware(this.app, TraceMiddleware, 'first');
const grpcFramework = this.frameworkService.getFramework('gRPC');
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (grpcFramework) {
const rpcApp = grpcFramework.getApplication();
if (rpcApp) {
registerMiddleware(rpcApp, TraceMiddlewareGRpc, 'first');
}
}
void setTimeout(async () => {
const mwNames = this.app.getMiddleware().getNames();
this.otel.addAppInitEvent({
event: `${ConfigKey.componentName}.onServerReady.end`,
mwNames: JSON.stringify(mwNames),
});
this.otel.endAppInitEvent();
}, 0);
}
}
async onStop(container) {
this.logger.info('[otel] onStop()');
if (this.config.enable) {
const otel = await container.getAsync(OtelComponent);
await otel.shutdown();
await sleep(100);
}
}
};
__decorate([
App(),
__metadata("design:type", Object)
], AutoConfiguration.prototype, "app", void 0);
__decorate([
App('gRPC'),
__metadata("design:type", Object)
], AutoConfiguration.prototype, "grpcApp", void 0);
__decorate([
MConfig(ConfigKey.config),
__metadata("design:type", Object)
], AutoConfiguration.prototype, "config", void 0);
__decorate([
MConfig(ConfigKey.middlewareConfig),
__metadata("design:type", Object)
], AutoConfiguration.prototype, "mwConfig", void 0);
__decorate([
Inject(),
__metadata("design:type", MidwayEnvironmentService)
], AutoConfiguration.prototype, "environmentService", void 0);
__decorate([
Inject(),
__metadata("design:type", MidwayInformationService)
], AutoConfiguration.prototype, "informationService", void 0);
__decorate([
Inject(),
__metadata("design:type", MidwayWebRouterService)
], AutoConfiguration.prototype, "webRouterService", void 0);
__decorate([
Inject(),
__metadata("design:type", MidwayFrameworkService)
], AutoConfiguration.prototype, "frameworkService", void 0);
__decorate([
Inject(),
__metadata("design:type", AutoRegister)
], AutoConfiguration.prototype, "Reg", void 0);
__decorate([
Inject(),
__metadata("design:type", OtelComponent)
], AutoConfiguration.prototype, "otel", void 0);
__decorate([
Logger(),
__metadata("design:type", Object)
], AutoConfiguration.prototype, "logger", void 0);
__decorate([
TraceInit({ namespace: ConfigKey.componentName }),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", Promise)
], AutoConfiguration.prototype, "onReady", null);
__decorate([
TraceInit({ namespace: ConfigKey.componentName }),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", Promise)
], AutoConfiguration.prototype, "onServerReady", null);
AutoConfiguration = __decorate([
Configuration({
namespace: ConfigKey.namespace,
importConfigs: [
{
default: DefaultConfig,
local: LocalConfig,
unittest: UnittestConfig,
},
],
imports: useComponents,
})
], AutoConfiguration);
export { AutoConfiguration };
//# sourceMappingURL=configuration.js.map