UNPKG

@mwcp/kmore

Version:

midway component for knex, supports declarative transaction and OpenTelemetry

121 lines 4.83 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 { App, Configuration, Inject, Logger, MidwayDecoratorService, MidwayEnvironmentService, MidwayInformationService, MidwayWebRouterService, } from '@midwayjs/core'; import { TraceInit } from '@mwcp/otel'; import { MConfig, deleteRouter, registerMiddleware, } from '@mwcp/share'; 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 { DbManager } from './lib/db-source-manager.js'; import { ConfigKey } from './lib/index.js'; import { KmoreMiddleware } from './middleware/index.middleware.js'; let AutoConfiguration = class AutoConfiguration { app; environmentService; informationService; webRouterService; logger; config; kmoreSourceConfig; propagationConfig; dbSourceManager; decoratorService; async onConfigLoad() { if (!this.config.enableDefaultRoute) { await deleteRouter(`/_${ConfigKey.namespace}`, this.webRouterService); } } async onReady(container) { void container; // 全局db处理中间件,请求结束时回滚/提交所有本次请求未提交事务 registerMiddleware(this.app, KmoreMiddleware); } async onStop(container) { void container; this.logger.info(`[${ConfigKey.componentName}] stopping`); // const { timeoutWhenDestroy } = this.kmoreComponentConfig const out = 10000; const p1 = new Promise(done => setTimeout(done, out)); const p2 = this.dbSourceManager.stop(); await Promise.race([p1, p2]) .catch((ex) => { console.error(ex.message); }); this.logger.info(`[${ConfigKey.componentName}] stopped`); } }; __decorate([ App(), __metadata("design:type", Object) ], AutoConfiguration.prototype, "app", 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([ Logger(), __metadata("design:type", Object) ], AutoConfiguration.prototype, "logger", void 0); __decorate([ MConfig(ConfigKey.config), __metadata("design:type", Object) ], AutoConfiguration.prototype, "config", void 0); __decorate([ MConfig(), __metadata("design:type", Object) ], AutoConfiguration.prototype, "kmoreSourceConfig", void 0); __decorate([ MConfig(ConfigKey.propagationConfig), __metadata("design:type", Object) ], AutoConfiguration.prototype, "propagationConfig", void 0); __decorate([ Inject(), __metadata("design:type", DbManager) ], AutoConfiguration.prototype, "dbSourceManager", void 0); __decorate([ Inject(), __metadata("design:type", MidwayDecoratorService) ], AutoConfiguration.prototype, "decoratorService", void 0); __decorate([ TraceInit({ namespace: ConfigKey.namespace }), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", Promise) ], AutoConfiguration.prototype, "onReady", null); __decorate([ TraceInit({ namespace: ConfigKey.namespace }), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", Promise) ], AutoConfiguration.prototype, "onStop", null); AutoConfiguration = __decorate([ Configuration({ namespace: ConfigKey.namespace, importConfigs: [ { default: DefaultConfig, local: LocalConfig, unittest: UnittestConfig, }, ], imports: useComponents, }) ], AutoConfiguration); export { AutoConfiguration }; //# sourceMappingURL=configuration.js.map