From 0d541cc8cfc58bc1f6a62d5a88ebc733f0c6c58e Mon Sep 17 00:00:00 2001 From: npmrun Date: Wed, 16 Jun 2021 19:30:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 2 + data/data.db | Bin 57344 -> 0 bytes package.json | 11 +- packages/hapi-router/dist/hapi-router.cjs.js | 64 +- packages/hapi-router/dist/hapi-router.cjs.js.map | 2 +- packages/hapi-router/dist/index.d.ts | 9 +- packages/hapi-router/package-lock.json | 29 +- packages/hapi-router/package.json | 3 +- packages/hapi-router/pnpm-lock.yaml | 11 +- packages/hapi-router/rollup.config.js | 1 + packages/hapi-router/src/index.ts | 26 +- packages/hapi-router/src/util/index.ts | 6 +- packages/hapi-router/tsconfig.json | 2 +- pnpm-lock.yaml | 1253 +++++++++++++++++++++- route.txt | 4 - source/db/data.db | Bin 0 -> 65536 bytes source/db/index.ts | 17 + source/db/init.ts | 11 + source/model/User.ts | 42 + source/plugins/index.ts | 2 +- source/route/api/index.ts | 7 + source/route/api/user/index.ts | 97 ++ source/route/index/index.ts | 11 - source/route/route.txt | 8 + source/run.ts | 30 + source/validate.ts | 13 + 26 files changed, 1569 insertions(+), 92 deletions(-) delete mode 100644 data/data.db delete mode 100644 route.txt create mode 100644 source/db/data.db create mode 100644 source/db/index.ts create mode 100644 source/db/init.ts create mode 100644 source/model/User.ts create mode 100644 source/route/api/index.ts create mode 100644 source/route/api/user/index.ts create mode 100644 source/route/route.txt create mode 100644 source/validate.ts diff --git a/.env b/.env index c0d6652..8053ff5 100644 --- a/.env +++ b/.env @@ -1 +1,3 @@ NODE_ENV=development + +KEY = dsRhw1Y5UZqB8SjfClbkrX9PF7yuDMV3JItcW0G4vgpaxONo6mzenHLQET2AiKyPUjjdDko10amjPaba diff --git a/data/data.db b/data/data.db deleted file mode 100644 index b2cdeed92b235922cc94026348bff4f7fbb517b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57344 zcmeI*&1)QG9Ki8;c9LvovYUyvVF@K<2!v#tV5wCP^|rAkwC3pa)U#AU*gzv$K<(eMuk(VZ(RnzRmOg z`Th3U4%^*cxja)SJN8`BTg;X1)7qdWgm%`pHBCDsuLJU0zf8ynJ@qH@UNk)J^ze-K z!iBYD;&&|>7uvw)!28LkiA?`5<_+UF<4SVWT01fmpO-~k5I_I{1Q7Ut1#S(+Q^Uie zI#tenxZo@nKPot-+U>v_?_|zh&DdAZy*`t%YsV%{TV4uzyWp0cn~rBMd4j|`)Zn6*(VCCAIk zp~A81{rlakdCV5wQrXMNx!9%UQr2&6M?DH4j%v=u_ zn{CtDRLhTaZ%+ntauUhTlkod$KM8aHNkm(>n?z6}y;4c|3GrDvnh>fyGH)Z25RoF4 z4ncqQc!f!7pFAOpc5~Wx9VcJ1FI_lsQbw=ctHbX}_3u9j`pwSGt6(>!m@1UH(v*tf z*n15iUxTv0jxW8vnuco+#%(`0Rk#~#HCRJ}n`yT{o_cjeRG$lzEVA6)+*5~-bc%SJ zHes+;nLX*(DCE=Clo?NrjEEHx##t5BontN0Ri%3cwpGXG*Y@D*4J)3iUY9pheM5cz+femw`An_sW@CG=9;HNNW#LBFZV%fp zarR%E3VOJ-usgZv=q|mxgBwlzv)j|07XC&U?1l|nk~-4cDJ|Nx3DZKA*^@zs=}UTF zYHCWnSEIYVAWt;2CFgd<-^Qa)dm@mfXyK$<^|Wl6uG+C$IF5$lP=l#(sCzxyOK?;r zS}>)S9i%nU{F?g*!>`sF4Kpp%<~2WKrmACcl}U*pla9$}GLx#Ggi}`mt!GkSFm-pZ zIYz2hhqsM-qxSC@e#3B=4`ZYb@9rH*mF9zfu5*I`0tg_000IagfB*srAb^=l>5h>o04|deAisWTFTlfB*srAb{ZXI)^ZWnZ5=!QY00IagfB*srAb@FgIEufB*srAbtBBVzsZfK z2q1s}0tg_000IagfB*srbhAKjOcx>%>k+ykVztlzcQk9Ko0r7g5kLR|1Q0*~0R#|0 l009ILK)@Fm61sNk(T`s|S^fFR{U5eBKHdIqee3?c{{WfGb({bI diff --git a/package.json b/package.json index 27b42ea..6656f9a 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "private": true, "main": "index.js", "scripts": { + "init": "npx ts-node --project ./tsconfig.json -r tsconfig-paths/register source/db/init.ts alter", "start": "npx ts-node-dev --project ./tsconfig.json -r tsconfig-paths/register ./source/main.ts", "temp": "nodemon --exec 'npx ts-node-dev -r tsconfig-paths/register ./source/main.ts'" }, @@ -14,8 +15,15 @@ "dependencies": { "@hapi/hapi": "^20.1.2", "@hapi/inert": "^6.0.3", + "bcrypt": "^5.0.1", + "hapi-auth-jwt2": "^10.2.0", + "hapi-swagger": "^14.2.0", + "joi": "^17.4.0", + "jsonwebtoken": "^8.5.1", "multiparty": "^4.2.2", - "nodemon": "^2.0.7" + "nodemon": "^2.0.7", + "sequelize": "^6.6.2", + "sqlite3": "^5.0.2" }, "devDependencies": { "@hapi/vision": "^6.1.0", @@ -23,6 +31,7 @@ "dotenv": "^10.0.0", "ejs": "^3.1.6", "file-type": "^16.5.0", + "ts-node": "^10.0.0", "ts-node-dev": "^1.1.6", "tsconfig-paths": "^3.9.0", "typescript": "^4.3.2" diff --git a/packages/hapi-router/dist/hapi-router.cjs.js b/packages/hapi-router/dist/hapi-router.cjs.js index 9c3d1ee..aa15b96 100644 --- a/packages/hapi-router/dist/hapi-router.cjs.js +++ b/packages/hapi-router/dist/hapi-router.cjs.js @@ -3,14 +3,6 @@ Object.defineProperty(exports, '__esModule', { value: true }); -var fs = require('fs'); -var path = require('path'); - -function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - -var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs); -var path__default = /*#__PURE__*/_interopDefaultLegacy(path); - /*! ***************************************************************************** Copyright (c) Microsoft Corporation. @@ -38,6 +30,8 @@ function __values(o) { throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); } +var path$1 = require("path"); +var fs$1 = require("fs"); function removeIndex(ss) { var remove = function (str) { if (str.endsWith("/index")) { @@ -64,7 +58,7 @@ function isIndexEnd(str) { return str.length == 1 && str.endsWith("/"); } function walkDir(filePath, exclude) { - if (exclude === void 0) { exclude = ["node_modules", "^_", ".git", ".idea", ".gitignore", "client"]; } + if (exclude === void 0) { exclude = ["node_modules", "^_", ".git", ".idea", ".gitignore", "client", "\.txt$"]; } var files = []; function Data(opts) { this.relativeDir = opts.relativeDir; @@ -77,11 +71,11 @@ function walkDir(filePath, exclude) { } function readDir(filePath, dirname) { if (dirname === void 0) { dirname = "."; } - var res = fs__default['default'].readdirSync(filePath); + var res = fs$1.readdirSync(filePath); res.forEach(function (filename) { - var filepath = path__default['default'].resolve(filePath, filename); - var stat = fs__default['default'].statSync(filepath); - var name = filepath.split(path__default['default'].sep).slice(-1)[0]; + var filepath = path$1.resolve(filePath, filename); + var stat = fs$1.statSync(filepath); + var name = filepath.split(path$1.sep).slice(-1)[0]; if (typeof exclude === "string" && new RegExp(exclude).test(name)) { return; } @@ -94,17 +88,17 @@ function walkDir(filePath, exclude) { } } if (!stat.isFile()) { - readDir(filepath, dirname + path__default['default'].sep + name); + readDir(filepath, dirname + path$1.sep + name); } else { var data = new Data({ relativeDir: dirname, - relativeFile: dirname + path__default['default'].sep + path__default['default'].parse(filepath).base, - relativeFileNoExt: dirname + path__default['default'].sep + path__default['default'].parse(filepath).name, - file: path__default['default'].parse(filepath).base, - filename: path__default['default'].parse(filepath).name, + relativeFile: dirname + path$1.sep + path$1.parse(filepath).base, + relativeFileNoExt: dirname + path$1.sep + path$1.parse(filepath).name, + file: path$1.parse(filepath).base, + filename: path$1.parse(filepath).name, absoluteFile: filepath, - absoluteDir: path__default['default'].parse(filepath).dir, + absoluteDir: path$1.parse(filepath).dir, }); files.push(data); } @@ -146,21 +140,23 @@ function swagger(desc, notes, tags) { }; } +var path = require("path"); +var fs = require("fs"); var routes = ["所有路由路径:"]; -var index = new ((function () { - function hapiRouter() { +var routePlugin = (function () { + function routePlugin() { this.name = "routePlugin"; this.version = "0.0.1"; } - hapiRouter.prototype.register = function (server, options) { + routePlugin.prototype.register = function (server, options) { var sourceDir = options.sourceDir; var files = walkDir(sourceDir); files.forEach(function (file) { var e_1, _a; var filename = file.relativeFileNoExt; - var array = filename.split(path__default['default'].sep).slice(1); + var array = filename.split(path.sep).slice(1); var fileNoExt = removeIndex("/" + array.join("/")); - var moduleName = path__default['default'].resolve(sourceDir, filename); + var moduleName = path.resolve(sourceDir, filename); var obj = require(moduleName); if (obj.default) { var func = new (obj.default || obj)(); @@ -217,7 +213,14 @@ var index = new ((function () { options_1.notes = ff.$swagger[1]; options_1.tags = ff.$swagger[2]; } - routes.push(route); + var str = route; + if (options_1.auth) { + str += " 该路由需要权限"; + } + else { + str += " 该路由不需要权限"; + } + routes.push(str); server.route({ method: method, path: route, @@ -236,15 +239,18 @@ var index = new ((function () { } } }); - fs__default['default'].writeFileSync("route.txt", routes.join("\n"), { encoding: "utf-8" }); + fs.writeFileSync(path.resolve(sourceDir, "route.txt"), routes.join("\n"), { + encoding: "utf-8", + }); }; - return hapiRouter; -}()))(); + return routePlugin; +}()); +var plugin = new routePlugin(); exports.auth = auth; exports.config = config; -exports.default = index; exports.method = method; +exports.plugin = plugin; exports.route = route; exports.swagger = swagger; exports.validate = validate; diff --git a/packages/hapi-router/dist/hapi-router.cjs.js.map b/packages/hapi-router/dist/hapi-router.cjs.js.map index 06300b3..64a0da2 100644 --- a/packages/hapi-router/dist/hapi-router.cjs.js.map +++ b/packages/hapi-router/dist/hapi-router.cjs.js.map @@ -1 +1 @@ -{"version":3,"file":"hapi-router.cjs.js","sources":["../src/util/index.ts","../src/util/decorators.ts","../src/index.ts"],"sourcesContent":["// @ts-nocheck\n\nimport fs from \"fs\"\nimport path from \"path\"\n\nexport function removeIndex(ss:any) {\n const remove = (str:any) => {\n if (str.endsWith(\"/index\")) {\n return str.slice(0, -6);\n }\n if (str.endsWith(\"index\")) {\n return str.slice(0, -5);\n }\n return str ? str : \"/\";\n };\n let r = true;\n let rr = ss;\n while (r) {\n if (rr.endsWith(\"/index\")) {\n rr = remove(rr);\n } else {\n r = false;\n }\n }\n return rr ? rr : \"/\";\n}\n\nexport function isIndexEnd(str:any) {\n return str.length == 1 && str.endsWith(\"/\");\n}\n\n\nexport function walkDir(\n filePath:any,\n exclude = [\"node_modules\", \"^_\", \".git\", \".idea\", \".gitignore\", \"client\"]\n) {\n let files:any[] = [];\n function Data(opts:any) {\n this.relativeDir = opts.relativeDir;\n this.relativeFile = opts.relativeFile;\n this.filename = opts.filename;\n this.file = opts.file;\n this.absoluteFile = opts.absoluteFile;\n this.relativeFileNoExt = opts.relativeFileNoExt;\n this.absoluteDir = opts.absoluteDir;\n }\n function readDir(filePath, dirname = \".\") {\n let res = fs.readdirSync(filePath);\n res.forEach((filename) => {\n const filepath = path.resolve(filePath, filename);\n const stat = fs.statSync(filepath);\n const name = filepath.split(path.sep).slice(-1)[0];\n if (typeof exclude === \"string\" && new RegExp(exclude).test(name)) {\n return;\n }\n if (Array.isArray(exclude)) {\n for (let i = 0; i < exclude.length; i++) {\n const excludeItem = exclude[i];\n if (new RegExp(excludeItem).test(name)) {\n return;\n }\n }\n }\n if (!stat.isFile()) {\n readDir(filepath, dirname + path.sep + name);\n } else {\n const data = new Data({\n relativeDir: dirname,\n relativeFile: dirname + path.sep + path.parse(filepath).base,\n relativeFileNoExt: dirname + path.sep + path.parse(filepath).name,\n file: path.parse(filepath).base,\n filename: path.parse(filepath).name,\n absoluteFile: filepath,\n absoluteDir: path.parse(filepath).dir,\n });\n files.push(data);\n }\n });\n }\n readDir(filePath);\n return files;\n}\n","// @ts-nocheck\n\nexport function method(opts?:string|Array) {\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\n target[propertyKey].$method = opts\n }\n}\nexport function route(route?:string) {\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\n target[propertyKey].$route = route\n }\n}\n\nexport function config(options:Object) {\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\n target[propertyKey].$options = options\n }\n}\n\nexport function auth(isAuth:boolean = true) {\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\n target[propertyKey].$auth = isAuth\n }\n}\n\nexport function validate(validate:Object) {\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\n target[propertyKey].$validate = validate\n }\n}\n\nexport function swagger(desc,notes,tags) {\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\n target[propertyKey].$swagger = [desc,notes,tags]\n }\n}\n","// @ts-nocheck\n\nimport { walkDir, removeIndex, isIndexEnd } from \"./util\";\nimport path from \"path\";\nimport fs from \"fs\";\n\nconst routes = [\"所有路由路径:\"];\n\nexport * from \"./util/decorators\";\n\nexport default new (class hapiRouter {\n constructor() {}\n public name: string = \"routePlugin\";\n public version: string = \"0.0.1\";\n public register(server:any, options:any) {\n const sourceDir = options.sourceDir;\n\n const files = walkDir(sourceDir);\n files.forEach((file) => {\n let filename = file.relativeFileNoExt;\n let array = filename.split(path.sep).slice(1);\n let fileNoExt = removeIndex(\"/\" + array.join(\"/\"));\n const moduleName = path.resolve(sourceDir, filename);\n const obj = require(moduleName);\n if (obj.default) {\n const func = new (obj.default || obj)();\n const prototype = Object.getPrototypeOf(func);\n const keys = Reflect.ownKeys(prototype);\n for (const key of keys) {\n if (key !== \"constructor\") {\n let ff = func[key];\n // 默认方法\n const method = ff.$method || \"GET\";\n // 路由收集规则\n let route = \"\";\n if (ff.$route) {\n if (isIndexEnd(fileNoExt)) {\n route = ff.$route;\n } else {\n route = fileNoExt + ff.$route;\n }\n } else {\n if (isIndexEnd(fileNoExt)) {\n route = fileNoExt + key.toString();\n } else {\n route = fileNoExt + \"/\" + key.toString();\n }\n }\n route = removeIndex(route);\n // 配置规则\n const options = ff.$options ? ff.$options : {};\n if (!options.auth) {\n if (ff.$auth == undefined) {\n if (route.startsWith(\"/api\")) {\n options.auth = \"jwt\";\n } else {\n options.auth = false;\n }\n } else if (ff.$auth) {\n options.auth = \"jwt\";\n } else {\n options.auth = false;\n }\n }\n if (!options.validate) {\n if (ff.$validate) {\n options.validate = ff.$validate;\n }\n }\n if (ff.$swagger && route.startsWith(\"/api\")) {\n options.description = ff.$swagger[0];\n options.notes = ff.$swagger[1];\n options.tags = ff.$swagger[2];\n }\n\n routes.push(route);\n server.route({\n method: method,\n path: route,\n handler: ff,\n options: options,\n });\n }\n }\n }\n });\n fs.writeFileSync(\"route.txt\", routes.join(\"\\n\"), { encoding: \"utf-8\" });\n }\n})();\n"],"names":["fs","path"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"hapi-router.cjs.js","sources":["../src/util/index.ts","../src/util/decorators.ts","../src/index.ts"],"sourcesContent":["// @ts-nocheck\n\nconst path = require(\"path\")\nconst fs = require(\"fs\")\n\nexport function removeIndex(ss:any) {\n const remove = (str:any) => {\n if (str.endsWith(\"/index\")) {\n return str.slice(0, -6);\n }\n if (str.endsWith(\"index\")) {\n return str.slice(0, -5);\n }\n return str ? str : \"/\";\n };\n let r = true;\n let rr = ss;\n while (r) {\n if (rr.endsWith(\"/index\")) {\n rr = remove(rr);\n } else {\n r = false;\n }\n }\n return rr ? rr : \"/\";\n}\n\nexport function isIndexEnd(str:any) {\n return str.length == 1 && str.endsWith(\"/\");\n}\n\n\nexport function walkDir(\n filePath:any,\n exclude = [\"node_modules\", \"^_\", \".git\", \".idea\", \".gitignore\", \"client\",\"\\.txt$\"]\n) {\n let files:any[] = [];\n function Data(opts:any) {\n this.relativeDir = opts.relativeDir;\n this.relativeFile = opts.relativeFile;\n this.filename = opts.filename;\n this.file = opts.file;\n this.absoluteFile = opts.absoluteFile;\n this.relativeFileNoExt = opts.relativeFileNoExt;\n this.absoluteDir = opts.absoluteDir;\n }\n function readDir(filePath, dirname = \".\") {\n let res = fs.readdirSync(filePath);\n res.forEach((filename) => {\n const filepath = path.resolve(filePath, filename);\n const stat = fs.statSync(filepath);\n const name = filepath.split(path.sep).slice(-1)[0];\n if (typeof exclude === \"string\" && new RegExp(exclude).test(name)) {\n return;\n }\n if (Array.isArray(exclude)) {\n for (let i = 0; i < exclude.length; i++) {\n const excludeItem = exclude[i];\n if (new RegExp(excludeItem).test(name)) {\n return;\n }\n }\n }\n if (!stat.isFile()) {\n readDir(filepath, dirname + path.sep + name);\n } else {\n const data = new Data({\n relativeDir: dirname,\n relativeFile: dirname + path.sep + path.parse(filepath).base,\n relativeFileNoExt: dirname + path.sep + path.parse(filepath).name,\n file: path.parse(filepath).base,\n filename: path.parse(filepath).name,\n absoluteFile: filepath,\n absoluteDir: path.parse(filepath).dir,\n });\n files.push(data);\n }\n });\n }\n readDir(filePath);\n return files;\n}\n","// @ts-nocheck\n\nexport function method(opts?:string|Array) {\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\n target[propertyKey].$method = opts\n }\n}\nexport function route(route?:string) {\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\n target[propertyKey].$route = route\n }\n}\n\nexport function config(options:Object) {\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\n target[propertyKey].$options = options\n }\n}\n\nexport function auth(isAuth:boolean = true) {\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\n target[propertyKey].$auth = isAuth\n }\n}\n\nexport function validate(validate:Object) {\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\n target[propertyKey].$validate = validate\n }\n}\n\nexport function swagger(desc,notes,tags) {\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\n target[propertyKey].$swagger = [desc,notes,tags]\n }\n}\n","// @ts-nocheck\n\nimport { walkDir, removeIndex, isIndexEnd } from \"./util\";\nconst path = require(\"path\")\nconst fs = require(\"fs\")\n\nconst routes = [\"所有路由路径:\"];\n\nclass routePlugin {\n public name: string = \"routePlugin\";\n public version: string = \"0.0.1\";\n public register(server: any, options: any) {\n const sourceDir = options.sourceDir;\n\n const files = walkDir(sourceDir);\n files.forEach((file) => {\n let filename = file.relativeFileNoExt;\n let array = filename.split(path.sep).slice(1);\n let fileNoExt = removeIndex(\"/\" + array.join(\"/\"));\n const moduleName = path.resolve(sourceDir, filename);\n const obj = require(moduleName);\n if (obj.default) {\n const func = new (obj.default || obj)();\n const prototype = Object.getPrototypeOf(func);\n const keys = Reflect.ownKeys(prototype);\n for (const key of keys) {\n if (key !== \"constructor\") {\n let ff = func[key];\n // 默认方法\n const method = ff.$method || \"GET\";\n // 路由收集规则\n let route = \"\";\n if (ff.$route) {\n if (isIndexEnd(fileNoExt)) {\n route = ff.$route;\n } else {\n route = fileNoExt + ff.$route;\n }\n } else {\n if (isIndexEnd(fileNoExt)) {\n route = fileNoExt + key.toString();\n } else {\n route = fileNoExt + \"/\" + key.toString();\n }\n }\n route = removeIndex(route);\n // 配置规则\n const options = ff.$options ? ff.$options : {};\n if (!options.auth) {\n if (ff.$auth == undefined) {\n if (route.startsWith(\"/api\")) {\n options.auth = \"jwt\";\n } else {\n options.auth = false;\n }\n } else if (ff.$auth) {\n options.auth = \"jwt\";\n } else {\n options.auth = false;\n }\n }\n if (!options.validate) {\n if (ff.$validate) {\n options.validate = ff.$validate;\n }\n }\n if (ff.$swagger && route.startsWith(\"/api\")) {\n options.description = ff.$swagger[0];\n options.notes = ff.$swagger[1];\n options.tags = ff.$swagger[2];\n }\n let str = route;\n if (options.auth) {\n str += \" 该路由需要权限\";\n } else {\n str += \" 该路由不需要权限\";\n }\n routes.push(str);\n server.route({\n method: method,\n path: route,\n handler: ff,\n options: options,\n });\n }\n }\n }\n });\n fs.writeFileSync(path.resolve(sourceDir, \"route.txt\"), routes.join(\"\\n\"), {\n encoding: \"utf-8\",\n });\n }\n}\n\nconst plugin = new routePlugin();\n\nexport { plugin };\nexport * from \"./util/decorators\";\n"],"names":["path","fs"],"mappings":"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"} \ No newline at end of file diff --git a/packages/hapi-router/dist/index.d.ts b/packages/hapi-router/dist/index.d.ts index 3bcceb8..6c01152 100644 --- a/packages/hapi-router/dist/index.d.ts +++ b/packages/hapi-router/dist/index.d.ts @@ -1,13 +1,14 @@ // Generated by dts-bundle v0.7.3 declare module '@noderun/hapi-router' { - export * from "@noderun/hapi-router/util/decorators"; - const _default: { + class routePlugin { name: string; version: string; register(server: any, options: any): void; - }; - export default _default; + } + const plugin: routePlugin; + export { plugin }; + export * from "@noderun/hapi-router/util/decorators"; } declare module '@noderun/hapi-router/util/decorators' { diff --git a/packages/hapi-router/package-lock.json b/packages/hapi-router/package-lock.json index 23aa3f5..4c1eea9 100755 --- a/packages/hapi-router/package-lock.json +++ b/packages/hapi-router/package-lock.json @@ -8,6 +8,9 @@ "name": "@noderun/hapi-router", "version": "0.0.1", "license": "ISC", + "dependencies": { + "@types/node": "^15.12.2" + }, "devDependencies": { "@rollup/plugin-alias": "^3.1.1", "@rollup/plugin-commonjs": "^15.0.0", @@ -139,10 +142,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.0.tgz", - "integrity": "sha512-j2tekvJCO7j22cs+LO6i0kRPhmQ9MXaPZ55TzOc1lzkN5b6BWqq4AFjl04s1oRRQ1v5rSe+KEvnLUSTonuls/A==", - "dev": true + "version": "15.12.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz", + "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==" }, "node_modules/ansi-styles": { "version": "4.2.1", @@ -316,6 +318,12 @@ "node": ">= 0.10.0" } }, + "node_modules/dts-bundle/node_modules/@types/node": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.0.tgz", + "integrity": "sha512-j2tekvJCO7j22cs+LO6i0kRPhmQ9MXaPZ55TzOc1lzkN5b6BWqq4AFjl04s1oRRQ1v5rSe+KEvnLUSTonuls/A==", + "dev": true + }, "node_modules/dts-bundle/node_modules/glob": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", @@ -1180,10 +1188,9 @@ "dev": true }, "@types/node": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.0.tgz", - "integrity": "sha512-j2tekvJCO7j22cs+LO6i0kRPhmQ9MXaPZ55TzOc1lzkN5b6BWqq4AFjl04s1oRRQ1v5rSe+KEvnLUSTonuls/A==", - "dev": true + "version": "15.12.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz", + "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==" }, "ansi-styles": { "version": "4.2.1", @@ -1321,6 +1328,12 @@ "mkdirp": "^0.5.0" }, "dependencies": { + "@types/node": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.0.tgz", + "integrity": "sha512-j2tekvJCO7j22cs+LO6i0kRPhmQ9MXaPZ55TzOc1lzkN5b6BWqq4AFjl04s1oRRQ1v5rSe+KEvnLUSTonuls/A==", + "dev": true + }, "glob": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", diff --git a/packages/hapi-router/package.json b/packages/hapi-router/package.json index da8dc98..716da4c 100755 --- a/packages/hapi-router/package.json +++ b/packages/hapi-router/package.json @@ -6,7 +6,7 @@ "typings": "dist/index.d.ts", "buildOptions": { "filename": "hapi-router", - "var": "hapi-router", + "var": "hapiRouter", "formats": [ "cjs" ] @@ -22,6 +22,7 @@ "@rollup/plugin-alias": "^3.1.1", "@rollup/plugin-commonjs": "^15.0.0", "@rollup/plugin-replace": "^2.3.3", + "@types/node": "^15.12.2", "chalk": "^4.1.0", "dts-bundle": "^0.7.3", "execa": "^4.0.3", diff --git a/packages/hapi-router/pnpm-lock.yaml b/packages/hapi-router/pnpm-lock.yaml index 6eb17fb..67d731c 100644 --- a/packages/hapi-router/pnpm-lock.yaml +++ b/packages/hapi-router/pnpm-lock.yaml @@ -4,6 +4,7 @@ specifiers: '@rollup/plugin-alias': ^3.1.1 '@rollup/plugin-commonjs': ^15.0.0 '@rollup/plugin-replace': ^2.3.3 + '@types/node': ^15.12.2 chalk: ^4.1.0 dts-bundle: ^0.7.3 execa: ^4.0.3 @@ -20,6 +21,7 @@ devDependencies: '@rollup/plugin-alias': 3.1.2_rollup@2.51.2 '@rollup/plugin-commonjs': 15.1.0_rollup@2.51.2 '@rollup/plugin-replace': 2.4.2_rollup@2.51.2 + '@types/node': 15.12.2 chalk: 4.1.1 dts-bundle: 0.7.3 execa: 4.1.0 @@ -27,7 +29,7 @@ devDependencies: ftp-deploy: 2.4.1 lodash: 4.17.21 rollup: 2.51.2 - rollup-plugin-sourcemaps: 0.6.3_rollup@2.51.2 + rollup-plugin-sourcemaps: 0.6.3_0092beb8efba53e1329cf7064a1da378 rollup-plugin-typescript2: 0.27.3_rollup@2.51.2+typescript@3.9.9 tslib: 2.3.0 typescript: 3.9.9 @@ -117,6 +119,10 @@ packages: resolution: {integrity: sha1-fyrX7FX5FEgvybHsS7GuYCjUYGY=} dev: true + /@types/node/15.12.2: + resolution: {integrity: sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==} + dev: true + /@types/node/8.0.0: resolution: {integrity: sha512-j2tekvJCO7j22cs+LO6i0kRPhmQ9MXaPZ55TzOc1lzkN5b6BWqq4AFjl04s1oRRQ1v5rSe+KEvnLUSTonuls/A==} dev: true @@ -644,7 +650,7 @@ packages: engines: {node: '>= 4'} dev: true - /rollup-plugin-sourcemaps/0.6.3_rollup@2.51.2: + /rollup-plugin-sourcemaps/0.6.3_0092beb8efba53e1329cf7064a1da378: resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} engines: {node: '>=10.0.0'} peerDependencies: @@ -655,6 +661,7 @@ packages: optional: true dependencies: '@rollup/pluginutils': 3.1.0_rollup@2.51.2 + '@types/node': 15.12.2 rollup: 2.51.2 source-map-resolve: 0.6.0 dev: true diff --git a/packages/hapi-router/rollup.config.js b/packages/hapi-router/rollup.config.js index 5d9fe87..d8cdc39 100755 --- a/packages/hapi-router/rollup.config.js +++ b/packages/hapi-router/rollup.config.js @@ -43,6 +43,7 @@ function createPlugin() { }); const replacePlugin = replace({ __DEV__: isProd, + preventAssignment: true }); plugin = [sourcemaps(), commonjs(), tsPlugin, aliasPlugin, replacePlugin]; return plugin; diff --git a/packages/hapi-router/src/index.ts b/packages/hapi-router/src/index.ts index 4f0a956..05e7cb3 100755 --- a/packages/hapi-router/src/index.ts +++ b/packages/hapi-router/src/index.ts @@ -1,16 +1,12 @@ - // @ts-nocheck import { walkDir, removeIndex, isIndexEnd } from "./util"; -import path from "path"; -import fs from "fs"; +const path = require("path") +const fs = require("fs") const routes = ["所有路由路径:"]; -export * from "./util/decorators"; - -export default new (class hapiRouter { - constructor() {} +class routePlugin { public name: string = "routePlugin"; public version: string = "0.0.1"; public register(server: any, options: any) { @@ -73,8 +69,13 @@ export default new (class hapiRouter { options.notes = ff.$swagger[1]; options.tags = ff.$swagger[2]; } - - routes.push(route); + let str = route; + if (options.auth) { + str += " 该路由需要权限"; + } else { + str += " 该路由不需要权限"; + } + routes.push(str); server.route({ method: method, path: route, @@ -89,4 +90,9 @@ export default new (class hapiRouter { encoding: "utf-8", }); } -})(); +} + +const plugin = new routePlugin(); + +export { plugin }; +export * from "./util/decorators"; diff --git a/packages/hapi-router/src/util/index.ts b/packages/hapi-router/src/util/index.ts index 8ea7f8a..8a955fb 100644 --- a/packages/hapi-router/src/util/index.ts +++ b/packages/hapi-router/src/util/index.ts @@ -1,7 +1,7 @@ // @ts-nocheck -import fs from "fs" -import path from "path" +const path = require("path") +const fs = require("fs") export function removeIndex(ss:any) { const remove = (str:any) => { @@ -32,7 +32,7 @@ export function isIndexEnd(str:any) { export function walkDir( filePath:any, - exclude = ["node_modules", "^_", ".git", ".idea", ".gitignore", "client"] + exclude = ["node_modules", "^_", ".git", ".idea", ".gitignore", "client","\.txt$"] ) { let files:any[] = []; function Data(opts:any) { diff --git a/packages/hapi-router/tsconfig.json b/packages/hapi-router/tsconfig.json index 2693d81..225c1d9 100755 --- a/packages/hapi-router/tsconfig.json +++ b/packages/hapi-router/tsconfig.json @@ -8,7 +8,7 @@ // 目标js的版本 "target": "ES5", // 目标代码的模块结构版本 - "module": "ESNext", + "module": "ES2015", // 在表达式和声明上有隐含的 any类型时报错。 "noImplicitAny": true, // "__extends"等函数 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a4b25e..96cd305 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,11 +5,19 @@ specifiers: '@hapi/inert': ^6.0.3 '@hapi/vision': ^6.1.0 '@noderun/hapi-router': link:packages/hapi-router + bcrypt: ^5.0.1 dotenv: ^10.0.0 ejs: ^3.1.6 file-type: ^16.5.0 + hapi-auth-jwt2: ^10.2.0 + hapi-swagger: ^14.2.0 + joi: ^17.4.0 + jsonwebtoken: ^8.5.1 multiparty: ^4.2.2 nodemon: ^2.0.7 + sequelize: ^6.6.2 + sqlite3: ^5.0.2 + ts-node: ^10.0.0 ts-node-dev: ^1.1.6 tsconfig-paths: ^3.9.0 typescript: ^4.3.2 @@ -17,8 +25,15 @@ specifiers: dependencies: '@hapi/hapi': 20.1.4 '@hapi/inert': 6.0.3 + bcrypt: 5.0.1 + hapi-auth-jwt2: 10.2.0 + hapi-swagger: 14.2.0_@hapi+hapi@20.1.4+joi@17.4.0 + joi: 17.4.0 + jsonwebtoken: 8.5.1 multiparty: 4.2.2 nodemon: 2.0.7 + sequelize: 6.6.2_sqlite3@5.0.2 + sqlite3: 5.0.2 devDependencies: '@hapi/vision': 6.1.0 @@ -26,6 +41,7 @@ devDependencies: dotenv: 10.0.0 ejs: 3.1.6 file-type: 16.5.0 + ts-node: 10.0.0_typescript@4.3.2 ts-node-dev: 1.1.6_typescript@4.3.2 tsconfig-paths: 3.9.0 typescript: 4.3.2 @@ -272,6 +288,37 @@ packages: '@hapi/hoek': 9.2.0 dev: false + /@mapbox/node-pre-gyp/1.0.5: + resolution: {integrity: sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA==} + hasBin: true + dependencies: + detect-libc: 1.0.3 + https-proxy-agent: 5.0.0 + make-dir: 3.1.0 + node-fetch: 2.6.1 + nopt: 5.0.0 + npmlog: 4.1.2 + rimraf: 3.0.2 + semver: 7.3.5 + tar: 6.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@sideway/address/4.1.2: + resolution: {integrity: sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==} + dependencies: + '@hapi/hoek': 9.2.0 + dev: false + + /@sideway/formula/3.0.0: + resolution: {integrity: sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==} + dev: false + + /@sideway/pinpoint/2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + dev: false + /@sindresorhus/is/0.14.0: resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} engines: {node: '>=6'} @@ -288,6 +335,22 @@ packages: resolution: {integrity: sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w==} dev: true + /@tsconfig/node10/1.0.8: + resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==} + dev: true + + /@tsconfig/node12/1.0.8: + resolution: {integrity: sha512-LM6XwBhjZRls1qJGpiM/It09SntEwe9M0riXRfQ9s6XlJQG0JPGl92ET18LtGeYh/GuOtafIXqwZeqLOd0FNFQ==} + dev: true + + /@tsconfig/node14/1.0.1: + resolution: {integrity: sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==} + dev: true + + /@tsconfig/node16/1.0.1: + resolution: {integrity: sha512-FTgBI767POY/lKNDNbIzgAX6miIDBs6NTCbdlDb8TrWovHsSvaVIZDlTqym29C6UqhzwcJx4CYr+AlrMywA0cA==} + dev: true + /@types/debug/4.1.5: resolution: {integrity: sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==} dev: true @@ -298,7 +361,6 @@ packages: /@types/node/15.12.2: resolution: {integrity: sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==} - dev: true /@types/readable-stream/2.3.10: resolution: {integrity: sha512-xwSXvAv9x4B9Vj88AMZnFyEVLilz1EBxKvRUhGqIF4nJpRQBSTm7jS236X4Y9Y2qPsVvaMxwrGJlNhLHEahlFQ==} @@ -319,12 +381,36 @@ packages: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} dev: false + /agent-base/6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: false + optional: true + /ansi-align/3.0.0: resolution: {integrity: sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==} dependencies: string-width: 3.1.0 dev: false + /ansi-regex/2.1.1: + resolution: {integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8=} + engines: {node: '>=0.10.0'} + dev: false + /ansi-regex/4.1.0: resolution: {integrity: sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==} engines: {node: '>=6'} @@ -349,6 +435,10 @@ packages: color-convert: 2.0.1 dev: false + /any-promise/1.3.0: + resolution: {integrity: sha1-q8av7tzqUugJzcA3au0845Y10X8=} + dev: false + /anymatch/3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} @@ -356,26 +446,97 @@ packages: normalize-path: 3.0.0 picomatch: 2.3.0 + /aproba/1.2.0: + resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} + dev: false + + /are-we-there-yet/1.1.5: + resolution: {integrity: sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==} + dependencies: + delegates: 1.0.0 + readable-stream: 2.3.7 + dev: false + /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true + /argparse/1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: false + /array-find-index/1.0.2: resolution: {integrity: sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=} engines: {node: '>=0.10.0'} dev: true + /asn1/0.2.4: + resolution: {integrity: sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==} + dependencies: + safer-buffer: 2.1.2 + dev: false + optional: true + + /assert-plus/1.0.0: + resolution: {integrity: sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=} + engines: {node: '>=0.8'} + dev: false + optional: true + /async/0.9.2: resolution: {integrity: sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=} dev: true + /asynckit/0.4.0: + resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} + dev: false + optional: true + + /aws-sign2/0.7.0: + resolution: {integrity: sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=} + dev: false + optional: true + + /aws4/1.11.0: + resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} + dev: false + optional: true + /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + /bcrypt-pbkdf/1.0.2: + resolution: {integrity: sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=} + dependencies: + tweetnacl: 0.14.5 + dev: false + optional: true + + /bcrypt/5.0.1: + resolution: {integrity: sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==} + engines: {node: '>= 10.0.0'} + requiresBuild: true + dependencies: + '@mapbox/node-pre-gyp': 1.0.5 + node-addon-api: 3.2.1 + transitivePeerDependencies: + - supports-color + dev: false + /binary-extensions/2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} + /block-stream/0.0.9: + resolution: {integrity: sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=} + engines: {node: 0.4 || >=0.5.8} + dependencies: + inherits: 2.0.4 + dev: false + optional: true + /boxen/4.2.0: resolution: {integrity: sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==} engines: {node: '>=8'} @@ -402,6 +563,10 @@ packages: dependencies: fill-range: 7.0.1 + /buffer-equal-constant-time/1.0.1: + resolution: {integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=} + dev: false + /buffer-from/1.1.1: resolution: {integrity: sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==} dev: true @@ -419,6 +584,10 @@ packages: responselike: 1.0.2 dev: false + /call-me-maybe/1.0.1: + resolution: {integrity: sha1-JtII6onje1y95gJQoV8DHBak1ms=} + dev: false + /camelcase-keys/2.1.0: resolution: {integrity: sha1-MIvur/3ygRkFHvodkyITyRuPkuc=} engines: {node: '>=0.10.0'} @@ -437,6 +606,11 @@ packages: engines: {node: '>=6'} dev: false + /caseless/0.12.0: + resolution: {integrity: sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=} + dev: false + optional: true + /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -468,6 +642,15 @@ packages: optionalDependencies: fsevents: 2.3.2 + /chownr/1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + dev: false + + /chownr/2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: false + /ci-info/2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} dev: false @@ -483,6 +666,11 @@ packages: mimic-response: 1.0.1 dev: false + /code-point-at/1.1.0: + resolution: {integrity: sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=} + engines: {node: '>=0.10.0'} + dev: false + /color-convert/1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -504,6 +692,19 @@ packages: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: false + /combined-stream/1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: false + optional: true + + /commander/2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: false + optional: true + /concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} @@ -519,6 +720,25 @@ packages: xdg-basedir: 4.0.0 dev: false + /console-control-strings/1.1.0: + resolution: {integrity: sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=} + dev: false + + /cookie/0.4.1: + resolution: {integrity: sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==} + engines: {node: '>= 0.6'} + dev: false + + /core-js/2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js. + requiresBuild: true + dev: false + + /core-util-is/1.0.2: + resolution: {integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=} + dev: false + /create-require/1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true @@ -535,6 +755,14 @@ packages: array-find-index: 1.0.2 dev: true + /dashdash/1.14.1: + resolution: {integrity: sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + dev: false + optional: true + /dateformat/1.0.12: resolution: {integrity: sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=} hasBin: true @@ -555,6 +783,18 @@ packages: ms: 2.1.3 dev: false + /debug/4.3.1: + resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: false + /decamelize/1.2.0: resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} engines: {node: '>=0.10.0'} @@ -576,11 +816,27 @@ packages: resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} dev: false + /delayed-stream/1.0.0: + resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} + engines: {node: '>=0.4.0'} + dev: false + optional: true + + /delegates/1.0.0: + resolution: {integrity: sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=} + dev: false + /depd/1.1.2: resolution: {integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=} engines: {node: '>= 0.6'} dev: false + /detect-libc/1.0.3: + resolution: {integrity: sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=} + engines: {node: '>=0.10'} + hasBin: true + dev: false + /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -598,6 +854,10 @@ packages: engines: {node: '>=10'} dev: true + /dottie/2.0.2: + resolution: {integrity: sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==} + dev: false + /duplexer3/0.1.4: resolution: {integrity: sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=} dev: false @@ -608,6 +868,20 @@ packages: xtend: 4.0.2 dev: true + /ecc-jsbn/0.1.2: + resolution: {integrity: sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=} + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: false + optional: true + + /ecdsa-sig-formatter/1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + dependencies: + safe-buffer: 5.2.1 + dev: false + /ejs/3.1.6: resolution: {integrity: sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==} engines: {node: '>=0.10.0'} @@ -646,6 +920,33 @@ packages: engines: {node: '>=0.8.0'} dev: true + /esprima/4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /extend/3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: false + optional: true + + /extsprintf/1.3.0: + resolution: {integrity: sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=} + engines: {'0': node >=0.6.0} + dev: false + optional: true + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: false + optional: true + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: false + optional: true + /file-type/16.5.0: resolution: {integrity: sha512-OxgWA9tbL8N/WP00GD1z8O0MiwQKFyWRs1q+3FhjdvcGgKqwxcejyGWso3n4/IMU6DdwV+ARZ4A7TTnPkDcSiw==} engines: {node: '>=8'} @@ -675,9 +976,40 @@ packages: pinkie-promise: 2.0.1 dev: true + /forever-agent/0.6.1: + resolution: {integrity: sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=} + dev: false + optional: true + + /form-data/2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.31 + dev: false + optional: true + + /format-util/1.0.5: + resolution: {integrity: sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==} + dev: false + + /fs-minipass/1.2.7: + resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==} + dependencies: + minipass: 2.9.0 + dev: false + + /fs-minipass/2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.1.3 + dev: false + /fs.realpath/1.0.0: resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} - dev: true /fsevents/2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} @@ -685,10 +1017,34 @@ packages: os: [darwin] optional: true + /fstream/1.0.12: + resolution: {integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==} + engines: {node: '>=0.6'} + dependencies: + graceful-fs: 4.2.6 + inherits: 2.0.4 + mkdirp: 0.5.5 + rimraf: 2.7.1 + dev: false + optional: true + /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true + /gauge/2.7.4: + resolution: {integrity: sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=} + dependencies: + aproba: 1.2.0 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.3 + string-width: 1.0.2 + strip-ansi: 3.0.1 + wide-align: 1.1.3 + dev: false + /get-stdin/4.0.1: resolution: {integrity: sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=} engines: {node: '>=0.10.0'} @@ -708,6 +1064,13 @@ packages: pump: 3.0.0 dev: false + /getpass/0.1.7: + resolution: {integrity: sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=} + dependencies: + assert-plus: 1.0.0 + dev: false + optional: true + /glob-parent/5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -723,7 +1086,6 @@ packages: minimatch: 3.0.4 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true /global-dirs/2.1.0: resolution: {integrity: sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==} @@ -752,6 +1114,62 @@ packages: /graceful-fs/4.2.6: resolution: {integrity: sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==} + /handlebars/4.7.7: + resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} + engines: {node: '>=0.4.7'} + hasBin: true + dependencies: + minimist: 1.2.5 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.13.9 + dev: false + + /hapi-auth-jwt2/10.2.0: + resolution: {integrity: sha512-6Xkt0LHNBglYWOlFulNgf5pUPqRGMKpAHZjwEZqC8/07TVlgxr240pENctrthcLi8k/yCunm7x2xCSLNyTGKmg==} + engines: {node: '>=12.0.0'} + dependencies: + '@hapi/boom': 9.1.2 + cookie: 0.4.1 + jsonwebtoken: 8.5.1 + dev: false + + /hapi-swagger/14.2.0_@hapi+hapi@20.1.4+joi@17.4.0: + resolution: {integrity: sha512-S0XoYfWOsMXA4rk43YCCzNUFW2zNHKfDcagJqrurTMcJgyKK7soHzEbaF34m/kyeT4n4YiKLDdcFhfXzSAMycw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@hapi/hapi': ^20.0.0 + joi: 17.x + dependencies: + '@hapi/boom': 9.1.2 + '@hapi/hapi': 20.1.4 + '@hapi/hoek': 9.2.0 + handlebars: 4.7.7 + http-status: 1.5.0 + joi: 17.4.0 + json-schema-ref-parser: 6.1.0 + swagger-parser: 4.0.2 + swagger-ui-dist: 3.50.0 + dev: false + + /har-schema/2.0.0: + resolution: {integrity: sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=} + engines: {node: '>=4'} + dev: false + optional: true + + /har-validator/5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + dev: false + optional: true + /has-flag/3.0.0: resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} engines: {node: '>=4'} @@ -761,6 +1179,10 @@ packages: engines: {node: '>=8'} dev: false + /has-unicode/2.0.1: + resolution: {integrity: sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=} + dev: false + /has-yarn/2.1.0: resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} engines: {node: '>=8'} @@ -792,6 +1214,38 @@ packages: toidentifier: 1.0.0 dev: false + /http-signature/1.2.0: + resolution: {integrity: sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=} + engines: {node: '>=0.8', npm: '>=1.3.7'} + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.1 + sshpk: 1.16.1 + dev: false + optional: true + + /http-status/1.5.0: + resolution: {integrity: sha512-wcGvY31MpFNHIkUcXHHnvrE4IKYlpvitJw5P/1u892gMBAM46muQ+RH7UN1d+Ntnfx5apnOnVY6vcLmrWHOLwg==} + engines: {node: '>= 0.4.0'} + dev: false + + /https-proxy-agent/5.0.0: + resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /iconv-lite/0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: false + /ieee754/1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true @@ -800,6 +1254,12 @@ packages: resolution: {integrity: sha1-SMptcvbGo68Aqa1K5odr44ieKwk=} dev: false + /ignore-walk/3.0.4: + resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==} + dependencies: + minimatch: 3.0.4 + dev: false + /import-lazy/2.1.0: resolution: {integrity: sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=} engines: {node: '>=4'} @@ -817,12 +1277,16 @@ packages: repeating: 2.0.1 dev: true + /inflection/1.12.0: + resolution: {integrity: sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=} + engines: {'0': node >= 0.4.0} + dev: false + /inflight/1.0.6: resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: true /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -867,6 +1331,13 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-fullwidth-code-point/1.0.0: + resolution: {integrity: sha1-754xOG8DGn8NZDr4L95QxFfvAMs=} + engines: {node: '>=0.10.0'} + dependencies: + number-is-nan: 1.0.1 + dev: false + /is-fullwidth-code-point/2.0.0: resolution: {integrity: sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=} engines: {node: '>=4'} @@ -922,6 +1393,20 @@ packages: resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} dev: false + /isarray/1.0.0: + resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} + dev: false + + /isexe/2.0.0: + resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} + dev: false + optional: true + + /isstream/0.1.2: + resolution: {integrity: sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=} + dev: false + optional: true + /jake/10.8.2: resolution: {integrity: sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==} hasBin: true @@ -932,16 +1417,113 @@ packages: minimatch: 3.0.4 dev: true - /json-buffer/3.0.0: - resolution: {integrity: sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=} + /joi/17.4.0: + resolution: {integrity: sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg==} + dependencies: + '@hapi/hoek': 9.2.0 + '@hapi/topo': 5.0.0 + '@sideway/address': 4.1.2 + '@sideway/formula': 3.0.0 + '@sideway/pinpoint': 2.0.0 dev: false - /json5/1.0.1: - resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} + /js-yaml/3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true dependencies: - minimist: 1.2.5 - dev: true + argparse: 1.0.10 + esprima: 4.0.1 + dev: false + + /jsbn/0.1.1: + resolution: {integrity: sha1-peZUwuWi3rXyAdls77yoDA7y9RM=} + dev: false + optional: true + + /json-buffer/3.0.0: + resolution: {integrity: sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=} + dev: false + + /json-schema-ref-parser/4.1.1: + resolution: {integrity: sha512-lByoCHZ6H2zgb6NtsXIqtzQ+6Ji7iVqnrhWxsXLhF+gXmgu6E8+ErpDxCMR439MUG1nfMjWI2HAoM8l0XgSNhw==} + dependencies: + call-me-maybe: 1.0.1 + debug: 3.2.7 + js-yaml: 3.14.1 + ono: 4.0.11 + dev: false + + /json-schema-ref-parser/6.1.0: + resolution: {integrity: sha512-pXe9H1m6IgIpXmE5JSb8epilNTGsmTb2iPohAXpOdhqGFbQjNeHHsZxU+C8w6T81GZxSPFLeUoqDJmzxx5IGuw==} + dependencies: + call-me-maybe: 1.0.1 + js-yaml: 3.14.1 + ono: 4.0.11 + dev: false + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: false + optional: true + + /json-schema/0.2.3: + resolution: {integrity: sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=} + dev: false + optional: true + + /json-stringify-safe/5.0.1: + resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=} + dev: false + optional: true + + /json5/1.0.1: + resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} + hasBin: true + dependencies: + minimist: 1.2.5 + dev: true + + /jsonwebtoken/8.5.1: + resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==} + engines: {node: '>=4', npm: '>=1.4.28'} + dependencies: + jws: 3.2.2 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 5.7.1 + dev: false + + /jsprim/1.4.1: + resolution: {integrity: sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.2.3 + verror: 1.10.0 + dev: false + optional: true + + /jwa/1.4.1: + resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + dev: false + + /jws/3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + dependencies: + jwa: 1.4.1 + safe-buffer: 5.2.1 + dev: false /keyv/3.1.0: resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} @@ -967,6 +1549,46 @@ packages: strip-bom: 2.0.0 dev: true + /lodash.get/4.4.2: + resolution: {integrity: sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=} + dev: false + + /lodash.includes/4.3.0: + resolution: {integrity: sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=} + dev: false + + /lodash.isboolean/3.0.3: + resolution: {integrity: sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=} + dev: false + + /lodash.isequal/4.5.0: + resolution: {integrity: sha1-QVxEePK8wwEgwizhDtMib30+GOA=} + dev: false + + /lodash.isinteger/4.0.4: + resolution: {integrity: sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=} + dev: false + + /lodash.isnumber/3.0.3: + resolution: {integrity: sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=} + dev: false + + /lodash.isplainobject/4.0.6: + resolution: {integrity: sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=} + dev: false + + /lodash.isstring/4.0.1: + resolution: {integrity: sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=} + dev: false + + /lodash.once/4.1.1: + resolution: {integrity: sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=} + dev: false + + /lodash/4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + /loud-rejection/1.6.0: resolution: {integrity: sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=} engines: {node: '>=0.10.0'} @@ -1029,6 +1651,14 @@ packages: engines: {node: '>= 0.6'} dev: false + /mime-types/2.1.31: + resolution: {integrity: sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.48.0 + dev: false + optional: true + /mimic-response/1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} @@ -1042,16 +1672,64 @@ packages: /minimist/1.2.5: resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} + /minipass/2.9.0: + resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==} + dependencies: + safe-buffer: 5.2.1 + yallist: 3.1.1 + dev: false + + /minipass/3.1.3: + resolution: {integrity: sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: false + + /minizlib/1.3.3: + resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} + dependencies: + minipass: 2.9.0 + dev: false + + /minizlib/2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.1.3 + yallist: 4.0.0 + dev: false + + /mkdirp/0.5.5: + resolution: {integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==} + hasBin: true + dependencies: + minimist: 1.2.5 + dev: false + /mkdirp/1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true - dev: true + + /moment-timezone/0.5.33: + resolution: {integrity: sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w==} + dependencies: + moment: 2.29.1 + dev: false + + /moment/2.29.1: + resolution: {integrity: sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==} + dev: false /ms/2.0.0: resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} dev: false + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: false + /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: false @@ -1065,6 +1743,66 @@ packages: uid-safe: 2.1.5 dev: false + /needle/2.6.0: + resolution: {integrity: sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==} + engines: {node: '>= 4.4.x'} + hasBin: true + dependencies: + debug: 3.2.7 + iconv-lite: 0.4.24 + sax: 1.2.4 + dev: false + + /neo-async/2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: false + + /node-addon-api/3.2.1: + resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} + dev: false + + /node-fetch/2.6.1: + resolution: {integrity: sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==} + engines: {node: 4.x || >=6.0.0} + dev: false + + /node-gyp/3.8.0: + resolution: {integrity: sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==} + engines: {node: '>= 0.8.0'} + hasBin: true + dependencies: + fstream: 1.0.12 + glob: 7.1.7 + graceful-fs: 4.2.6 + mkdirp: 0.5.5 + nopt: 3.0.6 + npmlog: 4.1.2 + osenv: 0.1.5 + request: 2.88.2 + rimraf: 2.7.1 + semver: 5.3.0 + tar: 2.2.2 + which: 1.3.1 + dev: false + optional: true + + /node-pre-gyp/0.11.0: + resolution: {integrity: sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==} + deprecated: 'Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future' + hasBin: true + dependencies: + detect-libc: 1.0.3 + mkdirp: 0.5.5 + needle: 2.6.0 + nopt: 4.0.3 + npm-packlist: 1.4.8 + npmlog: 4.1.2 + rc: 1.2.8 + rimraf: 2.7.1 + semver: 5.7.1 + tar: 4.4.13 + dev: false + /nodemon/2.0.7: resolution: {integrity: sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA==} engines: {node: '>=8.10.0'} @@ -1090,6 +1828,30 @@ packages: abbrev: 1.1.1 dev: false + /nopt/3.0.6: + resolution: {integrity: sha1-xkZdvwirzU2zWTF/eaxopkayj/k=} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: false + optional: true + + /nopt/4.0.3: + resolution: {integrity: sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==} + hasBin: true + dependencies: + abbrev: 1.1.1 + osenv: 0.1.5 + dev: false + + /nopt/5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: false + /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -1108,16 +1870,75 @@ packages: engines: {node: '>=8'} dev: false + /npm-bundled/1.1.2: + resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} + dependencies: + npm-normalize-package-bin: 1.0.1 + dev: false + + /npm-normalize-package-bin/1.0.1: + resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} + dev: false + + /npm-packlist/1.4.8: + resolution: {integrity: sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==} + dependencies: + ignore-walk: 3.0.4 + npm-bundled: 1.1.2 + npm-normalize-package-bin: 1.0.1 + dev: false + + /npmlog/4.1.2: + resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==} + dependencies: + are-we-there-yet: 1.1.5 + console-control-strings: 1.1.0 + gauge: 2.7.4 + set-blocking: 2.0.0 + dev: false + + /number-is-nan/1.0.1: + resolution: {integrity: sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=} + engines: {node: '>=0.10.0'} + dev: false + + /oauth-sign/0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + dev: false + optional: true + /object-assign/4.1.1: resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} engines: {node: '>=0.10.0'} - dev: true /once/1.4.0: resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} dependencies: wrappy: 1.0.2 + /ono/4.0.11: + resolution: {integrity: sha512-jQ31cORBFE6td25deYeD80wxKBMj+zBmHTrVxnc6CKhx8gho6ipmWM5zj/oeoqioZ99yqBls9Z/9Nss7J26G2g==} + dependencies: + format-util: 1.0.5 + dev: false + + /os-homedir/1.0.2: + resolution: {integrity: sha1-/7xJiDNuDoM94MFox+8VISGqf7M=} + engines: {node: '>=0.10.0'} + dev: false + + /os-tmpdir/1.0.2: + resolution: {integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=} + engines: {node: '>=0.10.0'} + dev: false + + /osenv/0.1.5: + resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} + dependencies: + os-homedir: 1.0.2 + os-tmpdir: 1.0.2 + dev: false + /p-cancelable/1.1.0: resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} engines: {node: '>=6'} @@ -1150,7 +1971,6 @@ packages: /path-is-absolute/1.0.1: resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} engines: {node: '>=0.10.0'} - dev: true /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -1170,6 +1990,11 @@ packages: engines: {node: '>=8'} dev: true + /performance-now/2.1.0: + resolution: {integrity: sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=} + dev: false + optional: true + /picomatch/2.3.0: resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} engines: {node: '>=8.6'} @@ -1196,6 +2021,15 @@ packages: engines: {node: '>=4'} dev: false + /process-nextick-args/2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false + + /psl/1.8.0: + resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} + dev: false + optional: true + /pstree.remy/1.1.8: resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} dev: false @@ -1207,6 +2041,12 @@ packages: once: 1.4.0 dev: false + /punycode/2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} + dev: false + optional: true + /pupa/2.1.1: resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} engines: {node: '>=8'} @@ -1214,6 +2054,12 @@ packages: escape-goat: 2.1.1 dev: false + /qs/6.5.2: + resolution: {integrity: sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==} + engines: {node: '>=0.6'} + dev: false + optional: true + /random-bytes/1.0.0: resolution: {integrity: sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=} engines: {node: '>= 0.8'} @@ -1246,6 +2092,18 @@ packages: path-type: 1.1.0 dev: true + /readable-stream/2.3.7: + resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + dependencies: + core-util-is: 1.0.2 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + /readable-stream/3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} engines: {node: '>= 6'} @@ -1298,6 +2156,34 @@ packages: is-finite: 1.1.0 dev: true + /request/2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + dependencies: + aws-sign2: 0.7.0 + aws4: 1.11.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.31 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.2 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + dev: false + optional: true + /resolve/1.20.0: resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} dependencies: @@ -1311,16 +2197,40 @@ packages: lowercase-keys: 1.0.1 dev: false + /retry-as-promised/3.2.0: + resolution: {integrity: sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg==} + dependencies: + any-promise: 1.3.0 + dev: false + /rimraf/2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true dependencies: glob: 7.1.7 - dev: true + + /rimraf/3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.1.7 + dev: false + + /safe-buffer/5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: false /safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + /safer-buffer/2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: false + + /sax/1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + dev: false + /semver-diff/3.1.1: resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} engines: {node: '>=8'} @@ -1328,6 +2238,12 @@ packages: semver: 6.3.0 dev: false + /semver/5.3.0: + resolution: {integrity: sha1-myzl094C0XxgEq0yaqa00M9U+U8=} + hasBin: true + dev: false + optional: true + /semver/5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true @@ -1337,6 +2253,65 @@ packages: hasBin: true dev: false + /semver/7.3.5: + resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: false + + /sequelize-pool/6.1.0: + resolution: {integrity: sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg==} + engines: {node: '>= 10.0.0'} + dev: false + + /sequelize/6.6.2_sqlite3@5.0.2: + resolution: {integrity: sha512-H/zrzmTK+tis9PJaSigkuXI57nKBvNCtPQol0yxCvau1iWLzSOuq8t3tMOVeQ+Ep8QH2HoD9/+FCCIAqzUr/BQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + mariadb: '*' + mysql2: '*' + pg: '*' + pg-hstore: '*' + sqlite3: '*' + tedious: '*' + peerDependenciesMeta: + mariadb: + optional: true + mysql2: + optional: true + pg: + optional: true + pg-hstore: + optional: true + sqlite3: + optional: true + tedious: + optional: true + dependencies: + debug: 4.3.1 + dottie: 2.0.2 + inflection: 1.12.0 + lodash: 4.17.21 + moment: 2.29.1 + moment-timezone: 0.5.33 + retry-as-promised: 3.2.0 + semver: 7.3.5 + sequelize-pool: 6.1.0 + sqlite3: 5.0.2 + toposort-class: 1.0.1 + uuid: 8.3.2 + validator: 10.11.0 + wkx: 0.5.0 + transitivePeerDependencies: + - supports-color + dev: false + + /set-blocking/2.0.0: + resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=} + dev: false + /setprototypeof/1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: false @@ -1354,7 +2329,6 @@ packages: /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true /spdx-correct/3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} @@ -1378,11 +2352,54 @@ packages: resolution: {integrity: sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==} dev: true + /sprintf-js/1.0.3: + resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} + dev: false + + /sqlite3/5.0.2: + resolution: {integrity: sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==} + requiresBuild: true + peerDependenciesMeta: + node-gyp: + optional: true + dependencies: + node-addon-api: 3.2.1 + node-pre-gyp: 0.11.0 + optionalDependencies: + node-gyp: 3.8.0 + dev: false + + /sshpk/1.16.1: + resolution: {integrity: sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + asn1: 0.2.4 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: false + optional: true + /statuses/1.5.0: resolution: {integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=} engines: {node: '>= 0.6'} dev: false + /string-width/1.0.2: + resolution: {integrity: sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=} + engines: {node: '>=0.10.0'} + dependencies: + code-point-at: 1.1.0 + is-fullwidth-code-point: 1.0.0 + strip-ansi: 3.0.1 + dev: false + /string-width/3.1.0: resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} engines: {node: '>=6'} @@ -1401,12 +2418,25 @@ packages: strip-ansi: 6.0.0 dev: false + /string_decoder/1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: false + /string_decoder/1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 dev: true + /strip-ansi/3.0.1: + resolution: {integrity: sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: false + /strip-ansi/5.2.0: resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} engines: {node: '>=6'} @@ -1467,6 +2497,64 @@ packages: has-flag: 4.0.0 dev: false + /swagger-methods/1.0.8: + resolution: {integrity: sha512-G6baCwuHA+C5jf4FNOrosE4XlmGsdjbOjdBK4yuiDDj/ro9uR4Srj3OR84oQMT8F3qKp00tYNv0YN730oTHPZA==} + dev: false + + /swagger-parser/4.0.2: + resolution: {integrity: sha512-hKslog8LhsXICJ1sMLsA8b8hQ3oUEX0457aLCFJc4zz6m8drmnCtyjbVqS5HycaKFOKVolJc2wFoe8KDPWfp4g==} + dependencies: + call-me-maybe: 1.0.1 + debug: 3.2.7 + json-schema-ref-parser: 4.1.1 + ono: 4.0.11 + swagger-methods: 1.0.8 + swagger-schema-official: 2.0.0-bab6bed + z-schema: 3.25.1 + dev: false + + /swagger-schema-official/2.0.0-bab6bed: + resolution: {integrity: sha1-cAcEaNbSl3ylI3suUZyn0Gouo/0=} + dev: false + + /swagger-ui-dist/3.50.0: + resolution: {integrity: sha512-BklniOBPlvZ6M9oGkhUwOf5HvxhkHBIycXN3ndju8WlLmi1xfMSdOA2AR6pNswlwURzsZUe1rh80aUyjnpD+Zw==} + dev: false + + /tar/2.2.2: + resolution: {integrity: sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==} + dependencies: + block-stream: 0.0.9 + fstream: 1.0.12 + inherits: 2.0.4 + dev: false + optional: true + + /tar/4.4.13: + resolution: {integrity: sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==} + engines: {node: '>=4.5'} + dependencies: + chownr: 1.1.4 + fs-minipass: 1.2.7 + minipass: 2.9.0 + minizlib: 1.3.3 + mkdirp: 0.5.5 + safe-buffer: 5.2.1 + yallist: 3.1.1 + dev: false + + /tar/6.1.0: + resolution: {integrity: sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==} + engines: {node: '>= 10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 3.1.3 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: false + /term-size/2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -1496,6 +2584,10 @@ packages: ieee754: 1.2.1 dev: true + /toposort-class/1.0.1: + resolution: {integrity: sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=} + dev: false + /touch/3.1.0: resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} hasBin: true @@ -1503,6 +2595,15 @@ packages: nopt: 1.0.10 dev: false + /tough-cookie/2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + dependencies: + psl: 1.8.0 + punycode: 2.1.1 + dev: false + optional: true + /tree-kill/1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -1538,6 +2639,34 @@ packages: typescript: 4.3.2 dev: true + /ts-node/10.0.0_typescript@4.3.2: + resolution: {integrity: sha512-ROWeOIUvfFbPZkoDis0L/55Fk+6gFQNZwwKPLinacRl6tsxstTF1DbAcLKkovwnpKMVvOMHP1TIbnwXwtLg1gg==} + engines: {node: '>=12.0.0'} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.45' + '@swc/wasm': '>=1.2.45' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@tsconfig/node10': 1.0.8 + '@tsconfig/node12': 1.0.8 + '@tsconfig/node14': 1.0.1 + '@tsconfig/node16': 1.0.1 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + source-map-support: 0.5.19 + typescript: 4.3.2 + yn: 3.1.1 + dev: true + /ts-node/9.1.1_typescript@4.3.2: resolution: {integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==} engines: {node: '>=10.0.0'} @@ -1572,6 +2701,18 @@ packages: strip-json-comments: 2.0.1 dev: true + /tunnel-agent/0.6.0: + resolution: {integrity: sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=} + dependencies: + safe-buffer: 5.2.1 + dev: false + optional: true + + /tweetnacl/0.14.5: + resolution: {integrity: sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=} + dev: false + optional: true + /type-fest/0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} @@ -1589,6 +2730,13 @@ packages: hasBin: true dev: true + /uglify-js/3.13.9: + resolution: {integrity: sha512-wZbyTQ1w6Y7fHdt8sJnHfSIuWeDgk6B5rCb4E/AM6QNNPbOMIZph21PW5dRB3h7Df0GszN+t7RuUH6sWK5bF0g==} + engines: {node: '>=0.8.0'} + hasBin: true + dev: false + optional: true + /uid-safe/2.1.5: resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==} engines: {node: '>= 0.8'} @@ -1628,6 +2776,13 @@ packages: xdg-basedir: 4.0.0 dev: false + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.1.1 + dev: false + optional: true + /url-parse-lax/3.0.0: resolution: {integrity: sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=} engines: {node: '>=4'} @@ -1637,7 +2792,18 @@ packages: /util-deprecate/1.0.2: resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} - dev: true + + /uuid/3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + dev: false + optional: true + + /uuid/8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: false /validate-npm-package-license/3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -1646,6 +2812,35 @@ packages: spdx-expression-parse: 3.0.1 dev: true + /validator/10.11.0: + resolution: {integrity: sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==} + engines: {node: '>= 0.10'} + dev: false + + /verror/1.10.0: + resolution: {integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + dev: false + optional: true + + /which/1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: false + optional: true + + /wide-align/1.1.3: + resolution: {integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==} + dependencies: + string-width: 1.0.2 + dev: false + /widest-line/3.1.0: resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} engines: {node: '>=8'} @@ -1653,6 +2848,16 @@ packages: string-width: 4.2.2 dev: false + /wkx/0.5.0: + resolution: {integrity: sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==} + dependencies: + '@types/node': 15.12.2 + dev: false + + /wordwrap/1.0.0: + resolution: {integrity: sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=} + dev: false + /wrappy/1.0.2: resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} @@ -1675,6 +2880,10 @@ packages: engines: {node: '>=0.4'} dev: true + /yallist/3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: false + /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: false @@ -1683,3 +2892,15 @@ packages: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} dev: true + + /z-schema/3.25.1: + resolution: {integrity: sha512-7tDlwhrBG+oYFdXNOjILSurpfQyuVgkRe3hB2q8TEssamDHB7BbLWYkYO98nTn0FibfdFroFKDjndbgufAgS/Q==} + hasBin: true + dependencies: + core-js: 2.6.12 + lodash.get: 4.4.2 + lodash.isequal: 4.5.0 + validator: 10.11.0 + optionalDependencies: + commander: 2.20.3 + dev: false diff --git a/route.txt b/route.txt deleted file mode 100644 index 6a126c7..0000000 --- a/route.txt +++ /dev/null @@ -1,4 +0,0 @@ -所有路由路径: -/ -/about -/upload \ No newline at end of file diff --git a/source/db/data.db b/source/db/data.db new file mode 100644 index 0000000000000000000000000000000000000000..bc83ce7ddcdf3c9982428cce3692271e043ea9f7 GIT binary patch literal 65536 zcmeI*&rjQC7zc2_F_1b0%+{g^Rj9A3R!s_pBoJDrMQEn+Xquhf~Gs^=2($%UoDa^>@m^YQ4&bd*kyyfYD{bCpGN)IXO}=4fnk zIyx4O)2Vpu!btow9gkk_rE>+=p_a_3bM(WJ`1$un;{I?X5}=bGOw-Aki3wI?Iho7d z%<8O%dNtHcGL?1~vvv!*n#`-pNPdovvY}1KE<`K4Ei5Z_ivz_^PP%i3<;>%=jq|}^w-|mRe+~@aDwxtxB((>vxRj12(DwEXL=#sid zwQQbhg><^tsAM!q@EN6fbv5r{l!x5D&Q7v^#5k0qX0rU|b{vN9@t8;936WrjvX52j z-{_u?VlOQVW}d(+f4`Ez7r?N`j`=*JtRGwRvjY}Qv+Jc(1 zLuGrVtVYfBrMk)}QVV&?b}4FFWxv#vcJYb|Z?E$d?)6A~KwP$N_q@VByJz$4YIpmh zCrI&lN>kKTJ37XH-JGM8k|l%|tKY=p5})iHDaH#~uIxxf``Ei3fV~G+UAEiT%dsMI~of)$H=p-6pnL$T-vW2Xf#qkgNyz?9hH>**nvO}dpdJJC$!)Rls< zj5}X8IUsY+LO+kXm$eKOsmq*>gZ6argYoI$kD{{|YcEeUYe-cqNOhtaHTRwjqgwTB zcmgbK-ZnC(r+C!OGs$aZ(joSWWm54od+2;ZOPSPS4PEQlIY+!!osW%DquQSsMnij* zx95oOF0UPJJk9x8J~jwI00Izz00bZa0SG_<0uX=z1YTPKe*Q1YzYFqn`A_zM4FV8= z00bZa0SG_<0uX=z1Rwx`h7piNQRsU5?Z)=4`;v=2ee%ow&9CphNkpON>36rbf4sM~ z@%`4_J8YkM{{K*r|CTr9hYb@T1_}WPKmY;|fB*y_009U<00IzzfFV#34fit=BA{8E0w9e3Y zBENUJL{XCX`9G0gvh)AfAUK2o0SG_<0uX=z1Rwwb2tWV=5P(3H06+id|NfuIj|KU$ z{7+Q{?0^6SAOHafKmY;|fB*y_009UE5P$##AOHafKmY;|fB*y_0D&C>yI%i~pZ~kqrT^uBasB@t zZg>d+2tWV=5P$##AOHafKmY;|Xk>wAmq>`$)kH*zxXkbWw*`5-kwe1RApijgKmY;| zfB*y_009U<00Iy&1UiW*gr5BT)wA_qpFQ|#>;C6kKiu1VaK}9VUlim;I6(jc5P$## zAOHafKmY;|fB*y_@M;1@A2}d&6`T8Gu~2wmFfw#3Jbx?{Ja#%ZJl~g$-{ + User.sync({force: isForce,alter: isAlter}) +}) \ No newline at end of file diff --git a/source/model/User.ts b/source/model/User.ts new file mode 100644 index 0000000..86d9de1 --- /dev/null +++ b/source/model/User.ts @@ -0,0 +1,42 @@ +import {sequelize, connect} from "@/db/index" +import {DataTypes} from "sequelize"; +// 全自定义写法 +// const User = sequelize.define('User', { +// id: { +// type: DataTypes.STRING(50), +// primaryKey: true +// }, +// username: { +// type: DataTypes.STRING, +// allowNull: false +// }, +// password: { +// type: DataTypes.STRING, +// allowNull: false +// }, +// createdAt: DataTypes.BIGINT, +// updatedAt: DataTypes.BIGINT, +// version: DataTypes.BIGINT +// }, { +// timestamps: false +// }); +/** + * 用户表: + * 用户名-密码-邮箱-性别-婚姻状况 + */ +const User = sequelize.define('User', { + username: { + type: DataTypes.STRING, + allowNull: false + }, + password: { + type: DataTypes.STRING, + allowNull: false + }, + email: { + type: DataTypes.STRING, + } +}, { + +}); +export default User; diff --git a/source/plugins/index.ts b/source/plugins/index.ts index 81eb2ac..1d2a7a5 100644 --- a/source/plugins/index.ts +++ b/source/plugins/index.ts @@ -1,7 +1,7 @@ import filePlugin from "./file-plugin"; import path from "path"; import { sourceDir } from "@/util"; -import routePlugin from "@noderun/hapi-router"; +import { plugin as routePlugin } from "@noderun/hapi-router"; export default [ { diff --git a/source/route/api/index.ts b/source/route/api/index.ts new file mode 100644 index 0000000..484450e --- /dev/null +++ b/source/route/api/index.ts @@ -0,0 +1,7 @@ + + +export default class{ + index(request, h) { + return "asdasd"; + } +} diff --git a/source/route/api/user/index.ts b/source/route/api/user/index.ts new file mode 100644 index 0000000..ca57e33 --- /dev/null +++ b/source/route/api/user/index.ts @@ -0,0 +1,97 @@ +import { auth, method, route, swagger, validate } from "@noderun/hapi-router"; +import { gSuccess, gFail } from "@/util"; +import User from "@/model/User"; +import * as bcrypt from "bcrypt"; +import * as jwt from "jsonwebtoken"; +import * as Joi from "joi"; + +export default class { + @validate({ + payload: Joi.object({ + username: Joi.string().alphanum().min(6).max(35).required(), + password: Joi.string().pattern(new RegExp("^[a-zA-Z0-9]{3,30}$")), + email: Joi.string().email({ + minDomainSegments: 2, + tlds: { allow: ["com", "net"] }, + }), + }), + }) + @method("POST") + @route("/register") + @swagger("用户注册", "返回注册用户的信息", ["api"]) + @auth(false) + async register(request, h) { + let { username, password, email } = request.payload; + try { + const result = await User.findOne({ where: { username: username } }); + if (result != null) { + return gFail(null, "已存在该用户"); + } + let salt = bcrypt.genSaltSync(10); + let pwdLock = bcrypt.hashSync(password, salt); + await User.create({ username, password: pwdLock, email }); + return gSuccess("success", "you have a good heart."); + } catch (e) { + return gFail(null, "新建用户失败"); + } + } + + @validate({ + payload: Joi.object({ + username: Joi.string().alphanum().min(6).max(35).required(), + password: Joi.string().pattern(new RegExp("^[a-zA-Z0-9]{3,30}$")), + }), + }) + @auth(false) + @method("POST") + @route("/login") + @swagger("用户登录", "返回注册用户的信息", ["api"]) + async login(request, h) { + let { username, password } = request.payload; + const result = await User.findOne({ where: { username: username } }); + if (result == null) { + return gFail(null, "不存在该用户"); + } + const validUser = bcrypt.compareSync(password, result.password); + if (!validUser) { + return gFail(null, "密码不正确"); + } + let token = jwt.sign({ id: result.id }, process.env.KEY); + return gSuccess({ token: token }); + } + + @method("DELETE") + @auth() + @route("/del") + @swagger("删除用户", "删除用户账号", ["api"]) + async del(request, h) { + const { id } = request.auth.credentials; + let result = await User.findOne({ where: { id: id } }); + if (result == null) { + return gFail(null, "不存在该用户"); + } + await result.destroy(); + return gSuccess(null, "删除成功"); + } + + @method("GET") + @route("/userinfo") + @validate({ + headers: Joi.object({ + Authorization: Joi.string(), + }).unknown(), // 注意加上这个 + }) + @swagger("获取用户信息", "返回注册用户的信息", ["api"]) + async userinfo(request, h) { + console.log(request); + const { id } = request.auth.credentials; + + let result = await User.findOne({ where: { id: id } }); + if (result == null) { + return gFail(null, "不存在该用户"); + } + result = result.toJSON(); + delete result.password; + return gSuccess(result); + } +} diff --git a/source/route/index/index.ts b/source/route/index/index.ts index 61ca105..91e46e5 100644 --- a/source/route/index/index.ts +++ b/source/route/index/index.ts @@ -1,11 +1,3 @@ -/* - * @Author: your name - * @Date: 2021-06-16 06:38:54 - * @LastEditTime: 2021-06-16 17:19:23 - * @LastEditors: your name - * @Description: In User Settings Edit - * @FilePath: /hapi-demo/source/route/index/index.ts - */ import { config, method } from "@noderun/hapi-router"; import UploadFunc from "./_upload"; @@ -13,9 +5,6 @@ export default class { index(request, h) { return h.view("views/index.ejs"); } - about(request, h) { - return h.view("views/about.ejs"); - } @config({ payload: { diff --git a/source/route/route.txt b/source/route/route.txt new file mode 100644 index 0000000..9296460 --- /dev/null +++ b/source/route/route.txt @@ -0,0 +1,8 @@ +所有路由路径: +/api 该路由需要权限 +/api/user/register 该路由不需要权限 +/api/user/login 该路由不需要权限 +/api/user/del 该路由需要权限 +/api/user/userinfo 该路由需要权限 +/ 该路由不需要权限 +/upload 该路由不需要权限 \ No newline at end of file diff --git a/source/run.ts b/source/run.ts index 893fbef..d9f28d6 100644 --- a/source/run.ts +++ b/source/run.ts @@ -1,7 +1,9 @@ "use strict"; import plugins from "@/plugins"; import { baseDir } from "@/util"; +import validate from "./validate"; const Hapi = require("@hapi/hapi"); +const HapiSwagger = require("hapi-swagger"); const run = async () => { const server = Hapi.server({ @@ -9,12 +11,40 @@ const run = async () => { host: "localhost", }); + // http://localhost:3000/documentation + const swaggerOptions = { + info: { + title: "Dream 文档", + version: "1.0.0", + }, + }; + await server.register([ + { + plugin: HapiSwagger, + options: swaggerOptions, + }, + ]); + + /** + * jwt + */ + await server.register(require("hapi-auth-jwt2")); + server.auth.strategy("jwt", "jwt", { + key: process.env.KEY, // Never Share your secret key + validate, // validate function defined above + verifyOptions: { algorithms: ["HS256"] }, + }); + server.auth.default("jwt"); + await server.register(plugins, { routes: { // prefix: "/api", }, }); + /** + * 模板引擎 + */ // https://hapi.dev/module/vision/api/?v=6.1.0 await server.register(require("@hapi/vision")); server.views({ diff --git a/source/validate.ts b/source/validate.ts new file mode 100644 index 0000000..bb72c05 --- /dev/null +++ b/source/validate.ts @@ -0,0 +1,13 @@ +import User from "@/model/User"; + +export default async function validate(decoded, request, h) { + if (decoded.id) { + const result = await User.findOne({ where: { id: decoded.id } }); + if (result == null) { + return { isValid: false }; + } + return { isValid: true }; + } else { + return { isValid: false }; + } +}