Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
K
Koishi Nestjs
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
3rdeye
Koishi Nestjs
Commits
e0d42ac3
Commit
e0d42ac3
authored
Jan 23, 2022
by
nanahira
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor with koishi-decorators
parent
714309db
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
290 additions
and
907 deletions
+290
-907
package-lock.json
package-lock.json
+166
-286
package.json
package.json
+1
-0
src/koishi.service.ts
src/koishi.service.ts
+6
-6
src/providers/koishi-context.service.ts
src/providers/koishi-context.service.ts
+5
-18
src/providers/koishi-metascan.service.ts
src/providers/koishi-metascan.service.ts
+48
-226
src/providers/koishi-websocket.gateway.ts
src/providers/koishi-websocket.gateway.ts
+2
-1
src/utility/koishi.constants.ts
src/utility/koishi.constants.ts
+2
-15
src/utility/koishi.decorators.ts
src/utility/koishi.decorators.ts
+6
-199
src/utility/koishi.interfaces.ts
src/utility/koishi.interfaces.ts
+3
-136
src/utility/koishi.utility.ts
src/utility/koishi.utility.ts
+0
-19
tests/koishi-tests.spec.ts
tests/koishi-tests.spec.ts
+51
-1
No files found.
package-lock.json
View file @
e0d42ac3
...
...
@@ -14,6 +14,7 @@
"@types/ws"
:
"^8.2.0"
,
"koa"
:
"^2.13.3"
,
"koa-bodyparser"
:
"^4.3.0"
,
"koishi-decorators"
:
"^1.0.3"
,
"lodash"
:
"^4.17.21"
,
"ws"
:
"^8.2.3"
},
...
...
@@ -47,7 +48,7 @@
"peerDependencies"
:
{
"@nestjs/common"
:
"^8.0.0"
,
"@nestjs/core"
:
"^8.0.0"
,
"koishi"
:
"^4.0.0
-rc.2
"
,
"koishi"
:
"^4.0.0"
,
"reflect-metadata"
:
"^0.1.13"
,
"rxjs"
:
"^7.4.0"
}
...
...
@@ -1025,7 +1026,6 @@
"version"
:
"10.1.1"
,
"resolved"
:
"https://registry.npmjs.org/@koa/router/-/router-10.1.1.tgz"
,
"integrity"
:
"sha512-ORNjq5z4EmQPriKbR0ER3k4Gh7YGNhWDL7JBW+8wXDrHLbWYKYSJaOJ9aN06npF5tbTxe2JBOsurpJDAvjiXKw=="
,
"dev"
:
true
,
"dependencies"
:
{
"debug"
:
"^4.1.1"
,
"http-errors"
:
"^1.7.3"
,
...
...
@@ -1040,14 +1040,12 @@
"node_modules/@koa/router/node_modules/path-to-regexp"
:
{
"version"
:
"6.2.0"
,
"resolved"
:
"https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.0.tgz"
,
"integrity"
:
"sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg=="
,
"dev"
:
true
"integrity"
:
"sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg=="
},
"node_modules/@koishijs/core"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/@koishijs/core/-/core-4.0.0.tgz"
,
"integrity"
:
"sha512-xonpueYfWhcTw2eJVc/SG7EwutFgzqtvdpuCGoBFvfRRSZlHOWAQfWsRw5he06+qn7rVOj3cyxrtFMP0fAthNA=="
,
"dev"
:
true
,
"version"
:
"4.1.0"
,
"resolved"
:
"https://registry.npmjs.org/@koishijs/core/-/core-4.1.0.tgz"
,
"integrity"
:
"sha512-f9SSEHxYt5OixXLhX0W9ME36JLQxdb8gwv8R5YOAd4y1IYchOX3qVfbnhRCd41SHUaKLhRWMBzwnl9R1dmqm4A=="
,
"dependencies"
:
{
"@koishijs/utils"
:
"^5.0.0"
,
"fastest-levenshtein"
:
"^1.0.12"
,
...
...
@@ -1061,7 +1059,6 @@
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/@koishijs/utils/-/utils-5.0.0.tgz"
,
"integrity"
:
"sha512-3ng7VkQZAP+EHdRLSbio5H36LDKRxy4OfooRKgol+gef2Yd0KOKYbVmGVud7/mZZExCPkaZVCwocKB/bKA4Xvw=="
,
"dev"
:
true
,
"dependencies"
:
{
"supports-color"
:
"^8.1.0"
}
...
...
@@ -1070,7 +1067,6 @@
"version"
:
"8.1.1"
,
"resolved"
:
"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz"
,
"integrity"
:
"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="
,
"dev"
:
true
,
"dependencies"
:
{
"has-flag"
:
"^4.0.0"
},
...
...
@@ -1366,14 +1362,12 @@
"node_modules/@tokenizer/token"
:
{
"version"
:
"0.3.0"
,
"resolved"
:
"https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz"
,
"integrity"
:
"sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="
,
"dev"
:
true
"integrity"
:
"sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="
},
"node_modules/@tootallnate/once"
:
{
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz"
,
"integrity"
:
"sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw=="
,
"dev"
:
true
,
"engines"
:
{
"node"
:
">= 6"
}
...
...
@@ -1382,7 +1376,6 @@
"version"
:
"1.3.5"
,
"resolved"
:
"https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz"
,
"integrity"
:
"sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ=="
,
"dev"
:
true
,
"dependencies"
:
{
"@types/node"
:
"*"
}
...
...
@@ -1432,7 +1425,6 @@
"version"
:
"1.19.1"
,
"resolved"
:
"https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz"
,
"integrity"
:
"sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg=="
,
"dev"
:
true
,
"dependencies"
:
{
"@types/connect"
:
"*"
,
"@types/node"
:
"*"
...
...
@@ -1442,7 +1434,6 @@
"version"
:
"3.4.35"
,
"resolved"
:
"https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz"
,
"integrity"
:
"sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ=="
,
"dev"
:
true
,
"dependencies"
:
{
"@types/node"
:
"*"
}
...
...
@@ -1450,8 +1441,7 @@
"node_modules/@types/content-disposition"
:
{
"version"
:
"0.5.4"
,
"resolved"
:
"https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.4.tgz"
,
"integrity"
:
"sha512-0mPF08jn9zYI0n0Q/Pnz7C4kThdSt+6LD4amsrYDDpgBfrVWa3TcCOxKX1zkGgYniGagRv8heN2cbh+CAn+uuQ=="
,
"dev"
:
true
"integrity"
:
"sha512-0mPF08jn9zYI0n0Q/Pnz7C4kThdSt+6LD4amsrYDDpgBfrVWa3TcCOxKX1zkGgYniGagRv8heN2cbh+CAn+uuQ=="
},
"node_modules/@types/cookiejar"
:
{
"version"
:
"2.1.2"
,
...
...
@@ -1463,7 +1453,6 @@
"version"
:
"0.7.7"
,
"resolved"
:
"https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz"
,
"integrity"
:
"sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA=="
,
"dev"
:
true
,
"dependencies"
:
{
"@types/connect"
:
"*"
,
"@types/express"
:
"*"
,
...
...
@@ -1475,7 +1464,6 @@
"version"
:
"4.17.13"
,
"resolved"
:
"https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz"
,
"integrity"
:
"sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA=="
,
"dev"
:
true
,
"dependencies"
:
{
"@types/body-parser"
:
"*"
,
"@types/express-serve-static-core"
:
"^4.17.18"
,
...
...
@@ -1487,7 +1475,6 @@
"version"
:
"4.17.24"
,
"resolved"
:
"https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz"
,
"integrity"
:
"sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA=="
,
"dev"
:
true
,
"dependencies"
:
{
"@types/node"
:
"*"
,
"@types/qs"
:
"*"
,
...
...
@@ -1506,14 +1493,12 @@
"node_modules/@types/http-assert"
:
{
"version"
:
"1.5.3"
,
"resolved"
:
"https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz"
,
"integrity"
:
"sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA=="
,
"dev"
:
true
"integrity"
:
"sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA=="
},
"node_modules/@types/http-errors"
:
{
"version"
:
"1.8.1"
,
"resolved"
:
"https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.1.tgz"
,
"integrity"
:
"sha512-e+2rjEwK6KDaNOm5Aa9wNGgyS9oSZU/4pfSMMPYNOfjvFI0WVXm29+ITRFr6aKDvvKo7uU1jV68MW4ScsfDi7Q=="
,
"dev"
:
true
"integrity"
:
"sha512-e+2rjEwK6KDaNOm5Aa9wNGgyS9oSZU/4pfSMMPYNOfjvFI0WVXm29+ITRFr6aKDvvKo7uU1jV68MW4ScsfDi7Q=="
},
"node_modules/@types/istanbul-lib-coverage"
:
{
"version"
:
"2.0.3"
,
...
...
@@ -1558,14 +1543,12 @@
"node_modules/@types/keygrip"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz"
,
"integrity"
:
"sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw=="
,
"dev"
:
true
"integrity"
:
"sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw=="
},
"node_modules/@types/koa"
:
{
"version"
:
"2.13.4"
,
"resolved"
:
"https://registry.npmjs.org/@types/koa/-/koa-2.13.4.tgz"
,
"integrity"
:
"sha512-dfHYMfU+z/vKtQB7NUrthdAEiSvnLebvBjwHtfFmpZmB7em2N3WVQdHgnFq+xvyVgxW5jKDmjWfLD3lw4g4uTw=="
,
"dev"
:
true
,
"dependencies"
:
{
"@types/accepts"
:
"*"
,
"@types/content-disposition"
:
"*"
,
...
...
@@ -1578,10 +1561,9 @@
}
},
"node_modules/@types/koa__router"
:
{
"version"
:
"8.0.8"
,
"resolved"
:
"https://registry.npmjs.org/@types/koa__router/-/koa__router-8.0.8.tgz"
,
"integrity"
:
"sha512-9pGCaDtzCsj4HJ8HmGuqzk8+s57sPj4njWd08GG5o92n5Xp9io2snc40CPpXFhoKcZ8OKhuu6ht4gNou9e1C2w=="
,
"dev"
:
true
,
"version"
:
"8.0.11"
,
"resolved"
:
"https://registry.npmjs.org/@types/koa__router/-/koa__router-8.0.11.tgz"
,
"integrity"
:
"sha512-WXgKWpBsbS14kzmzD9LeFapOIa678h7zvUHxDwXwSx4ETKXhXLVUAToX6jZ/U7EihM7qwyD9W/BZvB0MRu7MTQ=="
,
"dependencies"
:
{
"@types/koa"
:
"*"
}
...
...
@@ -1599,7 +1581,6 @@
"version"
:
"3.2.5"
,
"resolved"
:
"https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz"
,
"integrity"
:
"sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ=="
,
"dev"
:
true
,
"dependencies"
:
{
"@types/koa"
:
"*"
}
...
...
@@ -1613,8 +1594,7 @@
"node_modules/@types/mime"
:
{
"version"
:
"1.3.2"
,
"resolved"
:
"https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz"
,
"integrity"
:
"sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
,
"dev"
:
true
"integrity"
:
"sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
},
"node_modules/@types/node"
:
{
"version"
:
"16.10.2"
,
...
...
@@ -1630,20 +1610,17 @@
"node_modules/@types/qs"
:
{
"version"
:
"6.9.7"
,
"resolved"
:
"https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz"
,
"integrity"
:
"sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
,
"dev"
:
true
"integrity"
:
"sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
},
"node_modules/@types/range-parser"
:
{
"version"
:
"1.2.4"
,
"resolved"
:
"https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz"
,
"integrity"
:
"sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
,
"dev"
:
true
"integrity"
:
"sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
},
"node_modules/@types/serve-static"
:
{
"version"
:
"1.13.10"
,
"resolved"
:
"https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz"
,
"integrity"
:
"sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ=="
,
"dev"
:
true
,
"dependencies"
:
{
"@types/mime"
:
"^1"
,
"@types/node"
:
"*"
...
...
@@ -1675,9 +1652,9 @@
}
},
"node_modules/@types/ws"
:
{
"version"
:
"8.2.
0
"
,
"resolved"
:
"https://registry.npmjs.org/@types/ws/-/ws-8.2.
0
.tgz"
,
"integrity"
:
"sha512-
cyeefcUCgJlEk+hk2h3N+MqKKsPViQgF5boi9TTHSK+PoR9KWBb/C5ccPcDyAqgsbAYHTwulch725DV84+pSp
g=="
,
"version"
:
"8.2.
2
"
,
"resolved"
:
"https://registry.npmjs.org/@types/ws/-/ws-8.2.
2
.tgz"
,
"integrity"
:
"sha512-
NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOO
g=="
,
"dependencies"
:
{
"@types/node"
:
"*"
}
...
...
@@ -1916,7 +1893,6 @@
"version"
:
"6.0.2"
,
"resolved"
:
"https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz"
,
"integrity"
:
"sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="
,
"dev"
:
true
,
"dependencies"
:
{
"debug"
:
"4"
},
...
...
@@ -2046,7 +2022,6 @@
"version"
:
"0.13.4"
,
"resolved"
:
"https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz"
,
"integrity"
:
"sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w=="
,
"dev"
:
true
,
"dependencies"
:
{
"tslib"
:
"^2.0.1"
},
...
...
@@ -2057,8 +2032,7 @@
"node_modules/ast-types/node_modules/tslib"
:
{
"version"
:
"2.3.1"
,
"resolved"
:
"https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz"
,
"integrity"
:
"sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
,
"dev"
:
true
"integrity"
:
"sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
},
"node_modules/astral-regex"
:
{
"version"
:
"2.0.0"
,
...
...
@@ -2685,8 +2659,7 @@
"node_modules/core-util-is"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz"
,
"integrity"
:
"sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
,
"devOptional"
:
true
"integrity"
:
"sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
},
"node_modules/cors"
:
{
"version"
:
"2.8.5"
,
...
...
@@ -2743,7 +2716,6 @@
"version"
:
"3.0.1"
,
"resolved"
:
"https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz"
,
"integrity"
:
"sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og=="
,
"dev"
:
true
,
"engines"
:
{
"node"
:
">= 6"
}
...
...
@@ -2833,8 +2805,7 @@
"node_modules/deep-is"
:
{
"version"
:
"0.1.4"
,
"resolved"
:
"https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
,
"integrity"
:
"sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
,
"dev"
:
true
"integrity"
:
"sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
},
"node_modules/deepmerge"
:
{
"version"
:
"4.2.2"
,
...
...
@@ -2849,7 +2820,6 @@
"version"
:
"3.0.1"
,
"resolved"
:
"https://registry.npmjs.org/degenerator/-/degenerator-3.0.1.tgz"
,
"integrity"
:
"sha512-LFsIFEeLPlKvAKXu7j3ssIG6RT0TbI7/GhsqrI0DnHASEQjXQ0LUSYcjJteGgRGmZbl1TnMSxpNQIAiJ7Du5TQ=="
,
"dev"
:
true
,
"dependencies"
:
{
"ast-types"
:
"^0.13.2"
,
"escodegen"
:
"^1.8.1"
,
...
...
@@ -3042,7 +3012,6 @@
"version"
:
"1.14.3"
,
"resolved"
:
"https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz"
,
"integrity"
:
"sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw=="
,
"dev"
:
true
,
"dependencies"
:
{
"esprima"
:
"^4.0.1"
,
"estraverse"
:
"^4.2.0"
,
...
...
@@ -3064,7 +3033,6 @@
"version"
:
"0.3.0"
,
"resolved"
:
"https://registry.npmjs.org/levn/-/levn-0.3.0.tgz"
,
"integrity"
:
"sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4="
,
"dev"
:
true
,
"dependencies"
:
{
"prelude-ls"
:
"~1.1.2"
,
"type-check"
:
"~0.3.2"
...
...
@@ -3077,7 +3045,6 @@
"version"
:
"0.8.3"
,
"resolved"
:
"https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz"
,
"integrity"
:
"sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA=="
,
"dev"
:
true
,
"dependencies"
:
{
"deep-is"
:
"~0.1.3"
,
"fast-levenshtein"
:
"~2.0.6"
,
...
...
@@ -3094,7 +3061,6 @@
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz"
,
"integrity"
:
"sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
,
"dev"
:
true
,
"engines"
:
{
"node"
:
">= 0.8.0"
}
...
...
@@ -3103,7 +3069,6 @@
"version"
:
"0.3.2"
,
"resolved"
:
"https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz"
,
"integrity"
:
"sha1-WITKtRLPHTVeP7eE8wgEsrUg23I="
,
"dev"
:
true
,
"dependencies"
:
{
"prelude-ls"
:
"~1.1.2"
},
...
...
@@ -3301,7 +3266,6 @@
"version"
:
"4.0.1"
,
"resolved"
:
"https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"
,
"integrity"
:
"sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
,
"dev"
:
true
,
"bin"
:
{
"esparse"
:
"bin/esparse.js"
,
"esvalidate"
:
"bin/esvalidate.js"
...
...
@@ -3356,7 +3320,6 @@
"version"
:
"4.3.0"
,
"resolved"
:
"https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
,
"integrity"
:
"sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
,
"dev"
:
true
,
"engines"
:
{
"node"
:
">=4.0"
}
...
...
@@ -3365,7 +3328,6 @@
"version"
:
"2.0.3"
,
"resolved"
:
"https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
,
"integrity"
:
"sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
,
"dev"
:
true
,
"engines"
:
{
"node"
:
">=0.10.0"
}
...
...
@@ -3554,8 +3516,7 @@
"node_modules/fast-levenshtein"
:
{
"version"
:
"2.0.6"
,
"resolved"
:
"https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
,
"integrity"
:
"sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
,
"dev"
:
true
"integrity"
:
"sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
},
"node_modules/fast-safe-stringify"
:
{
"version"
:
"2.1.1"
,
...
...
@@ -3565,8 +3526,7 @@
"node_modules/fastest-levenshtein"
:
{
"version"
:
"1.0.12"
,
"resolved"
:
"https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz"
,
"integrity"
:
"sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow=="
,
"dev"
:
true
"integrity"
:
"sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow=="
},
"node_modules/fastq"
:
{
"version"
:
"1.13.0"
,
...
...
@@ -3602,7 +3562,6 @@
"version"
:
"16.5.3"
,
"resolved"
:
"https://registry.npmjs.org/file-type/-/file-type-16.5.3.tgz"
,
"integrity"
:
"sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A=="
,
"dev"
:
true
,
"dependencies"
:
{
"readable-web-to-node-stream"
:
"^3.0.0"
,
"strtok3"
:
"^6.2.4"
,
...
...
@@ -3619,7 +3578,6 @@
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz"
,
"integrity"
:
"sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg=="
,
"dev"
:
true
,
"engines"
:
{
"node"
:
">= 6"
}
...
...
@@ -3765,7 +3723,6 @@
"version"
:
"8.1.0"
,
"resolved"
:
"https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz"
,
"integrity"
:
"sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="
,
"dev"
:
true
,
"dependencies"
:
{
"graceful-fs"
:
"^4.2.0"
,
"jsonfile"
:
"^4.0.0"
,
...
...
@@ -3799,7 +3756,6 @@
"version"
:
"0.3.10"
,
"resolved"
:
"https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz"
,
"integrity"
:
"sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0="
,
"dev"
:
true
,
"dependencies"
:
{
"readable-stream"
:
"1.1.x"
,
"xregexp"
:
"2.0.0"
...
...
@@ -3875,7 +3831,6 @@
"version"
:
"3.0.2"
,
"resolved"
:
"https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz"
,
"integrity"
:
"sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg=="
,
"dev"
:
true
,
"dependencies"
:
{
"@tootallnate/once"
:
"1"
,
"data-uri-to-buffer"
:
"3"
,
...
...
@@ -3958,8 +3913,7 @@
"node_modules/graceful-fs"
:
{
"version"
:
"4.2.8"
,
"resolved"
:
"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz"
,
"integrity"
:
"sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
,
"dev"
:
true
"integrity"
:
"sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
},
"node_modules/has"
:
{
"version"
:
"1.0.3"
,
...
...
@@ -4054,7 +4008,6 @@
"version"
:
"4.0.1"
,
"resolved"
:
"https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz"
,
"integrity"
:
"sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg=="
,
"dev"
:
true
,
"dependencies"
:
{
"@tootallnate/once"
:
"1"
,
"agent-base"
:
"6"
,
...
...
@@ -4068,7 +4021,6 @@
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz"
,
"integrity"
:
"sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA=="
,
"dev"
:
true
,
"dependencies"
:
{
"agent-base"
:
"6"
,
"debug"
:
"4"
...
...
@@ -4101,7 +4053,6 @@
"version"
:
"1.2.1"
,
"resolved"
:
"https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz"
,
"integrity"
:
"sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
,
"dev"
:
true
,
"funding"
:
[
{
"type"
:
"github"
,
...
...
@@ -4193,8 +4144,7 @@
"node_modules/ip"
:
{
"version"
:
"1.1.5"
,
"resolved"
:
"https://registry.npmjs.org/ip/-/ip-1.1.5.tgz"
,
"integrity"
:
"sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
,
"dev"
:
true
"integrity"
:
"sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
},
"node_modules/ipaddr.js"
:
{
"version"
:
"1.9.1"
,
...
...
@@ -4306,8 +4256,7 @@
"node_modules/isarray"
:
{
"version"
:
"0.0.1"
,
"resolved"
:
"https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
,
"integrity"
:
"sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
,
"devOptional"
:
true
"integrity"
:
"sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
},
"node_modules/isexe"
:
{
"version"
:
"2.0.0"
,
...
...
@@ -5286,7 +5235,6 @@
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz"
,
"integrity"
:
"sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss="
,
"dev"
:
true
,
"optionalDependencies"
:
{
"graceful-fs"
:
"^4.1.6"
}
...
...
@@ -5312,9 +5260,9 @@
}
},
"node_modules/koa"
:
{
"version"
:
"2.13.
3
"
,
"resolved"
:
"https://registry.npmjs.org/koa/-/koa-2.13.
3
.tgz"
,
"integrity"
:
"sha512-
XhXIoR+ylAwqG3HhXwnMPQAM/4xfywz52OvxZNmxmTWGGHsvmBv4NSIhURha6yMuvEex1WdtplUTHnxnKpQiGw
=="
,
"version"
:
"2.13.
4
"
,
"resolved"
:
"https://registry.npmjs.org/koa/-/koa-2.13.
4
.tgz"
,
"integrity"
:
"sha512-
43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g
=="
,
"dependencies"
:
{
"accepts"
:
"^1.3.5"
,
"cache-content-type"
:
"^1.0.0"
,
...
...
@@ -5382,44 +5330,56 @@
}
},
"node_modules/koishi"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/koishi/-/koishi-4.0.0.tgz"
,
"integrity"
:
"sha512-7m9kv+8EOJlOOrwnk3KolU+Dt+tjd8fp2xNQviHj7+Z97kQlc6AnS+gXExikiiQHJpPshSgkBzbxbP1HuV668w=="
,
"dev"
:
true
,
"version"
:
"4.1.0"
,
"resolved"
:
"https://registry.npmjs.org/koishi/-/koishi-4.1.0.tgz"
,
"integrity"
:
"sha512-jS1IWN5gi1GTUmoZ9bUxez6mIrGCPE/huVHEcF8uq1Fu2nzxlH8J9Xc5GD/UNzlyarB9/7fcOyOpv+K//uCM0A=="
,
"dependencies"
:
{
"@koa/router"
:
"^10.1.1"
,
"@koishijs/core"
:
"^4.
0
.0"
,
"@koishijs/core"
:
"^4.
1
.0"
,
"@koishijs/utils"
:
"^5.0.0"
,
"@types/koa"
:
"*"
,
"@types/koa__router"
:
"*"
,
"@types/ws"
:
"^
7.4.7
"
,
"axios"
:
"^0.2
1.4
"
,
"@types/ws"
:
"^
8.2.2
"
,
"axios"
:
"^0.2
4.0
"
,
"file-type"
:
"^16.5.3"
,
"koa"
:
"^2.13.
1
"
,
"koa"
:
"^2.13.
4
"
,
"koa-bodyparser"
:
"^4.3.0"
,
"parseurl"
:
"^1.3.3"
,
"path-to-regexp"
:
"^6.2.0"
,
"proxy-agent"
:
"^5.0.0"
,
"ws"
:
"^8.
2.1
"
"ws"
:
"^8.
4.2
"
},
"engines"
:
{
"node"
:
">=12.0.0"
}
},
"node_modules/koishi/node_modules/@types/ws"
:
{
"version"
:
"7.4.7"
,
"resolved"
:
"https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz"
,
"integrity"
:
"sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww=="
,
"dev"
:
true
,
"node_modules/koishi-decorators"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/koishi-decorators/-/koishi-decorators-1.0.3.tgz"
,
"integrity"
:
"sha512-Xm+YbL+WV0nOzO4wz6Kqt/tS188FrWGxxSlAfzedUHS29ePQRwVpcb0UMTGr3hyKPgveRMU3aRDvdngIjdiLLg=="
,
"dependencies"
:
{
"@types/node"
:
"*"
"@types/koa"
:
"^2.13.4"
,
"@types/koa__router"
:
"^8.0.11"
,
"lodash"
:
"^4.17.21"
,
"reflect-metadata"
:
"^0.1.13"
,
"typed-reflector"
:
"^1.0.9"
},
"peerDependencies"
:
{
"koishi"
:
"^4.1.0"
}
},
"node_modules/koishi/node_modules/axios"
:
{
"version"
:
"0.24.0"
,
"resolved"
:
"https://registry.npmjs.org/axios/-/axios-0.24.0.tgz"
,
"integrity"
:
"sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA=="
,
"dependencies"
:
{
"follow-redirects"
:
"^1.14.4"
}
},
"node_modules/koishi/node_modules/path-to-regexp"
:
{
"version"
:
"6.2.0"
,
"resolved"
:
"https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.0.tgz"
,
"integrity"
:
"sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg=="
,
"dev"
:
true
"integrity"
:
"sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg=="
},
"node_modules/leven"
:
{
"version"
:
"3.1.0"
,
...
...
@@ -5568,7 +5528,6 @@
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/methods/-/methods-1.1.2.tgz"
,
"integrity"
:
"sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
,
"devOptional"
:
true
,
"engines"
:
{
"node"
:
">= 0.6"
}
...
...
@@ -5698,7 +5657,6 @@
"version"
:
"2.0.2"
,
"resolved"
:
"https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz"
,
"integrity"
:
"sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg=="
,
"dev"
:
true
,
"engines"
:
{
"node"
:
">= 0.4.0"
}
...
...
@@ -5881,7 +5839,6 @@
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz"
,
"integrity"
:
"sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ=="
,
"dev"
:
true
,
"dependencies"
:
{
"@tootallnate/once"
:
"1"
,
"agent-base"
:
"6"
,
...
...
@@ -5901,7 +5858,6 @@
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.0.tgz"
,
"integrity"
:
"sha512-H+/A6KitiHNNW+bxBKREk2MCGSxljfqRX76NjummWEYIat7ldVXRU3dhRIE3iXZ0nvGBk6smv3nntxKkzRL8NA=="
,
"dev"
:
true
,
"dependencies"
:
{
"degenerator"
:
"^3.0.1"
,
"ip"
:
"^1.1.5"
,
...
...
@@ -5988,7 +5944,6 @@
"version"
:
"4.0.2"
,
"resolved"
:
"https://registry.npmjs.org/peek-readable/-/peek-readable-4.0.2.tgz"
,
"integrity"
:
"sha512-9fMaz6zoxw9ypO1KZy5RDJgSupEtu0Q+g/OqqsVHX3rKGR8qehRLYzsFARZ4bVvdvfknKiXvuDbkMnO1g6cRpQ=="
,
"dev"
:
true
,
"engines"
:
{
"node"
:
">=8"
},
...
...
@@ -6141,7 +6096,6 @@
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz"
,
"integrity"
:
"sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g=="
,
"dev"
:
true
,
"dependencies"
:
{
"agent-base"
:
"^6.0.0"
,
"debug"
:
"4"
,
...
...
@@ -6160,7 +6114,6 @@
"version"
:
"5.1.1"
,
"resolved"
:
"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz"
,
"integrity"
:
"sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="
,
"dev"
:
true
,
"dependencies"
:
{
"yallist"
:
"^3.0.2"
}
...
...
@@ -6168,14 +6121,12 @@
"node_modules/proxy-agent/node_modules/yallist"
:
{
"version"
:
"3.1.1"
,
"resolved"
:
"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
,
"integrity"
:
"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
,
"dev"
:
true
"integrity"
:
"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
},
"node_modules/proxy-from-env"
:
{
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz"
,
"integrity"
:
"sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
,
"dev"
:
true
"integrity"
:
"sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
},
"node_modules/psl"
:
{
"version"
:
"1.8.0"
,
...
...
@@ -6279,7 +6230,6 @@
"version"
:
"1.1.14"
,
"resolved"
:
"https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz"
,
"integrity"
:
"sha1-fPTFTvZI44EwhMY23SB54WbAgdk="
,
"devOptional"
:
true
,
"dependencies"
:
{
"core-util-is"
:
"~1.0.0"
,
"inherits"
:
"~2.0.1"
,
...
...
@@ -6291,7 +6241,6 @@
"version"
:
"3.0.2"
,
"resolved"
:
"https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz"
,
"integrity"
:
"sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw=="
,
"dev"
:
true
,
"dependencies"
:
{
"readable-stream"
:
"^3.6.0"
},
...
...
@@ -6307,7 +6256,6 @@
"version"
:
"3.6.0"
,
"resolved"
:
"https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz"
,
"integrity"
:
"sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA=="
,
"dev"
:
true
,
"dependencies"
:
{
"inherits"
:
"^2.0.3"
,
"string_decoder"
:
"^1.1.1"
,
...
...
@@ -6321,7 +6269,6 @@
"version"
:
"5.2.1"
,
"resolved"
:
"https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
,
"integrity"
:
"sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
,
"dev"
:
true
,
"funding"
:
[
{
"type"
:
"github"
,
...
...
@@ -6341,7 +6288,6 @@
"version"
:
"1.3.0"
,
"resolved"
:
"https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
,
"integrity"
:
"sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="
,
"dev"
:
true
,
"dependencies"
:
{
"safe-buffer"
:
"~5.2.0"
}
...
...
@@ -6519,8 +6465,7 @@
"node_modules/schemastery"
:
{
"version"
:
"2.1.3"
,
"resolved"
:
"https://registry.npmjs.org/schemastery/-/schemastery-2.1.3.tgz"
,
"integrity"
:
"sha512-AH6dgucxUSkuK/LvIJtPor8/6KCEq5L9weD5JQJ6/HEDFqD4KbO7NqQsJmbW4TKubZ4FtPj7eXSEaz5nie+y+A=="
,
"dev"
:
true
"integrity"
:
"sha512-AH6dgucxUSkuK/LvIJtPor8/6KCEq5L9weD5JQJ6/HEDFqD4KbO7NqQsJmbW4TKubZ4FtPj7eXSEaz5nie+y+A=="
},
"node_modules/semver"
:
{
"version"
:
"7.3.5"
,
...
...
@@ -6700,7 +6645,6 @@
"version"
:
"4.2.0"
,
"resolved"
:
"https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz"
,
"integrity"
:
"sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
,
"dev"
:
true
,
"engines"
:
{
"node"
:
">= 6.0.0"
,
"npm"
:
">= 3.0.0"
...
...
@@ -6710,7 +6654,6 @@
"version"
:
"2.6.1"
,
"resolved"
:
"https://registry.npmjs.org/socks/-/socks-2.6.1.tgz"
,
"integrity"
:
"sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA=="
,
"dev"
:
true
,
"dependencies"
:
{
"ip"
:
"^1.1.5"
,
"smart-buffer"
:
"^4.1.0"
...
...
@@ -6724,7 +6667,6 @@
"version"
:
"5.0.1"
,
"resolved"
:
"https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz"
,
"integrity"
:
"sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ=="
,
"dev"
:
true
,
"dependencies"
:
{
"agent-base"
:
"^6.0.2"
,
"debug"
:
"4"
,
...
...
@@ -6738,7 +6680,7 @@
"version"
:
"0.6.1"
,
"resolved"
:
"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
,
"integrity"
:
"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
,
"dev"
:
true
,
"dev
Optional
"
:
true
,
"engines"
:
{
"node"
:
">=0.10.0"
}
...
...
@@ -6800,8 +6742,7 @@
"node_modules/string_decoder"
:
{
"version"
:
"0.10.31"
,
"resolved"
:
"https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
,
"integrity"
:
"sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
,
"devOptional"
:
true
"integrity"
:
"sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
},
"node_modules/string-length"
:
{
"version"
:
"4.0.2"
,
...
...
@@ -6876,7 +6817,6 @@
"version"
:
"6.2.4"
,
"resolved"
:
"https://registry.npmjs.org/strtok3/-/strtok3-6.2.4.tgz"
,
"integrity"
:
"sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw=="
,
"dev"
:
true
,
"dependencies"
:
{
"@tokenizer/token"
:
"^0.3.0"
,
"peek-readable"
:
"^4.0.1"
...
...
@@ -7129,7 +7069,6 @@
"version"
:
"4.1.1"
,
"resolved"
:
"https://registry.npmjs.org/token-types/-/token-types-4.1.1.tgz"
,
"integrity"
:
"sha512-hD+QyuUAyI2spzsI0B7gf/jJ2ggR4RjkAo37j3StuePhApJUwcWDjnHDOFdIWYSwNR28H14hpwm4EI+V1Ted1w=="
,
"dev"
:
true
,
"dependencies"
:
{
"@tokenizer/token"
:
"^0.3.0"
,
"ieee754"
:
"^1.2.1"
...
...
@@ -7279,6 +7218,14 @@
"node"
:
">= 0.6"
}
},
"node_modules/typed-reflector"
:
{
"version"
:
"1.0.9"
,
"resolved"
:
"https://registry.npmjs.org/typed-reflector/-/typed-reflector-1.0.9.tgz"
,
"integrity"
:
"sha512-Df9KpLcXsSM4/q+iFT/WKU8RxmwUC8POY/7VFL9xgvqh2aaY7o+43n7pUTUVKtimJTkQokKoOVe/B8ouW8tBhA=="
,
"dependencies"
:
{
"reflect-metadata"
:
"^0.1.13"
}
},
"node_modules/typedarray"
:
{
"version"
:
"0.0.6"
,
"resolved"
:
"https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
,
...
...
@@ -7311,7 +7258,6 @@
"version"
:
"0.1.2"
,
"resolved"
:
"https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz"
,
"integrity"
:
"sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
,
"dev"
:
true
,
"engines"
:
{
"node"
:
">= 4.0.0"
}
...
...
@@ -7336,8 +7282,7 @@
"node_modules/util-deprecate"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
,
"integrity"
:
"sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
,
"devOptional"
:
true
"integrity"
:
"sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"node_modules/utils-merge"
:
{
"version"
:
"1.0.1"
,
...
...
@@ -7397,7 +7342,6 @@
"version"
:
"3.9.3"
,
"resolved"
:
"https://registry.npmjs.org/vm2/-/vm2-3.9.3.tgz"
,
"integrity"
:
"sha512-smLS+18RjXYMl9joyJxMNI9l4w7biW8ilSDaVRvFBDwOH8P0BK1ognFQTpg0wyQ6wIKLTblHJvROW692L/E53Q=="
,
"dev"
:
true
,
"bin"
:
{
"vm2"
:
"bin/vm2"
},
...
...
@@ -7483,7 +7427,6 @@
"version"
:
"1.2.3"
,
"resolved"
:
"https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz"
,
"integrity"
:
"sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
,
"dev"
:
true
,
"engines"
:
{
"node"
:
">=0.10.0"
}
...
...
@@ -7524,9 +7467,9 @@
}
},
"node_modules/ws"
:
{
"version"
:
"8.
2.3
"
,
"resolved"
:
"https://registry.npmjs.org/ws/-/ws-8.
2.3
.tgz"
,
"integrity"
:
"sha512-
wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWa
A=="
,
"version"
:
"8.
4.2
"
,
"resolved"
:
"https://registry.npmjs.org/ws/-/ws-8.
4.2
.tgz"
,
"integrity"
:
"sha512-
Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10Z
A=="
,
"engines"
:
{
"node"
:
">=10.0.0"
},
...
...
@@ -7559,7 +7502,6 @@
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz"
,
"integrity"
:
"sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM="
,
"dev"
:
true
,
"engines"
:
{
"node"
:
"*"
}
...
...
@@ -8384,7 +8326,6 @@
"version"
:
"10.1.1"
,
"resolved"
:
"https://registry.npmjs.org/@koa/router/-/router-10.1.1.tgz"
,
"integrity"
:
"sha512-ORNjq5z4EmQPriKbR0ER3k4Gh7YGNhWDL7JBW+8wXDrHLbWYKYSJaOJ9aN06npF5tbTxe2JBOsurpJDAvjiXKw=="
,
"dev"
:
true
,
"requires"
:
{
"debug"
:
"^4.1.1"
,
"http-errors"
:
"^1.7.3"
,
...
...
@@ -8396,16 +8337,14 @@
"path-to-regexp"
:
{
"version"
:
"6.2.0"
,
"resolved"
:
"https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.0.tgz"
,
"integrity"
:
"sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg=="
,
"dev"
:
true
"integrity"
:
"sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg=="
}
}
},
"@koishijs/core"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/@koishijs/core/-/core-4.0.0.tgz"
,
"integrity"
:
"sha512-xonpueYfWhcTw2eJVc/SG7EwutFgzqtvdpuCGoBFvfRRSZlHOWAQfWsRw5he06+qn7rVOj3cyxrtFMP0fAthNA=="
,
"dev"
:
true
,
"version"
:
"4.1.0"
,
"resolved"
:
"https://registry.npmjs.org/@koishijs/core/-/core-4.1.0.tgz"
,
"integrity"
:
"sha512-f9SSEHxYt5OixXLhX0W9ME36JLQxdb8gwv8R5YOAd4y1IYchOX3qVfbnhRCd41SHUaKLhRWMBzwnl9R1dmqm4A=="
,
"requires"
:
{
"@koishijs/utils"
:
"^5.0.0"
,
"fastest-levenshtein"
:
"^1.0.12"
,
...
...
@@ -8416,7 +8355,6 @@
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/@koishijs/utils/-/utils-5.0.0.tgz"
,
"integrity"
:
"sha512-3ng7VkQZAP+EHdRLSbio5H36LDKRxy4OfooRKgol+gef2Yd0KOKYbVmGVud7/mZZExCPkaZVCwocKB/bKA4Xvw=="
,
"dev"
:
true
,
"requires"
:
{
"supports-color"
:
"^8.1.0"
},
...
...
@@ -8425,7 +8363,6 @@
"version"
:
"8.1.1"
,
"resolved"
:
"https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz"
,
"integrity"
:
"sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="
,
"dev"
:
true
,
"requires"
:
{
"has-flag"
:
"^4.0.0"
}
...
...
@@ -8606,20 +8543,17 @@
"@tokenizer/token"
:
{
"version"
:
"0.3.0"
,
"resolved"
:
"https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz"
,
"integrity"
:
"sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="
,
"dev"
:
true
"integrity"
:
"sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="
},
"@tootallnate/once"
:
{
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz"
,
"integrity"
:
"sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw=="
,
"dev"
:
true
"integrity"
:
"sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw=="
},
"@types/accepts"
:
{
"version"
:
"1.3.5"
,
"resolved"
:
"https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz"
,
"integrity"
:
"sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ=="
,
"dev"
:
true
,
"requires"
:
{
"@types/node"
:
"*"
}
...
...
@@ -8669,7 +8603,6 @@
"version"
:
"1.19.1"
,
"resolved"
:
"https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz"
,
"integrity"
:
"sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg=="
,
"dev"
:
true
,
"requires"
:
{
"@types/connect"
:
"*"
,
"@types/node"
:
"*"
...
...
@@ -8679,7 +8612,6 @@
"version"
:
"3.4.35"
,
"resolved"
:
"https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz"
,
"integrity"
:
"sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ=="
,
"dev"
:
true
,
"requires"
:
{
"@types/node"
:
"*"
}
...
...
@@ -8687,8 +8619,7 @@
"@types/content-disposition"
:
{
"version"
:
"0.5.4"
,
"resolved"
:
"https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.4.tgz"
,
"integrity"
:
"sha512-0mPF08jn9zYI0n0Q/Pnz7C4kThdSt+6LD4amsrYDDpgBfrVWa3TcCOxKX1zkGgYniGagRv8heN2cbh+CAn+uuQ=="
,
"dev"
:
true
"integrity"
:
"sha512-0mPF08jn9zYI0n0Q/Pnz7C4kThdSt+6LD4amsrYDDpgBfrVWa3TcCOxKX1zkGgYniGagRv8heN2cbh+CAn+uuQ=="
},
"@types/cookiejar"
:
{
"version"
:
"2.1.2"
,
...
...
@@ -8700,7 +8631,6 @@
"version"
:
"0.7.7"
,
"resolved"
:
"https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz"
,
"integrity"
:
"sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA=="
,
"dev"
:
true
,
"requires"
:
{
"@types/connect"
:
"*"
,
"@types/express"
:
"*"
,
...
...
@@ -8712,7 +8642,6 @@
"version"
:
"4.17.13"
,
"resolved"
:
"https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz"
,
"integrity"
:
"sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA=="
,
"dev"
:
true
,
"requires"
:
{
"@types/body-parser"
:
"*"
,
"@types/express-serve-static-core"
:
"^4.17.18"
,
...
...
@@ -8724,7 +8653,6 @@
"version"
:
"4.17.24"
,
"resolved"
:
"https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz"
,
"integrity"
:
"sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA=="
,
"dev"
:
true
,
"requires"
:
{
"@types/node"
:
"*"
,
"@types/qs"
:
"*"
,
...
...
@@ -8743,14 +8671,12 @@
"@types/http-assert"
:
{
"version"
:
"1.5.3"
,
"resolved"
:
"https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz"
,
"integrity"
:
"sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA=="
,
"dev"
:
true
"integrity"
:
"sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA=="
},
"@types/http-errors"
:
{
"version"
:
"1.8.1"
,
"resolved"
:
"https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.1.tgz"
,
"integrity"
:
"sha512-e+2rjEwK6KDaNOm5Aa9wNGgyS9oSZU/4pfSMMPYNOfjvFI0WVXm29+ITRFr6aKDvvKo7uU1jV68MW4ScsfDi7Q=="
,
"dev"
:
true
"integrity"
:
"sha512-e+2rjEwK6KDaNOm5Aa9wNGgyS9oSZU/4pfSMMPYNOfjvFI0WVXm29+ITRFr6aKDvvKo7uU1jV68MW4ScsfDi7Q=="
},
"@types/istanbul-lib-coverage"
:
{
"version"
:
"2.0.3"
,
...
...
@@ -8795,14 +8721,12 @@
"@types/keygrip"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz"
,
"integrity"
:
"sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw=="
,
"dev"
:
true
"integrity"
:
"sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw=="
},
"@types/koa"
:
{
"version"
:
"2.13.4"
,
"resolved"
:
"https://registry.npmjs.org/@types/koa/-/koa-2.13.4.tgz"
,
"integrity"
:
"sha512-dfHYMfU+z/vKtQB7NUrthdAEiSvnLebvBjwHtfFmpZmB7em2N3WVQdHgnFq+xvyVgxW5jKDmjWfLD3lw4g4uTw=="
,
"dev"
:
true
,
"requires"
:
{
"@types/accepts"
:
"*"
,
"@types/content-disposition"
:
"*"
,
...
...
@@ -8815,10 +8739,9 @@
}
},
"@types/koa__router"
:
{
"version"
:
"8.0.8"
,
"resolved"
:
"https://registry.npmjs.org/@types/koa__router/-/koa__router-8.0.8.tgz"
,
"integrity"
:
"sha512-9pGCaDtzCsj4HJ8HmGuqzk8+s57sPj4njWd08GG5o92n5Xp9io2snc40CPpXFhoKcZ8OKhuu6ht4gNou9e1C2w=="
,
"dev"
:
true
,
"version"
:
"8.0.11"
,
"resolved"
:
"https://registry.npmjs.org/@types/koa__router/-/koa__router-8.0.11.tgz"
,
"integrity"
:
"sha512-WXgKWpBsbS14kzmzD9LeFapOIa678h7zvUHxDwXwSx4ETKXhXLVUAToX6jZ/U7EihM7qwyD9W/BZvB0MRu7MTQ=="
,
"requires"
:
{
"@types/koa"
:
"*"
}
...
...
@@ -8836,7 +8759,6 @@
"version"
:
"3.2.5"
,
"resolved"
:
"https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz"
,
"integrity"
:
"sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ=="
,
"dev"
:
true
,
"requires"
:
{
"@types/koa"
:
"*"
}
...
...
@@ -8850,8 +8772,7 @@
"@types/mime"
:
{
"version"
:
"1.3.2"
,
"resolved"
:
"https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz"
,
"integrity"
:
"sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
,
"dev"
:
true
"integrity"
:
"sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
},
"@types/node"
:
{
"version"
:
"16.10.2"
,
...
...
@@ -8867,20 +8788,17 @@
"@types/qs"
:
{
"version"
:
"6.9.7"
,
"resolved"
:
"https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz"
,
"integrity"
:
"sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
,
"dev"
:
true
"integrity"
:
"sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
},
"@types/range-parser"
:
{
"version"
:
"1.2.4"
,
"resolved"
:
"https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz"
,
"integrity"
:
"sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
,
"dev"
:
true
"integrity"
:
"sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
},
"@types/serve-static"
:
{
"version"
:
"1.13.10"
,
"resolved"
:
"https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz"
,
"integrity"
:
"sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ=="
,
"dev"
:
true
,
"requires"
:
{
"@types/mime"
:
"^1"
,
"@types/node"
:
"*"
...
...
@@ -8912,9 +8830,9 @@
}
},
"@types/ws"
:
{
"version"
:
"8.2.
0
"
,
"resolved"
:
"https://registry.npmjs.org/@types/ws/-/ws-8.2.
0
.tgz"
,
"integrity"
:
"sha512-
cyeefcUCgJlEk+hk2h3N+MqKKsPViQgF5boi9TTHSK+PoR9KWBb/C5ccPcDyAqgsbAYHTwulch725DV84+pSp
g=="
,
"version"
:
"8.2.
2
"
,
"resolved"
:
"https://registry.npmjs.org/@types/ws/-/ws-8.2.
2
.tgz"
,
"integrity"
:
"sha512-
NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOO
g=="
,
"requires"
:
{
"@types/node"
:
"*"
}
...
...
@@ -9065,7 +8983,6 @@
"version"
:
"6.0.2"
,
"resolved"
:
"https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz"
,
"integrity"
:
"sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="
,
"dev"
:
true
,
"requires"
:
{
"debug"
:
"4"
}
...
...
@@ -9160,7 +9077,6 @@
"version"
:
"0.13.4"
,
"resolved"
:
"https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz"
,
"integrity"
:
"sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w=="
,
"dev"
:
true
,
"requires"
:
{
"tslib"
:
"^2.0.1"
},
...
...
@@ -9168,8 +9084,7 @@
"tslib"
:
{
"version"
:
"2.3.1"
,
"resolved"
:
"https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz"
,
"integrity"
:
"sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
,
"dev"
:
true
"integrity"
:
"sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
}
}
},
...
...
@@ -9689,8 +9604,7 @@
"core-util-is"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz"
,
"integrity"
:
"sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
,
"devOptional"
:
true
"integrity"
:
"sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
},
"cors"
:
{
"version"
:
"2.8.5"
,
...
...
@@ -9739,8 +9653,7 @@
"data-uri-to-buffer"
:
{
"version"
:
"3.0.1"
,
"resolved"
:
"https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz"
,
"integrity"
:
"sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og=="
,
"dev"
:
true
"integrity"
:
"sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og=="
},
"data-urls"
:
{
"version"
:
"2.0.0"
,
...
...
@@ -9809,8 +9722,7 @@
"deep-is"
:
{
"version"
:
"0.1.4"
,
"resolved"
:
"https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
,
"integrity"
:
"sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
,
"dev"
:
true
"integrity"
:
"sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
},
"deepmerge"
:
{
"version"
:
"4.2.2"
,
...
...
@@ -9822,7 +9734,6 @@
"version"
:
"3.0.1"
,
"resolved"
:
"https://registry.npmjs.org/degenerator/-/degenerator-3.0.1.tgz"
,
"integrity"
:
"sha512-LFsIFEeLPlKvAKXu7j3ssIG6RT0TbI7/GhsqrI0DnHASEQjXQ0LUSYcjJteGgRGmZbl1TnMSxpNQIAiJ7Du5TQ=="
,
"dev"
:
true
,
"requires"
:
{
"ast-types"
:
"^0.13.2"
,
"escodegen"
:
"^1.8.1"
,
...
...
@@ -9966,7 +9877,6 @@
"version"
:
"1.14.3"
,
"resolved"
:
"https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz"
,
"integrity"
:
"sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw=="
,
"dev"
:
true
,
"requires"
:
{
"esprima"
:
"^4.0.1"
,
"estraverse"
:
"^4.2.0"
,
...
...
@@ -9979,7 +9889,6 @@
"version"
:
"0.3.0"
,
"resolved"
:
"https://registry.npmjs.org/levn/-/levn-0.3.0.tgz"
,
"integrity"
:
"sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4="
,
"dev"
:
true
,
"requires"
:
{
"prelude-ls"
:
"~1.1.2"
,
"type-check"
:
"~0.3.2"
...
...
@@ -9989,7 +9898,6 @@
"version"
:
"0.8.3"
,
"resolved"
:
"https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz"
,
"integrity"
:
"sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA=="
,
"dev"
:
true
,
"requires"
:
{
"deep-is"
:
"~0.1.3"
,
"fast-levenshtein"
:
"~2.0.6"
,
...
...
@@ -10002,14 +9910,12 @@
"prelude-ls"
:
{
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz"
,
"integrity"
:
"sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
,
"dev"
:
true
"integrity"
:
"sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
},
"type-check"
:
{
"version"
:
"0.3.2"
,
"resolved"
:
"https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz"
,
"integrity"
:
"sha1-WITKtRLPHTVeP7eE8wgEsrUg23I="
,
"dev"
:
true
,
"requires"
:
{
"prelude-ls"
:
"~1.1.2"
}
...
...
@@ -10152,8 +10058,7 @@
"esprima"
:
{
"version"
:
"4.0.1"
,
"resolved"
:
"https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"
,
"integrity"
:
"sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
,
"dev"
:
true
"integrity"
:
"sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
"esquery"
:
{
"version"
:
"1.4.0"
,
...
...
@@ -10192,14 +10097,12 @@
"estraverse"
:
{
"version"
:
"4.3.0"
,
"resolved"
:
"https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
,
"integrity"
:
"sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
,
"dev"
:
true
"integrity"
:
"sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
},
"esutils"
:
{
"version"
:
"2.0.3"
,
"resolved"
:
"https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
,
"integrity"
:
"sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
,
"dev"
:
true
"integrity"
:
"sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
},
"etag"
:
{
"version"
:
"1.8.1"
,
...
...
@@ -10359,8 +10262,7 @@
"fast-levenshtein"
:
{
"version"
:
"2.0.6"
,
"resolved"
:
"https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
,
"integrity"
:
"sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
,
"dev"
:
true
"integrity"
:
"sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
},
"fast-safe-stringify"
:
{
"version"
:
"2.1.1"
,
...
...
@@ -10370,8 +10272,7 @@
"fastest-levenshtein"
:
{
"version"
:
"1.0.12"
,
"resolved"
:
"https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz"
,
"integrity"
:
"sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow=="
,
"dev"
:
true
"integrity"
:
"sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow=="
},
"fastq"
:
{
"version"
:
"1.13.0"
,
...
...
@@ -10404,7 +10305,6 @@
"version"
:
"16.5.3"
,
"resolved"
:
"https://registry.npmjs.org/file-type/-/file-type-16.5.3.tgz"
,
"integrity"
:
"sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A=="
,
"dev"
:
true
,
"requires"
:
{
"readable-web-to-node-stream"
:
"^3.0.0"
,
"strtok3"
:
"^6.2.4"
,
...
...
@@ -10414,8 +10314,7 @@
"file-uri-to-path"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz"
,
"integrity"
:
"sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg=="
,
"dev"
:
true
"integrity"
:
"sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg=="
},
"fill-range"
:
{
"version"
:
"7.0.1"
,
...
...
@@ -10521,7 +10420,6 @@
"version"
:
"8.1.0"
,
"resolved"
:
"https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz"
,
"integrity"
:
"sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="
,
"dev"
:
true
,
"requires"
:
{
"graceful-fs"
:
"^4.2.0"
,
"jsonfile"
:
"^4.0.0"
,
...
...
@@ -10545,7 +10443,6 @@
"version"
:
"0.3.10"
,
"resolved"
:
"https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz"
,
"integrity"
:
"sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0="
,
"dev"
:
true
,
"requires"
:
{
"readable-stream"
:
"1.1.x"
,
"xregexp"
:
"2.0.0"
...
...
@@ -10600,7 +10497,6 @@
"version"
:
"3.0.2"
,
"resolved"
:
"https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz"
,
"integrity"
:
"sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg=="
,
"dev"
:
true
,
"requires"
:
{
"@tootallnate/once"
:
"1"
,
"data-uri-to-buffer"
:
"3"
,
...
...
@@ -10659,8 +10555,7 @@
"graceful-fs"
:
{
"version"
:
"4.2.8"
,
"resolved"
:
"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz"
,
"integrity"
:
"sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
,
"dev"
:
true
"integrity"
:
"sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
},
"has"
:
{
"version"
:
"1.0.3"
,
...
...
@@ -10728,7 +10623,6 @@
"version"
:
"4.0.1"
,
"resolved"
:
"https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz"
,
"integrity"
:
"sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg=="
,
"dev"
:
true
,
"requires"
:
{
"@tootallnate/once"
:
"1"
,
"agent-base"
:
"6"
,
...
...
@@ -10739,7 +10633,6 @@
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz"
,
"integrity"
:
"sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA=="
,
"dev"
:
true
,
"requires"
:
{
"agent-base"
:
"6"
,
"debug"
:
"4"
...
...
@@ -10762,8 +10655,7 @@
"ieee754"
:
{
"version"
:
"1.2.1"
,
"resolved"
:
"https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz"
,
"integrity"
:
"sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
,
"dev"
:
true
"integrity"
:
"sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
},
"ignore"
:
{
"version"
:
"5.1.8"
,
...
...
@@ -10820,8 +10712,7 @@
"ip"
:
{
"version"
:
"1.1.5"
,
"resolved"
:
"https://registry.npmjs.org/ip/-/ip-1.1.5.tgz"
,
"integrity"
:
"sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
,
"dev"
:
true
"integrity"
:
"sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
},
"ipaddr.js"
:
{
"version"
:
"1.9.1"
,
...
...
@@ -10900,8 +10791,7 @@
"isarray"
:
{
"version"
:
"0.0.1"
,
"resolved"
:
"https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
,
"integrity"
:
"sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
,
"devOptional"
:
true
"integrity"
:
"sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
},
"isexe"
:
{
"version"
:
"2.0.0"
,
...
...
@@ -11649,7 +11539,6 @@
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz"
,
"integrity"
:
"sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss="
,
"dev"
:
true
,
"requires"
:
{
"graceful-fs"
:
"^4.1.6"
}
...
...
@@ -11669,9 +11558,9 @@
"dev"
:
true
},
"koa"
:
{
"version"
:
"2.13.
3
"
,
"resolved"
:
"https://registry.npmjs.org/koa/-/koa-2.13.
3
.tgz"
,
"integrity"
:
"sha512-
XhXIoR+ylAwqG3HhXwnMPQAM/4xfywz52OvxZNmxmTWGGHsvmBv4NSIhURha6yMuvEex1WdtplUTHnxnKpQiGw
=="
,
"version"
:
"2.13.
4
"
,
"resolved"
:
"https://registry.npmjs.org/koa/-/koa-2.13.
4
.tgz"
,
"integrity"
:
"sha512-
43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g
=="
,
"requires"
:
{
"accepts"
:
"^1.3.5"
,
"cache-content-type"
:
"^1.0.0"
,
...
...
@@ -11729,44 +11618,53 @@
}
},
"koishi"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/koishi/-/koishi-4.0.0.tgz"
,
"integrity"
:
"sha512-7m9kv+8EOJlOOrwnk3KolU+Dt+tjd8fp2xNQviHj7+Z97kQlc6AnS+gXExikiiQHJpPshSgkBzbxbP1HuV668w=="
,
"dev"
:
true
,
"version"
:
"4.1.0"
,
"resolved"
:
"https://registry.npmjs.org/koishi/-/koishi-4.1.0.tgz"
,
"integrity"
:
"sha512-jS1IWN5gi1GTUmoZ9bUxez6mIrGCPE/huVHEcF8uq1Fu2nzxlH8J9Xc5GD/UNzlyarB9/7fcOyOpv+K//uCM0A=="
,
"requires"
:
{
"@koa/router"
:
"^10.1.1"
,
"@koishijs/core"
:
"^4.
0
.0"
,
"@koishijs/core"
:
"^4.
1
.0"
,
"@koishijs/utils"
:
"^5.0.0"
,
"@types/koa"
:
"*"
,
"@types/koa__router"
:
"*"
,
"@types/ws"
:
"^
7.4.7
"
,
"axios"
:
"^0.2
1.4
"
,
"@types/ws"
:
"^
8.2.2
"
,
"axios"
:
"^0.2
4.0
"
,
"file-type"
:
"^16.5.3"
,
"koa"
:
"^2.13.
1
"
,
"koa"
:
"^2.13.
4
"
,
"koa-bodyparser"
:
"^4.3.0"
,
"parseurl"
:
"^1.3.3"
,
"path-to-regexp"
:
"^6.2.0"
,
"proxy-agent"
:
"^5.0.0"
,
"ws"
:
"^8.
2.1
"
"ws"
:
"^8.
4.2
"
},
"dependencies"
:
{
"@types/ws"
:
{
"version"
:
"7.4.7"
,
"resolved"
:
"https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz"
,
"integrity"
:
"sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww=="
,
"dev"
:
true
,
"axios"
:
{
"version"
:
"0.24.0"
,
"resolved"
:
"https://registry.npmjs.org/axios/-/axios-0.24.0.tgz"
,
"integrity"
:
"sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA=="
,
"requires"
:
{
"
@types/node"
:
"*
"
"
follow-redirects"
:
"^1.14.4
"
}
},
"path-to-regexp"
:
{
"version"
:
"6.2.0"
,
"resolved"
:
"https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.0.tgz"
,
"integrity"
:
"sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg=="
,
"dev"
:
true
"integrity"
:
"sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg=="
}
}
},
"koishi-decorators"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/koishi-decorators/-/koishi-decorators-1.0.3.tgz"
,
"integrity"
:
"sha512-Xm+YbL+WV0nOzO4wz6Kqt/tS188FrWGxxSlAfzedUHS29ePQRwVpcb0UMTGr3hyKPgveRMU3aRDvdngIjdiLLg=="
,
"requires"
:
{
"@types/koa"
:
"^2.13.4"
,
"@types/koa__router"
:
"^8.0.11"
,
"lodash"
:
"^4.17.21"
,
"reflect-metadata"
:
"^0.1.13"
,
"typed-reflector"
:
"^1.0.9"
}
},
"leven"
:
{
"version"
:
"3.1.0"
,
"resolved"
:
"https://registry.npmjs.org/leven/-/leven-3.1.0.tgz"
,
...
...
@@ -11888,8 +11786,7 @@
"methods"
:
{
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/methods/-/methods-1.1.2.tgz"
,
"integrity"
:
"sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
,
"devOptional"
:
true
"integrity"
:
"sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
},
"micromatch"
:
{
"version"
:
"4.0.4"
,
...
...
@@ -11985,8 +11882,7 @@
"netmask"
:
{
"version"
:
"2.0.2"
,
"resolved"
:
"https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz"
,
"integrity"
:
"sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg=="
,
"dev"
:
true
"integrity"
:
"sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg=="
},
"node-fetch"
:
{
"version"
:
"2.6.5"
,
...
...
@@ -12124,7 +12020,6 @@
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz"
,
"integrity"
:
"sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ=="
,
"dev"
:
true
,
"requires"
:
{
"@tootallnate/once"
:
"1"
,
"agent-base"
:
"6"
,
...
...
@@ -12141,7 +12036,6 @@
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/pac-resolver/-/pac-resolver-5.0.0.tgz"
,
"integrity"
:
"sha512-H+/A6KitiHNNW+bxBKREk2MCGSxljfqRX76NjummWEYIat7ldVXRU3dhRIE3iXZ0nvGBk6smv3nntxKkzRL8NA=="
,
"dev"
:
true
,
"requires"
:
{
"degenerator"
:
"^3.0.1"
,
"ip"
:
"^1.1.5"
,
...
...
@@ -12206,8 +12100,7 @@
"peek-readable"
:
{
"version"
:
"4.0.2"
,
"resolved"
:
"https://registry.npmjs.org/peek-readable/-/peek-readable-4.0.2.tgz"
,
"integrity"
:
"sha512-9fMaz6zoxw9ypO1KZy5RDJgSupEtu0Q+g/OqqsVHX3rKGR8qehRLYzsFARZ4bVvdvfknKiXvuDbkMnO1g6cRpQ=="
,
"dev"
:
true
"integrity"
:
"sha512-9fMaz6zoxw9ypO1KZy5RDJgSupEtu0Q+g/OqqsVHX3rKGR8qehRLYzsFARZ4bVvdvfknKiXvuDbkMnO1g6cRpQ=="
},
"picocolors"
:
{
"version"
:
"1.0.0"
,
...
...
@@ -12313,7 +12206,6 @@
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/proxy-agent/-/proxy-agent-5.0.0.tgz"
,
"integrity"
:
"sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g=="
,
"dev"
:
true
,
"requires"
:
{
"agent-base"
:
"^6.0.0"
,
"debug"
:
"4"
,
...
...
@@ -12329,7 +12221,6 @@
"version"
:
"5.1.1"
,
"resolved"
:
"https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz"
,
"integrity"
:
"sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="
,
"dev"
:
true
,
"requires"
:
{
"yallist"
:
"^3.0.2"
}
...
...
@@ -12337,16 +12228,14 @@
"yallist"
:
{
"version"
:
"3.1.1"
,
"resolved"
:
"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
,
"integrity"
:
"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
,
"dev"
:
true
"integrity"
:
"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
}
}
},
"proxy-from-env"
:
{
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz"
,
"integrity"
:
"sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
,
"dev"
:
true
"integrity"
:
"sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
},
"psl"
:
{
"version"
:
"1.8.0"
,
...
...
@@ -12420,7 +12309,6 @@
"version"
:
"1.1.14"
,
"resolved"
:
"https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz"
,
"integrity"
:
"sha1-fPTFTvZI44EwhMY23SB54WbAgdk="
,
"devOptional"
:
true
,
"requires"
:
{
"core-util-is"
:
"~1.0.0"
,
"inherits"
:
"~2.0.1"
,
...
...
@@ -12432,7 +12320,6 @@
"version"
:
"3.0.2"
,
"resolved"
:
"https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz"
,
"integrity"
:
"sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw=="
,
"dev"
:
true
,
"requires"
:
{
"readable-stream"
:
"^3.6.0"
},
...
...
@@ -12441,7 +12328,6 @@
"version"
:
"3.6.0"
,
"resolved"
:
"https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz"
,
"integrity"
:
"sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA=="
,
"dev"
:
true
,
"requires"
:
{
"inherits"
:
"^2.0.3"
,
"string_decoder"
:
"^1.1.1"
,
...
...
@@ -12451,14 +12337,12 @@
"safe-buffer"
:
{
"version"
:
"5.2.1"
,
"resolved"
:
"https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
,
"integrity"
:
"sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
,
"dev"
:
true
"integrity"
:
"sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
},
"string_decoder"
:
{
"version"
:
"1.3.0"
,
"resolved"
:
"https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
,
"integrity"
:
"sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="
,
"dev"
:
true
,
"requires"
:
{
"safe-buffer"
:
"~5.2.0"
}
...
...
@@ -12588,8 +12472,7 @@
"schemastery"
:
{
"version"
:
"2.1.3"
,
"resolved"
:
"https://registry.npmjs.org/schemastery/-/schemastery-2.1.3.tgz"
,
"integrity"
:
"sha512-AH6dgucxUSkuK/LvIJtPor8/6KCEq5L9weD5JQJ6/HEDFqD4KbO7NqQsJmbW4TKubZ4FtPj7eXSEaz5nie+y+A=="
,
"dev"
:
true
"integrity"
:
"sha512-AH6dgucxUSkuK/LvIJtPor8/6KCEq5L9weD5JQJ6/HEDFqD4KbO7NqQsJmbW4TKubZ4FtPj7eXSEaz5nie+y+A=="
},
"semver"
:
{
"version"
:
"7.3.5"
,
...
...
@@ -12739,14 +12622,12 @@
"smart-buffer"
:
{
"version"
:
"4.2.0"
,
"resolved"
:
"https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz"
,
"integrity"
:
"sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
,
"dev"
:
true
"integrity"
:
"sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
},
"socks"
:
{
"version"
:
"2.6.1"
,
"resolved"
:
"https://registry.npmjs.org/socks/-/socks-2.6.1.tgz"
,
"integrity"
:
"sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA=="
,
"dev"
:
true
,
"requires"
:
{
"ip"
:
"^1.1.5"
,
"smart-buffer"
:
"^4.1.0"
...
...
@@ -12756,7 +12637,6 @@
"version"
:
"5.0.1"
,
"resolved"
:
"https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz"
,
"integrity"
:
"sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ=="
,
"dev"
:
true
,
"requires"
:
{
"agent-base"
:
"^6.0.2"
,
"debug"
:
"4"
,
...
...
@@ -12767,7 +12647,7 @@
"version"
:
"0.6.1"
,
"resolved"
:
"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
,
"integrity"
:
"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
,
"dev"
:
true
"dev
Optional
"
:
true
},
"source-map-support"
:
{
"version"
:
"0.5.21"
,
...
...
@@ -12816,8 +12696,7 @@
"string_decoder"
:
{
"version"
:
"0.10.31"
,
"resolved"
:
"https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
,
"integrity"
:
"sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
,
"devOptional"
:
true
"integrity"
:
"sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
},
"string-length"
:
{
"version"
:
"4.0.2"
,
...
...
@@ -12871,7 +12750,6 @@
"version"
:
"6.2.4"
,
"resolved"
:
"https://registry.npmjs.org/strtok3/-/strtok3-6.2.4.tgz"
,
"integrity"
:
"sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw=="
,
"dev"
:
true
,
"requires"
:
{
"@tokenizer/token"
:
"^0.3.0"
,
"peek-readable"
:
"^4.0.1"
...
...
@@ -13061,7 +12939,6 @@
"version"
:
"4.1.1"
,
"resolved"
:
"https://registry.npmjs.org/token-types/-/token-types-4.1.1.tgz"
,
"integrity"
:
"sha512-hD+QyuUAyI2spzsI0B7gf/jJ2ggR4RjkAo37j3StuePhApJUwcWDjnHDOFdIWYSwNR28H14hpwm4EI+V1Ted1w=="
,
"dev"
:
true
,
"requires"
:
{
"@tokenizer/token"
:
"^0.3.0"
,
"ieee754"
:
"^1.2.1"
...
...
@@ -13149,6 +13026,14 @@
"mime-types"
:
"~2.1.24"
}
},
"typed-reflector"
:
{
"version"
:
"1.0.9"
,
"resolved"
:
"https://registry.npmjs.org/typed-reflector/-/typed-reflector-1.0.9.tgz"
,
"integrity"
:
"sha512-Df9KpLcXsSM4/q+iFT/WKU8RxmwUC8POY/7VFL9xgvqh2aaY7o+43n7pUTUVKtimJTkQokKoOVe/B8ouW8tBhA=="
,
"requires"
:
{
"reflect-metadata"
:
"^0.1.13"
}
},
"typedarray"
:
{
"version"
:
"0.0.6"
,
"resolved"
:
"https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
,
...
...
@@ -13173,8 +13058,7 @@
"universalify"
:
{
"version"
:
"0.1.2"
,
"resolved"
:
"https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz"
,
"integrity"
:
"sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
,
"dev"
:
true
"integrity"
:
"sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
},
"unpipe"
:
{
"version"
:
"1.0.0"
,
...
...
@@ -13193,8 +13077,7 @@
"util-deprecate"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
,
"integrity"
:
"sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
,
"devOptional"
:
true
"integrity"
:
"sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"utils-merge"
:
{
"version"
:
"1.0.1"
,
...
...
@@ -13240,8 +13123,7 @@
"vm2"
:
{
"version"
:
"3.9.3"
,
"resolved"
:
"https://registry.npmjs.org/vm2/-/vm2-3.9.3.tgz"
,
"integrity"
:
"sha512-smLS+18RjXYMl9joyJxMNI9l4w7biW8ilSDaVRvFBDwOH8P0BK1ognFQTpg0wyQ6wIKLTblHJvROW692L/E53Q=="
,
"dev"
:
true
"integrity"
:
"sha512-smLS+18RjXYMl9joyJxMNI9l4w7biW8ilSDaVRvFBDwOH8P0BK1ognFQTpg0wyQ6wIKLTblHJvROW692L/E53Q=="
},
"w3c-hr-time"
:
{
"version"
:
"1.0.2"
,
...
...
@@ -13311,8 +13193,7 @@
"word-wrap"
:
{
"version"
:
"1.2.3"
,
"resolved"
:
"https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz"
,
"integrity"
:
"sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
,
"dev"
:
true
"integrity"
:
"sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
},
"wrap-ansi"
:
{
"version"
:
"7.0.0"
,
...
...
@@ -13344,9 +13225,9 @@
}
},
"ws"
:
{
"version"
:
"8.
2.3
"
,
"resolved"
:
"https://registry.npmjs.org/ws/-/ws-8.
2.3
.tgz"
,
"integrity"
:
"sha512-
wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWa
A=="
,
"version"
:
"8.
4.2
"
,
"resolved"
:
"https://registry.npmjs.org/ws/-/ws-8.
4.2
.tgz"
,
"integrity"
:
"sha512-
Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10Z
A=="
,
"requires"
:
{}
},
"xml-name-validator"
:
{
...
...
@@ -13364,8 +13245,7 @@
"xregexp"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz"
,
"integrity"
:
"sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM="
,
"dev"
:
true
"integrity"
:
"sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM="
},
"xtend"
:
{
"version"
:
"4.0.2"
,
...
...
package.json
View file @
e0d42ac3
...
...
@@ -70,6 +70,7 @@
"
@types/ws
"
:
"
^8.2.0
"
,
"
koa
"
:
"
^2.13.3
"
,
"
koa-bodyparser
"
:
"
^4.3.0
"
,
"
koishi-decorators
"
:
"
^1.0.3
"
,
"
lodash
"
:
"
^4.17.21
"
,
"
ws
"
:
"
^8.2.3
"
},
...
...
src/koishi.service.ts
View file @
e0d42ac3
...
...
@@ -14,11 +14,11 @@ import { Server } from 'http';
import
Koa
from
'
koa
'
;
import
KoaBodyParser
from
'
koa-bodyparser
'
;
import
{
KoishiMetascanService
}
from
'
./providers/koishi-metascan.service
'
;
import
{
applySelector
}
from
'
./utility/koishi.utility
'
;
import
{
KOISHI_MODULE_OPTIONS
}
from
'
./utility/koishi.constants
'
;
import
{
KoishiLoggerService
}
from
'
./providers/koishi-logger.service
'
;
import
{
KoishiHttpDiscoveryService
}
from
'
./koishi-http-discovery/koishi-http-discovery.service
'
;
import
{
Filter
,
ReplacedContext
}
from
'
./utility/replaced-context
'
;
import
{
applySelector
}
from
'
koishi-decorators
'
;
// eslint-disable-next-line @typescript-eslint/no-empty-function
Router
.
prepare
=
()
=>
{};
...
...
@@ -70,17 +70,17 @@ export class KoishiService
async
onModuleInit
()
{
await
this
.
setHttpServer
();
await
this
.
metascan
.
preRegisterContext
(
this
.
any
());
this
.
metascan
.
preRegisterContext
(
this
.
any
());
if
(
this
.
koishiModuleOptions
.
usePlugins
)
{
for
(
const
pluginDe
sc
of
this
.
koishiModuleOptions
.
usePlugins
)
{
const
ctx
=
applySelector
(
this
,
pluginDe
sc
);
ctx
.
plugin
(
pluginDe
sc
.
plugin
,
pluginDesc
.
options
);
for
(
const
pluginDe
f
of
this
.
koishiModuleOptions
.
usePlugins
)
{
const
ctx
=
applySelector
(
this
,
pluginDe
f
);
ctx
.
plugin
(
pluginDe
f
.
plugin
,
pluginDef
.
options
);
}
}
}
async
onApplicationBootstrap
()
{
await
this
.
metascan
.
registerContext
(
this
.
any
());
this
.
metascan
.
registerContext
(
this
.
any
());
return
this
.
start
();
}
...
...
src/providers/koishi-context.service.ts
View file @
e0d42ac3
import
{
Inject
,
Injectable
,
Type
}
from
'
@nestjs/common
'
;
import
{
KOISHI_MODULE_OPTIONS
,
KoishiOnContextScope
,
}
from
'
../utility/koishi.constants
'
;
import
{
KOISHI_MODULE_OPTIONS
}
from
'
../utility/koishi.constants
'
;
import
{
KoishiModuleOptions
,
KoishiModuleSelection
,
}
from
'
../utility/koishi.interfaces
'
;
import
{
applySelector
}
from
'
../utility/koishi.utility
'
;
import
{
applySelector
,
Registrar
}
from
'
koishi-decorators
'
;
import
{
Context
}
from
'
koishi
'
;
import
{
Module
}
from
'
@nestjs/core/injector/module
'
;
import
{
KoishiMetadataFetcherService
}
from
'
../koishi-metadata-fetcher/koishi-metadata-fetcher.service
'
;
import
_
from
'
lodash
'
;
@
Injectable
()
export
class
KoishiContextService
{
moduleSelections
=
new
Map
<
Type
<
any
>
,
KoishiModuleSelection
>
();
constructor
(
@
Inject
(
KOISHI_MODULE_OPTIONS
)
options
:
KoishiModuleOptions
,
private
readonly
metaFetcher
:
KoishiMetadataFetcherService
,
)
{
constructor
(@
Inject
(
KOISHI_MODULE_OPTIONS
)
options
:
KoishiModuleOptions
)
{
if
(
options
.
moduleSelection
)
{
for
(
const
selection
of
options
.
moduleSelection
)
{
this
.
moduleSelections
.
set
(
selection
.
module
,
selection
);
...
...
@@ -37,13 +29,8 @@ export class KoishiContextService {
}
getProviderCtx
(
ctx
:
Context
,
...
instances
:
any
[])
{
const
contextFilters
=
_
.
flatten
(
instances
.
map
((
instance
)
=>
this
.
metaFetcher
.
getMetadataArray
(
KoishiOnContextScope
,
instance
),
),
);
for
(
const
filter
of
contextFilters
)
{
ctx
=
filter
(
ctx
)
||
ctx
;
for
(
const
instance
of
instances
)
{
ctx
=
new
Registrar
(
instance
).
getScopeContext
(
ctx
);
}
return
ctx
;
}
...
...
src/providers/koishi-metascan.service.ts
View file @
e0d42ac3
import
{
Inject
,
Injectable
}
from
'
@nestjs/common
'
;
import
{
MetadataScanner
,
ModuleRef
,
ModulesContainer
}
from
'
@nestjs/core
'
;
import
{
Argv
,
Command
,
Context
,
User
}
from
'
koishi
'
;
import
{
InstanceWrapper
}
from
'
@nestjs/core/injector/instance-wrapper
'
;
import
{
Command
,
Context
}
from
'
koishi
'
;
import
{
KOISHI_MODULE_OPTIONS
,
KoishiCommandDefinition
,
KoishiCommandInterceptorDef
,
KoishiDoRegister
,
KoishiOnContextScope
,
KoishiServiceProvideSym
,
KoishiServiceWireKeys
,
KoishiServiceWireProperty
,
}
from
'
../utility/koishi.constants
'
;
import
{
CommandDefinitionFun
,
CommandPutConfig
,
DoRegisterConfig
,
KoishiCommandInterceptorRegistration
,
KoishiModuleOptions
,
KoishiModulePlugin
,
}
from
'
../utility/koishi.interfaces
'
;
import
{
applySelector
}
from
'
../utility/koishi.utility
'
;
import
_
from
'
lodash
'
;
import
{
KoishiContextService
}
from
'
./koishi-context.service
'
;
import
{
Module
}
from
'
@nestjs/core/injector/module
'
;
import
{
KoishiMetadataFetcherService
}
from
'
../koishi-metadata-fetcher/koishi-metadata-fetcher.service
'
;
import
{
KoishiInterceptorManagerService
}
from
'
../koishi-interceptor-manager/koishi-interceptor-manager.service
'
;
import
{
Registrar
}
from
'
koishi-decorators
'
;
@
Injectable
()
export
class
KoishiMetascanService
{
...
...
@@ -40,87 +32,6 @@ export class KoishiMetascanService {
private
readonly
intercepterManager
:
KoishiInterceptorManagerService
,
)
{}
private
preRegisterCommandActionArg
(
config
:
CommandPutConfig
,
cmd
:
Command
)
{
if
(
!
config
)
{
return
;
}
switch
(
config
.
type
)
{
case
'
option
'
:
const
{
data
:
optionData
}
=
config
as
CommandPutConfig
<
'
option
'
>
;
cmd
.
option
(
optionData
.
name
,
optionData
.
desc
,
optionData
.
config
);
break
;
case
'
user
'
:
const
{
data
:
userFields
}
=
config
as
CommandPutConfig
<
'
user
'
>
;
if
(
userFields
)
{
cmd
.
userFields
(
userFields
);
}
break
;
case
'
channel
'
:
const
{
data
:
channelFields
}
=
config
as
CommandPutConfig
<
'
channel
'
>
;
if
(
channelFields
)
{
cmd
.
channelFields
(
channelFields
);
}
break
;
case
'
username
'
:
const
{
data
:
useDatabase
}
=
config
as
CommandPutConfig
<
'
username
'
>
;
if
(
useDatabase
)
{
cmd
.
userFields
([
'
name
'
]);
}
break
;
default
:
break
;
}
return
;
}
private
getCommandActionArg
(
config
:
CommandPutConfig
,
argv
:
Argv
,
args
:
any
[],
)
{
if
(
!
config
)
{
return
;
}
switch
(
config
.
type
)
{
case
'
args
'
:
return
args
;
case
'
arg
'
:
const
{
data
:
argIndex
}
=
config
as
CommandPutConfig
<
'
arg
'
>
;
return
args
[
argIndex
];
case
'
argv
'
:
return
argv
;
case
'
argvField
'
:
const
{
data
:
argvField
}
=
config
as
CommandPutConfig
<
'
argvField
'
>
;
return
argv
[
argvField
];
case
'
option
'
:
const
{
data
:
optionData
}
=
config
as
CommandPutConfig
<
'
option
'
>
;
return
argv
.
options
[
optionData
.
name
];
case
'
user
'
:
return
argv
.
session
.
user
;
case
'
channel
'
:
return
argv
.
session
.
channel
;
case
'
username
'
:
const
{
data
:
useDatabase
}
=
config
as
CommandPutConfig
<
'
username
'
>
;
if
(
useDatabase
)
{
const
user
=
argv
.
session
.
user
as
User
.
Observed
<
'
name
'
>
;
if
(
user
?.
name
)
{
return
user
?.
name
;
}
}
return
(
argv
.
session
.
author
?.
nickname
||
argv
.
session
.
author
?.
username
||
argv
.
session
.
userId
);
case
'
sessionField
'
:
const
{
data
:
sessionField
}
=
config
as
CommandPutConfig
<
'
sessionField
'
>
;
return
argv
.
session
[
sessionField
];
default
:
return
;
}
}
addInterceptors
(
command
:
Command
,
interceptorDefs
:
KoishiCommandInterceptorRegistration
[],
...
...
@@ -128,105 +39,24 @@ export class KoishiMetascanService {
return
this
.
intercepterManager
.
addInterceptors
(
command
,
interceptorDefs
);
}
private
async
handleInstanceRegistration
(
private
handleInstanceRegistration
(
ctx
:
Context
,
instance
:
Record
<
string
,
any
>
,
methodKey
:
string
,
)
{
const
methodFun
:
(...
args
:
any
[])
=>
any
=
instance
[
methodKey
];
const
regData
=
this
.
metaFetcher
.
getMetadata
(
KoishiDoRegister
,
methodFun
);
if
(
!
regData
)
{
return
;
}
let
baseContext
=
ctx
;
const
contextFilters
=
this
.
metaFetcher
.
getMetadataArray
(
KoishiOnContextScope
,
instance
[
methodKey
],
);
for
(
const
filter
of
contextFilters
)
{
baseContext
=
filter
(
baseContext
)
||
baseContext
;
}
switch
(
regData
.
type
)
{
case
'
middleware
'
:
const
{
data
:
midPrepend
}
=
regData
as
DoRegisterConfig
<
'
middleware
'
>
;
baseContext
.
middleware
(
(
session
,
next
)
=>
methodFun
.
call
(
instance
,
session
,
next
),
midPrepend
,
);
break
;
case
'
onevent
'
:
const
{
data
:
eventData
}
=
regData
as
DoRegisterConfig
<
'
onevent
'
>
;
const
eventName
=
eventData
.
name
;
baseContext
.
on
(
eventName
,
(...
args
:
any
[])
=>
methodFun
.
call
(
instance
,
...
args
),
eventData
.
prepend
,
);
break
;
case
'
beforeEvent
'
:
const
{
data
:
beforeEventData
}
=
regData
as
DoRegisterConfig
<
'
beforeEvent
'
>
;
const
beforeEventName
=
beforeEventData
.
name
;
baseContext
.
before
(
beforeEventName
,
(...
args
:
any
[])
=>
this
[
methodKey
](...
args
),
beforeEventData
.
prepend
,
);
case
'
plugin
'
:
const
pluginDesc
:
KoishiModulePlugin
<
any
>
=
await
methodFun
.
call
(
const
registrar
=
new
Registrar
(
instance
);
const
baseContext
=
registrar
.
getScopeContext
(
ctx
,
methodKey
,
false
);
const
result
=
registrar
.
register
(
baseContext
,
methodKey
,
false
);
if
(
result
.
type
===
'
command
'
)
{
const
command
=
result
.
result
as
Command
;
const
interceptorDefs
:
KoishiCommandInterceptorRegistration
[]
=
_
.
uniq
(
this
.
metaFetcher
.
getPropertyMetadataArray
(
KoishiCommandInterceptorDef
,
instance
,
);
if
(
!
pluginDesc
||
!
pluginDesc
.
plugin
)
{
throw
new
Error
(
`Invalid plugin from method
${
methodKey
}
.`
);
}
const
pluginCtx
=
applySelector
(
baseContext
,
pluginDesc
);
pluginCtx
.
plugin
(
pluginDesc
.
plugin
,
pluginDesc
.
options
);
break
;
case
'
command
'
:
const
{
data
:
commandData
}
=
regData
as
DoRegisterConfig
<
'
command
'
>
;
let
command
=
baseContext
.
command
(
commandData
.
def
,
commandData
.
desc
,
commandData
.
config
,
);
const
commandDefs
:
CommandDefinitionFun
[]
=
this
.
metaFetcher
.
getPropertyMetadataArray
(
KoishiCommandDefinition
,
instance
,
methodKey
,
);
for
(
const
commandDef
of
commandDefs
)
{
command
=
commandDef
(
command
)
||
command
;
}
if
(
commandData
.
config
?.
empty
)
{
break
;
}
const
interceptorDefs
:
KoishiCommandInterceptorRegistration
[]
=
_
.
uniq
(
this
.
metaFetcher
.
getPropertyMetadataArray
(
KoishiCommandInterceptorDef
,
instance
,
methodKey
,
),
);
this
.
addInterceptors
(
command
,
interceptorDefs
);
if
(
!
commandData
.
putOptions
)
{
command
.
action
((
argv
:
Argv
,
...
args
:
any
[])
=>
methodFun
.
call
(
instance
,
argv
,
...
args
),
);
}
else
{
for
(
const
_optionToRegister
of
commandData
.
putOptions
)
{
this
.
preRegisterCommandActionArg
(
_optionToRegister
,
command
);
}
command
.
action
((
argv
:
Argv
,
...
args
:
any
[])
=>
{
const
params
=
commandData
.
putOptions
.
map
((
o
)
=>
this
.
getCommandActionArg
(
o
,
argv
,
args
),
);
return
methodFun
.
call
(
instance
,
...
params
);
});
}
break
;
default
:
throw
new
Error
(
`Unknown operation type
${
regData
.
type
}
`
);
methodKey
,
),
);
this
.
addInterceptors
(
command
,
interceptorDefs
);
}
}
...
...
@@ -286,49 +116,41 @@ export class KoishiMetascanService {
.
filter
((
wrapper
)
=>
wrapper
.
instance
);
}
async
preRegisterContext
(
ctx
:
Context
)
{
for
(
const
module
of
this
.
moduleContainer
.
values
())
{
const
moduleCtx
=
this
.
ctxService
.
getModuleCtx
(
ctx
,
module
);
const
allProviders
=
this
.
getAllActiveProvidersFromModule
(
module
);
for
(
const
provider
of
allProviders
)
{
const
instance
=
provider
.
instance
;
const
providerCtx
=
this
.
ctxService
.
getProviderCtx
(
moduleCtx
,
instance
.
constructor
,
);
this
.
scanInstanceForWireContextService
(
providerCtx
,
instance
);
}
}
private
runForEachProvider
<
T
>
(
ctx
:
Context
,
fun
:
(
ctx
:
Context
,
instance
:
any
)
=>
T
,
):
T
[]
{
const
modules
=
Array
.
from
(
this
.
moduleContainer
.
values
());
return
_
.
flatten
(
modules
.
map
((
module
)
=>
{
const
moduleCtx
=
this
.
ctxService
.
getModuleCtx
(
ctx
,
module
);
const
allProviders
=
this
.
getAllActiveProvidersFromModule
(
module
);
return
allProviders
.
map
((
provider
)
=>
{
const
instance
=
provider
.
instance
;
const
providerCtx
=
this
.
ctxService
.
getProviderCtx
(
moduleCtx
,
instance
,
);
return
fun
(
providerCtx
,
instance
);
});
}),
);
}
async
registerContext
(
ctx
:
Context
)
{
const
modules
=
Array
.
from
(
this
.
moduleContainer
.
values
());
await
Promise
.
all
(
_
.
flatten
(
modules
.
map
((
module
)
=>
{
const
moduleCtx
=
this
.
ctxService
.
getModuleCtx
(
ctx
,
module
);
const
allProviders
=
this
.
getAllActiveProvidersFromModule
(
module
);
return
allProviders
.
map
((
wrapper
:
InstanceWrapper
)
=>
{
const
{
instance
}
=
wrapper
;
const
prototype
=
Object
.
getPrototypeOf
(
instance
);
const
providerCtx
=
this
.
ctxService
.
getProviderCtx
(
moduleCtx
,
instance
.
constructor
,
);
this
.
scanInstanceForProvidingContextService
(
providerCtx
,
instance
);
return
this
.
metadataScanner
.
scanFromPrototype
(
instance
,
prototype
,
(
methodKey
:
string
)
=>
this
.
handleInstanceRegistration
(
providerCtx
,
instance
,
methodKey
,
),
);
});
}),
),
preRegisterContext
(
ctx
:
Context
)
{
this
.
runForEachProvider
(
ctx
,
(
providerCtx
,
instance
)
=>
this
.
scanInstanceForWireContextService
(
providerCtx
,
instance
),
);
}
registerContext
(
ctx
:
Context
)
{
return
this
.
runForEachProvider
(
ctx
,
(
providerCtx
,
instance
)
=>
{
this
.
scanInstanceForProvidingContextService
(
providerCtx
,
instance
);
new
Registrar
(
instance
)
.
getAllFieldsToRegister
()
.
forEach
((
methodKey
:
string
)
=>
this
.
handleInstanceRegistration
(
providerCtx
,
instance
,
methodKey
),
);
});
}
}
src/providers/koishi-websocket.gateway.ts
View file @
e0d42ac3
...
...
@@ -10,7 +10,8 @@ import { IncomingMessage } from 'http';
@
WebSocketGateway
()
export
class
KoishiWebsocketGateway
implements
OnGatewayInit
,
OnGatewayConnection
{
implements
OnGatewayInit
,
OnGatewayConnection
{
constructor
(
private
readonly
koishi
:
KoishiService
)
{}
@
WebSocketServer
()
...
...
src/utility/koishi.constants.ts
View file @
e0d42ac3
// Injections
import
{
CommandDefinitionFun
,
DoRegisterConfig
,
KoishiCommandInterceptorRegistration
,
OnContextFunction
,
}
from
'
./koishi.interfaces
'
;
import
{
KoishiCommandInterceptorRegistration
}
from
'
./koishi.interfaces
'
;
import
{
Context
}
from
'
koishi
'
;
export
const
KOISHI_MODULE_OPTIONS
=
'
KOISHI_MODULE_OPTIONS
'
;
export
const
KOISHI_CONTEXT
=
'
KOISHI_CONTEXT
'
;
// metadatas
export
const
KoishiOnContextScope
=
'
KoishiOnContextScope
'
;
export
const
KoishiDoRegister
=
'
KoishiDoRegister
'
;
export
const
KoishiCommandDefinition
=
'
KoishiCommandDefinition
'
;
export
const
KoishiCommandPutDef
=
'
KoishiCommandPutDef
'
;
export
const
KoishiCommandInterceptorDef
=
'
KoishiCommandInterceptorDef
'
;
export
const
KoishiServiceWireProperty
=
'
KoishiServiceWireProperty
'
;
...
...
@@ -24,12 +15,8 @@ export const KoishiServiceProvideSym = 'KoishiServiceProvideSym';
// metadata map
export
interface
MetadataArrayMap
{
KoishiOnContextScope
:
OnContextFunction
;
KoishiCommandDefinition
:
CommandDefinitionFun
;
KoishiServiceProvideSym
:
keyof
Context
.
Services
;
KoishiCommandInterceptorDef
:
KoishiCommandInterceptorRegistration
;
}
export
interface
MetadataMap
{
KoishiDoRegister
:
DoRegisterConfig
;
}
export
interface
MetadataMap
{}
src/utility/koishi.decorators.ts
View file @
e0d42ac3
import
{
CustomDecorator
,
Inject
}
from
'
@nestjs/common
'
;
import
{
KOISHI_CONTEXT
,
KoishiCommandDefinition
,
KoishiCommandInterceptorDef
,
KoishiCommandPutDef
,
KoishiDoRegister
,
KoishiOnContextScope
,
KoishiServiceProvideSym
,
KoishiServiceWireKeys
,
KoishiServiceWireProperty
,
MetadataArrayMap
,
}
from
'
./koishi.constants
'
;
import
{
BeforeEventName
,
CommandConfigExtended
,
CommandDefinitionFun
,
CommandPutConfig
,
CommandPutConfigMap
,
EventName
,
GenerateMappingStruct
,
KoishiCommandInterceptorRegistration
,
MetadataArrayValue
,
MetadataArrayValueMap
,
MetadataGenericMap
,
MetadataKey
,
OnContextFunction
,
}
from
'
./koishi.interfaces
'
;
import
{
Argv
,
Command
,
Context
,
FieldCollector
,
Selection
,
Session
,
}
from
'
koishi
'
;
import
{
Context
}
from
'
koishi
'
;
import
{
ContextScopeTypes
,
getContextProvideToken
,
...
...
@@ -96,6 +77,8 @@ export const AppendMetadata = <K extends keyof MetadataArrayMap>(
):
CustomDecorator
<
K
>
=>
TransformMetadata
<
K
,
MetadataArrayValueMap
>
(
metadataKey
,
(
arr
)
=>
{
const
newArr
=
arr
||
[];
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
newArr
.
push
(
metadataValue
);
return
newArr
;
});
...
...
@@ -108,186 +91,10 @@ export const ConcatMetadata = <K extends keyof MetadataArrayValueMap>(
((
arr
||
[])
as
any
[]).
concat
(
metadataValue
),
);
// Register methods
export
const
UseMiddleware
=
(
prepend
?:
boolean
):
MethodDecorator
=>
SetMetadata
(
KoishiDoRegister
,
GenerateMappingStruct
(
'
middleware
'
,
prepend
));
export
const
UseEvent
=
(
name
:
EventName
,
prepend
?:
boolean
):
MethodDecorator
=>
SetMetadata
(
KoishiDoRegister
,
GenerateMappingStruct
(
'
onevent
'
,
{
name
,
prepend
}),
);
export
const
BeforeEvent
=
(
name
:
BeforeEventName
,
prepend
?:
boolean
,
):
MethodDecorator
=>
SetMetadata
(
KoishiDoRegister
,
GenerateMappingStruct
(
'
beforeEvent
'
,
{
name
,
prepend
}),
);
export
const
UsePlugin
=
():
MethodDecorator
=>
SetMetadata
(
KoishiDoRegister
,
GenerateMappingStruct
(
'
plugin
'
));
export
function
UseCommand
<
D
extends
string
>
(
def
:
D
,
config
?:
CommandConfigExtended
,
):
MethodDecorator
;
export
function
UseCommand
<
D
extends
string
>
(
def
:
D
,
desc
:
string
,
config
?:
CommandConfigExtended
,
):
MethodDecorator
;
export
function
UseCommand
(
def
:
string
,
...
args
:
[
CommandConfigExtended
?]
|
[
string
,
CommandConfigExtended
?]
):
MethodDecorator
{
const
desc
=
typeof
args
[
0
]
===
'
string
'
?
(
args
.
shift
()
as
string
)
:
''
;
const
config
=
args
[
0
]
as
CommandConfigExtended
;
return
(
obj
,
key
:
string
,
des
)
=>
{
const
putOptions
:
CommandPutConfig
<
keyof
CommandPutConfigMap
>
[]
=
Reflect
.
getMetadata
(
KoishiCommandPutDef
,
obj
.
constructor
,
key
)
||
undefined
;
// console.log(Reflect.getMetadata('design:paramtypes', obj, key));
const
metadataDec
=
SetMetadata
(
KoishiDoRegister
,
{
type
:
'
command
'
,
data
:
{
def
,
desc
,
config
,
putOptions
,
},
});
return
metadataDec
(
obj
,
key
,
des
);
};
}
// Context scopes
export
const
OnContext
=
(
ctxFun
:
OnContextFunction
,
):
MethodDecorator
&
ClassDecorator
=>
AppendMetadata
(
KoishiOnContextScope
,
ctxFun
);
export
const
OnAnywhere
=
()
=>
OnContext
((
ctx
)
=>
ctx
.
any
());
export
const
OnNowhere
=
()
=>
OnContext
((
ctx
)
=>
ctx
.
never
());
export
const
OnUser
=
(...
values
:
string
[])
=>
OnContext
((
ctx
)
=>
ctx
.
user
(...
values
));
export
const
OnSelf
=
(...
values
:
string
[])
=>
OnContext
((
ctx
)
=>
ctx
.
self
(...
values
));
export
const
OnGuild
=
(...
values
:
string
[])
=>
OnContext
((
ctx
)
=>
ctx
.
guild
(...
values
));
export
const
OnChannel
=
(...
values
:
string
[])
=>
OnContext
((
ctx
)
=>
ctx
.
channel
(...
values
));
export
const
OnPlatform
=
(...
values
:
string
[])
=>
OnContext
((
ctx
)
=>
ctx
.
platform
(...
values
));
export
const
OnPrivate
=
(...
values
:
string
[])
=>
OnContext
((
ctx
)
=>
ctx
.
private
(...
values
));
export
const
OnSelection
=
(
selection
:
Selection
)
=>
OnContext
((
ctx
)
=>
ctx
.
select
(
selection
));
// Command definition
export
const
CommandDef
=
(
def
:
CommandDefinitionFun
,
):
MethodDecorator
&
ClassDecorator
=>
AppendMetadata
(
KoishiCommandDefinition
,
def
);
export
const
CommandUse
=
<
T
extends
Command
,
R
extends
any
[]
>
(
callback
:
(
command
:
Command
,
...
args
:
R
)
=>
T
,
...
args
:
R
)
=>
CommandDef
((
cmd
)
=>
callback
(
cmd
,
...
args
));
export
const
CommandDescription
=
(
desc
:
string
)
=>
CommandDef
((
cmd
)
=>
{
cmd
.
description
=
desc
;
return
cmd
;
});
export
const
CommandAlias
=
(...
names
:
string
[])
=>
CommandDef
((
cmd
)
=>
cmd
.
alias
(...
names
));
export
const
CommandShortcut
=
(
name
:
string
|
RegExp
,
config
:
Command
.
Shortcut
=
{},
)
=>
CommandDef
((
cmd
)
=>
cmd
.
shortcut
(
name
,
config
));
export
const
CommandUsage
=
(
text
:
Command
.
Usage
)
=>
CommandDef
((
cmd
)
=>
cmd
.
usage
(
text
));
export
const
CommandExample
=
(
text
:
string
)
=>
CommandDef
((
cmd
)
=>
cmd
.
example
(
text
));
export
const
CommandOption
=
(
name
:
string
,
desc
:
string
,
config
:
Argv
.
OptionConfig
=
{},
)
=>
CommandDef
((
cmd
)
=>
cmd
.
option
(
name
,
desc
,
config
));
export
const
CommandUserFields
=
(
fields
:
FieldCollector
<
'
user
'
>
)
=>
CommandDef
((
cmd
)
=>
cmd
.
userFields
(
fields
));
export
const
CommandChannelFields
=
(
fields
:
FieldCollector
<
'
channel
'
>
)
=>
CommandDef
((
cmd
)
=>
cmd
.
channelFields
(
fields
));
export
const
CommandBefore
=
(
callback
:
Command
.
Action
,
append
=
false
)
=>
CommandDef
((
cmd
)
=>
cmd
.
before
(
callback
,
append
));
export
const
CommandAction
=
(
callback
:
Command
.
Action
,
prepend
=
false
)
=>
CommandDef
((
cmd
)
=>
cmd
.
action
(
callback
,
prepend
));
// Command put config
function
PutCommandParam
<
T
extends
keyof
CommandPutConfigMap
>
(
type
:
T
,
data
?:
CommandPutConfigMap
[
T
],
):
ParameterDecorator
{
return
(
obj
,
key
:
string
,
index
)
=>
{
const
objClass
=
obj
.
constructor
;
const
list
:
CommandPutConfig
<
T
>
[]
=
Reflect
.
getMetadata
(
KoishiCommandPutDef
,
objClass
,
key
)
||
[];
list
[
index
]
=
GenerateMappingStruct
(
type
,
data
);
Reflect
.
defineMetadata
(
KoishiCommandPutDef
,
list
,
objClass
,
key
);
};
}
export
const
PutArgv
=
(
field
?:
keyof
Argv
)
=>
field
?
PutCommandParam
(
'
argvField
'
,
field
)
:
PutCommandParam
(
'
argv
'
);
export
const
PutSession
=
(
field
?:
keyof
Session
)
=>
field
?
PutCommandParam
(
'
sessionField
'
,
field
)
:
PutArgv
(
'
session
'
);
export
const
PutArg
=
(
i
:
number
)
=>
PutCommandParam
(
'
arg
'
,
i
);
export
const
PutArgs
=
()
=>
PutCommandParam
(
'
args
'
);
export
const
PutOption
=
(
name
:
string
,
desc
:
string
,
config
:
Argv
.
OptionConfig
=
{},
)
=>
PutCommandParam
(
'
option
'
,
{
name
,
desc
,
config
});
export
const
PutUser
=
(
field
:
FieldCollector
<
'
user
'
>
)
=>
PutCommandParam
(
'
user
'
,
field
);
export
const
PutChannel
=
(
field
:
FieldCollector
<
'
channel
'
>
)
=>
PutCommandParam
(
'
channel
'
,
field
);
export
const
PutUserName
=
(
useDatabase
=
true
)
=>
PutCommandParam
(
'
username
'
,
useDatabase
);
// Export all koishi-decorator decorators
export
const
PutUserId
=
()
=>
PutSession
(
'
userId
'
);
export
const
PutGuildId
=
()
=>
PutSession
(
'
guildId
'
);
export
const
PutGuildName
=
()
=>
PutSession
(
'
guildName
'
);
export
const
PutChannelId
=
()
=>
PutSession
(
'
channelId
'
);
export
const
PutChannelName
=
()
=>
PutSession
(
'
channelName
'
);
export
const
PutSelfId
=
()
=>
PutSession
(
'
selfId
'
);
export
const
PutBot
=
()
=>
PutSession
(
'
bot
'
);
export
const
PutNext
=
()
=>
PutArgv
(
'
next
'
);
export
*
from
'
koishi-decorators/dist/src/decorators
'
;
export
{
PluginDef
}
from
'
koishi-decorators
'
;
// Service
...
...
src/utility/koishi.interfaces.ts
View file @
e0d42ac3
import
{
ModuleMetadata
,
Provider
,
Type
}
from
'
@nestjs/common
'
;
import
{
App
,
Argv
,
Channel
,
Command
,
Context
,
EventMap
,
FieldCollector
,
Modules
,
Plugin
,
Selection
,
Session
,
User
,
}
from
'
koishi
'
;
import
{
App
,
Channel
,
Command
,
User
}
from
'
koishi
'
;
import
{
MetadataArrayMap
,
MetadataMap
}
from
'
./koishi.constants
'
;
export
interface
ContextSelector
{
select
?:
Selection
;
useSelector
?:
OnContextFunction
;
}
export
type
KoishiPluginOptions
<
T
extends
Plugin
>
=
boolean
|
Plugin
.
Config
<
T
>
;
export
interface
KoishiModulePluginExact
<
T
extends
Plugin
>
extends
ContextSelector
{
plugin
:
T
;
options
?:
boolean
|
KoishiPluginOptions
<
T
>
;
}
export
interface
KoishiModulePluginName
extends
ContextSelector
{
plugin
:
string
;
options
?:
any
;
}
export
type
KoishiModulePlugin
<
T
extends
Plugin
=
any
>
=
|
KoishiModulePluginExact
<
T
>
|
KoishiModulePluginName
;
export
function
PluginDef
(
name
:
string
,
options
?:
any
,
select
?:
Selection
);
export
function
PluginDef
<
T
extends
Plugin
>
(
plugin
:
T
,
options
?:
KoishiPluginOptions
<
T
>
,
select
?:
Selection
,
);
export
function
PluginDef
<
T
extends
Plugin
>
(
plugin
:
T
,
options
?:
KoishiPluginOptions
<
T
>
,
select
?:
Selection
,
):
KoishiModulePlugin
<
T
>
{
return
{
plugin
,
options
,
select
};
}
import
{
ContextSelector
,
PluginDefinition
}
from
'
koishi-decorators
'
;
export
interface
KoishiModuleSelection
extends
ContextSelector
{
module
:
Type
<
any
>
;
...
...
@@ -63,7 +15,7 @@ export interface KoishiModuleTopOptions {
export
interface
KoishiModuleOptions
extends
App
.
Config
,
KoishiModuleTopOptions
{
usePlugins
?:
KoishiModulePlugi
n
<
any
>
[];
usePlugins
?:
PluginDefinitio
n
<
any
>
[];
loggerPrefix
?:
string
;
loggerColor
?:
number
;
moduleSelection
?:
KoishiModuleSelection
[];
...
...
@@ -86,91 +38,6 @@ export interface KoishiModuleAsyncOptions
extraProviders
?:
Provider
[];
}
export
interface
CommonEventNameAndPrepend
<
T
extends
keyof
any
>
{
name
:
T
;
prepend
?:
boolean
;
}
export
type
EventName
=
keyof
EventMap
;
export
type
EventNameAndPrepend
=
CommonEventNameAndPrepend
<
EventName
>
;
type
OmitSubstring
<
S
extends
string
,
T
extends
string
,
>
=
S
extends
`
${
infer
L
}${
T
}${
infer
R
}
`
?
`
${
L
}${
R
}
`
:
never
;
export
type
BeforeEventName
=
OmitSubstring
<
EventName
&
string
,
'
before-
'
>
;
export
type
BeforeEventNameAndPrepend
=
CommonEventNameAndPrepend
<
BeforeEventName
>
;
export
type
ContextFunction
<
T
>
=
(
ctx
:
Context
)
=>
T
;
export
type
OnContextFunction
=
ContextFunction
<
Context
>
;
export
interface
DoRegisterConfigDataMap
{
middleware
:
boolean
;
// prepend
onevent
:
EventNameAndPrepend
;
beforeEvent
:
BeforeEventNameAndPrepend
;
plugin
:
never
;
command
:
CommandRegisterConfig
;
}
export
interface
MappingStruct
<
T
extends
Record
<
string
|
number
|
symbol
,
any
>
,
K
extends
keyof
T
,
>
{
type
:
K
;
data
?:
T
[
K
];
}
export
function
GenerateMappingStruct
<
T
extends
Record
<
string
|
number
|
symbol
,
any
>
,
K
extends
keyof
T
,
>
(
type
:
K
,
data
?:
T
[
K
]):
MappingStruct
<
T
,
K
>
{
return
{
type
,
data
,
};
}
export
type
DoRegisterConfig
<
K
extends
keyof
DoRegisterConfigDataMap
=
keyof
DoRegisterConfigDataMap
,
>
=
MappingStruct
<
DoRegisterConfigDataMap
,
K
>
;
// Command stuff
export
interface
CommandRegisterConfig
<
D
extends
string
=
string
>
{
def
:
D
;
desc
?:
string
;
config
?:
CommandConfigExtended
;
putOptions
?:
CommandPutConfig
<
keyof
CommandPutConfigMap
>
[];
}
export
interface
CommandConfigExtended
extends
Command
.
Config
{
empty
?:
boolean
;
}
export
interface
CommandOptionConfig
{
name
:
string
;
desc
:
string
;
config
?:
Argv
.
OptionConfig
;
}
export
interface
CommandPutConfigMap
{
args
:
never
;
arg
:
number
;
argv
:
never
;
argvField
:
keyof
Argv
;
option
:
CommandOptionConfig
;
user
:
FieldCollector
<
'
user
'
>
;
channel
:
FieldCollector
<
'
channel
'
>
;
username
:
boolean
;
sessionField
:
keyof
Session
;
}
export
type
CommandPutConfig
<
K
extends
keyof
CommandPutConfigMap
=
keyof
CommandPutConfigMap
,
>
=
MappingStruct
<
CommandPutConfigMap
,
K
>
;
export
type
CommandDefinitionFun
=
(
cmd
:
Command
)
=>
Command
;
// metadata map
export
type
MetadataArrayValueMap
=
{
[
K
in
keyof
MetadataArrayMap
]:
MetadataArrayMap
[
K
][];
...
...
src/utility/koishi.utility.ts
deleted
100644 → 0
View file @
714309db
import
{
Context
}
from
'
koishi
'
;
import
{
ContextSelector
}
from
'
./koishi.interfaces
'
;
export
function
applySelector
(
ctx
:
Context
,
selector
:
ContextSelector
,
):
Context
{
if
(
!
selector
)
{
return
ctx
;
}
let
targetCtx
=
ctx
;
if
(
selector
.
select
)
{
targetCtx
=
targetCtx
.
select
(
selector
.
select
);
}
if
(
selector
.
useSelector
)
{
targetCtx
=
selector
.
useSelector
(
targetCtx
)
||
targetCtx
;
}
return
targetCtx
;
}
tests/koishi-tests.spec.ts
View file @
e0d42ac3
import
{
Test
}
from
'
@nestjs/testing
'
;
import
{
KoishiModule
}
from
'
../src/koishi.module
'
;
import
{
KoishiService
}
from
'
../src/koishi.service
'
;
import
{
INestApplication
}
from
'
@nestjs/common
'
;
import
{
INestApplication
,
Injectable
}
from
'
@nestjs/common
'
;
import
{
KoishiWsAdapter
}
from
'
../src/koishi.ws-adapter
'
;
import
http
from
'
http
'
;
import
request
from
'
supertest
'
;
import
{
CommandUsage
,
OnGuild
,
OnPlatform
,
PutOption
,
UseCommand
,
}
from
'
koishi-decorators
'
;
import
{
Session
}
from
'
koishi
'
;
@
OnPlatform
(
'
discord
'
)
@
Injectable
()
class
KoishiTestService
{
@
OnGuild
(
'
1111111111
'
)
@
UseCommand
(
'
echo
'
,
'
hi
'
)
@
CommandUsage
(
'
foo
'
)
async
onEcho
(@
PutOption
(
'
content
'
,
'
-c <content:string>
'
)
content
:
string
)
{
return
`bot:
${
content
}
`
;
}
}
describe
(
'
HttpServer
'
,
()
=>
{
let
app
:
INestApplication
;
...
...
@@ -17,6 +36,7 @@ describe('HttpServer', () => {
useWs
:
true
,
}),
],
providers
:
[
KoishiTestService
],
}).
compile
();
app
=
moduleFixture
.
createNestApplication
();
app
.
useWebSocketAdapter
(
new
KoishiWsAdapter
(
app
));
...
...
@@ -37,6 +57,7 @@ describe('HttpServer', () => {
expect
(
koishiApp
.
_httpServer
).
toBeInstanceOf
(
http
.
Server
);
expect
(
app
.
getHttpServer
()).
toEqual
(
koishiApp
.
_httpServer
);
});
it
(
'
should response to koishi routes
'
,
()
=>
{
koishiApp
.
router
.
get
(
'
/ping
'
,
(
ctx
)
=>
{
ctx
.
status
=
233
;
...
...
@@ -44,4 +65,33 @@ describe('HttpServer', () => {
});
return
request
(
app
.
getHttpServer
()).
get
(
'
/ping
'
).
expect
(
233
).
expect
(
'
pong
'
);
});
it
(
'
should register command
'
,
()
=>
{
const
command
=
koishiApp
.
command
(
'
echo
'
);
expect
(
command
.
_usage
).
toBe
(
'
foo
'
);
expect
(
command
.
_options
.
content
.
name
).
toBe
(
'
content
'
);
expect
(
command
.
execute
({
options
:
{
content
:
'
hello
'
}
})).
resolves
.
toBe
(
'
bot: hello
'
,
);
const
correctSession
=
{
guildId
:
'
1111111111
'
,
platform
:
'
discord
'
,
}
as
Session
;
const
wrongSession1
=
{
guildId
:
'
2222222222
'
,
platform
:
'
discord
'
,
}
as
Session
;
const
wrongSession2
=
{
guildId
:
'
1111111111
'
,
platform
:
'
telegram
'
,
}
as
Session
;
const
methodCtx
=
command
.
context
;
expect
(
methodCtx
.
filter
(
correctSession
)).
toBe
(
true
);
expect
(
methodCtx
.
filter
(
wrongSession1
)).
toBe
(
false
);
expect
(
methodCtx
.
filter
(
wrongSession2
)).
toBe
(
false
);
});
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment