数据库添加完成 后端代码结构初步设计完成

master
git 2 years ago
parent 6a130c3922
commit 5cf66de8ff

513
oab/Cargo.lock generated

@ -2,6 +2,191 @@
# It is not intended for manual editing.
version = 3
[[package]]
name = "actix-codec"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57a7559404a7f3573127aab53c08ce37a6c6a315c374a31070f3c91cd1b4a7fe"
dependencies = [
"bitflags",
"bytes",
"futures-core",
"futures-sink",
"log",
"memchr",
"pin-project-lite",
"tokio",
"tokio-util",
]
[[package]]
name = "actix-http"
version = "3.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f9ffb6db08c1c3a1f4aef540f1a63193adc73c4fbd40b75a95fc8c5258f6e51"
dependencies = [
"actix-codec",
"actix-rt",
"actix-service",
"actix-utils",
"ahash",
"base64",
"bitflags",
"brotli",
"bytes",
"bytestring",
"derive_more",
"encoding_rs",
"flate2",
"futures-core",
"h2",
"http",
"httparse",
"httpdate",
"itoa",
"language-tags",
"local-channel",
"mime",
"percent-encoding",
"pin-project-lite",
"rand",
"sha1 0.10.1",
"smallvec",
"tracing",
"zstd",
]
[[package]]
name = "actix-macros"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "465a6172cf69b960917811022d8f29bc0b7fa1398bc4f78b3c466673db1213b6"
dependencies = [
"quote",
"syn",
]
[[package]]
name = "actix-router"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb60846b52c118f2f04a56cc90880a274271c489b2498623d58176f8ca21fa80"
dependencies = [
"bytestring",
"firestorm",
"http",
"log",
"regex",
"serde",
]
[[package]]
name = "actix-rt"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ea16c295198e958ef31930a6ef37d0fb64e9ca3b6116e6b93a8bdae96ee1000"
dependencies = [
"futures-core",
"tokio",
]
[[package]]
name = "actix-server"
version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0da34f8e659ea1b077bb4637948b815cd3768ad5a188fdcd74ff4d84240cd824"
dependencies = [
"actix-rt",
"actix-service",
"actix-utils",
"futures-core",
"futures-util",
"mio",
"num_cpus",
"socket2",
"tokio",
"tracing",
]
[[package]]
name = "actix-service"
version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b894941f818cfdc7ccc4b9e60fa7e53b5042a2e8567270f9147d5591893373a"
dependencies = [
"futures-core",
"paste",
"pin-project-lite",
]
[[package]]
name = "actix-utils"
version = "3.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e491cbaac2e7fc788dfff99ff48ef317e23b3cf63dbaf7aaab6418f40f92aa94"
dependencies = [
"local-waker",
"pin-project-lite",
]
[[package]]
name = "actix-web"
version = "4.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a27e8fe9ba4ae613c21f677c2cfaf0696c3744030c6f485b34634e502d6bb379"
dependencies = [
"actix-codec",
"actix-http",
"actix-macros",
"actix-router",
"actix-rt",
"actix-server",
"actix-service",
"actix-utils",
"actix-web-codegen",
"ahash",
"bytes",
"bytestring",
"cfg-if",
"cookie",
"derive_more",
"encoding_rs",
"futures-core",
"futures-util",
"itoa",
"language-tags",
"log",
"mime",
"once_cell",
"pin-project-lite",
"regex",
"serde",
"serde_json",
"serde_urlencoded",
"smallvec",
"socket2",
"time 0.3.9",
"url",
]
[[package]]
name = "actix-web-codegen"
version = "4.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f270541caec49c15673b0af0e9a00143421ad4f118d2df7edcb68b627632f56"
dependencies = [
"actix-router",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "adler"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
name = "ahash"
version = "0.7.6"
@ -13,6 +198,30 @@ dependencies = [
"version_check",
]
[[package]]
name = "aho-corasick"
version = "0.7.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
dependencies = [
"memchr",
]
[[package]]
name = "alloc-no-stdlib"
version = "2.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35ef4730490ad1c4eae5c4325b2a95f521d023e5c885853ff7aca0a6a1631db3"
[[package]]
name = "alloc-stdlib"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "697ed7edc0f1711de49ce108c541623a0af97c6c60b2f6e2b65229847ac843c2"
dependencies = [
"alloc-no-stdlib",
]
[[package]]
name = "ansi_term"
version = "0.12.1"
@ -137,6 +346,27 @@ dependencies = [
"byte-tools",
]
[[package]]
name = "brotli"
version = "3.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
"brotli-decompressor",
]
[[package]]
name = "brotli-decompressor"
version = "2.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
]
[[package]]
name = "bumpalo"
version = "3.9.1"
@ -161,11 +391,23 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
[[package]]
name = "bytestring"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86b6a75fd3048808ef06af5cd79712be8111960adaf89d90250974b38fc3928a"
dependencies = [
"bytes",
]
[[package]]
name = "cc"
version = "1.0.73"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
dependencies = [
"jobserver",
]
[[package]]
name = "cfg-if"
@ -238,6 +480,23 @@ version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935"
[[package]]
name = "convert_case"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
[[package]]
name = "cookie"
version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94d4706de1b0fa5b132270cddffa8585166037822e260a944fe161acd137ca05"
dependencies = [
"percent-encoding",
"time 0.3.9",
"version_check",
]
[[package]]
name = "cpufeatures"
version = "0.2.2"
@ -262,6 +521,15 @@ version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ccaeedb56da03b09f598226e25e80088cb4cd25f316e6e4df7d695f0feeb1403"
[[package]]
name = "crc32fast"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
dependencies = [
"cfg-if",
]
[[package]]
name = "crossbeam-queue"
version = "0.3.5"
@ -323,6 +591,19 @@ dependencies = [
"pem-rfc7468",
]
[[package]]
name = "derive_more"
version = "0.99.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
dependencies = [
"convert_case",
"proc-macro2",
"quote",
"rustc_version 0.4.0",
"syn",
]
[[package]]
name = "digest"
version = "0.8.1"
@ -357,6 +638,15 @@ dependencies = [
"serde",
]
[[package]]
name = "encoding_rs"
version = "0.8.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b"
dependencies = [
"cfg-if",
]
[[package]]
name = "event-listener"
version = "2.5.2"
@ -369,6 +659,28 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
[[package]]
name = "firestorm"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c5f6c2c942da57e2aaaa84b8a521489486f14e75e7fa91dab70aba913975f98"
[[package]]
name = "flate2"
version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6"
dependencies = [
"crc32fast",
"miniz_oxide",
]
[[package]]
name = "fnv"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "form_urlencoded"
version = "1.0.1"
@ -509,6 +821,25 @@ dependencies = [
"wasi 0.10.2+wasi-snapshot-preview1",
]
[[package]]
name = "h2"
version = "0.3.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57"
dependencies = [
"bytes",
"fnv",
"futures-core",
"futures-sink",
"futures-util",
"http",
"indexmap",
"slab",
"tokio",
"tokio-util",
"tracing",
]
[[package]]
name = "hashbrown"
version = "0.11.2"
@ -562,6 +893,29 @@ dependencies = [
"thiserror",
]
[[package]]
name = "http"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399"
dependencies = [
"bytes",
"fnv",
"itoa",
]
[[package]]
name = "httparse"
version = "1.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c"
[[package]]
name = "httpdate"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421"
[[package]]
name = "idna"
version = "0.2.3"
@ -635,6 +989,15 @@ version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d"
[[package]]
name = "jobserver"
version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa"
dependencies = [
"libc",
]
[[package]]
name = "js-sys"
version = "0.3.57"
@ -644,6 +1007,12 @@ dependencies = [
"wasm-bindgen",
]
[[package]]
name = "language-tags"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388"
[[package]]
name = "lazy_static"
version = "1.4.0"
@ -671,6 +1040,24 @@ version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"
[[package]]
name = "local-channel"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f303ec0e94c6c54447f84f3b0ef7af769858a9c4ef56ef2a986d3dcd4c3fc9c"
dependencies = [
"futures-core",
"futures-sink",
"futures-util",
"local-waker",
]
[[package]]
name = "local-waker"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e34f76eb3611940e0e7d53a9aaa4e6a3151f69541a282fd0dad5571420c53ff1"
[[package]]
name = "lock_api"
version = "0.4.7"
@ -708,12 +1095,27 @@ version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
[[package]]
name = "mime"
version = "0.3.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
[[package]]
name = "minimal-lexical"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "miniz_oxide"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc"
dependencies = [
"adler",
]
[[package]]
name = "mio"
version = "0.8.3"
@ -818,6 +1220,7 @@ dependencies = [
name = "oab"
version = "0.1.0"
dependencies = [
"actix-web",
"clap",
"include_dir",
"lazy_static",
@ -826,6 +1229,7 @@ dependencies = [
"serde",
"serde_json",
"serde_yaml",
"thiserror",
"time 0.3.9",
"tokio",
"tracing",
@ -1192,6 +1596,23 @@ dependencies = [
"bitflags",
]
[[package]]
name = "regex"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.6.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
[[package]]
name = "ring"
version = "0.16.20"
@ -1244,7 +1665,16 @@ version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
dependencies = [
"semver",
"semver 0.9.0",
]
[[package]]
name = "rustc_version"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
dependencies = [
"semver 1.0.12",
]
[[package]]
@ -1291,6 +1721,12 @@ dependencies = [
"semver-parser",
]
[[package]]
name = "semver"
version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2333e6df6d6598f2b1974829f853c2b4c5f4a6e503c10af918081aa6f8564e1"
[[package]]
name = "semver-parser"
version = "0.7.0"
@ -1338,6 +1774,18 @@ dependencies = [
"serde",
]
[[package]]
name = "serde_urlencoded"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
dependencies = [
"form_urlencoded",
"itoa",
"ryu",
"serde",
]
[[package]]
name = "serde_yaml"
version = "0.8.24"
@ -1382,6 +1830,17 @@ dependencies = [
"sha1_smol",
]
[[package]]
name = "sha1"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c77f4e7f65455545c2153c1253d25056825e77ee2533f0e41deb65a93a34852f"
dependencies = [
"cfg-if",
"cpufeatures",
"digest 0.10.3",
]
[[package]]
name = "sha1_smol"
version = "1.0.0"
@ -1548,7 +2007,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5"
dependencies = [
"discard",
"rustc_version",
"rustc_version 0.2.3",
"stdweb-derive",
"stdweb-internal-macros",
"stdweb-internal-runtime",
@ -1580,7 +2039,7 @@ dependencies = [
"serde",
"serde_derive",
"serde_json",
"sha1",
"sha1 0.6.1",
"syn",
]
@ -1751,9 +2210,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]]
name = "tokio"
version = "1.18.2"
version = "1.19.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4903bf0427cf68dddd5aa6a93220756f8be0c34fcfa9f5e6191e103e15a31395"
checksum = "c51a52ed6686dd62c320f9b89299e9dfb46f730c7a48e635c19f21d116cb1439"
dependencies = [
"bytes",
"libc",
@ -1802,6 +2261,20 @@ dependencies = [
"tokio",
]
[[package]]
name = "tokio-util"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45"
dependencies = [
"bytes",
"futures-core",
"futures-sink",
"pin-project-lite",
"tokio",
"tracing",
]
[[package]]
name = "tracing"
version = "0.1.34"
@ -1809,6 +2282,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d0ecdcb44a79f0fe9844f0c4f33a342cbcbb5117de8001e6ba0dc2351327d09"
dependencies = [
"cfg-if",
"log",
"pin-project-lite",
"tracing-attributes",
"tracing-core",
@ -2122,3 +2596,32 @@ name = "zeroize"
version = "1.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94693807d016b2f2d2e14420eb3bfcca689311ff775dcf113d74ea624b7cdf07"
[[package]]
name = "zstd"
version = "0.11.2+zstd.1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4"
dependencies = [
"zstd-safe",
]
[[package]]
name = "zstd-safe"
version = "5.0.2+zstd.1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db"
dependencies = [
"libc",
"zstd-sys",
]
[[package]]
name = "zstd-sys"
version = "2.0.1+zstd.1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12b"
dependencies = [
"cc",
"libc",
]

@ -16,8 +16,9 @@ time = { version = "0.3", features = ["formatting", "macros"] }
tokio = { version = "1", features = ["full"] }
tracing = "*"
tracing-subscriber = "*"
thiserror = "1.0"
rbson = "2"
rbatis = { version = "*", default-features = false, features = ["runtime-tokio-rustls","mysql","debug_mode"] }
actix-web = "4"

@ -0,0 +1,147 @@
/*
* table.sql
* Copyright (C) 2022 veypi <i@veypi.com>
*
* Distributed under terms of the Apache license.
*/
CREATE TABLE IF NOT EXISTS `user`
(
`id` varchar(32) NOT NULL DEFAULT '' COMMENT 'User UUID',
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`delete_flag` int(1) NOT NULL,
`username` varchar(255) NOT NULL UNIQUE,
`nickname` varchar(255),
`email` varchar(255) UNIQUE,
`phone` varchar(255) UNIQUE,
`icon` varchar(255),
`status` int NOT NULL COMMENT '状态0ok1disabled',
`used` int,
`space` int DEFAULT 300,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `app`
(
`id` varchar(32) NOT NULL,
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`delete_flag` int(1) NOT NULL,
`name` varchar(255) NOT NULL,
`icon` varchar(255),
`des` varchar(255),
`user_count` int NOT NULL,
`hide` int(1) NOT NULL,
`regist` int(1) NOT NULL,
`role_id` varchar(32),
`redirect` varchar(255),
`status` int NOT NULL COMMENT '状态0ok1disabled',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `app_user`
(
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`app_id` varchar(32) NOT NULL,
`user_id` varchar(32) NOT NULL,
`status` varchar(32) NOT NULL,
PRIMARY KEY (`user_id`,`app_id`) USING BTREE,
FOREIGN KEY (`app_id`) REFERENCES `app`(`id`),
FOREIGN KEY (`user_id`) REFERENCES `user`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='app_to_user';
CREATE TABLE IF NOT EXISTS `role`
(
`id` varchar(32) NOT NULL,
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`delete_flag` int(1) NOT NULL,
`app_id` varchar(32) NOT NULL,
`name` varchar(255) NOT NULL,
`des` varchar(255),
`user_count` int NOT NULL,
PRIMARY KEY (`id`) USING BTREE,
FOREIGN KEY (`app_id`) REFERENCES `app`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `user_role`
(
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`user_id` varchar(32) NOT NULL,
`role_id` varchar(32) NOT NULL,
`status` varchar(32) NOT NULL,
PRIMARY KEY (`user_id`,`role_id`) USING BTREE,
FOREIGN KEY (`role_id`) REFERENCES `role`(`id`),
FOREIGN KEY (`user_id`) REFERENCES `user`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `resource`
(
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`delete_flag` int(1) NOT NULL,
`app_id` varchar(32) NOT NULL,
`name` varchar(32) NOT NULL,
`des` varchar(255),
PRIMARY KEY (`app_id`,`name`) USING BTREE,
FOREIGN KEY (`app_id`) REFERENCES `app`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `access`
(
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`delete_flag` int(1) NOT NULL,
`app_id` varchar(32) NOT NULL,
`name` varchar(32) NOT NULL,
`role_id` varchar(32) NULL DEFAULT NULL,
`user_id` varchar(32) NULL DEFAULT NULL,
`rid` varchar(32) DEFAULT NULL COMMENT '资源子id',
`level` int DEFAULT 0,
-- PRIMARY KEY (`app_id`,`name`, `role_id`, `user_id`) USING BTREE,
FOREIGN KEY (`role_id`) REFERENCES `role`(`id`),
FOREIGN KEY (`user_id`) REFERENCES `user`(`id`),
FOREIGN KEY (`app_id`,`name`) REFERENCES `resource`(`app_id`,`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `app`
ADD FOREIGN KEY (`role_id`) REFERENCES `role`(`id`);
INSERT INTO `user` (`id`, `username`)
VALUES ('user0', 'name');
INSERT INTO `app` (`id`, `name`)
VALUES ('app0', 'a0');
INSERT INTO `resource` (`app_id`, `name`)
VALUES ('app0', 'sound');
INSERT INTO `role` (`id`, `app_id`)
VALUES ('role0', 'app0');
INSERT INTO `access` (`app_id`, `name`, `role_id`, `user_id`)
VALUES ('app0', 'sound', NULL, 'user0');

@ -0,0 +1,29 @@
//
// mod.rs
// Copyright (C) 2022 veypi <i@veypi.com>
// 2022-06-24 16:26
// Distributed under terms of the Apache license.
//
//
use crate::{Error, Result};
use actix_web::{get, web, Responder};
#[get("/hello/{name}")]
async fn greet(name: web::Path<u32>) -> Result<String> {
let n = name.into_inner();
if n > 0 {
Ok(format!("Hello {n}!"))
} else {
Err(Error::Unknown)
}
}
#[get("/topic/derive")]
async fn hello() -> impl Responder {
"Hello World!"
}
pub fn routes(cfg: &mut web::ServiceConfig) {
cfg.service(greet);
cfg.service(hello);
}

@ -8,8 +8,13 @@
//
//
use std::borrow::Borrow;
use std::{
borrow::Borrow,
fs::File,
io::{self, Read},
};
use clap::{Args, Parser, Subcommand};
use lazy_static::lazy_static;
use rbatis::rbatis::Rbatis;
lazy_static! {
@ -17,6 +22,43 @@ lazy_static! {
pub static ref DB:Rbatis=Rbatis::new();
}
lazy_static! {
pub static ref CLI: AppCli = AppCli::new();
}
lazy_static! {
pub static ref CONFIG: ApplicationConfig = ApplicationConfig::new();
}
#[derive(Debug, Parser)]
#[clap(name = "oab")]
#[clap(about = "oab", long_about = None)]
pub struct AppCli {
#[clap(short = 'c', value_name = "cfg",default_value_t = String::from("~/.config/oab/oab.yml"), value_hint = clap::ValueHint::DirPath)]
cfg: String,
#[clap(subcommand)]
pub command: Option<Clis>,
}
#[derive(Debug, Subcommand)]
pub enum Clis {
Init,
Web,
Stash(StashData),
}
#[derive(Debug, Args)]
#[clap(args_conflicts_with_subcommands = true)]
pub struct StashData {
command: Option<String>,
}
impl AppCli {
fn new() -> Self {
AppCli::parse()
}
}
#[derive(Debug, PartialEq, serde::Serialize, serde::Deserialize)]
pub struct ApplicationConfig {
pub debug: bool,
@ -25,30 +67,51 @@ pub struct ApplicationConfig {
pub db_user: String,
pub db_pass: String,
pub db_name: String,
pub log_dir: String,
pub log_dir: Option<String>,
/// "100MB" 日志分割尺寸-单位KB,MB,GB
pub log_temp_size: String,
pub log_pack_compress: String,
pub log_level: String,
pub jwt_secret: String,
pub log_temp_size: Option<String>,
pub log_pack_compress: Option<String>,
pub log_level: Option<String>,
pub jwt_secret: Option<String>,
}
impl ApplicationConfig {
pub fn new() -> Self {
ApplicationConfig {
let mut f = match File::open(CLI.cfg.clone()) {
Ok(f) => f,
Err(ref e) if e.kind() == io::ErrorKind::NotFound => return Self::defaut(),
Err(e) => panic!("{}", e),
};
File::open(CLI.cfg.clone()).unwrap();
let mut yml_data = String::new();
f.read_to_string(&mut yml_data).unwrap();
//读取配置
let result: ApplicationConfig =
serde_yaml::from_str(&yml_data).expect("load config file fail");
if result.debug {
println!("load config:{:?}", result);
println!("///////////////////// Start On Debug Mode ////////////////////////////");
} else {
println!("release_mode is enable!")
}
result
}
pub fn defaut() -> Self {
Self {
debug: true,
server_url: "127.0.0.1:4000".to_string(),
server_url: "127.0.0.1:4001".to_string(),
db_url: "127.0.0.1:3306".to_string(),
db_user: "root".to_string(),
db_name: "test".to_string(),
db_pass: "123456".to_string(),
log_dir: "".to_string(),
log_temp_size: "".to_string(),
log_pack_compress: "".to_string(),
log_level: "".to_string(),
jwt_secret: "".to_string(),
db_name: "test".to_string(),
log_dir: None,
log_temp_size: None,
log_pack_compress: None,
log_level: None,
jwt_secret: None,
}
}
pub fn save(&self) {}
pub fn db(&self) -> &DB {
DB.borrow()
}
@ -61,23 +124,6 @@ impl ApplicationConfig {
}
}
///默认配置
impl Default for ApplicationConfig {
fn default() -> Self {
let yml_data = include_str!("./mod.rs");
//读取配置
let result: ApplicationConfig =
serde_yaml::from_str(yml_data).expect("load config file fail");
if result.debug {
println!("load config:{:?}", result);
println!("///////////////////// Start On Debug Mode ////////////////////////////");
} else {
println!("release_mode is enable!")
}
result
}
}
struct FormatTime;
impl tracing_subscriber::fmt::time::FormatTime for FormatTime {
fn format_time(&self, w: &mut tracing_subscriber::fmt::format::Writer<'_>) -> std::fmt::Result {
@ -94,5 +140,8 @@ impl tracing_subscriber::fmt::time::FormatTime for FormatTime {
}
pub fn init_log() {
tracing_subscriber::fmt().with_timer(FormatTime {}).init();
tracing_subscriber::fmt()
.with_line_number(true)
.with_timer(FormatTime {})
.init();
}

@ -1,12 +0,0 @@
//
// mod.rs
// Copyright (C) 2022 veypi <veypi@qq.com>
// 2022-05-29 18:39
// Distributed under terms of the MIT license.
//
//
mod cfg;
pub use cfg::init_log;
pub use cfg::ApplicationConfig;
pub use cfg::DB;

@ -0,0 +1,56 @@
//
// cli.rs
// Copyright (C) 2022 veypi <i@veypi.com>
// 2022-07-08 18:39
// Distributed under terms of the Apache license.
//
use clap::{Args, Parser, Subcommand};
use lazy_static::lazy_static;
lazy_static! {
pub static ref CLI: cli = cli::new();
}
#[derive(Debug, Parser)]
#[clap(name = "oab")]
#[clap(about = "oab", long_about = None)]
struct cli {
#[clap(subcommand)]
command: Commands,
}
#[derive(Debug, Subcommand)]
enum Commands {
/// Clones repos
#[clap(arg_required_else_help = true)]
Clone {
/// The remote to clone
#[clap(value_parser)]
remote: String,
},
/// pushes things
#[clap(arg_required_else_help = true)]
Push {
/// The remote to target
#[clap(value_parser)]
remote: String,
},
/// adds things
#[clap(arg_required_else_help = true)]
Add {
/// Stuff to add
#[clap(required = true, value_parser)]
path: Vec<PathBuf>,
},
Stash(Stash),
#[clap(external_subcommand)]
External(Vec<OsString>),
}
impl cli {
fn new() -> Self {
cli::parse()
}
}

@ -5,5 +5,9 @@
// Distributed under terms of the MIT license.
//
pub mod cfg;
pub mod api;
mod cfg;
pub mod models;
mod result;
pub use cfg::{init_log, ApplicationConfig, Clis, CLI, CONFIG, DB};
pub use result::{Error, Result};

@ -1,15 +1,42 @@
use oab::{cfg, models};
use tracing::{info, warn};
//
// main.rs
// Copyright (C) 2022 veypi <i@veypi.com>
// 2022-07-07 23:51
// Distributed under terms of the Apache license.
//
use actix_web::{middleware, web, App, HttpServer};
use oab::{api, init_log, models, Clis, Result, CLI, CONFIG};
use tracing::info;
#[tokio::main]
async fn main() -> std::io::Result<()> {
let mut cf = cfg::ApplicationConfig::new();
cfg::init_log();
cf.log_dir = "".to_string();
cf.connect().await;
info!("{}", cf.server_url);
warn!("{}", cf.db_url);
models::init().await;
println!("Hello, world!");
return std::io::Result::Ok(());
async fn main() -> Result<()> {
init_log();
if let Some(c) = &CLI.command {
match c {
Clis::Init => {
CONFIG.connect().await;
models::init().await;
return Ok(());
}
_ => {}
};
};
CONFIG.connect().await;
web().await?;
Ok(())
}
async fn web() -> Result<()> {
std::env::set_var("RUST_LOG", "info");
std::env::set_var("RUST_BACKTRACE", "1");
let serv = HttpServer::new(move || {
let logger = middleware::Logger::default();
let app = App::new();
app.wrap(logger)
.wrap(middleware::Compress::default())
.service(web::scope("api").configure(api::routes))
});
info!("listen to {}", CONFIG.server_url);
serv.bind(CONFIG.server_url.clone())?.run().await?;
Ok(())
}

@ -0,0 +1,80 @@
//
// app.rs
// Copyright (C) 2022 veypi <i@veypi.com>
// 2022-07-09 00:18
// Distributed under terms of the Apache license.
//
use rbatis::{crud_table, DateTimeNative};
#[crud_table]
#[derive(Debug, Clone)]
pub struct App {
pub id: String,
pub created: Option<DateTimeNative>,
pub updated: Option<DateTimeNative>,
pub delete_flag: bool,
pub name: Option<String>,
pub des: Option<String>,
pub icon: Option<String>,
pub user_count: usize,
pub hide: bool,
pub register: bool,
pub role_id: Option<String>,
pub redirect: Option<String>,
pub status: usize,
}
impl App {
pub fn new() -> Self {
Self {
id: rbatis::plugin::object_id::ObjectId::new().to_string(),
created: None,
updated: None,
delete_flag: false,
name: None,
des: None,
icon: None,
user_count: 0,
hide: false,
register: false,
role_id: None,
redirect: None,
status: 0,
}
}
}
#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)]
pub enum AUStatus {
OK,
Disabled,
Applying,
Deny,
}
#[crud_table]
#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)]
pub struct AppUser {
pub created: Option<DateTimeNative>,
pub updated: Option<DateTimeNative>,
pub app_id: String,
pub user_id: String,
pub status: AUStatus,
}
impl AppUser {
pub fn new() -> Self {
Self {
created: None,
updated: None,
app_id: "".to_string(),
user_id: "".to_string(),
status: AUStatus::OK,
}
}
}

@ -5,16 +5,26 @@
// Distributed under terms of the MIT license.
//
mod app;
mod role;
mod user;
use rbatis::crud::CRUD;
use std::{fs::File, io::Read};
use tracing::info;
use user::User;
use crate::cfg;
use crate::DB;
pub use app::{AUStatus, App, AppUser};
pub use role::{Access, Resource, Role};
pub use user::User;
pub async fn init() {
let mut u = User::default();
u.name = Some("asd".to_string());
cfg::DB.save(&u, &[]).await.unwrap();
info!("{:#?}", u);
info!("init database");
let mut f = File::open("./sql/table.sql").unwrap();
let mut sql = String::new();
f.read_to_string(&mut sql).unwrap();
DB.exec(&sql, vec![]).await.unwrap();
}
pub fn new_id() -> rbatis::object_id::ObjectId {
rbatis::plugin::object_id::ObjectId::new()
}

@ -0,0 +1,48 @@
//
// role.rs
// Copyright (C) 2022 veypi <i@veypi.com>
// 2022-07-09 02:42
// Distributed under terms of the Apache license.
//
use rbatis::{crud_table, DateTimeNative};
#[crud_table]
#[derive(Debug, Clone, Default)]
pub struct Role {
pub id: String,
pub created: Option<DateTimeNative>,
pub updated: Option<DateTimeNative>,
pub delete_flag: bool,
pub app_id: String,
pub name: Option<String>,
pub des: Option<String>,
pub user_count: usize,
}
#[crud_table]
#[derive(Debug, Clone, Default)]
pub struct Resource {
pub created: Option<DateTimeNative>,
pub updated: Option<DateTimeNative>,
pub delete_flag: bool,
pub app_id: String,
pub name: String,
pub des: Option<String>,
}
#[crud_table]
#[derive(Debug, Clone, Default)]
pub struct Access {
pub created: Option<DateTimeNative>,
pub updated: Option<DateTimeNative>,
pub delete_flag: bool,
pub app_id: String,
pub name: String,
pub role_id: Option<String>,
pub user_id: Option<String>,
pub rid: Option<String>,
pub level: usize,
}

@ -6,20 +6,42 @@
//
//
use rbatis::crud_table;
use rbatis::{crud_table, DateTimeNative};
#[crud_table]
#[derive(Debug, Clone)]
pub struct User {
pub id: String,
pub name: Option<String>,
pub created: Option<DateTimeNative>,
pub updated: Option<DateTimeNative>,
pub delete_flag: bool,
pub username: Option<String>,
pub nickname: Option<String>,
pub email: Option<String>,
pub phone: Option<String>,
pub icon: Option<String>,
pub status: usize,
pub used: usize,
pub space: usize,
}
impl Default for User {
fn default() -> Self {
User {
Self {
id: rbatis::plugin::object_id::ObjectId::new().to_string(),
name: None,
created: None,
updated: None,
delete_flag: false,
username: None,
nickname: None,
email: None,
phone: None,
icon: None,
status: 0,
used: 0,
space: 300,
}
}
}

@ -0,0 +1,119 @@
//
// result.rs
// Copyright (C) 2022 veypi <i@veypi.com>
// 2022-06-24 18:57
// Distributed under terms of the Apache license.
//
use actix_web::{
error,
http::{header::ContentType, StatusCode},
HttpResponse,
};
use serde::{Deserialize, Serialize};
use thiserror::Error as ThisError;
pub type Result<T> = std::result::Result<T, Error>;
// pub type AsyncResult<T> = std::result::Result<T, Box<dyn std::error::Error + Send + Sync>>;
#[derive(Clone, ThisError, Debug, Deserialize, Serialize)]
pub enum Error {
// system
// EnvVarError,
#[error("Parsing listening address failed")]
ParseListeningAddressFailed,
#[error("Data save failed")]
SledSaveFailed,
#[error("Database(1) error")]
SledDbError,
#[error("Database(2) error")]
SqliteDbError,
#[error("Deserialize / Serialize failed")]
SerdeError,
#[error("Resource not found")]
NotFound,
#[error("timeout")]
Timeout,
#[error("bad request")]
BadRequest,
#[error("Method not allowed")]
MethodNotAllowed,
#[error("Internal server error")]
InternalServerError,
// business
#[error("无效的 Session ID")]
InvalidSessionId,
#[error("invalid verify code")]
InvalidVerifyCode,
#[error("no access")]
NotAuthed,
#[error("login failed")]
LoginFailed,
#[error("Registration failed")]
RegisterFailed,
#[error("Already registered")]
AlreadyRegistered,
#[error("Saving post failed")]
SavePostFailed,
#[error("Can not find post you requested")]
CannotFoundPost,
#[error("Can not find tag you requested")]
CannotFoundTag,
#[error("Upload failed")]
UploadFailed,
#[error("Upload file not found")]
FileNotFound,
#[error("Unknown file type")]
UnknownFileType,
#[error("Unsupported file type {0}")]
UnsupportedFileType(String),
#[error("Creating thumbnail failed")]
CreateThumbnailFailed,
#[error("Reading post id data by tag failed")]
ReadPostIdDataByTagFailed,
#[error("Saving post id data by tag failed")]
SavePostIdDataByTagFailed,
#[error("Tag not found")]
TagNotFound,
#[error("{0}")]
BusinessException(String),
#[error("invalid header (expected {expected:?}, found {found:?})")]
InvalidHeader { expected: String, found: String },
#[error("unknown error")]
Unknown,
}
impl From<std::io::Error> for Error {
fn from(e: std::io::Error) -> Self {
Error::UnsupportedFileType(format!("{:?}", e))
}
}
impl error::ResponseError for Error {
fn error_response(&self) -> HttpResponse {
HttpResponse::build(self.status_code())
.insert_header(ContentType::html())
.body(self.to_string())
}
fn status_code(&self) -> StatusCode {
match *self {
Error::InternalServerError => StatusCode::INTERNAL_SERVER_ERROR,
Error::BadRequest => StatusCode::BAD_REQUEST,
Error::Timeout => StatusCode::GATEWAY_TIMEOUT,
_ => StatusCode::BAD_REQUEST,
}
}
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ErrResponse {
pub code: Error,
pub detail: String,
}

@ -5,18 +5,10 @@
<link rel="icon" href="/favicon.ico"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>OA</title>
<script>
var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?3f774ca1054bb8701c2da142f90be13f";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</head>
<body>
<div id="app"></div>
<div id="v-msg"></div>
<div id="loader-wrapper">
<div class="lds-ripple">
<div></div>

@ -13,12 +13,14 @@
"serve": "vite preview"
},
"dependencies": {
"@veypi/msg": "^0.1.0",
"animate.css": "^4.1.1",
"axios": "^0.24.0",
"fast-xml-parser": "^3.19.0",
"hot-patcher": "^0.5.0",
"js-base64": "^3.7.2",
"layerr": "^0.1.2",
"mitt": "^3.0.0",
"nested-property": "^4.0.0",
"path-posix": "^1.0.0",
"seamless-scroll-polyfill": "^2.1.5",
@ -29,8 +31,8 @@
"vuex": "^4.0.2"
},
"devDependencies": {
"@veypi/one-icon": "2.0.6",
"@types/node": "^16.11.12",
"@veypi/one-icon": "2.0.6",
"@vitejs/plugin-vue": "^1.9.3",
"autoprefixer": "^9.8.8",
"base-64": "^1.0.0",

@ -1,31 +1,31 @@
<template>
<base-frame>
<router-view v-slot="{ Component }">
<transition mode="out-in" enter-active-class="animate__fadeInLeft"
leave-active-class="animate__fadeOutRight">
<component class="animate__animated animate__400ms" :is="Component"
:style="{'min-height': store.state.height}"
style="margin: 10px"
></component>
</transition>
</router-view>
</base-frame>
<base-frame>
<router-view v-slot="{ Component }">
<transition mode="out-in" enter-active-class="animate__fadeInLeft"
leave-active-class="animate__fadeOutRight">
<component class="animate__animated animate__400ms" :is="Component"
:style="{ 'min-height': store.state.height }" style="margin: 10px"></component>
</transition>
</router-view>
</base-frame>
</template>
<script setup lang="ts">
// This starter template is using Vue 3 <script setup> SFCs
import BaseFrame from './components/frame.vue'
import {onBeforeMount, ref} from 'vue'
import {useStore} from "./store";
import { onBeforeMount, ref } from 'vue'
import { useStore } from "./store";
import msg from '@veypi/msg'
let store = useStore()
onBeforeMount(() => {
let loader = document.getElementById("loader-wrapper")
if (loader && loader.parentElement) {
loader.parentElement.removeChild(loader)
}
store.dispatch('fetchSelf')
store.dispatch('user/fetchUserData')
let loader = document.getElementById("loader-wrapper")
if (loader && loader.parentElement) {
loader.parentElement.removeChild(loader)
}
store.dispatch('fetchSelf')
store.dispatch('user/fetchUserData')
msg.Warn('asd')
})
let collapsed = ref(true)
@ -34,31 +34,31 @@ let collapsed = ref(true)
<style lang="postcss">
.animate__400ms {
--animate-duration: 400ms;
--animate-duration: 400ms;
}
.page-h1 {
font-size: 1.5rem;
line-height: 2rem;
margin-left: 2.5rem;
margin-top: 1.25rem;
margin-bottom: 1.25rem;
font-size: 1.5rem;
line-height: 2rem;
margin-left: 2.5rem;
margin-top: 1.25rem;
margin-bottom: 1.25rem;
}
.header-icon {
display: inline-block;
font-size: 24px;
margin: 20px 10px 20px 10px;
display: inline-block;
font-size: 24px;
margin: 20px 10px 20px 10px;
}
#app {
@apply text-base font-mono text-center h-full w-full;
color: #2c3e50;
@apply text-base font-mono text-center h-full w-full;
color: #2c3e50;
}
::-webkit-scrollbar {
display: none; /* Chrome Safari */
display: none;
/* Chrome Safari */
}
</style>

@ -1,11 +1,12 @@
import {createApp} from 'vue'
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import {store, key} from './store'
import { store, key } from './store'
import OneIcon from '@veypi/one-icon'
import naive from 'naive-ui'
import {Api} from './api'
import { Api } from './api'
import '@veypi/msg/index.css'
import './index.css'
import './assets/icon.js'
import 'animate.css'

@ -2,13 +2,6 @@
# yarn lockfile v1
"@antfu/utils@^0.3.0":
version "0.3.0"
resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-0.3.0.tgz#6306c43b52a883bd8e973e3ed8dd64248418bcc4"
integrity sha512-UU8TLr/EoXdg7OjMp0h9oDoIAVr+Z/oW9cpOxQQyrsz6Qzd2ms/1CdWx8fl2OQdFpxGmq5Vc4TwfLHId6nAZjA==
dependencies:
"@types/throttle-debounce" "^2.1.0"
"@babel/helper-validator-identifier@^7.15.7":
version "7.15.7"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389"
@ -102,14 +95,6 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
"@rollup/pluginutils@^4.1.1", "@rollup/pluginutils@^4.1.2":
version "4.1.2"
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.2.tgz#ed5821c15e5e05e32816f5fb9ec607cdf5a75751"
integrity sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==
dependencies:
estree-walker "^2.0.1"
picomatch "^2.2.2"
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
version "2.0.4"
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44"
@ -169,11 +154,6 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.45.tgz#ec2dfb5566ff814d061aef7e141575aedba245cf"
integrity sha512-DssMqTV9UnnoxDWu959sDLZzfvqCF0qDNRjaWeYSui9xkFe61kKo4l1TWNTQONpuXEm+gLMRvdlzvNHBamzmEw==
"@types/throttle-debounce@^2.1.0":
version "2.1.0"
resolved "https://registry.yarnpkg.com/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz#1c3df624bfc4b62f992d3012b84c56d41eab3776"
integrity sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==
"@types/yargs-parser@*":
version "20.2.1"
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129"
@ -186,11 +166,10 @@
dependencies:
"@types/yargs-parser" "*"
"@veypi/oaer@file:src/oaer":
version "1.0.0"
dependencies:
mitt "^3.0.0"
vue "^3.2.20"
"@veypi/msg@^0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@veypi/msg/-/msg-0.1.0.tgz#2ebe899527a11ed11f68c2c96f468cfcc66ad3d4"
integrity sha512-58dj5nnpHsxaiK5sbPiDK5t8OF4uvN+kAmWhU0BRAgXHpkxkZNZ8rn7hXvSVybG1BbM8EuMNkq0lIxGYNKl8aw==
"@veypi/one-icon@2.0.6":
version "2.0.6"
@ -497,13 +476,6 @@ browserslist@^4.12.0:
node-releases "^2.0.1"
picocolors "^1.0.0"
builtins@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/builtins/-/builtins-4.0.0.tgz#a8345420de82068fdc4d6559d0456403a8fb1905"
integrity sha512-qC0E2Dxgou1IHhvJSLwGDSTvokbRovU5zZFuDY6oY8Y2lF3nGt5Ad8YZK7GMtqzY84Wu7pXTPeHQeHcXSXsRhw==
dependencies:
semver "^7.0.0"
bytes@^3.0.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a"
@ -556,7 +528,7 @@ charenc@0.0.2:
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=
chokidar@^3.5.1, chokidar@^3.5.2:
chokidar@^3.5.1:
version "3.5.2"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
@ -687,13 +659,6 @@ debug@^3.2.6:
dependencies:
ms "^2.1.1"
debug@^4.3.2:
version "4.3.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
dependencies:
ms "2.1.2"
defined@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
@ -901,7 +866,7 @@ escape-string-regexp@^1.0.5:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
estree-walker@^2.0.1, estree-walker@^2.0.2:
estree-walker@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
@ -911,7 +876,7 @@ evtd@^0.2.2, evtd@^0.2.3:
resolved "https://registry.yarnpkg.com/evtd/-/evtd-0.2.3.tgz#185158d533b4440ee831a0fa0cffde16e8bda504"
integrity sha512-tmiT1YUVqFjTY+BSBOAskL83xNx41iUfpvKP6Gcd/xMHjg3mnER98jXGXJyKnxCG19uPc6EhZiUC+MUyvoqCtw==
fast-glob@^3.2.5, fast-glob@^3.2.7:
fast-glob@^3.2.5:
version "3.2.7"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1"
integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==
@ -1087,13 +1052,6 @@ image-size@~0.5.0:
resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=
import-meta-resolve@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-1.1.1.tgz#244fd542fd1fae73550d4f8b3cde3bba1d7b2b18"
integrity sha512-JiTuIvVyPaUg11eTrNDx5bgQ/yMKMZffc7YSjvQeSMXy58DO2SQ8BtAf3xteZvmzvjYh14wnqNjL8XVeDy2o9A==
dependencies:
builtins "^4.0.0"
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@ -1265,13 +1223,6 @@ less@^4.1.2:
needle "^2.5.2"
source-map "~0.6.0"
local-pkg@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.0.tgz#e6221171813d5a0812dd84fa80ffb1c8fcc00531"
integrity sha512-2XBWjO/v63JeR1HPzLJxdTVRQDB84Av2p2KtBA5ahvpyLUPubcAU6iXlAJrONcY7aSqgJhXxElAnKtnYsRolPQ==
dependencies:
mlly "^0.2.2"
lodash-es@^4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
@ -1353,23 +1304,11 @@ mitt@^3.0.0:
resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.0.tgz#69ef9bd5c80ff6f57473e8d89326d01c414be0bd"
integrity sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==
mlly@^0.2.2:
version "0.2.10"
resolved "https://registry.yarnpkg.com/mlly/-/mlly-0.2.10.tgz#645902c9761dc6b5ded174b8e717147fe52e4893"
integrity sha512-xfyW6c2QBGArtctzNnTV5leOKX8nOMz2simeubtXofdsdSJFSNw+Ncvrs8kxcN3pBrQLXuYBHNFV6NgZ5Ryf4A==
dependencies:
import-meta-resolve "^1.1.1"
modern-normalize@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/modern-normalize/-/modern-normalize-1.1.0.tgz#da8e80140d9221426bd4f725c6e11283d34f90b7"
integrity sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==
ms@2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
ms@^2.1.1:
version "2.1.3"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
@ -1502,7 +1441,7 @@ picocolors@^1.0.0:
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3:
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3:
version "2.3.0"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
@ -1826,7 +1765,7 @@ semver@^5.6.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
semver@^7.0.0, semver@^7.3.5:
semver@^7.3.5:
version "7.3.5"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
@ -1946,41 +1885,6 @@ universalify@^2.0.0:
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
unplugin-auto-import@^0.5.4:
version "0.5.4"
resolved "https://registry.yarnpkg.com/unplugin-auto-import/-/unplugin-auto-import-0.5.4.tgz#7a75939bdaf58c79d30d8cfa4c1d45f5b34a1476"
integrity sha512-OxRsAGtg0yAYvJy8Sv5itAPt7erL2ya3gZeKTtpoY1miqOSOhGi8in3qHbov/kMejCxsXhvX39XWlIoMWVNR3Q==
dependencies:
"@antfu/utils" "^0.3.0"
"@rollup/pluginutils" "^4.1.2"
local-pkg "^0.4.0"
magic-string "^0.25.7"
resolve "^1.20.0"
unplugin "^0.2.21"
unplugin-vue-components@^0.17.10:
version "0.17.10"
resolved "https://registry.yarnpkg.com/unplugin-vue-components/-/unplugin-vue-components-0.17.10.tgz#232f0d9bbf3e6bd2747c1b44e3013cd4876afac2"
integrity sha512-7FXgLcDl+ZOFqezlSVPs+t4vP7hV3FhR+nOJs6IpkX7zBWHKNy1YeHSBn+By1p8vBbLLDRYDxL11KQqjrwPK3Q==
dependencies:
"@antfu/utils" "^0.3.0"
"@rollup/pluginutils" "^4.1.1"
chokidar "^3.5.2"
debug "^4.3.2"
fast-glob "^3.2.7"
local-pkg "^0.4.0"
magic-string "^0.25.7"
minimatch "^3.0.4"
resolve "^1.20.0"
unplugin "^0.2.21"
unplugin@^0.2.21:
version "0.2.21"
resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-0.2.21.tgz#7852cddd9f78f0b32881812fd2efd5a39dcc64e5"
integrity sha512-IJ15/L5XbhnV7J09Zjk0FT5HEkBjkXucWAXQWRsmEtUxmmxwh23yavrmDbCF6ZPxWiVB28+wnKIHePTRRpQPbQ==
dependencies:
webpack-virtual-modules "^0.4.3"
upath@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b"
@ -2214,11 +2118,6 @@ vuex@^4.0.2:
dependencies:
"@vue/devtools-api" "^6.0.0-beta.11"
webpack-virtual-modules@^0.4.3:
version "0.4.3"
resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.3.tgz#cd597c6d51d5a5ecb473eea1983a58fa8a17ded9"
integrity sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==
with@^7.0.0:
version "7.0.2"
resolved "https://registry.yarnpkg.com/with/-/with-7.0.2.tgz#ccee3ad542d25538a7a7a80aad212b9828495bac"

Loading…
Cancel
Save