|
@@ -1,30 +1,85 @@
|
|
import { merge } from "lodash-es";
|
|
import { merge } from "lodash-es";
|
|
-import { service } from "../service";
|
|
|
|
|
|
+import { BaseService, service } from "../service";
|
|
import { Module } from "../types";
|
|
import { Module } from "../types";
|
|
import { path2Obj } from "../utils";
|
|
import { path2Obj } from "../utils";
|
|
import { config, isDev } from "/@/config";
|
|
import { config, isDev } from "/@/config";
|
|
|
|
+import { eps } from "virtual:eps";
|
|
|
|
|
|
export function createEps(modules: Module[]) {
|
|
export function createEps(modules: Module[]) {
|
|
- // 本地模块的数据
|
|
|
|
- const s = path2Obj(
|
|
|
|
- modules.reduce((a, b) => {
|
|
|
|
- return a.concat(...((b.services as any[]) || []));
|
|
|
|
- }, [])
|
|
|
|
- );
|
|
|
|
|
|
+ // 更新数据
|
|
|
|
+ function update() {
|
|
|
|
+ // 设置 request 方法
|
|
|
|
+ function set(d: any) {
|
|
|
|
+ if (d.namespace) {
|
|
|
|
+ const a = new BaseService(d.namespace);
|
|
|
|
|
|
- // 合并数据
|
|
|
|
- merge(service, s);
|
|
|
|
|
|
+ for (const i in d) {
|
|
|
|
+ const { path, method = "get" } = d[i];
|
|
|
|
|
|
- // 开发环境下,生成本地 service 的类型文件
|
|
|
|
|
|
+ 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);
|
|
|
|
+
|
|
|
|
+ // 合并[eps]
|
|
|
|
+ merge(service, eps.service);
|
|
|
|
+
|
|
|
|
+ // 合并[local]
|
|
|
|
+ merge(
|
|
|
|
+ service,
|
|
|
|
+ path2Obj(
|
|
|
|
+ modules.reduce((a, b) => {
|
|
|
|
+ return a.concat(...((b.services as any[]) || []));
|
|
|
|
+ }, [])
|
|
|
|
+ )
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ // 提示
|
|
|
|
+ if (isDev) {
|
|
|
|
+ console.log("[eps] update", service);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ update();
|
|
|
|
+
|
|
|
|
+ // 监听 vite 触发事件
|
|
|
|
+ if (import.meta.hot) {
|
|
|
|
+ import.meta.hot.on("eps-update", () => {
|
|
|
|
+ update();
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 开发环境下,生成本地 service 的类型描述文件
|
|
if (isDev && config.test.eps) {
|
|
if (isDev && config.test.eps) {
|
|
const list: any[] = [];
|
|
const list: any[] = [];
|
|
|
|
|
|
// 模拟 eps 数据
|
|
// 模拟 eps 数据
|
|
- function deep(s: any) {
|
|
|
|
- if (s.namespace) {
|
|
|
|
|
|
+ modules.forEach((m) => {
|
|
|
|
+ m.services?.forEach((s) => {
|
|
const api = Array.from(
|
|
const api = Array.from(
|
|
new Set([
|
|
new Set([
|
|
- ...Object.getOwnPropertyNames(s.constructor.prototype),
|
|
|
|
|
|
+ ...Object.getOwnPropertyNames(s.value.constructor.prototype),
|
|
"page",
|
|
"page",
|
|
"list",
|
|
"list",
|
|
"info",
|
|
"info",
|
|
@@ -42,18 +97,13 @@ export function createEps(modules: Module[]) {
|
|
|
|
|
|
list.push({
|
|
list.push({
|
|
api,
|
|
api,
|
|
- module: s.namespace.split("/")[0],
|
|
|
|
- name: s.constructor.name + "Entity",
|
|
|
|
- prefix: `/admin/${s.namespace}`
|
|
|
|
|
|
+ module: m.name,
|
|
|
|
+ name: s.value.constructor.name + "Entity",
|
|
|
|
+ prefix: `/admin/${s.path}`,
|
|
|
|
+ isLocal: true
|
|
});
|
|
});
|
|
- } else {
|
|
|
|
- for (const i in s) {
|
|
|
|
- deep(s[i]);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- deep(s);
|
|
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
|
|
// 生成文件
|
|
// 生成文件
|
|
service.request({
|
|
service.request({
|