dev
This commit is contained in:
parent
8ef319ad48
commit
f26648abfd
|
@ -1,14 +1,13 @@
|
||||||
import axios, { InternalAxiosRequestConfig, AxiosResponse } from "axios";
|
import axios, { InternalAxiosRequestConfig, AxiosResponse } from "axios";
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
import { Config } from "./sdk";
|
|
||||||
|
|
||||||
// 创建 axios 实例
|
// 创建 axios 实例
|
||||||
const service = axios.create({
|
const service = axios.create({
|
||||||
baseURL: Config.BaseUrl,
|
baseURL: import.meta.env.VITE_APP_BASE_API,
|
||||||
timeout: 50000,
|
timeout: 50000,
|
||||||
headers: {
|
headers: {
|
||||||
"Request-ID":uuidv4(),
|
"Request-ID":uuidv4(),
|
||||||
"Workspace":Config.Workspace,
|
"Workspace":import.meta.env.VITE_Workspace,
|
||||||
"Content-Type": "application/json;charset=utf-8"
|
"Content-Type": "application/json;charset=utf-8"
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
10
axios/sdk.ts
10
axios/sdk.ts
|
@ -1,10 +0,0 @@
|
||||||
|
|
||||||
export class Config {
|
|
||||||
static BaseUrl: string; // 服务器地址
|
|
||||||
static Workspace: string; // 工作空间
|
|
||||||
|
|
||||||
constructor(url:string,ws:string){
|
|
||||||
Config.BaseUrl = url;
|
|
||||||
Config.Workspace = ws;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,10 +1,86 @@
|
||||||
|
|
||||||
|
|
||||||
export interface Crc {
|
export interface Crc {
|
||||||
code?: string; // ping码
|
code?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export interface StatusReply {
|
export interface StatusReply {
|
||||||
status?: number;// 状态码
|
status?: number;
|
||||||
identity?: string; // 标识码
|
identity?: string;
|
||||||
message?: string; //状态说明
|
message?: string;
|
||||||
timeseq?: number; // 响应时间序列
|
timeseq?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export interface CheckForUpdatesRequest {
|
||||||
|
app?: string;
|
||||||
|
os?: string;
|
||||||
|
arch?: string;
|
||||||
|
version?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export interface CheckForUpdatesReply {
|
||||||
|
identity?: string;
|
||||||
|
version?: string;
|
||||||
|
summary?: string;
|
||||||
|
files?: string;
|
||||||
|
pubdate?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export interface Empty {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export interface ConfigureRequest {
|
||||||
|
app?: string;
|
||||||
|
os?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export interface ConfigureReply {
|
||||||
|
data?: ConfigureItem[];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export interface ConfigureItem {
|
||||||
|
Identity?: string;
|
||||||
|
key?: string;
|
||||||
|
value?: string;
|
||||||
|
version?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export interface AreasReply {
|
||||||
|
areas?: AreasItem[];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export interface AreasItem {
|
||||||
|
id?: string;
|
||||||
|
pid?: string;
|
||||||
|
deep?: string;
|
||||||
|
name?: string;
|
||||||
|
pinyin_prefix?: string;
|
||||||
|
pinyin?: string;
|
||||||
|
ext_id?: string;
|
||||||
|
ext_name?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export interface TagsReply {
|
||||||
|
tags?: TagsItem[];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export interface TagsItem {
|
||||||
|
id?: number;
|
||||||
|
type?: number;
|
||||||
|
key?: string;
|
||||||
|
title?: string;
|
||||||
|
remark?: string;
|
||||||
|
icon?: string;
|
||||||
}
|
}
|
|
@ -0,0 +1,142 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"path"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"git.apinb.com/bsm-sdk/engine/utils"
|
||||||
|
"github.com/tallstoat/pbparser"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
protoPath string = "./proto"
|
||||||
|
jsPath string = "./axios/service"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
fmt.Println("Conv poroto file to js file.")
|
||||||
|
|
||||||
|
srvPaths := getSubDirs(protoPath)
|
||||||
|
fmt.Println("Root:", protoPath, srvPaths, "JS Out:", jsPath)
|
||||||
|
|
||||||
|
parseProtos(protoPath, srvPaths[1])
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func getSubDirs(root string) []string {
|
||||||
|
var paths []string
|
||||||
|
|
||||||
|
files, _ := os.ReadDir(root)
|
||||||
|
for _, file := range files {
|
||||||
|
if file.IsDir() {
|
||||||
|
paths = append(paths, file.Name())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return paths
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseProtos(root, dir string) {
|
||||||
|
var msg []pbparser.MessageElement
|
||||||
|
|
||||||
|
fPath := path.Join(root, dir)
|
||||||
|
tsPath := path.Join(jsPath, dir)
|
||||||
|
|
||||||
|
files, _ := os.ReadDir(fPath)
|
||||||
|
for _, file := range files {
|
||||||
|
if file.IsDir() {
|
||||||
|
continue
|
||||||
|
} else {
|
||||||
|
pfPath := filepath.Join(fPath, file.Name())
|
||||||
|
pb, err := pbparser.ParseFile(pfPath)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
msg = append(msg, pb.Messages...)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
writeTypes(tsPath, msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
func writeSrvs(fileName string) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func writeTypes(tsPath string, msg []pbparser.MessageElement) {
|
||||||
|
tpl := `
|
||||||
|
{{Commit}}
|
||||||
|
export interface {{Name}} {
|
||||||
|
{{Data}}
|
||||||
|
}`
|
||||||
|
|
||||||
|
keyMap := make(map[string]int)
|
||||||
|
|
||||||
|
var bodys []string
|
||||||
|
for _, msgItem := range msg {
|
||||||
|
var data []string
|
||||||
|
var msgBody = tpl
|
||||||
|
|
||||||
|
for _, fd := range msgItem.Fields {
|
||||||
|
data = append(data, dispFields(fd))
|
||||||
|
}
|
||||||
|
|
||||||
|
keyFname := strings.ToLower(msgItem.Name)
|
||||||
|
if _, ok := keyMap[keyFname]; !ok {
|
||||||
|
|
||||||
|
msgBody = strings.ReplaceAll(msgBody, "{{Commit}}", msgItem.Documentation)
|
||||||
|
msgBody = strings.ReplaceAll(msgBody, "{{Name}}", msgItem.Name)
|
||||||
|
msgBody = strings.ReplaceAll(msgBody, "{{Data}}", strings.Join(data, "\r\n"))
|
||||||
|
|
||||||
|
bodys = append(bodys, msgBody)
|
||||||
|
keyMap[keyFname] = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
typesPath := filepath.Join(tsPath, "types.ts")
|
||||||
|
utils.StringToFile(typesPath, strings.Join(bodys, "\r\n"))
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func dispFields(fd pbparser.FieldElement) string {
|
||||||
|
tpl := " {{Name}}?: {{Type}}; {{Commit}}"
|
||||||
|
|
||||||
|
name := strings.Trim(fd.Name, "")
|
||||||
|
name = strings.ReplaceAll(name, "\t", "")
|
||||||
|
tpl = strings.ReplaceAll(tpl, "{{Name}}", name)
|
||||||
|
|
||||||
|
jsonByte, _ := json.Marshal(fd)
|
||||||
|
fmt.Println(string(jsonByte))
|
||||||
|
|
||||||
|
if fd.Documentation == "" {
|
||||||
|
tpl = strings.ReplaceAll(tpl, "{{Commit}}", "")
|
||||||
|
} else {
|
||||||
|
tpl = strings.ReplaceAll(tpl, "{{Commit}}", " // "+fd.Documentation)
|
||||||
|
}
|
||||||
|
|
||||||
|
var fdType string = ""
|
||||||
|
switch fd.Type.Name() {
|
||||||
|
case "string":
|
||||||
|
fdType = "string"
|
||||||
|
case "int32", "int64", "float":
|
||||||
|
fdType = "number"
|
||||||
|
case "bool":
|
||||||
|
fdType = "bool"
|
||||||
|
default:
|
||||||
|
if fd.Label == "repeated" {
|
||||||
|
fdType = fd.Type.Name() + "[]"
|
||||||
|
} else {
|
||||||
|
fdType = fd.Type.Name()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tpl = strings.ReplaceAll(tpl, "{{Type}}", fdType)
|
||||||
|
|
||||||
|
return tpl
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
module proto-tools
|
||||||
|
|
||||||
|
go 1.22.0
|
||||||
|
|
||||||
|
require (
|
||||||
|
git.apinb.com/bsm-sdk/engine v1.0.5
|
||||||
|
github.com/tallstoat/pbparser v0.2.0
|
||||||
|
)
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
|
github.com/jaevor/go-nanoid v1.3.0 // indirect
|
||||||
|
)
|
|
@ -0,0 +1,8 @@
|
||||||
|
git.apinb.com/bsm-sdk/engine v1.0.5 h1:nsU+5suyRFaVqHhnrU9ontpgW+54cuY/+7OnI7VEa60=
|
||||||
|
git.apinb.com/bsm-sdk/engine v1.0.5/go.mod h1:tNYgBhykUTBtpH+4EdAamcKqMwpJ3XUJ0roKqxGM3lM=
|
||||||
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||||
|
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/jaevor/go-nanoid v1.3.0 h1:nD+iepesZS6pr3uOVf20vR9GdGgJW1HPaR46gtrxzkg=
|
||||||
|
github.com/jaevor/go-nanoid v1.3.0/go.mod h1:SI+jFaPuddYkqkVQoNGHs81navCtH388TcrH0RqFKgY=
|
||||||
|
github.com/tallstoat/pbparser v0.2.0 h1:lsFH4mdiOv1MIQVmge/idThSTd2uByNodWVfbtysjzg=
|
||||||
|
github.com/tallstoat/pbparser v0.2.0/go.mod h1:aUC6W9uQLeAXZkknve8ZDO6InhRYpYHlJ9kvsQh1i2k=
|
|
@ -0,0 +1,109 @@
|
||||||
|
|
||||||
|
|
||||||
|
export interface Crc {
|
||||||
|
code?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export interface StatusReply {
|
||||||
|
status?: number;
|
||||||
|
identity?: string;
|
||||||
|
message?: string;
|
||||||
|
timeseq?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export interface CheckForUpdatesRequest {
|
||||||
|
app?: string;
|
||||||
|
os?: string;
|
||||||
|
arch?: string;
|
||||||
|
version?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export interface CheckForUpdatesReply {
|
||||||
|
identity?: string;
|
||||||
|
version?: string;
|
||||||
|
summary?: string;
|
||||||
|
files?: string;
|
||||||
|
pubdate?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export interface Empty {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export interface ConfigureRequest {
|
||||||
|
app?: string;
|
||||||
|
os?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export interface ConfigureReply {
|
||||||
|
data?: ConfigureItem[];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export interface ConfigureItem {
|
||||||
|
Identity?: string;
|
||||||
|
key?: string;
|
||||||
|
value?: string;
|
||||||
|
version?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export interface AreasReply {
|
||||||
|
areas?: AreasItem[];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export interface AreasItem {
|
||||||
|
id?: string;
|
||||||
|
pid?: string;
|
||||||
|
deep?: string;
|
||||||
|
name?: string;
|
||||||
|
pinyin_prefix?: string;
|
||||||
|
pinyin?: string;
|
||||||
|
ext_id?: string;
|
||||||
|
ext_name?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export interface TagsReply {
|
||||||
|
tags?: TagsItem[];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export interface TagsItem {
|
||||||
|
id?: number;
|
||||||
|
type?: number;
|
||||||
|
key?: string;
|
||||||
|
title?: string;
|
||||||
|
remark?: string;
|
||||||
|
icon?: string;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue