|
@@ -1,74 +1,75 @@
|
|
|
-import { merge } from "lodash-es";
|
|
|
+import { cloneDeep, merge } from "lodash-es";
|
|
|
import { BaseService, service } from "../service";
|
|
|
import { Module } from "../types";
|
|
|
import { path2Obj } from "../utils";
|
|
|
import { config, isDev } from "/@/config";
|
|
|
import { eps } from "virtual:eps";
|
|
|
+import { hmr } from "../hook";
|
|
|
+import { module } from "../module";
|
|
|
|
|
|
-export function createEps(modules: Module[]) {
|
|
|
- // 更新数据
|
|
|
- function update() {
|
|
|
- // 设置 request 方法
|
|
|
- function set(d: any) {
|
|
|
- if (d.namespace) {
|
|
|
- const a = new BaseService(d.namespace);
|
|
|
-
|
|
|
- for (const i in d) {
|
|
|
- const { path, method = "get" } = d[i];
|
|
|
-
|
|
|
- if (path) {
|
|
|
- a.request = a.request;
|
|
|
-
|
|
|
- a[i] = function (data?: any) {
|
|
|
- return this.request({
|
|
|
- url: path,
|
|
|
- method,
|
|
|
- [method.toLocaleLowerCase() == "post" ? "data" : "params"]: data
|
|
|
- });
|
|
|
- };
|
|
|
- }
|
|
|
- }
|
|
|
+// 更新事件
|
|
|
+function onUpdate() {
|
|
|
+ // 设置 request 方法
|
|
|
+ function set(d: any) {
|
|
|
+ if (d.namespace) {
|
|
|
+ const a = new BaseService(d.namespace);
|
|
|
|
|
|
- for (const i in a) {
|
|
|
- d[i] = a[i];
|
|
|
- }
|
|
|
- } else {
|
|
|
- for (const i in d) {
|
|
|
- set(d[i]);
|
|
|
+ for (const i in d) {
|
|
|
+ const { path, method = "get" } = d[i];
|
|
|
+
|
|
|
+ if (path) {
|
|
|
+ a.request = a.request;
|
|
|
+
|
|
|
+ a[i] = function (data?: any) {
|
|
|
+ return this.request({
|
|
|
+ url: path,
|
|
|
+ method,
|
|
|
+ [method.toLocaleLowerCase() == "post" ? "data" : "params"]: data
|
|
|
+ });
|
|
|
+ };
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ for (const i in a) {
|
|
|
+ d[i] = a[i];
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for (const i in d) {
|
|
|
+ set(d[i]);
|
|
|
+ }
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- // 遍历每一个方法
|
|
|
- set(eps.service);
|
|
|
+ // 遍历每一个方法
|
|
|
+ set(eps.service);
|
|
|
|
|
|
- // 合并[eps]
|
|
|
- merge(service, eps.service);
|
|
|
+ // 合并[eps]
|
|
|
+ merge(service, eps.service);
|
|
|
|
|
|
- // 合并[local]
|
|
|
- merge(
|
|
|
- service,
|
|
|
+ // 合并[local]
|
|
|
+ merge(
|
|
|
+ service,
|
|
|
+ cloneDeep(
|
|
|
path2Obj(
|
|
|
- modules.reduce((a, b) => {
|
|
|
+ module.list.reduce((a, b) => {
|
|
|
return a.concat(...((b.services as any[]) || []));
|
|
|
}, [])
|
|
|
)
|
|
|
- );
|
|
|
+ )
|
|
|
+ );
|
|
|
|
|
|
- // 提示
|
|
|
- if (isDev) {
|
|
|
- console.log("[eps] update", service);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- update();
|
|
|
+ // 热更新处理
|
|
|
+ hmr.setData("service", service);
|
|
|
|
|
|
- // 监听 vite 触发事件
|
|
|
- if (import.meta.hot) {
|
|
|
- import.meta.hot.on("eps-update", () => {
|
|
|
- update();
|
|
|
- });
|
|
|
+ // 提示
|
|
|
+ if (isDev) {
|
|
|
+ console.log("[eps] update", service);
|
|
|
}
|
|
|
+}
|
|
|
+
|
|
|
+export function createEps(modules: Module[]) {
|
|
|
+ // 更新 eps
|
|
|
+ onUpdate();
|
|
|
|
|
|
// 开发环境下,生成本地 service 的类型描述文件
|
|
|
if (isDev && config.test.eps) {
|
|
@@ -116,3 +117,10 @@ export function createEps(modules: Module[]) {
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+// 监听 vite 触发事件
|
|
|
+if (import.meta.hot) {
|
|
|
+ import.meta.hot.on("eps-update", () => {
|
|
|
+ onUpdate();
|
|
|
+ });
|
|
|
+}
|