├── java
└── README.MD
├── vue
├── .date
├── http
│ ├── _data
│ └── api
│ │ └── resolve.php
├── favicon.ico
├── README.md
├── static
│ └── wp.min.css
└── index.html
├── nodejs
├── _data
├── config
│ ├── server.json
│ ├── cookie.json
│ └── wp.json
├── util
│ ├── version.js
│ ├── connect.js
│ ├── request.js
│ ├── StrUtil.js
│ └── resolve.js
├── package.json
├── app.js
├── model
│ ├── xunniu.js
│ ├── xueqiuyun.js
│ ├── ownfile.js
│ ├── expfile.js
│ ├── 77file.js
│ ├── xfpan.js
│ ├── 567pan.js
│ ├── dudujb.js
│ ├── xingyaoyun.js
│ ├── 1988wp.js
│ ├── rosefile.js
│ ├── kufile.js
│ ├── yifile.js
│ ├── dufile.js
│ ├── feimaoyun.js
│ └── lanzou.js
└── yarn.lock
├── Desktop App
└── README.MD
├── docs
├── 关于.md
├── 接口文档.md
├── 配置修改.md
├── 端口修改.md
├── 关于我.md
├── 安装.md
├── 运行.md
├── 飞猫云.md
├── _sidebar.md
├── 添加支持网盘.md
├── _coverpage.md
├── README.md
├── 支持网盘.md
├── 解析.md
└── index.html
├── favicon.ico
└── .github
└── FUNDING.yml
/java/README.MD:
--------------------------------------------------------------------------------
1 | stop
2 |
--------------------------------------------------------------------------------
/vue/.date:
--------------------------------------------------------------------------------
1 | 20220416
2 |
--------------------------------------------------------------------------------
/nodejs/_data:
--------------------------------------------------------------------------------
1 | 20220416
2 |
--------------------------------------------------------------------------------
/Desktop App/README.MD:
--------------------------------------------------------------------------------
1 | 进行中
2 |
--------------------------------------------------------------------------------
/docs/关于.md:
--------------------------------------------------------------------------------
1 | ## 关于
2 |
3 | > 这里是关于作者的一些信息
--------------------------------------------------------------------------------
/docs/接口文档.md:
--------------------------------------------------------------------------------
1 | ## 接口文档
2 |
3 | > 提供后台所支持的接口文档及SDK实例
--------------------------------------------------------------------------------
/vue/http/_data:
--------------------------------------------------------------------------------
1 | 95963DC8B442A27F52B2F7B2558A322E
2 |
--------------------------------------------------------------------------------
/docs/配置修改.md:
--------------------------------------------------------------------------------
1 | ## 配置修改
2 |
3 | > 修改完配置需要重启node服务
4 |
5 | 修改后端端口号,识别网盘,飞猫云COOKIE
--------------------------------------------------------------------------------
/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LauZzL/netdiskresolve/HEAD/favicon.ico
--------------------------------------------------------------------------------
/vue/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LauZzL/netdiskresolve/HEAD/vue/favicon.ico
--------------------------------------------------------------------------------
/docs/端口修改.md:
--------------------------------------------------------------------------------
1 | ## 端口修改
2 |
3 | > 端口是以json文件保存在 ` /config/server.json ` 中
4 |
5 |
6 | 打开 ` /config/server.json ` 文件,找到port项,修改为你想要的端口号,默认1306
--------------------------------------------------------------------------------
/nodejs/config/server.json:
--------------------------------------------------------------------------------
1 | {
2 | "port":1306,
3 | "log-server":false,
4 | "v":"1.0.0",
5 | "isrun":true,
6 | "norunmessage":"这里是关闭接口提示的信息,isrun为false才会显示"
7 | }
--------------------------------------------------------------------------------
/nodejs/config/cookie.json:
--------------------------------------------------------------------------------
1 | {
2 | "1":"",
3 | "10":"PHPSESSID=1g9l37mv8bkulmk76tspbj13v7; _ga=GA1.2.1944358622.1649943546; _gid=GA1.2.630952406.1649943546; money_id=3; tz=2; view_stat=1"
4 | }
--------------------------------------------------------------------------------
/docs/关于我.md:
--------------------------------------------------------------------------------
1 | ## 关于我
2 |
3 | >
4 |
5 | - Name :lzyAB
6 | - BLOG :[空城里 www.ilzya.com](https://www.ilzya.com)
7 | - Code L : ` Java ` ` Pyhon ` ` JavaScript `
8 | - 支持我:[支持我](https://www.ilzya.com/donate.html)
--------------------------------------------------------------------------------
/docs/安装.md:
--------------------------------------------------------------------------------
1 | ## 安装
2 |
3 |
4 | ``` git
5 | git clone https://github.com/lzyAB/netdiskresolve.git
6 | ```
7 |
8 | ## 依赖
9 |
10 | > 后端需要下载必须的依赖 ` /nodejs ` 目录
11 |
12 | ``` shell
13 | yarn
14 | ```
--------------------------------------------------------------------------------
/nodejs/util/version.js:
--------------------------------------------------------------------------------
1 | const server = require('../config/server')
2 |
3 | module.exports = (req, res) => {
4 | res.send({
5 | code:0,
6 | v:server['v'],
7 | message:"success"
8 | })
9 | }
--------------------------------------------------------------------------------
/nodejs/util/connect.js:
--------------------------------------------------------------------------------
1 | const server = require('../config/server')
2 |
3 | module.exports = (req, res) => {
4 | res.send({
5 | code:0,
6 | isrun:server['isrun'],
7 | message:"success"
8 | })
9 | }
--------------------------------------------------------------------------------
/docs/运行.md:
--------------------------------------------------------------------------------
1 | ## 运行
2 |
3 | ```shell
4 | node app
5 | ```
6 |
7 | 服务默认端口为1306,如需要更改请到 ` /nodejs/config/server.json ` 修改
8 |
9 | ```json
10 | {
11 | "server":1306, //服务端口
12 | "log-server":false //输出请求参数
13 | }
14 | ```
--------------------------------------------------------------------------------
/docs/飞猫云.md:
--------------------------------------------------------------------------------
1 | ## 飞猫云配置
2 |
3 | 想要解析飞猫云文件就需要登录飞猫云账号
4 |
5 | 1. 首先到飞猫云官网:www.feimaoyun.com 登录账号
6 | 2. 然后打开开发者控制台
7 | 3. 输入document.cookie
8 | 4. 复制输出的cookie
9 | 5. 粘贴到 ` /config/cookie.json ` 1 中
10 |
11 | > 飞猫云账号可能会掉线,可能1个月掉一次,掉线后需要重复以上步骤
--------------------------------------------------------------------------------
/nodejs/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "netdiskresolve",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "author": "lzyAB",
6 | "license": "MIT",
7 | "dependencies": {
8 | "axios": "^0.26.1",
9 | "express": "^4.17.3"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/docs/_sidebar.md:
--------------------------------------------------------------------------------
1 | - [NetDiskResolve](#README)
2 | - [安装](安装.md)
3 | - [运行](运行.md)
4 | - [支持网盘](支持网盘.md)
5 | - [接口文档](接口文档.md)
6 | - [解析](解析.md)
7 | - [配置修改](配置修改.md)
8 | - [端口修改](端口修改.md)
9 | - [飞猫云](飞猫云.md)
10 | - [添加支持网盘](添加支持网盘.md)
11 |
12 | - [关于](关于.md)
13 | - [关于我](关于我.md)
--------------------------------------------------------------------------------
/docs/添加支持网盘.md:
--------------------------------------------------------------------------------
1 | ## 添加支持网盘
2 |
3 | > 每个网盘都对应一个数字编号,例如 ` 飞猫云 ` 对应 0
4 |
5 | **如何添加?**
6 |
7 | 配置文件以json方式存储在 ` /config/wp.json ` 中
8 |
9 | 例如需要增加飞猫云的一个域名为:` www.fmyun.com `
10 |
11 | 那么你需要在配置文件中加入 ` "www.fmyun.com":0 `
12 |
13 | ` key ` 对应需要添加的域名,` value ` 对应网盘对应的数字编号
14 |
15 | 如果配置文件中没有存在该网盘,数字编号按配置文件已存在的最大数字+1存储
16 |
--------------------------------------------------------------------------------
/docs/_coverpage.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # 网盘下载文档
4 |
5 | > 使用Vue+Node.js
6 |
7 | * 前端框架:Vue
8 | * UI类库:Element UI
9 | * 后端:Node.js
10 |
11 | [GitHub](https://github.com/lzyAB/netdiskresolve)
12 | [博客](https://www.ilzya.com)
13 | [Get Started](#NetDiskResolve)
--------------------------------------------------------------------------------
/vue/README.md:
--------------------------------------------------------------------------------
1 | # 网赚网盘解析WEB端
2 |
3 | -------
4 |
5 | ## 前言
6 |
7 | 对接了公用API,支持20+种网赚网盘解析,详情查看:[博客](https://www.ilzya.com/archives/4/)
8 |
9 | ## 安装
10 |
11 | 1. clone项目 ` clone https://github.com/lzyAB/netdiskresolve.git`
12 | 2. 上传至服务器 (服务器需要支持PHP5.*版本)
13 | 3. 解压到服务器
14 | 4. 访问index.html
15 |
16 | ## 演示
17 |
18 | 
19 |
20 | ## 关于我
21 |
22 | 联系博主:[call](https://jq.qq.com/?_wv=1027&k=9VuiaL86)
23 |
24 | 博客:[空城里](https://www.ilzya.com/)
25 |
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | # NetDiskResolve
2 |
3 | Node版本的网盘下载辅助
4 |
5 | > PC端下载工具
6 |
7 | [查看PC端下载工具](https://www.ilzya.com/archives/4/)
8 |
9 | **集成**
10 |
11 | - Aria 下载
12 | - IDM 下载
13 | - 迅雷下载
14 |
15 | > 前端代码
16 |
17 | ` /Vue `
18 |
19 | >后端代码
20 |
21 | ` /nodejs `
22 |
23 | 项目已完全开源
24 |
25 | 相关文档:https://lzyab.github.io/netdiskresolve
26 |
27 | 国内相关文档:http://docs.ilzya.com/#/%E6%94%AF%E6%8C%81%E7%BD%91%E7%9B%98
28 |
29 |
30 | > 联系我
31 |
32 |
33 | QQ:2044186427
34 |
35 | 博客:[空城里](https://www.ilzya.com)
36 |
37 | 皮皮虾:lzyAB
38 |
39 |
--------------------------------------------------------------------------------
/nodejs/config/wp.json:
--------------------------------------------------------------------------------
1 |
2 | {
3 | "www.feimaoyun.com":0,
4 | "www.feemoo.com":0,
5 | "www.fmpan.com":0,
6 | "www.77file.com":1,
7 | "www.xun-niu.com":2,
8 | "www.xunniupan.com":2,
9 | "www.567yunpan.com":3,
10 | "dufile.com":4,
11 | "www.expfile.com":5,
12 | "www.xueqiupan.com":6,
13 | "www.xfpan.cc":7,
14 | "ownfile.net":8,
15 | "www.dudujb.com":9,
16 | "www.yifile.com":10,
17 | "www.1988wp.com":11,
18 | "rosefile.net":12,
19 | "www.xingyaopan.com":13,
20 | "www.kufile.net":14,
21 | "www.onstclouds.com":14
22 | }
--------------------------------------------------------------------------------
/nodejs/util/request.js:
--------------------------------------------------------------------------------
1 | const axios = require('axios')
2 |
3 |
4 | module.exports = {
5 | request:function(url,method,data,header){
6 | return new Promise((resolve, reject) => {
7 | if(method === 'GET'){
8 | axios.get(url).then((response) => {
9 | resolve(response.data);
10 | }).catch((err) => {
11 | reject(err);
12 | });
13 | }else if(method === 'POST'){
14 | axios.post(url,data,{headers:header}).then((response) => {
15 | resolve(response.data);
16 | })
17 | }
18 |
19 | })
20 |
21 | }
22 | }
--------------------------------------------------------------------------------
/vue/static/wp.min.css:
--------------------------------------------------------------------------------
1 | html,body{
2 | margin: 0;
3 | padding: 0;
4 | height: 100%;
5 | width: 100%;
6 | overflow: hidden;
7 | }
8 | .el-menu-demo .el-menu-item{
9 | border-bottom-color:#ffffff!important;
10 | font-size: 16px;
11 |
12 | }
13 | .el-icon-caret-top{
14 | position: absolute;
15 | bottom: -8px;
16 | left: 34%;
17 | color: #1F51A9!important;
18 | }
19 | .el-form {
20 | position: relative;
21 | margin-top: 20px;
22 | align-items: center;
23 | }
24 | #link{
25 | width: 333px;
26 | }
27 |
28 | .footer {
29 | position: fixed;
30 | text-align: center;
31 | line-height: 35px;
32 | bottom:0px;
33 | }
34 |
--------------------------------------------------------------------------------
/docs/支持网盘.md:
--------------------------------------------------------------------------------
1 | ## 支持网盘
2 |
3 | > 以下是整理后所测试成功过的网盘,可能部分会失效
4 |
5 | |
网盘名称
| 支持域名
|
6 | |:----:|:----:|
7 | |飞猫云|` www.feimaoyun.com ` ` www.feemoo.com ` ` www.fmpan.com` |
8 | |77file|` www.77file.com `|
9 | |讯牛网盘|` www.xun-niu.com `|
10 | |567盘|` www.567yunpan.com `|
11 | |DuFile网盘|` dufile.com `|
12 | |ExpFile|` www.expfile.com `|
13 | |雪球云盘|` www.xueqiupan.com `|
14 | |先锋网盘|` www.xfpan.cc `|
15 | |OwnFile|` ownfile.net `|
16 | |贵族网盘|` www.dudujb.com `|
17 | |YIFile|` www.yifile.com `|
18 | |1988网盘|` www.1988wp.com `|
19 | |Rose云盘|` rosefile.net `|
20 | |星耀云盘|` www.xingyaopan.com `|
21 | |库云|` www.kufile.net ` ` www.onstclouds.com `|
22 |
23 |
--------------------------------------------------------------------------------
/docs/解析.md:
--------------------------------------------------------------------------------
1 | ## 解析
2 |
3 | **接口地址** ` /resolve `
4 |
5 | **请求方式** ` POST `
6 |
7 | **请求参数**
8 |
9 | | 参数 | 值 |
10 | |-----|-----|
11 | | url | 要解析的文件地址 |
12 |
13 | **调用例子(Ajax)**
14 |
15 | ```JavaScript
16 | $.ajax({
17 | url: '/resolve',
18 | type: 'POST',
19 | data: {
20 | "url": ""//文件地址
21 | },
22 | success:(res)=>{
23 | alert(res);
24 | if(res.data.code == '0'){
25 | //解析成功
26 | }else{
27 | //解析失败
28 | }
29 | }
30 | })
31 | ```
32 |
33 | **返回结果**
34 |
35 | ```json
36 | {
37 | "code": 0,
38 | "fileid": "1520468",
39 | "filename": "ProgramCat",
40 | "filesize": "20.17 M",
41 | "durl": "下载地址",
42 | "message": "解析成功"
43 | }
44 | ```
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Document
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
13 | custom: ["https://www.ilzya.com/donate.html"]# Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
14 |
--------------------------------------------------------------------------------
/nodejs/app.js:
--------------------------------------------------------------------------------
1 | /**
2 | * blog:https://www.ilzya.com
3 | * author:lzyAB
4 | * update:2022-4-16
5 | */
6 |
7 |
8 | const server = require('./config/server')
9 |
10 | const port = server['port'] //端口
11 |
12 | //引入express模块
13 | const express = require('express')
14 |
15 |
16 |
17 |
18 | const resolve = require('./util/resolve')
19 | const version = require('./util/version')
20 | const connect = require('./util/connect')
21 |
22 |
23 | var bodyParser = require("body-parser");
24 |
25 | //创建app对象
26 | const app = express()
27 |
28 |
29 | app.use(bodyParser.json())
30 | app.use(bodyParser.urlencoded({ extended: true }))
31 |
32 | //该地址是用来NetDiskResolve PC端下载工具使用
33 | app.post('/connect', connect)
34 |
35 | app.post('/resolve', resolve)
36 |
37 | //该地址是用来NetDiskResolve PC端下载工具使用
38 | app.post('/version', version)
39 |
40 |
41 | //4.启动服务监听端口
42 | app.listen(port,()=>{
43 | console.log("run port:" + port)
44 | })
--------------------------------------------------------------------------------
/nodejs/util/StrUtil.js:
--------------------------------------------------------------------------------
1 | function subStringMulti(text, begin, end) {
2 | var regex;
3 | if (end == '\\n')
4 | regex = new RegExp(begin + '(.+)', "g");
5 | else
6 | regex = new RegExp(begin + '([\\s\\S]+?)' + end, "g");
7 | try {
8 | var result;
9 | var blocks = [];
10 | while ((result = regex.exec(text)) != null) {
11 | blocks.push(result[1].trim());
12 | }
13 | return blocks;
14 | // return text.match(regex);
15 | } catch (err) {
16 | return null;
17 | }
18 | };
19 |
20 |
21 | function getStr(str, start, end) {
22 | let res = str.match(new RegExp(`${start}(.*?)${end}`))
23 | return res ? res[1] : null
24 | }
25 |
26 | function subStr(str,start,end1){
27 |
28 | var indexOf =str.indexOf(start);
29 | if(indexOf!=-1)var indexOf = indexOf + start.length;
30 |
31 | var lastIndexOf = str.lastIndexOf(end1);
32 | if(lastIndexOf!=-1)
33 | return str.substr(indexOf,lastIndexOf - indexOf)
34 | }
35 |
36 | module.exports = {
37 | subStringMulti,
38 | subStr,
39 | getStr
40 | }
--------------------------------------------------------------------------------
/vue/http/api/resolve.php:
--------------------------------------------------------------------------------
1 |
57 |
--------------------------------------------------------------------------------
/nodejs/model/xunniu.js:
--------------------------------------------------------------------------------
1 | const request = require('../util/request')
2 | const str = require('../util/StrUtil')
3 |
4 | module.exports = (req,res) => {
5 | let header = {
6 | "user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36",
7 | "referer":req.body.url
8 | }
9 |
10 |
11 | let url = req.body.url
12 |
13 | let filename,filesize,fileid,durl,fmdown
14 |
15 | request.request(url,'GET','',header).then((result)=>{
16 | filename = str.subStringMulti(result,"","
").toString()
17 | filesize = str.subStringMulti(result,'文件大小:">',',').toString()
18 | fileid = str.subStringMulti(result,"action=dolike&file_id=","'").toString()
19 | if(fileid == ''){
20 | res.send({
21 | code:-1,
22 | message:"未解析出文件id"
23 | })
24 | return
25 | }
26 | request.request('http://www.xunniupan.com/ajax.php','POST','action=load_down_addr1&file_id='+fileid,header).then((result)=>{
27 | durl = str.subStringMulti(result,' {
11 |
12 | let header = {
13 | "user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36",
14 | "referer":req.body.url
15 | }
16 |
17 | let url = req.body.url
18 |
19 | let filename,filesize,fileid,durl,fmdown
20 |
21 | request.request(url,'GET','',header).then((result)=>{
22 | filename = str.subStringMulti(result,"进入","下载页面").toString()
23 | filesize = str.subStringMulti(result,'文件大小:',',由网盘用户').toString()
24 | fileid = str.subStringMulti(result,"down2-",".html").toString()
25 | if(fileid == ''){
26 | res.send({
27 | code:-1,
28 | message:"未解析出文件id"
29 | })
30 | return
31 | }
32 | request.request('http://www.xueqiupan.com/ajax.php','POST','action=load_down_addr1&file_id='+fileid,header).then((result)=>{
33 | durl = str.subStringMulti(result,'http:','\"').toString()
34 | if(durl == ''){
35 | res.send({
36 | code:-1,
37 | message:"未解析出durl"
38 | })
39 | return
40 | }
41 | res.send({
42 | "code":0,
43 | "fileid":fileid,
44 | "filename":filename,
45 | "filesize":filesize,
46 | "durl":"http:"+durl,
47 | "message":"解析成功"
48 | })
49 | return
50 |
51 | })
52 |
53 |
54 | })
55 |
56 |
57 | }
--------------------------------------------------------------------------------
/nodejs/model/ownfile.js:
--------------------------------------------------------------------------------
1 | const request = require('../util/request')
2 | const str = require('../util/StrUtil')
3 |
4 |
5 | /**
6 | * ownfile解析
7 | * @param {*} req
8 | * @param {*} res
9 | */
10 | module.exports = (req,res) => {
11 |
12 | let header = {
13 | "user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36",
14 | "referer":req.body.url
15 | }
16 |
17 | let url = req.body.url
18 |
19 | let filename,filesize,fileid,durl,fmdown
20 |
21 | request.request(url,'GET','',header).then((result)=>{
22 | filename = str.subStringMulti(result,"進入","下載頁面").toString()
23 | filesize = str.subStringMulti(result,'文件大小:',',由網盤用戶').toString()
24 | fileid = str.subStringMulti(result,"action=dolike&file_id=","'").toString()
25 | if(fileid == ''){
26 | res.send({
27 | code:-1,
28 | message:"未解析出文件id"
29 | })
30 | return
31 | }
32 | request.request('https://ownfile.net/ajax.php','POST','action=load_down_addr1&file_id='+fileid,header).then((result)=>{
33 | durl = str.subStringMulti(result,' {
11 |
12 | let header = {
13 | "user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36",
14 | "referer":req.body.url
15 | }
16 |
17 | let url = req.body.url
18 |
19 | let filename,filesize,fileid,durl,fmdown
20 |
21 | request.request(url,'GET','',header).then((result)=>{
22 | filename = str.subStringMulti(result,"文件名:","").toString()
23 | filesize = "不支持获取该盘地址,不影响正常下载" //无
24 | fileid = str.subStr(result,"down-",".html\" class=\"down_btn btn btn-success\"")
25 | if(fileid == ''){
26 | res.send({
27 | code:-1,
28 | message:"未解析出文件id"
29 | })
30 | return
31 | }
32 | request.request('http://www.expfile.com/ajax.php','POST','action=load_down_addr1&file_id='+fileid,header).then((result)=>{
33 | durl = str.subStringMulti(result,'cd.php?','\"').toString()
34 | if(durl == ''){
35 | res.send({
36 | code:-1,
37 | message:"未解析出durl"
38 | })
39 | return
40 | }
41 | res.send({
42 | "code":0,
43 | "fileid":fileid,
44 | "filename":filename,
45 | "filesize":filesize,
46 | "durl":"http://www.expfile.com/" + "cd.php" + durl,
47 | "message":"解析成功"
48 | })
49 | return
50 |
51 | })
52 |
53 |
54 | })
55 |
56 |
57 | }
--------------------------------------------------------------------------------
/nodejs/model/77file.js:
--------------------------------------------------------------------------------
1 | const request = require('../util/request')
2 | const str = require('../util/StrUtil')
3 |
4 |
5 | /**
6 | * 77file解析
7 | * @param {*} req
8 | * @param {*} res
9 | */
10 | module.exports = (req,res) => {
11 |
12 | let header = {
13 | "user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36",
14 | "referer":req.body.url
15 | }
16 |
17 | let url = req.body.url
18 |
19 | let filename,filesize,fileid,durl,fmdown
20 |
21 | request.request(url,'GET','',header).then((result)=>{
22 | filename = str.subStringMulti(result,"border='0' />","").toString()
23 | filesize = str.subStringMulti(result,'id="file_size">','').toString()
24 | fileid = str.subStringMulti(result,"dolike&file_id=","'").toString()
25 | if(fileid == ''){
26 | res.send({
27 | code:-1,
28 | message:"未解析出文件id"
29 | })
30 | return
31 | }
32 | request.request('https://www.77file.com/ajax.php','POST','action=load_down_addr1&file_id='+fileid,header).then((result)=>{
33 | durl = str.subStringMulti(result,' {
11 |
12 | let header = {
13 | "user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36",
14 | "referer":req.body.url
15 | }
16 |
17 | let url = req.body.url
18 |
19 | let filename,filesize,fileid,durl,fmdown
20 |
21 | request.request(url,'GET','',header).then((result)=>{
22 | filename = str.subStringMulti(result,"' border='0' />","").toString()
23 | filesize = "不支持获取该盘文件大小,不影响正常下载" //无
24 | fileid = str.subStringMulti(result,"\nadd_ref(",");").toString().replace("(","").replace(")","")
25 | if(fileid == ''){
26 | res.send({
27 | code:-1,
28 | message:"未解析出文件id"
29 | })
30 | return
31 | }
32 | request.request('http://www.xfpan.cc/ajax.php','POST','action=load_down_addr1&file_id='+fileid,header).then((result)=>{
33 | durl = str.subStringMulti(result,'cd.php?','\"').toString()
34 | if(durl == ''){
35 | res.send({
36 | code:-1,
37 | message:"未解析出durl"
38 | })
39 | return
40 | }
41 | res.send({
42 | "code":0,
43 | "fileid":fileid,
44 | "filename":filename,
45 | "filesize":filesize,
46 | "durl":"http://www.xfpan.cc/cd.php"+durl,
47 | "message":"解析成功"
48 | })
49 | return
50 |
51 | })
52 |
53 |
54 | })
55 |
56 |
57 | }
58 |
--------------------------------------------------------------------------------
/nodejs/model/567pan.js:
--------------------------------------------------------------------------------
1 | const request = require('../util/request')
2 | const str = require('../util/StrUtil')
3 |
4 |
5 | /**
6 | * 567yunpan解析
7 | * @param {*} req
8 | * @param {*} res
9 | */
10 | module.exports = (req,res) => {
11 |
12 | let header = {
13 | "user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36",
14 | "referer":req.body.url
15 | }
16 |
17 | let url = req.body.url
18 |
19 | let filename,filesize,fileid,durl,fmdown
20 |
21 | request.request(url,'GET','',header).then((result)=>{
22 | filename = str.subStringMulti(result,"","").toString()
23 | filesize = str.subStringMulti(result,'文件大小:',',').toString()
24 | fileid = str.subStringMulti(result,"down2-",".html").toString()
25 | console.log(fileid)
26 | if(fileid == ''){
27 | res.send({
28 | code:-1,
29 | message:"未解析出文件id"
30 | })
31 | return
32 | }
33 | request.request('https://www.567yunpan.com/ajax.php','POST','action=load_down_addr10&file_id='+fileid,header).then((result)=>{
34 | durl = str.subStringMulti(result,'
{
11 |
12 | let header = {
13 | "user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36",
14 | "referer":req.body.url
15 | }
16 |
17 | let url = req.body.url
18 |
19 | let filename,filesize,fileid,durl,fmdown
20 |
21 | request.request(url,'GET','',header).then((result)=>{
22 | filename = str.subStringMulti(result,"文件名: ","").toString()
23 | filesize = str.subStringMulti(result,'文件大小: ','  ').toString()
24 | fileid = str.subStringMulti(result,"\nadd_ref(",");").toString().replace("(","").replace(")","")
25 | if(fileid == ''){
26 | res.send({
27 | code:-1,
28 | message:"未解析出文件id"
29 | })
30 | return
31 | }
32 | request.request('https://www.dudujb.com/ajax.php','POST','action=load_down_addr1&file_id='+fileid,header).then((result)=>{
33 | durl = str.subStringMulti(result,' {
11 |
12 | let header = {
13 | "user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36",
14 | "referer":req.body.url
15 | }
16 |
17 | let url = req.body.url
18 |
19 | let filename,filesize,fileid,durl,fmdown
20 |
21 | request.request(url,'GET','',header).then((result)=>{
22 | filename = str.subStringMulti(result," 文件下载 : ","").toString()
23 | filesize = "不支持获取该盘地址,不影响正常下载" //无
24 | fileid = str.subStringMulti(result,"\nadd_ref(","\);\n").toString().replace("(","").replace(")","")
25 | if(fileid == ''){
26 | res.send({
27 | code:-1,
28 | message:"未解析出文件id"
29 | })
30 | return
31 | }
32 | request.request('http://www.xingyaopan.com/ajax.php','POST','action=load_down_addr5&file_id='+fileid,header).then((result)=>{
33 | durl = str.subStringMulti(result,' {
11 |
12 | let header = {
13 | "user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36",
14 | "referer":req.body.url
15 | }
16 |
17 | let url = req.body.url
18 |
19 | let filename,filesize,fileid,durl,fmdown
20 |
21 | request.request(url,'GET','',header).then((result)=>{
22 | filename = str.subStringMulti(result,"align='absbottom' border='0' /> ","").toString()
23 | filesize = str.subStringMulti(result,'文件大小: ','').toString()
24 | fileid = str.subStringMulti(result,"action=dolike&file_id=","'").toString()
25 | if(fileid == ''){
26 | res.send({
27 | code:-1,
28 | message:"未解析出文件id"
29 | })
30 | return
31 | }
32 | request.request('http://www.1988wp.com/ajax.php','POST','action=load_down_addr1&file_id='+fileid,header).then((result)=>{
33 | durl = str.subStringMulti(result,' {
11 |
12 | let header = {
13 | "user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36",
14 | "referer":req.body.url
15 | }
16 |
17 | let url = req.body.url
18 |
19 | let filename,filesize,fileid,durl,fmdown
20 |
21 | request.request(url,'GET','',header).then((result)=>{
22 | filename = str.subStringMulti(result," ","
").toString()
23 | filesize = str.subStringMulti(result,' ','').toString()
24 | fileid = str.subStringMulti(result,"// is open ref count\nadd_ref(",");").toString().replace("(","").replace(")","")
25 | if(fileid == ''){
26 | res.send({
27 | code:-1,
28 | message:"未解析出文件id"
29 | })
30 | return
31 | }
32 | request.request('https://rosefile.net/ajax.php','POST','action=load_down_addr1&file_id='+fileid,header).then((result)=>{
33 | durl = str.subStringMulti(result,' {
11 |
12 | let header = {
13 | "user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36",
14 | "referer":req.body.url
15 | }
16 |
17 | let url = req.body.url
18 |
19 | let filename,filesize,fileid,durl,fmdown
20 |
21 | request.request(url,'GET','',header).then((result)=>{
22 | filename = str.subStringMulti(result,'','
').toString()
23 | filesize = str.subStringMulti(result,'文件大小:','').toString()
24 | fileid = str.subStringMulti(result,"\nadd_ref(","\);\n").toString().replace("(","").replace(")","")
25 | if(fileid == ''){
26 | res.send({
27 | code:-1,
28 | message:"未解析出文件id"
29 | })
30 | return
31 | }
32 | request.request('http://www.kufile.net/ajax.php','POST','action=load_down_file_user&file_id='+fileid+"&ms=undefined*undefined&sc=1536*864",header).then((result)=>{
33 | durl = result.replace("true|","")
34 | if(durl == ''){
35 | res.send({
36 | code:-1,
37 | message:"未解析出durl"
38 | })
39 | return
40 | }
41 | res.send({
42 | "code":0,
43 | "fileid":fileid,
44 | "filename":filename,
45 | "filesize":filesize,
46 | "durl":"http://www.kufile.net/"+durl,
47 | "message":"解析成功"
48 | })
49 | return
50 |
51 | })
52 |
53 |
54 | })
55 |
56 |
57 | }
--------------------------------------------------------------------------------
/nodejs/model/yifile.js:
--------------------------------------------------------------------------------
1 | const request = require('../util/request')
2 | const str = require('../util/StrUtil')
3 | const cookie = require('../config/cookie')
4 |
5 |
6 | /**
7 | * yifile解析
8 | * @param {*} req
9 | * @param {*} res
10 | */
11 | module.exports = (req,res) => {
12 |
13 | let header = {
14 | "user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36",
15 | "referer":req.body.url,
16 | "cookie":cookie[10]
17 | }
18 |
19 | let url = req.body.url
20 |
21 | let filename,filesize,fileid,durl,fmdown
22 |
23 | request.request(url,'GET','',header).then((result)=>{
24 | filename = str.subStringMulti(result,'title="bd_logo1_31bdc765.png">',"").toString()
25 | filesize = str.subStringMulti(result,'d="FileSize">','').toString()
26 | fileid = str.subStringMulti(result,"data : 'file_id=","'").toString()
27 | console.log(fileid)
28 | if(fileid == ''){
29 | res.send({
30 | code:-1,
31 | message:"未解析出文件id"
32 | })
33 | return
34 | }
35 | request.request('https://www.yifile.com/ajax.php','POST','action=yifile_down&file_id='+fileid+"&verycode=jm7j",header).then((result)=>{
36 | console.log(result)
37 | durl = result.replace("true|","")
38 | if(durl == ''){
39 | res.send({
40 | code:-1,
41 | message:"未解析出durl"
42 | })
43 | return
44 | }
45 | res.send({
46 | "code":0,
47 | "fileid":fileid,
48 | "filename":filename,
49 | "filesize":filesize,
50 | "durl":durl,
51 | "message":"解析成功"
52 | })
53 | return
54 |
55 | })
56 |
57 |
58 | })
59 |
60 |
61 | }
--------------------------------------------------------------------------------
/nodejs/model/dufile.js:
--------------------------------------------------------------------------------
1 | const request = require('../util/request')
2 | const str = require('../util/StrUtil')
3 |
4 |
5 | /**
6 | * dufile解析
7 | * @param {*} req
8 | * @param {*} res
9 | */
10 | module.exports = (req,res) => {
11 |
12 | let header = {
13 | "user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36",
14 | "referer":req.body.url,
15 | "cookie":"UM_distinctid=17cc97574669e0-045f6d04827332-57b193e-144000-17cc9757467d82; __gads=ID=36a46bfbec24e231-22562bb0f2cc006d:T=1635516326:RT=1635516326:S=ALNI_Mav4HbndsCv5Y_nEzlrJpBiiDL4Cw; CNZZDATA2710406=cnzz_eid%3D1836248859-1635463650-%26ntime%3D1645776825; PHPSESSID=aeg4hsg5qf52fatfbh27mq5og5; PU=sas00"
16 | }
17 |
18 | let url = req.body.url
19 |
20 | let filename,filesize,fileid,durl,fmdown
21 |
22 | request.request(url,'GET','',header).then((result)=>{
23 | filename = str.subStringMulti(result,"文件下载 ","").toString()
24 | filesize = str.subStringMulti(result,'文件大小:','').toString()
25 | fileid = str.subStringMulti(result,'{
34 | console.log(result)
35 | durl = str.subStringMulti(result,'"login_ok"> {
11 |
12 | //请求头,需要到 ../config/cookie key[1] 设置cookie
13 | let header = {
14 | "cookie":cookie['1']
15 | }
16 |
17 |
18 | let url = req.body.url
19 | let code = url.slice(-8)
20 | let filename,filesize,fileid,durl,fmdown
21 |
22 | request.request('https://www.feimaoyun.com/index.php/down/detail','POST',"code="+code).then((result)=>{
23 | if(result.status == 0){
24 | res.send({
25 | code:-1,
26 | message:result.msg
27 | })
28 | return
29 | }
30 |
31 | filename = result.data.file_name
32 | filesize = result.data.file_size
33 | fileid = result.data.file_id
34 |
35 |
36 | request.request('https://www.feimaoyun.com/index.php/down/getsecurl','POST',"code="+code,header).then((result)=>{
37 | if(result.status == 0){
38 | res.send({
39 | code:-1,
40 | message:result.msg
41 | })
42 | return
43 | }
44 |
45 |
46 | fmdown = result.data.slice(-72)
47 |
48 |
49 | request.request('https://www.feimaoyun.com/index.php/down/getfileurl','POST','code='+ fmdown + '&geetest_challenge=70f3e436c20193f06913cc793962b6373m&geetest_validate=ba99bd99fc40c4b8fd37b20d85792a47&geetest_seccode=ba99bd99fc40c4b8fd37b20d85792a47%7Cjordan',header).then((result)=>{
50 | if(result.status == 0){
51 | res.send({
52 | code:-1,
53 | message:result.msg
54 | })
55 | return
56 | }
57 |
58 | fmdown = result.data.slice(-72)
59 |
60 |
61 | request.request('https://www.feimaoyun.com/index.php/down/tdownv2','POST','code=' + fmdown + '&sc=1536*864&hd=0',header).then((result)=>{
62 | if(result.status != 1){
63 | res.send({
64 | code:-1,
65 | message:result.msg
66 | })
67 | return
68 | }
69 |
70 | res.send({
71 | "code":0,
72 | "fileid":fileid,
73 | "filename":filename,
74 | "filesize":filesize,
75 | "durl":result.data.url,
76 | "message":"解析成功"
77 | })
78 | return
79 |
80 | })
81 |
82 |
83 |
84 |
85 |
86 | })
87 |
88 |
89 |
90 |
91 | })
92 |
93 |
94 | })
95 | }
96 |
--------------------------------------------------------------------------------
/nodejs/util/resolve.js:
--------------------------------------------------------------------------------
1 | //加载wpjson
2 | const wpjson = require('../config/wp')
3 | const server = require('../config/server')
4 |
5 |
6 | const feimaoyun = require('../model/feimaoyun')
7 | const _77file = require('../model/77file')
8 | const xunniu = require('../model/xunniu')
9 | const _567 = require('../model/567pan')
10 | const dufile = require('../model/dufile')
11 | const expfile = require('../model/expfile')
12 | const xueqiuyun = require('../model/xueqiuyun')
13 | const xfpan = require('../model/xfpan')
14 | const ownfile = require('../model/ownfile')
15 | const dudujb = require('../model/dudujb')
16 | const yifile = require('../model/yifile')
17 | const _1988wp = require('../model/1988wp')
18 | const rosefile = require('../model/rosefile')
19 | const xingyaoyun = require('../model/xingyaoyun')
20 | const kufile = require('../model/kufile')
21 | const lanzou = require('../model/lanzou')
22 |
23 |
24 | module.exports = (req,res) =>{
25 | if(server['log-server']==true)
26 | console.log("接收解析数据 => "+ req.body.url)
27 | if(server['isrun']==false){
28 | res.send({
29 | code:-1,
30 | message:server['norunmessage']
31 | })
32 | return
33 | }else{
34 | let urlReg = /[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?/;
35 | console.log(req.body.url);
36 | let domain=urlReg.exec(req.body.url);
37 |
38 | //蓝奏云
39 | if(domain[0].indexOf("lanzou") != -1){
40 | lanzou(req,res)
41 | return;
42 | }
43 |
44 |
45 |
46 | switch(wpjson[domain[0]]){
47 | case 0:
48 | feimaoyun(req,res)
49 | break;
50 | case 1:
51 | _77file(req,res)
52 | break;
53 | case 2:
54 | xunniu(req,res)
55 | break;
56 | case 3:
57 | _567(req,res)
58 | break;
59 | case 4:
60 | dufile(req,res)
61 | break;
62 | case 5:
63 | expfile(req,res)
64 | break;
65 | case 6:
66 | xueqiuyun(req,res)
67 | break;
68 | case 7:
69 | xfpan(req,res)
70 | break;
71 | case 8:
72 | ownfile(req,res)
73 | break;
74 | case 9:
75 | dudujb(req,res)
76 | break;
77 | case 10:
78 | yifile(req,res)
79 | break;
80 | case 11:
81 | _1988wp(req,res)
82 | break;
83 | case 12:
84 | rosefile(req,res)
85 | break;
86 | case 13:
87 | xingyaoyun(req,res)
88 | break;
89 | case 14:
90 | kufile(req,res)
91 | break;
92 |
93 |
94 | default:
95 | res.send({
96 | code:-1,
97 | message:"未识别出所属网盘,如果文档中有收录,请查看域名是否匹配"
98 | })
99 | break;
100 | }
101 | }
102 | }
103 |
--------------------------------------------------------------------------------
/nodejs/model/lanzou.js:
--------------------------------------------------------------------------------
1 | const request = require('../util/request')
2 | const str = require('../util/StrUtil')
3 |
4 |
5 |
6 |
7 | /**
8 | * 蓝奏云解析
9 | * @param {*} req
10 | * @param {*} res
11 | */
12 | module.exports = (req,res) => {
13 |
14 | let header = {
15 |
16 | }
17 |
18 |
19 | let url = req.body.url
20 | let pwd = req.body.pwd
21 |
22 |
23 |
24 |
25 | let filename,filesize,fileid,fn,zturl,pwdsign
26 |
27 |
28 | /**
29 | * 密码解析
30 | */
31 | if(pwd != '' && pwd != null && pwd != undefined){
32 |
33 | request.request(url,'GET').then(resp => {
34 |
35 | pwdsign = str.subStringMulti(resp,"&sign=","&").toString()
36 |
37 | filesize = str.subStringMulti(resp,'">大小:','').toString()
38 |
39 | if(pwdsign == ''){
40 | res.send({
41 | code:-1,
42 | message:'获取sign失败,请检查文件是否存在.'
43 | })
44 | return
45 | }
46 |
47 | request.request("https://wwc.lanzoub.com/ajaxm.php","POST","action=downprocess&sign="+pwdsign+"&p="+pwd,{"referer":url}).then(resp => {
48 |
49 | if(resp.zt != 1){
50 | res.send({
51 | code:-1,
52 | message:resp.inf
53 | })
54 | return
55 | }
56 | filename = resp.inf
57 | zturl = resp.dom + '/file/' + resp.url
58 |
59 | res.send({
60 | "code":0,
61 | "fileid":fileid,
62 | "filename":filename,
63 | "filesize":filesize,
64 | "durl":zturl,
65 | "message":"解析成功"
66 | })
67 |
68 | return
69 | })
70 | })
71 |
72 |
73 | return
74 |
75 | }
76 |
77 |
78 |
79 |
80 | /**
81 | * 无密码解析
82 | */
83 |
84 | request.request(url,'GET').then((result)=>{
85 |
86 | fn = str.subStringMulti(result,"/fn?","\"")[3].toString()
87 |
88 | if(fn == ''){
89 | res.send({
90 | code:-1,
91 | message:'无法获取fn,请检查文件是否存在或是否需要密码访问.'
92 | })
93 | return
94 | }
95 |
96 |
97 | filename = str.subStringMulti(result,"56px 0px 20px 0px;\">","").toString()
98 | filesize = str.subStringMulti(result,'文件大小:','
').toString()
99 | fileid = 'null'
100 |
101 | let sendurl = 'https://wwc.lanzoub.com/fn' + fn
102 |
103 |
104 | request.request(sendurl,'GET').then((result)=>{
105 |
106 | let ajaxdata = str.subStringMulti(result,'data = \'','\';').toString()
107 | let signkey = str.subStringMulti(result,'websignkey = \'','\';').toString()
108 | let sign = str.subStringMulti(result,'\'sign\':\'','\',').toString()
109 |
110 |
111 |
112 | if(ajaxdata == '' || signkey == '' || sign == ''){
113 | res.send({
114 | code:-1,
115 | message:'请检查文件是否存在或是否需要密码访问,若一切正常请到 https://www.ilzya.com/archives/4 提交更新'
116 | })
117 | return
118 | }
119 |
120 |
121 |
122 | request.request('https://wwc.lanzoub.com/ajaxm.php','POST','action=downprocess&signs='+ajaxdata+'&sign='+sign+'&ves=1&websign=&websignkey='+signkey,{"referer":sendurl}).then((result)=>{
123 |
124 |
125 | if(result.zt == 0){
126 | res.send({
127 | code:-1,
128 | message:result.inf
129 | })
130 | return
131 | }
132 |
133 | zturl = result.dom + '/file/' + result.url
134 |
135 | res.send({
136 | "code":0,
137 | "fileid":fileid,
138 | "filename":filename,
139 | "filesize":filesize,
140 | "durl":zturl,
141 | "message":"解析成功"
142 | })
143 | return
144 |
145 | })
146 | })
147 |
148 |
149 | })
150 | }
151 |
--------------------------------------------------------------------------------
/vue/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | 空城里-网赚网盘解析
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | 解析
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
53 |
54 | 迅雷下载
56 | 飞猫云下载
58 |
59 |
60 |
61 | 文件名
62 |
63 | {{file.name}}
64 |
65 |
66 |
67 | 文件ID
68 |
69 | {{file.id}}
70 |
71 |
72 |
73 | 文件大小
74 |
75 | {{file.size}}
76 |
77 |
78 |
79 | 网盘名称
80 |
81 | null
82 |
83 |
84 |
85 |
86 |
87 |
88 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
265 |
266 |
267 |
--------------------------------------------------------------------------------
/nodejs/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | accepts@~1.3.8:
6 | version "1.3.8"
7 | resolved "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
8 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
9 | dependencies:
10 | mime-types "~2.1.34"
11 | negotiator "0.6.3"
12 |
13 | array-flatten@1.1.1:
14 | version "1.1.1"
15 | resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
16 | integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
17 |
18 | axios@^0.26.1:
19 | version "0.26.1"
20 | resolved "https://registry.npmmirror.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9"
21 | integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==
22 | dependencies:
23 | follow-redirects "^1.14.8"
24 |
25 | body-parser@1.19.2:
26 | version "1.19.2"
27 | resolved "https://registry.npmmirror.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e"
28 | integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==
29 | dependencies:
30 | bytes "3.1.2"
31 | content-type "~1.0.4"
32 | debug "2.6.9"
33 | depd "~1.1.2"
34 | http-errors "1.8.1"
35 | iconv-lite "0.4.24"
36 | on-finished "~2.3.0"
37 | qs "6.9.7"
38 | raw-body "2.4.3"
39 | type-is "~1.6.18"
40 |
41 | bytes@3.1.2:
42 | version "3.1.2"
43 | resolved "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
44 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
45 |
46 | content-disposition@0.5.4:
47 | version "0.5.4"
48 | resolved "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
49 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
50 | dependencies:
51 | safe-buffer "5.2.1"
52 |
53 | content-type@~1.0.4:
54 | version "1.0.4"
55 | resolved "https://registry.npmmirror.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
56 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
57 |
58 | cookie-signature@1.0.6:
59 | version "1.0.6"
60 | resolved "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
61 | integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
62 |
63 | cookie@0.4.2:
64 | version "0.4.2"
65 | resolved "https://registry.npmmirror.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
66 | integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
67 |
68 | debug@2.6.9:
69 | version "2.6.9"
70 | resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
71 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
72 | dependencies:
73 | ms "2.0.0"
74 |
75 | depd@~1.1.2:
76 | version "1.1.2"
77 | resolved "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
78 | integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
79 |
80 | destroy@~1.0.4:
81 | version "1.0.4"
82 | resolved "https://registry.npmmirror.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
83 | integrity sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==
84 |
85 | ee-first@1.1.1:
86 | version "1.1.1"
87 | resolved "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
88 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
89 |
90 | encodeurl@~1.0.2:
91 | version "1.0.2"
92 | resolved "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
93 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
94 |
95 | escape-html@~1.0.3:
96 | version "1.0.3"
97 | resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
98 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
99 |
100 | etag@~1.8.1:
101 | version "1.8.1"
102 | resolved "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
103 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
104 |
105 | express@^4.17.3:
106 | version "4.17.3"
107 | resolved "https://registry.npmmirror.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1"
108 | integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==
109 | dependencies:
110 | accepts "~1.3.8"
111 | array-flatten "1.1.1"
112 | body-parser "1.19.2"
113 | content-disposition "0.5.4"
114 | content-type "~1.0.4"
115 | cookie "0.4.2"
116 | cookie-signature "1.0.6"
117 | debug "2.6.9"
118 | depd "~1.1.2"
119 | encodeurl "~1.0.2"
120 | escape-html "~1.0.3"
121 | etag "~1.8.1"
122 | finalhandler "~1.1.2"
123 | fresh "0.5.2"
124 | merge-descriptors "1.0.1"
125 | methods "~1.1.2"
126 | on-finished "~2.3.0"
127 | parseurl "~1.3.3"
128 | path-to-regexp "0.1.7"
129 | proxy-addr "~2.0.7"
130 | qs "6.9.7"
131 | range-parser "~1.2.1"
132 | safe-buffer "5.2.1"
133 | send "0.17.2"
134 | serve-static "1.14.2"
135 | setprototypeof "1.2.0"
136 | statuses "~1.5.0"
137 | type-is "~1.6.18"
138 | utils-merge "1.0.1"
139 | vary "~1.1.2"
140 |
141 | finalhandler@~1.1.2:
142 | version "1.1.2"
143 | resolved "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
144 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
145 | dependencies:
146 | debug "2.6.9"
147 | encodeurl "~1.0.2"
148 | escape-html "~1.0.3"
149 | on-finished "~2.3.0"
150 | parseurl "~1.3.3"
151 | statuses "~1.5.0"
152 | unpipe "~1.0.0"
153 |
154 | follow-redirects@^1.14.8:
155 | version "1.14.9"
156 | resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7"
157 | integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==
158 |
159 | forwarded@0.2.0:
160 | version "0.2.0"
161 | resolved "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
162 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
163 |
164 | fresh@0.5.2:
165 | version "0.5.2"
166 | resolved "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
167 | integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
168 |
169 | http-errors@1.8.1:
170 | version "1.8.1"
171 | resolved "https://registry.npmmirror.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c"
172 | integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==
173 | dependencies:
174 | depd "~1.1.2"
175 | inherits "2.0.4"
176 | setprototypeof "1.2.0"
177 | statuses ">= 1.5.0 < 2"
178 | toidentifier "1.0.1"
179 |
180 | iconv-lite@0.4.24:
181 | version "0.4.24"
182 | resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
183 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
184 | dependencies:
185 | safer-buffer ">= 2.1.2 < 3"
186 |
187 | inherits@2.0.4:
188 | version "2.0.4"
189 | resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
190 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
191 |
192 | ipaddr.js@1.9.1:
193 | version "1.9.1"
194 | resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
195 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
196 |
197 | media-typer@0.3.0:
198 | version "0.3.0"
199 | resolved "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
200 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
201 |
202 | merge-descriptors@1.0.1:
203 | version "1.0.1"
204 | resolved "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
205 | integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
206 |
207 | methods@~1.1.2:
208 | version "1.1.2"
209 | resolved "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
210 | integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
211 |
212 | mime-db@1.52.0:
213 | version "1.52.0"
214 | resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
215 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
216 |
217 | mime-types@~2.1.24, mime-types@~2.1.34:
218 | version "2.1.35"
219 | resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
220 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
221 | dependencies:
222 | mime-db "1.52.0"
223 |
224 | mime@1.6.0:
225 | version "1.6.0"
226 | resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
227 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
228 |
229 | ms@2.0.0:
230 | version "2.0.0"
231 | resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
232 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
233 |
234 | ms@2.1.3:
235 | version "2.1.3"
236 | resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
237 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
238 |
239 | negotiator@0.6.3:
240 | version "0.6.3"
241 | resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
242 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
243 |
244 | on-finished@~2.3.0:
245 | version "2.3.0"
246 | resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
247 | integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==
248 | dependencies:
249 | ee-first "1.1.1"
250 |
251 | parseurl@~1.3.3:
252 | version "1.3.3"
253 | resolved "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
254 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
255 |
256 | path-to-regexp@0.1.7:
257 | version "0.1.7"
258 | resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
259 | integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
260 |
261 | proxy-addr@~2.0.7:
262 | version "2.0.7"
263 | resolved "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
264 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
265 | dependencies:
266 | forwarded "0.2.0"
267 | ipaddr.js "1.9.1"
268 |
269 | qs@6.9.7:
270 | version "6.9.7"
271 | resolved "https://registry.npmmirror.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe"
272 | integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==
273 |
274 | range-parser@~1.2.1:
275 | version "1.2.1"
276 | resolved "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
277 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
278 |
279 | raw-body@2.4.3:
280 | version "2.4.3"
281 | resolved "https://registry.npmmirror.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c"
282 | integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==
283 | dependencies:
284 | bytes "3.1.2"
285 | http-errors "1.8.1"
286 | iconv-lite "0.4.24"
287 | unpipe "1.0.0"
288 |
289 | safe-buffer@5.2.1:
290 | version "5.2.1"
291 | resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
292 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
293 |
294 | "safer-buffer@>= 2.1.2 < 3":
295 | version "2.1.2"
296 | resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
297 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
298 |
299 | send@0.17.2:
300 | version "0.17.2"
301 | resolved "https://registry.npmmirror.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820"
302 | integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==
303 | dependencies:
304 | debug "2.6.9"
305 | depd "~1.1.2"
306 | destroy "~1.0.4"
307 | encodeurl "~1.0.2"
308 | escape-html "~1.0.3"
309 | etag "~1.8.1"
310 | fresh "0.5.2"
311 | http-errors "1.8.1"
312 | mime "1.6.0"
313 | ms "2.1.3"
314 | on-finished "~2.3.0"
315 | range-parser "~1.2.1"
316 | statuses "~1.5.0"
317 |
318 | serve-static@1.14.2:
319 | version "1.14.2"
320 | resolved "https://registry.npmmirror.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa"
321 | integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==
322 | dependencies:
323 | encodeurl "~1.0.2"
324 | escape-html "~1.0.3"
325 | parseurl "~1.3.3"
326 | send "0.17.2"
327 |
328 | setprototypeof@1.2.0:
329 | version "1.2.0"
330 | resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
331 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
332 |
333 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0:
334 | version "1.5.0"
335 | resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
336 | integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
337 |
338 | toidentifier@1.0.1:
339 | version "1.0.1"
340 | resolved "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
341 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
342 |
343 | type-is@~1.6.18:
344 | version "1.6.18"
345 | resolved "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
346 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
347 | dependencies:
348 | media-typer "0.3.0"
349 | mime-types "~2.1.24"
350 |
351 | unpipe@1.0.0, unpipe@~1.0.0:
352 | version "1.0.0"
353 | resolved "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
354 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
355 |
356 | utils-merge@1.0.1:
357 | version "1.0.1"
358 | resolved "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
359 | integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
360 |
361 | vary@~1.1.2:
362 | version "1.1.2"
363 | resolved "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
364 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
365 |
--------------------------------------------------------------------------------