@mwcp/kmore
Version:
midway component for knex, supports declarative transaction and OpenTelemetry
121 lines • 4.83 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 { 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