tangweijie 5099f2e87e Initial commit: Vue3 + TypeScript 前端项目
- Vue 3 + TypeScript + Element Plus 前端界面
- Pinia 状态管理
- Vue Router 4 路由管理
- Axios HTTP 客户端
- MSW (Mock Service Worker) 开发环境模拟
- 账户管理界面 (列表、详情、三科目余额展示)
- 交易管理界面 (列表、详情)
- 对账管理界面 (三账校验)
- 完善的 API 客户端封装
- Docker 容器化配置
- Nginx 配置用于生产环境
2026-01-05 17:57:11 +08:00

92 lines
2.7 KiB
JavaScript

import { invariant } from "outvariant";
import { Emitter } from "strict-event-emitter";
import { devUtils } from './utils/internal/devUtils.mjs';
import { pipeEvents } from './utils/internal/pipeEvents.mjs';
import { toReadonlyArray } from './utils/internal/toReadonlyArray.mjs';
import { Disposable } from './utils/internal/Disposable.mjs';
class HandlersController {
}
class InMemoryHandlersController {
constructor(initialHandlers) {
this.initialHandlers = initialHandlers;
this.handlers = [...initialHandlers];
}
handlers;
prepend(runtimeHandles) {
this.handlers.unshift(...runtimeHandles);
}
reset(nextHandlers) {
this.handlers = nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers];
}
currentHandlers() {
return this.handlers;
}
}
class SetupApi extends Disposable {
handlersController;
emitter;
publicEmitter;
events;
constructor(...initialHandlers) {
super();
invariant(
this.validateHandlers(initialHandlers),
devUtils.formatMessage(
`Failed to apply given request handlers: invalid input. Did you forget to spread the request handlers Array?`
)
);
this.handlersController = new InMemoryHandlersController(initialHandlers);
this.emitter = new Emitter();
this.publicEmitter = new Emitter();
pipeEvents(this.emitter, this.publicEmitter);
this.events = this.createLifeCycleEvents();
this.subscriptions.push(() => {
this.emitter.removeAllListeners();
this.publicEmitter.removeAllListeners();
});
}
validateHandlers(handlers) {
return handlers.every((handler) => !Array.isArray(handler));
}
use(...runtimeHandlers) {
invariant(
this.validateHandlers(runtimeHandlers),
devUtils.formatMessage(
`Failed to call "use()" with the given request handlers: invalid input. Did you forget to spread the array of request handlers?`
)
);
this.handlersController.prepend(runtimeHandlers);
}
restoreHandlers() {
this.handlersController.currentHandlers().forEach((handler) => {
if ("isUsed" in handler) {
handler.isUsed = false;
}
});
}
resetHandlers(...nextHandlers) {
this.handlersController.reset(nextHandlers);
}
listHandlers() {
return toReadonlyArray(this.handlersController.currentHandlers());
}
createLifeCycleEvents() {
return {
on: (...args) => {
return this.publicEmitter.on(...args);
},
removeListener: (...args) => {
return this.publicEmitter.removeListener(...args);
},
removeAllListeners: (...args) => {
return this.publicEmitter.removeAllListeners(...args);
}
};
}
}
export {
HandlersController,
InMemoryHandlersController,
SetupApi
};
//# sourceMappingURL=SetupApi.mjs.map