UNPKG

@mwcp/otel

Version:
157 lines 6.37 kB
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