You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
23 KiB
1 lines
23 KiB
{"version":3,"file":"hapi-router.cjs.js","sources":["../src/util/index.ts","../src/util/decorators.ts","../src/index.ts"],"sourcesContent":["// @ts-nocheck\r\n\r\nconst path = require(\"path\")\r\nconst fs = require(\"fs\")\r\n\r\nexport function removeIndex(ss:any) {\r\n const remove = (str:any) => {\r\n if (str.endsWith(\"/index\")) {\r\n return str.slice(0, -6);\r\n }\r\n if (str.endsWith(\"index\")) {\r\n return str.slice(0, -5);\r\n }\r\n return str ? str : \"/\";\r\n };\r\n let r = true;\r\n let rr = ss;\r\n while (r) {\r\n if (rr.endsWith(\"/index\")) {\r\n rr = remove(rr);\r\n } else {\r\n r = false;\r\n }\r\n }\r\n return rr ? rr : \"/\";\r\n}\r\n\r\nexport function isIndexEnd(str:any) {\r\n return str.length == 1 && str.endsWith(\"/\");\r\n}\r\n\r\n\r\nexport function walkDir(\r\n filePath:any,\r\n exclude = [\"node_modules\", \"^_\", \".git\", \".idea\", \".gitignore\", \"client\",\"\\.txt$\",\"\\.test\\.js$\",\"\\.test\\.ts$\"]\r\n) {\r\n let files:any[] = [];\r\n function Data(opts:any) {\r\n this.relativeDir = opts.relativeDir;\r\n this.relativeFile = opts.relativeFile;\r\n this.filename = opts.filename;\r\n this.file = opts.file;\r\n this.absoluteFile = opts.absoluteFile;\r\n this.relativeFileNoExt = opts.relativeFileNoExt;\r\n this.absoluteDir = opts.absoluteDir;\r\n }\r\n function readDir(filePath, dirname = \".\") {\r\n let res = fs.readdirSync(filePath);\r\n res.forEach((filename) => {\r\n const filepath = path.resolve(filePath, filename);\r\n const stat = fs.statSync(filepath);\r\n const name = filepath.split(path.sep).slice(-1)[0];\r\n if (typeof exclude === \"string\" && new RegExp(exclude).test(name)) {\r\n return;\r\n }\r\n if (Array.isArray(exclude)) {\r\n for (let i = 0; i < exclude.length; i++) {\r\n const excludeItem = exclude[i];\r\n if (new RegExp(excludeItem).test(name)) {\r\n return;\r\n }\r\n }\r\n }\r\n if (!stat.isFile()) {\r\n readDir(filepath, dirname + path.sep + name);\r\n } else {\r\n const data = new Data({\r\n relativeDir: dirname,\r\n relativeFile: dirname + path.sep + path.parse(filepath).base,\r\n relativeFileNoExt: dirname + path.sep + path.parse(filepath).name,\r\n file: path.parse(filepath).base,\r\n filename: path.parse(filepath).name,\r\n absoluteFile: filepath,\r\n absoluteDir: path.parse(filepath).dir,\r\n });\r\n files.push(data);\r\n }\r\n });\r\n }\r\n readDir(filePath);\r\n return files;\r\n}\r\n","// @ts-nocheck\r\n/**\r\n * 方法\r\n * @param opts 参数\r\n*/\r\ntype TMethod = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\"\r\nexport function method(opts?:TMethod|Array<TMethod>) {\r\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\r\n target[propertyKey].$method = opts\r\n }\r\n}\r\nexport function route(route?:string) {\r\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\r\n target[propertyKey].$route = route\r\n }\r\n}\r\n\r\nexport function config(options:Object) {\r\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\r\n target[propertyKey].$options = options\r\n }\r\n}\r\n\r\nexport function auth(isAuth:boolean | \"try\" | \"required\" | \"optional\" = true) {\r\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\r\n target[propertyKey].$auth = isAuth\r\n }\r\n}\r\n\r\nexport function validate(validate:Object) {\r\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\r\n target[propertyKey].$validate = validate\r\n }\r\n}\r\n\r\nexport function swagger(desc,notes,tags) {\r\n return function (target, propertyKey: string, descriptor: PropertyDescriptor) {\r\n target[propertyKey].$swagger = [desc,notes,tags]\r\n }\r\n}\r\n","// @ts-nocheck\r\n\r\nimport { walkDir, removeIndex, isIndexEnd } from \"./util\";\r\nimport * as Joi from \"joi\";\r\nconst path = require(\"path\");\r\nconst fs = require(\"fs\");\r\n\r\nclass routePlugin {\r\n public name: string = \"routePlugin\";\r\n public version: string = \"0.0.1\";\r\n public register(server: any, opts: any) {\r\n const sourceDir = opts.sourceDir;\r\n const type = opts.type || \"jwt\";\r\n const auth = opts.auth || [];\r\n let array = [];\r\n for (let i = 0; i < sourceDir.length; i++) {\r\n const dir = sourceDir[i];\r\n console.log(dir);\r\n array.push(dir.dir + \"对应路径:\");\r\n array = array.concat(\r\n this.registerRoute(server, dir.dir, dir.prefix || \"\", auth, type)\r\n );\r\n }\r\n fs.writeFileSync(\r\n path.resolve(process.cwd(), \"route.txt\"),\r\n array.join(\"\\n\"),\r\n {\r\n encoding: \"utf-8\",\r\n }\r\n );\r\n }\r\n registerRoute(server, sourceDir, prefix, auth, type) {\r\n const files = walkDir(sourceDir);\r\n const routes = [];\r\n files.forEach((file) => {\r\n let filename = file.relativeFileNoExt;\r\n let array = filename.split(path.sep).slice(1);\r\n let fileNoExt = removeIndex(\"/\" + array.join(\"/\"));\r\n const moduleName = path.resolve(sourceDir, filename);\r\n const obj = require(moduleName);\r\n if (obj.default) {\r\n const func = new (obj.default || obj)();\r\n const prototype = Object.getPrototypeOf(func);\r\n const keys = Reflect.ownKeys(prototype);\r\n for (const key of keys) {\r\n if (key !== \"constructor\") {\r\n let ff = func[key];\r\n let handler:()=>void = undefined\r\n // 默认方法\r\n const method = ff.$method || \"GET\";\r\n // 路由收集规则\r\n let route = \"\";\r\n if (ff.$route) {\r\n if (isIndexEnd(fileNoExt)) {\r\n route = ff.$route;\r\n } else {\r\n route = fileNoExt + ff.$route;\r\n }\r\n } else {\r\n if (isIndexEnd(fileNoExt)) {\r\n route = fileNoExt + key.toString();\r\n } else {\r\n route = fileNoExt + \"/\" + key.toString();\r\n }\r\n }\r\n route = removeIndex(route);\r\n route = prefix ? route[0] + prefix + \"/\" + route.slice(1) : route;\r\n // 配置规则\r\n const options = ff.$options ? ff.$options : {};\r\n if (!options.auth) {\r\n if (ff.$auth == undefined) {\r\n if (\r\n auth &&\r\n auth.length &&\r\n auth.filter((v) => route.startsWith(v)).length\r\n ) {\r\n options.auth = type;\r\n } else {\r\n options.auth = false;\r\n }\r\n } else if (ff.$auth) {\r\n options.auth =\r\n typeof ff.$auth === \"boolean\"\r\n ? type\r\n : {\r\n strategy: type,\r\n mode: ff.$auth,\r\n };\r\n } else {\r\n options.auth = false;\r\n }\r\n }\r\n if (!options.validate) {\r\n let validateObj = ff.$validate || {};\r\n if (options.auth && type === \"jwt\") {\r\n if (validateObj.headers) {\r\n validateObj.headers = validateObj.headers.keys({\r\n Authorization: Joi.string(),\r\n });\r\n } else {\r\n validateObj.headers = Joi.object({\r\n headers: Joi.object({\r\n Authorization: Joi.string(),\r\n }).unknown(), // 注意加上这个\r\n });\r\n }\r\n }\r\n if (validateObj&&!!Object.keys(validateObj).length) {\r\n const failReason = validateObj.failReason\r\n delete validateObj.failReason\r\n if(validateObj.failAction === \"log\"){\r\n if(!options.log) options.log = {}\r\n options.log.collect = true\r\n let errto = validateObj.$errto\r\n handler = async function (...argus){\r\n const request = argus[0]\r\n const h = argus[1]\r\n if(request.logs&&!!request.logs.length && errto){\r\n // request.yar.flash('error', request.logs.map((v: any)=>v.error.message));\r\n request.yar.flash('error', failReason);\r\n return h.redirect(errto);\r\n }\r\n return await ff.call(this, ...argus)\r\n }\r\n }\r\n if(validateObj.failAction === \"function\"){\r\n let errto = validateObj.$errto\r\n validateObj.failAction = async function(request, h, err){\r\n if(err.details){\r\n request.$joi_error = err.details.map(v=>v.message)\r\n }\r\n return h.continue;\r\n }\r\n handler = async function (...argus){\r\n const request = argus[0]\r\n const h = argus[1]\r\n if(request.$joi_error){\r\n loggerSite.debug('传输参数错误: ', request.$joi_error)\r\n request.yar.flash('error', failReason);\r\n delete request.$joi_error\r\n return h.redirect(errto);\r\n }\r\n return await ff.call(this, ...argus)\r\n }\r\n }\r\n options.validate = validateObj;\r\n }\r\n }\r\n // && route.startsWith(\"/api\")\r\n if (ff.$swagger) {\r\n options.description = ff.$swagger[0];\r\n options.notes = ff.$swagger[1];\r\n options.tags = ff.$swagger[2];\r\n }\r\n let str = route;\r\n if (\r\n (typeof options.auth === \"string\" && options.auth) ||\r\n (typeof options.auth === \"object\" &&\r\n options.auth.mode === \"required\")\r\n ) {\r\n str =\r\n \" 需要权限 : \" + \" \" + full(method) + \" \" + str;\r\n } else if (\r\n typeof options.auth === \"object\" &&\r\n options.auth.mode === \"optional\"\r\n ) {\r\n str =\r\n \" 不需权限(提供即需验证): \" + \" \" + full(method) + \" \" + str;\r\n } else if (\r\n typeof options.auth === \"object\" &&\r\n options.auth.mode === \"try\"\r\n ) {\r\n str =\r\n \" 不需权限(提供无需验证): \" + \" \" + full(method) + \" \" + str;\r\n } else {\r\n str =\r\n \" 不需权限 : \" + \" \" + full(method) + \" \" + str;\r\n }\r\n routes.push(str);\r\n\r\n if(options.validate && options.validate.$errto){\r\n delete options.validate.$errto\r\n }\r\n if(!handler){\r\n handler = ff\r\n }\r\n server.route({\r\n method: method,\r\n path: route,\r\n handler: handler,\r\n options: options,\r\n });\r\n }\r\n }\r\n }\r\n });\r\n return routes;\r\n }\r\n}\r\n\r\nfunction full(str: string, length = 10) {\r\n let len = str.length;\r\n let need = length - len;\r\n if (need <= 0) return str;\r\n return str + [...Array(need)].map((v, i) => \" \").join(\"\");\r\n}\r\n\r\nconst plugin = new routePlugin();\r\n\r\nexport { plugin };\r\nexport * from \"./util/decorators\";\r\n"],"names":["path","fs","Joi"],"mappings":"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"}
|