melperjs 4.0.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc +20 -2
- package/README.md +55 -35
- package/cjs/index.js +185 -190
- package/cjs/index.js.map +1 -1
- package/cjs/node.js +195 -0
- package/cjs/node.js.map +1 -0
- package/lib/index.js +235 -0
- package/lib/index.js.map +1 -0
- package/mjs/index.js +156 -234
- package/mjs/index.js.map +1 -1
- package/mjs/node.js +176 -0
- package/mjs/node.js.map +1 -0
- package/package.json +14 -6
- package/src/index.js +38 -7
- package/src/node.js +155 -0
- package/test/script.js +48 -38
- package/mjs/package.json +0 -3
package/mjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","Array","isArray","_createForOfIteratorHelper","allowArrayLike","it","F","_e","normalCompletion","didErr","err","step","_e2","minLen","_arrayLikeToArray","toString","from","test","len","arr2","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","undefined","xss","camelCase","capitalize","isEmpty","setCookieParser","CONSTANTS","LOWER_CASE","UPPER_CASE","HEXADECIMAL","NUMBERS","Exception","message","response","status","pascalCase","time","Math","floor","Date","now","sleepMs","_x","_sleepMs","_callee","milliseconds","_callee$","_context","setTimeout","sleep","_x2","_sleep","_callee2","seconds","_callee2$","_context2","promiseTimeout","promise","timer","clearTimeout","reason","splitLines","text","split","filter","item","checkEmpty","map","trim","findKeyNode","node","pair","index","result","str","upperCaseFirst","toUpperCase","lowerCaseFirst","toLowerCase","titleString","word","join","limitString","limit","substring","safeString","whiteList","stripIgnoreTag","stripIgnoreTagBody","randomString","useNumbers","useUppercase","characters","randomIndex","random","randomHex","randomUuid","useDashes","uuid","replace","replaceAll","randomWeighted","dict","randomFunc","totalWeight","elements","weights","reduce","sum","weight","randomNum","weightSum","cookieDict","res","decodeValues","cookies","parse","_iterator","_step","cookie","cookieHeader","entries","_ref","_ref2","concat","isIntlHttpCode","httpCode","isIntlError","_e$message","_e$message$toLowerCas","_e$message$toLowerCas2","_e$message2","_e$message2$toLowerCa","_e$message2$toLowerCa2","_e$message3","_e$message3$toLowerCa","_e$message3$toLowerCa2","_e$message4","_e$message4$toLowerCa","_e$message4$toLowerCa2","_e$response","includes"],"sources":["../src/index.js"],"sourcesContent":["import xss from \"xss\";\r\nimport camelCase from \"lodash/camelCase.js\";\r\nimport capitalize from \"lodash/capitalize.js\";\r\nimport isEmpty from \"lodash/isEmpty.js\";\r\nimport setCookieParser from \"set-cookie-parser\";\r\n\r\n\r\nexport const CONSTANTS = {\r\n LOWER_CASE: \"abcdefghijklmnopqrstuvwxyz\",\r\n UPPER_CASE: \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\",\r\n HEXADECIMAL: \"0123456789abcdef\",\r\n NUMBERS: \"0123456789\",\r\n};\r\n\r\nexport function Exception(message, response = {}, name = null) {\r\n response.status = response.status || 400;\r\n return {\r\n name: pascalCase(name),\r\n message,\r\n response,\r\n }\r\n}\r\n\r\nexport function time() {\r\n return Math.floor(Date.now() / 1000);\r\n}\r\n\r\nexport async function sleepMs(milliseconds) {\r\n return new Promise(resolve => setTimeout(resolve, milliseconds));\r\n}\r\n\r\nexport async function sleep(seconds) {\r\n return await sleepMs(seconds * 1000);\r\n}\r\n\r\nexport function promiseTimeout(milliseconds, promise) {\r\n return new Promise((resolve, reject) => {\r\n const timer = setTimeout(() => {\r\n reject(new Error('Promise timed out after ' + milliseconds + 'ms'));\r\n }, milliseconds);\r\n\r\n promise\r\n .then(value => {\r\n clearTimeout(timer);\r\n resolve(value);\r\n })\r\n .catch(reason => {\r\n clearTimeout(timer);\r\n reject(reason);\r\n });\r\n });\r\n}\r\n\r\nexport function splitLines(text) {\r\n return text.split(/\\r?\\n/).filter(item => !checkEmpty(item)).map(item => item.trim());\r\n}\r\n\r\nexport function findKeyNode(key, node, pair = null) {\r\n if (node && node.hasOwnProperty(key) && (pair ? node[key] === pair : true)) {\r\n return node;\r\n } else if (typeof node === 'object') {\r\n for (let index in node) {\r\n const result = findKeyNode(key, node[index], pair);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function checkEmpty(value) {\r\n if (typeof value === \"number\") {\r\n return value === 0;\r\n } else {\r\n return isEmpty(value);\r\n }\r\n}\r\n\r\nexport function pascalCase(str) {\r\n return upperCaseFirst(camelCase(str));\r\n}\r\n\r\nexport function upperCaseFirst(str) {\r\n str = str || \"\";\r\n return str[0].toUpperCase() + str.slice(1);\r\n}\r\n\r\nexport function lowerCaseFirst(str) {\r\n str = str || \"\";\r\n return str[0].toLowerCase() + str.slice(1);\r\n}\r\n\r\nexport function titleString(str) {\r\n str = str || \"\";\r\n return str\r\n .split(' ')\r\n .map(word => capitalize(word))\r\n .join(' ');\r\n}\r\n\r\nexport function limitString(str, limit = 35) {\r\n str = str || \"\";\r\n if (str.length <= limit) {\r\n return str;\r\n } else {\r\n return str.substring(0, limit - 3) + \"...\";\r\n }\r\n}\r\n\r\nexport function safeString(str) {\r\n str = str || \"\";\r\n return xss(str, {\r\n whiteList: {},\r\n stripIgnoreTag: true,\r\n stripIgnoreTagBody: [\"script\"]\r\n });\r\n}\r\n\r\nexport function randomString(length, useNumbers = true, useUppercase = false) {\r\n \r\n let characters = CONSTANTS.LOWER_CASE;\r\n if (useUppercase) characters += CONSTANTS.UPPER_CASE;\r\n if (useNumbers) characters += CONSTANTS.NUMBERS;\r\n\r\n let randomString = '';\r\n for (let i = 0; i < length; i++) {\r\n const randomIndex = Math.floor(Math.random() * characters.length);\r\n randomString += characters[randomIndex];\r\n }\r\n\r\n return randomString;\r\n}\r\n\r\nexport function randomHex(length) {\r\n let result = '';\r\n for (let i = 0; i < length; i++) {\r\n const randomIndex = Math.floor(Math.random() * CONSTANTS.HEXADECIMAL.length);\r\n result += CONSTANTS.HEXADECIMAL[randomIndex];\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function randomUuid(useDashes = true) {\r\n let d = Date.now();\r\n const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n const r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n return useDashes ? uuid : uuid.replaceAll(\"-\", \"\");\r\n}\r\n\r\nexport function randomWeighted(dict, randomFunc = (totalWeight) => Math.random() * totalWeight) {\r\n let elements = Object.keys(dict);\r\n let weights = Object.values(dict);\r\n\r\n let totalWeight = weights.reduce((sum, weight) => sum + weight, 0);\r\n\r\n let randomNum = randomFunc(totalWeight);\r\n let weightSum = 0;\r\n\r\n for (let i = 0; i < elements.length; i++) {\r\n weightSum += weights[i];\r\n if (randomNum <= weightSum) {\r\n return elements[i];\r\n }\r\n }\r\n}\r\n\r\nexport function cookieDict(res, decodeValues = false) {\r\n let dict = {};\r\n const cookies = setCookieParser.parse(res, {decodeValues: decodeValues});\r\n for (let cookie of cookies) {\r\n dict[cookie.name] = cookie.value;\r\n }\r\n return dict;\r\n}\r\n\r\nexport function cookieHeader(cookieDict) {\r\n return Object.entries(cookieDict)\r\n .map(([key, value]) => `${key}=${value}`)\r\n .join(';')\r\n}\r\n\r\nexport function isIntlHttpCode(httpCode) {\r\n return (\r\n httpCode === undefined ||\r\n httpCode === null ||\r\n httpCode === 0 ||\r\n httpCode === 402 ||\r\n httpCode === 407 ||\r\n httpCode === 466 ||\r\n 500 <= httpCode\r\n );\r\n}\r\n\r\nexport function isIntlError(e) {\r\n return (\r\n e?.message?.toLowerCase?.()?.includes?.(\"timeout\") ||\r\n e?.message?.toLowerCase?.()?.includes?.(\"aborted\") ||\r\n e?.message?.toLowerCase?.()?.includes?.(\"tls connection\") ||\r\n e?.message?.toLowerCase?.()?.includes?.(\"socket hang\") ||\r\n isIntlHttpCode(e?.response?.status)\r\n )\r\n}"],"mappings":"+CACA,qJAAAA,mBAAA,YAAAA,oBAAA,WAAAC,CAAA,SAAAC,CAAA,EAAAD,CAAA,OAAAE,CAAA,GAAAC,MAAA,CAAAC,SAAA,EAAAC,CAAA,GAAAH,CAAA,CAAAI,cAAA,EAAAC,CAAA,GAAAJ,MAAA,CAAAK,cAAA,cAAAP,CAAA,EAAAD,CAAA,EAAAE,CAAA,IAAAD,CAAA,CAAAD,CAAA,IAAAE,CAAA,CAAAO,KAAA,KAAAC,CAAA,wBAAAC,MAAA,GAAAA,MAAA,OAAAC,CAAA,GAAAF,CAAA,CAAAG,QAAA,kBAAAC,CAAA,GAAAJ,CAAA,CAAAK,aAAA,uBAAAC,CAAA,GAAAN,CAAA,CAAAO,WAAA,8BAAAC,OAAAjB,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAC,MAAA,CAAAK,cAAA,CAAAP,CAAA,EAAAD,CAAA,IAAAS,KAAA,EAAAP,CAAA,EAAAiB,UAAA,MAAAC,YAAA,MAAAC,QAAA,SAAApB,CAAA,CAAAD,CAAA,WAAAkB,MAAA,mBAAAjB,CAAA,IAAAiB,MAAA,YAAAA,OAAAjB,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAD,CAAA,CAAAD,CAAA,IAAAE,CAAA,gBAAAoB,KAAArB,CAAA,EAAAD,CAAA,EAAAE,CAAA,EAAAG,CAAA,QAAAK,CAAA,GAAAV,CAAA,IAAAA,CAAA,CAAAI,SAAA,YAAAmB,SAAA,GAAAvB,CAAA,GAAAuB,SAAA,EAAAX,CAAA,GAAAT,MAAA,CAAAqB,MAAA,CAAAd,CAAA,CAAAN,SAAA,GAAAU,CAAA,OAAAW,OAAA,CAAApB,CAAA,gBAAAE,CAAA,CAAAK,CAAA,eAAAH,KAAA,EAAAiB,gBAAA,CAAAzB,CAAA,EAAAC,CAAA,EAAAY,CAAA,MAAAF,CAAA,aAAAe,SAAA1B,CAAA,EAAAD,CAAA,EAAAE,CAAA,mBAAA0B,IAAA,YAAAC,GAAA,EAAA5B,CAAA,CAAA6B,IAAA,CAAA9B,CAAA,EAAAE,CAAA,cAAAD,CAAA,aAAA2B,IAAA,WAAAC,GAAA,EAAA5B,CAAA,QAAAD,CAAA,CAAAsB,IAAA,GAAAA,IAAA,MAAAS,CAAA,qBAAAC,CAAA,qBAAAC,CAAA,gBAAAC,CAAA,gBAAAC,CAAA,gBAAAZ,UAAA,cAAAa,kBAAA,cAAAC,2BAAA,SAAAC,CAAA,OAAApB,MAAA,CAAAoB,CAAA,EAAA1B,CAAA,qCAAA2B,CAAA,GAAApC,MAAA,CAAAqC,cAAA,EAAAC,CAAA,GAAAF,CAAA,IAAAA,CAAA,CAAAA,CAAA,CAAAG,MAAA,QAAAD,CAAA,IAAAA,CAAA,KAAAvC,CAAA,IAAAG,CAAA,CAAAyB,IAAA,CAAAW,CAAA,EAAA7B,CAAA,MAAA0B,CAAA,GAAAG,CAAA,OAAAE,CAAA,GAAAN,0BAAA,CAAAjC,SAAA,GAAAmB,SAAA,CAAAnB,SAAA,GAAAD,MAAA,CAAAqB,MAAA,CAAAc,CAAA,YAAAM,sBAAA3C,CAAA,gCAAA4C,OAAA,WAAA7C,CAAA,IAAAkB,MAAA,CAAAjB,CAAA,EAAAD,CAAA,YAAAC,CAAA,gBAAA6C,OAAA,CAAA9C,CAAA,EAAAC,CAAA,sBAAA8C,cAAA9C,CAAA,EAAAD,CAAA,aAAAgD,OAAA9C,CAAA,EAAAK,CAAA,EAAAG,CAAA,EAAAE,CAAA,QAAAE,CAAA,GAAAa,QAAA,CAAA1B,CAAA,CAAAC,CAAA,GAAAD,CAAA,EAAAM,CAAA,mBAAAO,CAAA,CAAAc,IAAA,QAAAZ,CAAA,GAAAF,CAAA,CAAAe,GAAA,EAAAE,CAAA,GAAAf,CAAA,CAAAP,KAAA,SAAAsB,CAAA,gBAAAkB,OAAA,CAAAlB,CAAA,KAAA1B,CAAA,CAAAyB,IAAA,CAAAC,CAAA,eAAA/B,CAAA,CAAAkD,OAAA,CAAAnB,CAAA,CAAAoB,OAAA,EAAAC,IAAA,WAAAnD,CAAA,IAAA+C,MAAA,SAAA/C,CAAA,EAAAS,CAAA,EAAAE,CAAA,gBAAAX,CAAA,IAAA+C,MAAA,UAAA/C,CAAA,EAAAS,CAAA,EAAAE,CAAA,QAAAZ,CAAA,CAAAkD,OAAA,CAAAnB,CAAA,EAAAqB,IAAA,WAAAnD,CAAA,IAAAe,CAAA,CAAAP,KAAA,GAAAR,CAAA,EAAAS,CAAA,CAAAM,CAAA,gBAAAf,CAAA,WAAA+C,MAAA,UAAA/C,CAAA,EAAAS,CAAA,EAAAE,CAAA,SAAAA,CAAA,CAAAE,CAAA,CAAAe,GAAA,SAAA3B,CAAA,EAAAK,CAAA,oBAAAE,KAAA,WAAAA,MAAAR,CAAA,EAAAI,CAAA,aAAAgD,2BAAA,eAAArD,CAAA,WAAAA,CAAA,EAAAE,CAAA,IAAA8C,MAAA,CAAA/C,CAAA,EAAAI,CAAA,EAAAL,CAAA,EAAAE,CAAA,gBAAAA,CAAA,GAAAA,CAAA,GAAAA,CAAA,CAAAkD,IAAA,CAAAC,0BAAA,EAAAA,0BAAA,IAAAA,0BAAA,qBAAA3B,iBAAA1B,CAAA,EAAAE,CAAA,EAAAG,CAAA,QAAAE,CAAA,GAAAwB,CAAA,mBAAArB,CAAA,EAAAE,CAAA,QAAAL,CAAA,KAAA0B,CAAA,YAAAqB,KAAA,sCAAA/C,CAAA,KAAA2B,CAAA,oBAAAxB,CAAA,QAAAE,CAAA,WAAAH,KAAA,EAAAR,CAAA,EAAAsD,IAAA,eAAAlD,CAAA,CAAAmD,MAAA,GAAA9C,CAAA,EAAAL,CAAA,CAAAwB,GAAA,GAAAjB,CAAA,UAAAE,CAAA,GAAAT,CAAA,CAAAoD,QAAA,MAAA3C,CAAA,QAAAE,CAAA,GAAA0C,mBAAA,CAAA5C,CAAA,EAAAT,CAAA,OAAAW,CAAA,QAAAA,CAAA,KAAAmB,CAAA,mBAAAnB,CAAA,qBAAAX,CAAA,CAAAmD,MAAA,EAAAnD,CAAA,CAAAsD,IAAA,GAAAtD,CAAA,CAAAuD,KAAA,GAAAvD,CAAA,CAAAwB,GAAA,sBAAAxB,CAAA,CAAAmD,MAAA,QAAAjD,CAAA,KAAAwB,CAAA,QAAAxB,CAAA,GAAA2B,CAAA,EAAA7B,CAAA,CAAAwB,GAAA,EAAAxB,CAAA,CAAAwD,iBAAA,CAAAxD,CAAA,CAAAwB,GAAA,uBAAAxB,CAAA,CAAAmD,MAAA,IAAAnD,CAAA,CAAAyD,MAAA,WAAAzD,CAAA,CAAAwB,GAAA,GAAAtB,CAAA,GAAA0B,CAAA,MAAAK,CAAA,GAAAX,QAAA,CAAA3B,CAAA,EAAAE,CAAA,EAAAG,CAAA,oBAAAiC,CAAA,CAAAV,IAAA,QAAArB,CAAA,GAAAF,CAAA,CAAAkD,IAAA,GAAArB,CAAA,GAAAF,CAAA,EAAAM,CAAA,CAAAT,GAAA,KAAAM,CAAA,qBAAA1B,KAAA,EAAA6B,CAAA,CAAAT,GAAA,EAAA0B,IAAA,EAAAlD,CAAA,CAAAkD,IAAA,kBAAAjB,CAAA,CAAAV,IAAA,KAAArB,CAAA,GAAA2B,CAAA,EAAA7B,CAAA,CAAAmD,MAAA,YAAAnD,CAAA,CAAAwB,GAAA,GAAAS,CAAA,CAAAT,GAAA,mBAAA6B,oBAAA1D,CAAA,EAAAE,CAAA,QAAAG,CAAA,GAAAH,CAAA,CAAAsD,MAAA,EAAAjD,CAAA,GAAAP,CAAA,CAAAa,QAAA,CAAAR,CAAA,OAAAE,CAAA,KAAAN,CAAA,SAAAC,CAAA,CAAAuD,QAAA,qBAAApD,CAAA,IAAAL,CAAA,CAAAa,QAAA,CAAAkD,MAAA,KAAA7D,CAAA,CAAAsD,MAAA,aAAAtD,CAAA,CAAA2B,GAAA,GAAA5B,CAAA,EAAAyD,mBAAA,CAAA1D,CAAA,EAAAE,CAAA,eAAAA,CAAA,CAAAsD,MAAA,kBAAAnD,CAAA,KAAAH,CAAA,CAAAsD,MAAA,YAAAtD,CAAA,CAAA2B,GAAA,OAAAmC,SAAA,uCAAA3D,CAAA,iBAAA8B,CAAA,MAAAzB,CAAA,GAAAiB,QAAA,CAAApB,CAAA,EAAAP,CAAA,CAAAa,QAAA,EAAAX,CAAA,CAAA2B,GAAA,mBAAAnB,CAAA,CAAAkB,IAAA,SAAA1B,CAAA,CAAAsD,MAAA,YAAAtD,CAAA,CAAA2B,GAAA,GAAAnB,CAAA,CAAAmB,GAAA,EAAA3B,CAAA,CAAAuD,QAAA,SAAAtB,CAAA,MAAAvB,CAAA,GAAAF,CAAA,CAAAmB,GAAA,SAAAjB,CAAA,GAAAA,CAAA,CAAA2C,IAAA,IAAArD,CAAA,CAAAF,CAAA,CAAAiE,UAAA,IAAArD,CAAA,CAAAH,KAAA,EAAAP,CAAA,CAAAgE,IAAA,GAAAlE,CAAA,CAAAmE,OAAA,eAAAjE,CAAA,CAAAsD,MAAA,KAAAtD,CAAA,CAAAsD,MAAA,WAAAtD,CAAA,CAAA2B,GAAA,GAAA5B,CAAA,GAAAC,CAAA,CAAAuD,QAAA,SAAAtB,CAAA,IAAAvB,CAAA,IAAAV,CAAA,CAAAsD,MAAA,YAAAtD,CAAA,CAAA2B,GAAA,OAAAmC,SAAA,sCAAA9D,CAAA,CAAAuD,QAAA,SAAAtB,CAAA,cAAAiC,aAAAnE,CAAA,QAAAD,CAAA,KAAAqE,MAAA,EAAApE,CAAA,YAAAA,CAAA,KAAAD,CAAA,CAAAsE,QAAA,GAAArE,CAAA,WAAAA,CAAA,KAAAD,CAAA,CAAAuE,UAAA,GAAAtE,CAAA,KAAAD,CAAA,CAAAwE,QAAA,GAAAvE,CAAA,WAAAwE,UAAA,CAAAC,IAAA,CAAA1E,CAAA,cAAA2E,cAAA1E,CAAA,QAAAD,CAAA,GAAAC,CAAA,CAAA2E,UAAA,QAAA5E,CAAA,CAAA4B,IAAA,oBAAA5B,CAAA,CAAA6B,GAAA,EAAA5B,CAAA,CAAA2E,UAAA,GAAA5E,CAAA,aAAAyB,QAAAxB,CAAA,SAAAwE,UAAA,MAAAJ,MAAA,aAAApE,CAAA,CAAA4C,OAAA,CAAAuB,YAAA,cAAAS,KAAA,iBAAAnC,OAAA1C,CAAA,QAAAA,CAAA,WAAAA,CAAA,QAAAE,CAAA,GAAAF,CAAA,CAAAY,CAAA,OAAAV,CAAA,SAAAA,CAAA,CAAA4B,IAAA,CAAA9B,CAAA,4BAAAA,CAAA,CAAAkE,IAAA,SAAAlE,CAAA,OAAA8E,KAAA,CAAA9E,CAAA,CAAA+E,MAAA,SAAAxE,CAAA,OAAAG,CAAA,YAAAwD,KAAA,aAAA3D,CAAA,GAAAP,CAAA,CAAA+E,MAAA,OAAA1E,CAAA,CAAAyB,IAAA,CAAA9B,CAAA,EAAAO,CAAA,UAAA2D,IAAA,CAAAzD,KAAA,GAAAT,CAAA,CAAAO,CAAA,GAAA2D,IAAA,CAAAX,IAAA,OAAAW,IAAA,SAAAA,IAAA,CAAAzD,KAAA,GAAAR,CAAA,EAAAiE,IAAA,CAAAX,IAAA,OAAAW,IAAA,YAAAxD,CAAA,CAAAwD,IAAA,GAAAxD,CAAA,gBAAAsD,SAAA,CAAAf,OAAA,CAAAjD,CAAA,kCAAAoC,iBAAA,CAAAhC,SAAA,GAAAiC,0BAAA,EAAA9B,CAAA,CAAAoC,CAAA,mBAAAlC,KAAA,EAAA4B,0BAAA,EAAAjB,YAAA,SAAAb,CAAA,CAAA8B,0BAAA,mBAAA5B,KAAA,EAAA2B,iBAAA,EAAAhB,YAAA,SAAAgB,iBAAA,CAAA4C,WAAA,GAAA9D,MAAA,CAAAmB,0BAAA,EAAArB,CAAA,wBAAAhB,CAAA,CAAAiF,mBAAA,aAAAhF,CAAA,QAAAD,CAAA,wBAAAC,CAAA,IAAAA,CAAA,CAAAiF,WAAA,WAAAlF,CAAA,KAAAA,CAAA,KAAAoC,iBAAA,6BAAApC,CAAA,CAAAgF,WAAA,IAAAhF,CAAA,CAAAmF,IAAA,OAAAnF,CAAA,CAAAoF,IAAA,aAAAnF,CAAA,WAAAE,MAAA,CAAAkF,cAAA,GAAAlF,MAAA,CAAAkF,cAAA,CAAApF,CAAA,EAAAoC,0BAAA,KAAApC,CAAA,CAAAqF,SAAA,GAAAjD,0BAAA,EAAAnB,MAAA,CAAAjB,CAAA,EAAAe,CAAA,yBAAAf,CAAA,CAAAG,SAAA,GAAAD,MAAA,CAAAqB,MAAA,CAAAmB,CAAA,GAAA1C,CAAA,KAAAD,CAAA,CAAAuF,KAAA,aAAAtF,CAAA,aAAAkD,OAAA,EAAAlD,CAAA,OAAA2C,qBAAA,CAAAG,aAAA,CAAA3C,SAAA,GAAAc,MAAA,CAAA6B,aAAA,CAAA3C,SAAA,EAAAU,CAAA,iCAAAd,CAAA,CAAA+C,aAAA,GAAAA,aAAA,EAAA/C,CAAA,CAAAwF,KAAA,aAAAvF,CAAA,EAAAC,CAAA,EAAAG,CAAA,EAAAE,CAAA,EAAAG,CAAA,eAAAA,CAAA,KAAAA,CAAA,GAAA+E,OAAA,OAAA7E,CAAA,OAAAmC,aAAA,CAAAzB,IAAA,CAAArB,CAAA,EAAAC,CAAA,EAAAG,CAAA,EAAAE,CAAA,GAAAG,CAAA,UAAAV,CAAA,CAAAiF,mBAAA,CAAA/E,CAAA,IAAAU,CAAA,GAAAA,CAAA,CAAAsD,IAAA,GAAAd,IAAA,WAAAnD,CAAA,WAAAA,CAAA,CAAAsD,IAAA,GAAAtD,CAAA,CAAAQ,KAAA,GAAAG,CAAA,CAAAsD,IAAA,WAAAtB,qBAAA,CAAAD,CAAA,GAAAzB,MAAA,CAAAyB,CAAA,EAAA3B,CAAA,gBAAAE,MAAA,CAAAyB,CAAA,EAAA/B,CAAA,iCAAAM,MAAA,CAAAyB,CAAA,6DAAA3C,CAAA,CAAA0F,IAAA,aAAAzF,CAAA,QAAAD,CAAA,GAAAG,MAAA,CAAAF,CAAA,GAAAC,CAAA,gBAAAG,CAAA,IAAAL,CAAA,EAAAE,CAAA,CAAAwE,IAAA,CAAArE,CAAA,UAAAH,CAAA,CAAAyF,OAAA,aAAAzB,KAAA,WAAAhE,CAAA,CAAA6E,MAAA,SAAA9E,CAAA,GAAAC,CAAA,CAAA0F,GAAA,QAAA3F,CAAA,IAAAD,CAAA,SAAAkE,IAAA,CAAAzD,KAAA,GAAAR,CAAA,EAAAiE,IAAA,CAAAX,IAAA,OAAAW,IAAA,WAAAA,IAAA,CAAAX,IAAA,OAAAW,IAAA,QAAAlE,CAAA,CAAA0C,MAAA,GAAAA,MAAA,EAAAjB,OAAA,CAAArB,SAAA,KAAA8E,WAAA,EAAAzD,OAAA,EAAAoD,KAAA,WAAAA,MAAA7E,CAAA,aAAA6F,IAAA,WAAA3B,IAAA,WAAAP,IAAA,QAAAC,KAAA,GAAA3D,CAAA,OAAAsD,IAAA,YAAAE,QAAA,cAAAD,MAAA,gBAAA3B,GAAA,GAAA5B,CAAA,OAAAwE,UAAA,CAAA5B,OAAA,CAAA8B,aAAA,IAAA3E,CAAA,WAAAE,CAAA,kBAAAA,CAAA,CAAA4F,MAAA,OAAAzF,CAAA,CAAAyB,IAAA,OAAA5B,CAAA,MAAA4E,KAAA,EAAA5E,CAAA,CAAA6F,KAAA,cAAA7F,CAAA,IAAAD,CAAA,MAAA+F,IAAA,WAAAA,KAAA,SAAAzC,IAAA,WAAAtD,CAAA,QAAAwE,UAAA,IAAAG,UAAA,kBAAA3E,CAAA,CAAA2B,IAAA,QAAA3B,CAAA,CAAA4B,GAAA,cAAAoE,IAAA,KAAApC,iBAAA,WAAAA,kBAAA7D,CAAA,aAAAuD,IAAA,QAAAvD,CAAA,MAAAE,CAAA,kBAAAgG,OAAA7F,CAAA,EAAAE,CAAA,WAAAK,CAAA,CAAAgB,IAAA,YAAAhB,CAAA,CAAAiB,GAAA,GAAA7B,CAAA,EAAAE,CAAA,CAAAgE,IAAA,GAAA7D,CAAA,EAAAE,CAAA,KAAAL,CAAA,CAAAsD,MAAA,WAAAtD,CAAA,CAAA2B,GAAA,GAAA5B,CAAA,KAAAM,CAAA,aAAAA,CAAA,QAAAkE,UAAA,CAAAM,MAAA,MAAAxE,CAAA,SAAAA,CAAA,QAAAG,CAAA,QAAA+D,UAAA,CAAAlE,CAAA,GAAAK,CAAA,GAAAF,CAAA,CAAAkE,UAAA,iBAAAlE,CAAA,CAAA2D,MAAA,SAAA6B,MAAA,aAAAxF,CAAA,CAAA2D,MAAA,SAAAwB,IAAA,QAAA/E,CAAA,GAAAT,CAAA,CAAAyB,IAAA,CAAApB,CAAA,eAAAM,CAAA,GAAAX,CAAA,CAAAyB,IAAA,CAAApB,CAAA,qBAAAI,CAAA,IAAAE,CAAA,aAAA6E,IAAA,GAAAnF,CAAA,CAAA4D,QAAA,SAAA4B,MAAA,CAAAxF,CAAA,CAAA4D,QAAA,gBAAAuB,IAAA,GAAAnF,CAAA,CAAA6D,UAAA,SAAA2B,MAAA,CAAAxF,CAAA,CAAA6D,UAAA,cAAAzD,CAAA,aAAA+E,IAAA,GAAAnF,CAAA,CAAA4D,QAAA,SAAA4B,MAAA,CAAAxF,CAAA,CAAA4D,QAAA,qBAAAtD,CAAA,YAAAsC,KAAA,qDAAAuC,IAAA,GAAAnF,CAAA,CAAA6D,UAAA,SAAA2B,MAAA,CAAAxF,CAAA,CAAA6D,UAAA,YAAAT,MAAA,WAAAA,OAAA7D,CAAA,EAAAD,CAAA,aAAAE,CAAA,QAAAuE,UAAA,CAAAM,MAAA,MAAA7E,CAAA,SAAAA,CAAA,QAAAK,CAAA,QAAAkE,UAAA,CAAAvE,CAAA,OAAAK,CAAA,CAAA8D,MAAA,SAAAwB,IAAA,IAAAxF,CAAA,CAAAyB,IAAA,CAAAvB,CAAA,wBAAAsF,IAAA,GAAAtF,CAAA,CAAAgE,UAAA,QAAA7D,CAAA,GAAAH,CAAA,aAAAG,CAAA,iBAAAT,CAAA,mBAAAA,CAAA,KAAAS,CAAA,CAAA2D,MAAA,IAAArE,CAAA,IAAAA,CAAA,IAAAU,CAAA,CAAA6D,UAAA,KAAA7D,CAAA,cAAAE,CAAA,GAAAF,CAAA,GAAAA,CAAA,CAAAkE,UAAA,cAAAhE,CAAA,CAAAgB,IAAA,GAAA3B,CAAA,EAAAW,CAAA,CAAAiB,GAAA,GAAA7B,CAAA,EAAAU,CAAA,SAAA8C,MAAA,gBAAAU,IAAA,GAAAxD,CAAA,CAAA6D,UAAA,EAAApC,CAAA,SAAAgE,QAAA,CAAAvF,CAAA,MAAAuF,QAAA,WAAAA,SAAAlG,CAAA,EAAAD,CAAA,oBAAAC,CAAA,CAAA2B,IAAA,QAAA3B,CAAA,CAAA4B,GAAA,qBAAA5B,CAAA,CAAA2B,IAAA,mBAAA3B,CAAA,CAAA2B,IAAA,QAAAsC,IAAA,GAAAjE,CAAA,CAAA4B,GAAA,gBAAA5B,CAAA,CAAA2B,IAAA,SAAAqE,IAAA,QAAApE,GAAA,GAAA5B,CAAA,CAAA4B,GAAA,OAAA2B,MAAA,kBAAAU,IAAA,yBAAAjE,CAAA,CAAA2B,IAAA,IAAA5B,CAAA,UAAAkE,IAAA,GAAAlE,CAAA,GAAAmC,CAAA,KAAAiE,MAAA,WAAAA,OAAAnG,CAAA,aAAAD,CAAA,QAAAyE,UAAA,CAAAM,MAAA,MAAA/E,CAAA,SAAAA,CAAA,QAAAE,CAAA,QAAAuE,UAAA,CAAAzE,CAAA,OAAAE,CAAA,CAAAqE,UAAA,KAAAtE,CAAA,cAAAkG,QAAA,CAAAjG,CAAA,CAAA0E,UAAA,EAAA1E,CAAA,CAAAsE,QAAA,GAAAG,aAAA,CAAAzE,CAAA,GAAAiC,CAAA,OAAAkE,KAAA,WAAAC,OAAArG,CAAA,aAAAD,CAAA,QAAAyE,UAAA,CAAAM,MAAA,MAAA/E,CAAA,SAAAA,CAAA,QAAAE,CAAA,QAAAuE,UAAA,CAAAzE,CAAA,OAAAE,CAAA,CAAAmE,MAAA,KAAApE,CAAA,QAAAI,CAAA,GAAAH,CAAA,CAAA0E,UAAA,kBAAAvE,CAAA,CAAAuB,IAAA,QAAArB,CAAA,GAAAF,CAAA,CAAAwB,GAAA,EAAA8C,aAAA,CAAAzE,CAAA,YAAAK,CAAA,gBAAA+C,KAAA,8BAAAiD,aAAA,WAAAA,cAAAvG,CAAA,EAAAE,CAAA,EAAAG,CAAA,gBAAAoD,QAAA,KAAA5C,QAAA,EAAA6B,MAAA,CAAA1C,CAAA,GAAAiE,UAAA,EAAA/D,CAAA,EAAAiE,OAAA,EAAA9D,CAAA,oBAAAmD,MAAA,UAAA3B,GAAA,GAAA5B,CAAA,GAAAkC,CAAA,OAAAnC,CAAA;AAAA,SAAAwG,eAAAC,GAAA,EAAA/F,CAAA,WAAAgG,eAAA,CAAAD,GAAA,KAAAE,qBAAA,CAAAF,GAAA,EAAA/F,CAAA,KAAAkG,2BAAA,CAAAH,GAAA,EAAA/F,CAAA,KAAAmG,gBAAA;AAAA,SAAAA,iBAAA,cAAA7C,SAAA;AAAA,SAAA2C,sBAAAzG,CAAA,EAAA8B,CAAA,QAAA/B,CAAA,WAAAC,CAAA,gCAAAS,MAAA,IAAAT,CAAA,CAAAS,MAAA,CAAAE,QAAA,KAAAX,CAAA,4BAAAD,CAAA,QAAAD,CAAA,EAAAK,CAAA,EAAAK,CAAA,EAAAM,CAAA,EAAAJ,CAAA,OAAAqB,CAAA,OAAA1B,CAAA,iBAAAG,CAAA,IAAAT,CAAA,GAAAA,CAAA,CAAA6B,IAAA,CAAA5B,CAAA,GAAAgE,IAAA,QAAAlC,CAAA,QAAA7B,MAAA,CAAAF,CAAA,MAAAA,CAAA,UAAAgC,CAAA,uBAAAA,CAAA,IAAAjC,CAAA,GAAAU,CAAA,CAAAoB,IAAA,CAAA7B,CAAA,GAAAsD,IAAA,MAAA3C,CAAA,CAAA8D,IAAA,CAAA1E,CAAA,CAAAS,KAAA,GAAAG,CAAA,CAAAmE,MAAA,KAAA/C,CAAA,GAAAC,CAAA,iBAAA/B,CAAA,IAAAK,CAAA,OAAAF,CAAA,GAAAH,CAAA,yBAAA+B,CAAA,YAAAhC,CAAA,CAAA8D,MAAA,KAAA/C,CAAA,GAAAf,CAAA,CAAA8D,MAAA,IAAA5D,MAAA,CAAAa,CAAA,MAAAA,CAAA,2BAAAT,CAAA,QAAAF,CAAA,aAAAO,CAAA;AAAA,SAAA8F,gBAAAD,GAAA,QAAAK,KAAA,CAAAC,OAAA,CAAAN,GAAA,UAAAA,GAAA;AAAA,SAAAO,2BAAAzG,CAAA,EAAA0G,cAAA,QAAAC,EAAA,UAAAvG,MAAA,oBAAAJ,CAAA,CAAAI,MAAA,CAAAE,QAAA,KAAAN,CAAA,qBAAA2G,EAAA,QAAAJ,KAAA,CAAAC,OAAA,CAAAxG,CAAA,MAAA2G,EAAA,GAAAN,2BAAA,CAAArG,CAAA,MAAA0G,cAAA,IAAA1G,CAAA,WAAAA,CAAA,CAAAwE,MAAA,qBAAAmC,EAAA,EAAA3G,CAAA,GAAA2G,EAAA,MAAAxG,CAAA,UAAAyG,CAAA,YAAAA,EAAA,eAAAjF,CAAA,EAAAiF,CAAA,EAAA9G,CAAA,WAAAA,EAAA,QAAAK,CAAA,IAAAH,CAAA,CAAAwE,MAAA,WAAAxB,IAAA,mBAAAA,IAAA,SAAA9C,KAAA,EAAAF,CAAA,CAAAG,CAAA,UAAAV,CAAA,WAAAA,EAAAoH,EAAA,UAAAA,EAAA,KAAAnF,CAAA,EAAAkF,CAAA,gBAAAnD,SAAA,iJAAAqD,gBAAA,SAAAC,MAAA,UAAAC,GAAA,WAAArF,CAAA,WAAAA,EAAA,IAAAgF,EAAA,GAAAA,EAAA,CAAApF,IAAA,CAAAvB,CAAA,MAAAF,CAAA,WAAAA,EAAA,QAAAmH,IAAA,GAAAN,EAAA,CAAAhD,IAAA,IAAAmD,gBAAA,GAAAG,IAAA,CAAAjE,IAAA,SAAAiE,IAAA,KAAAxH,CAAA,WAAAA,EAAAyH,GAAA,IAAAH,MAAA,SAAAC,GAAA,GAAAE,GAAA,KAAAxF,CAAA,WAAAA,EAAA,eAAAoF,gBAAA,IAAAH,EAAA,CAAAnD,MAAA,UAAAmD,EAAA,CAAAnD,MAAA,oBAAAuD,MAAA,QAAAC,GAAA;AAAA,SAAAX,4BAAArG,CAAA,EAAAmH,MAAA,SAAAnH,CAAA,qBAAAA,CAAA,sBAAAoH,iBAAA,CAAApH,CAAA,EAAAmH,MAAA,OAAArH,CAAA,GAAAF,MAAA,CAAAC,SAAA,CAAAwH,QAAA,CAAA9F,IAAA,CAAAvB,CAAA,EAAAwF,KAAA,aAAA1F,CAAA,iBAAAE,CAAA,CAAA2E,WAAA,EAAA7E,CAAA,GAAAE,CAAA,CAAA2E,WAAA,CAAAC,IAAA,MAAA9E,CAAA,cAAAA,CAAA,mBAAAyG,KAAA,CAAAe,IAAA,CAAAtH,CAAA,OAAAF,CAAA,+DAAAyH,IAAA,CAAAzH,CAAA,UAAAsH,iBAAA,CAAApH,CAAA,EAAAmH,MAAA;AAAA,SAAAC,kBAAAlB,GAAA,EAAAsB,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAtB,GAAA,CAAA1B,MAAA,EAAAgD,GAAA,GAAAtB,GAAA,CAAA1B,MAAA,WAAArE,CAAA,MAAAsH,IAAA,OAAAlB,KAAA,CAAAiB,GAAA,GAAArH,CAAA,GAAAqH,GAAA,EAAArH,CAAA,IAAAsH,IAAA,CAAAtH,CAAA,IAAA+F,GAAA,CAAA/F,CAAA,UAAAsH,IAAA;AAAA,SAAA/E,QAAA1C,CAAA,sCAAA0C,OAAA,wBAAAtC,MAAA,uBAAAA,MAAA,CAAAE,QAAA,aAAAN,CAAA,kBAAAA,CAAA,gBAAAA,CAAA,WAAAA,CAAA,yBAAAI,MAAA,IAAAJ,CAAA,CAAA2E,WAAA,KAAAvE,MAAA,IAAAJ,CAAA,KAAAI,MAAA,CAAAP,SAAA,qBAAAG,CAAA,KAAA0C,OAAA,CAAA1C,CAAA;AAAA,SAAA0H,mBAAAC,GAAA,EAAAhF,OAAA,EAAAiF,MAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,GAAA,EAAAzG,GAAA,cAAA0G,IAAA,GAAAL,GAAA,CAAAI,GAAA,EAAAzG,GAAA,OAAApB,KAAA,GAAA8H,IAAA,CAAA9H,KAAA,WAAA+H,KAAA,IAAAL,MAAA,CAAAK,KAAA,iBAAAD,IAAA,CAAAhF,IAAA,IAAAL,OAAA,CAAAzC,KAAA,YAAAgF,OAAA,CAAAvC,OAAA,CAAAzC,KAAA,EAAA2C,IAAA,CAAAgF,KAAA,EAAAC,MAAA;AAAA,SAAAI,kBAAAC,EAAA,6BAAAC,IAAA,SAAAC,IAAA,GAAAC,SAAA,aAAApD,OAAA,WAAAvC,OAAA,EAAAiF,MAAA,QAAAD,GAAA,GAAAQ,EAAA,CAAAI,KAAA,CAAAH,IAAA,EAAAC,IAAA,YAAAR,MAAA3H,KAAA,IAAAwH,kBAAA,CAAAC,GAAA,EAAAhF,OAAA,EAAAiF,MAAA,EAAAC,KAAA,EAAAC,MAAA,UAAA5H,KAAA,cAAA4H,OAAAd,GAAA,IAAAU,kBAAA,CAAAC,GAAA,EAAAhF,OAAA,EAAAiF,MAAA,EAAAC,KAAA,EAAAC,MAAA,WAAAd,GAAA,KAAAa,KAAA,CAAAW,SAAA;AADA,OAAOC,GAAG,MAAM,KAAK;AACrB,OAAOC,SAAS,MAAM,qBAAqB;AAC3C,OAAOC,UAAU,MAAM,sBAAsB;AAC7C,OAAOC,OAAO,MAAM,mBAAmB;AACvC,OAAOC,eAAe,MAAM,mBAAmB;AAG/C,OAAO,IAAMC,SAAS,GAAG;EACrBC,UAAU,EAAE,4BAA4B;EACxCC,UAAU,EAAE,4BAA4B;EACxCC,WAAW,EAAE,kBAAkB;EAC/BC,OAAO,EAAE;AACb,CAAC;AAED,OAAO,SAASC,SAASA,CAACC,OAAO,EAA8B;EAAA,IAA5BC,QAAQ,GAAAf,SAAA,CAAA9D,MAAA,QAAA8D,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,IAAE1D,IAAI,GAAA0D,SAAA,CAAA9D,MAAA,QAAA8D,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EACzDe,QAAQ,CAACC,MAAM,GAAGD,QAAQ,CAACC,MAAM,IAAI,GAAG;EACxC,OAAO;IACH1E,IAAI,EAAE2E,UAAU,CAAC3E,IAAI,CAAC;IACtBwE,OAAO,EAAPA,OAAO;IACPC,QAAQ,EAARA;EACJ,CAAC;AACL;AAEA,OAAO,SAASG,IAAIA,CAAA,EAAG;EACnB,OAAOC,IAAI,CAACC,KAAK,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AACxC;AAEA,gBAAsBC,OAAOA,CAAAC,EAAA;EAAA,OAAAC,QAAA,CAAAxB,KAAA,OAAAD,SAAA;AAAA;AAE5B,SAAAyB,SAAA;EAAAA,QAAA,GAAA7B,iBAAA,eAAA1I,mBAAA,GAAAqF,IAAA,CAFM,SAAAmF,QAAuBC,YAAY;IAAA,OAAAzK,mBAAA,GAAAuB,IAAA,UAAAmJ,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAA7E,IAAA,GAAA6E,QAAA,CAAAxG,IAAA;QAAA;UAAA,OAAAwG,QAAA,CAAA5G,MAAA,WAC/B,IAAI2B,OAAO,CAAC,UAAAvC,OAAO;YAAA,OAAIyH,UAAU,CAACzH,OAAO,EAAEsH,YAAY,CAAC;UAAA,EAAC;QAAA;QAAA;UAAA,OAAAE,QAAA,CAAA1E,IAAA;MAAA;IAAA,GAAAuE,OAAA;EAAA,CACnE;EAAA,OAAAD,QAAA,CAAAxB,KAAA,OAAAD,SAAA;AAAA;AAED,gBAAsB+B,KAAKA,CAAAC,GAAA;EAAA,OAAAC,MAAA,CAAAhC,KAAA,OAAAD,SAAA;AAAA;AAE1B,SAAAiC,OAAA;EAAAA,MAAA,GAAArC,iBAAA,eAAA1I,mBAAA,GAAAqF,IAAA,CAFM,SAAA2F,SAAqBC,OAAO;IAAA,OAAAjL,mBAAA,GAAAuB,IAAA,UAAA2J,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAArF,IAAA,GAAAqF,SAAA,CAAAhH,IAAA;QAAA;UAAAgH,SAAA,CAAAhH,IAAA;UAAA,OAClBkG,OAAO,CAACY,OAAO,GAAG,IAAI,CAAC;QAAA;UAAA,OAAAE,SAAA,CAAApH,MAAA,WAAAoH,SAAA,CAAAvH,IAAA;QAAA;QAAA;UAAA,OAAAuH,SAAA,CAAAlF,IAAA;MAAA;IAAA,GAAA+E,QAAA;EAAA,CACvC;EAAA,OAAAD,MAAA,CAAAhC,KAAA,OAAAD,SAAA;AAAA;AAED,OAAO,SAASsC,cAAcA,CAACX,YAAY,EAAEY,OAAO,EAAE;EAClD,OAAO,IAAI3F,OAAO,CAAC,UAACvC,OAAO,EAAEiF,MAAM,EAAK;IACpC,IAAMkD,KAAK,GAAGV,UAAU,CAAC,YAAM;MAC3BxC,MAAM,CAAC,IAAI7E,KAAK,CAAC,0BAA0B,GAAGkH,YAAY,GAAG,IAAI,CAAC,CAAC;IACvE,CAAC,EAAEA,YAAY,CAAC;IAEhBY,OAAO,CACFhI,IAAI,CAAC,UAAA3C,KAAK,EAAI;MACX6K,YAAY,CAACD,KAAK,CAAC;MACnBnI,OAAO,CAACzC,KAAK,CAAC;IAClB,CAAC,CAAC,CACD4F,KAAK,CAAC,UAAAkF,MAAM,EAAI;MACbD,YAAY,CAACD,KAAK,CAAC;MACnBlD,MAAM,CAACoD,MAAM,CAAC;IAClB,CAAC,CAAC;EACV,CAAC,CAAC;AACN;AAEA,OAAO,SAASC,UAAUA,CAACC,IAAI,EAAE;EAC7B,OAAOA,IAAI,CAACC,KAAK,CAAC,OAAO,CAAC,CAACC,MAAM,CAAC,UAAAC,IAAI;IAAA,OAAI,CAACC,UAAU,CAACD,IAAI,CAAC;EAAA,EAAC,CAACE,GAAG,CAAC,UAAAF,IAAI;IAAA,OAAIA,IAAI,CAACG,IAAI,CAAC,CAAC;EAAA,EAAC;AACzF;AAEA,OAAO,SAASC,WAAWA,CAAC1D,GAAG,EAAE2D,IAAI,EAAe;EAAA,IAAbC,IAAI,GAAArD,SAAA,CAAA9D,MAAA,QAAA8D,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EAC9C,IAAIoD,IAAI,IAAIA,IAAI,CAAC3L,cAAc,CAACgI,GAAG,CAAC,KAAK4D,IAAI,GAAGD,IAAI,CAAC3D,GAAG,CAAC,KAAK4D,IAAI,GAAG,IAAI,CAAC,EAAE;IACxE,OAAOD,IAAI;EACf,CAAC,MAAM,IAAIhJ,OAAA,CAAOgJ,IAAI,MAAK,QAAQ,EAAE;IACjC,KAAK,IAAIE,KAAK,IAAIF,IAAI,EAAE;MACpB,IAAMG,MAAM,GAAGJ,WAAW,CAAC1D,GAAG,EAAE2D,IAAI,CAACE,KAAK,CAAC,EAAED,IAAI,CAAC;MAClD,IAAIE,MAAM,EAAE;QACR,OAAOA,MAAM;MACjB;IACJ;EACJ;EACA,OAAO,IAAI;AACf;AAEA,OAAO,SAASP,UAAUA,CAACpL,KAAK,EAAE;EAC9B,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC3B,OAAOA,KAAK,KAAK,CAAC;EACtB,CAAC,MAAM;IACH,OAAO0I,OAAO,CAAC1I,KAAK,CAAC;EACzB;AACJ;AAEA,OAAO,SAASqJ,UAAUA,CAACuC,GAAG,EAAE;EAC5B,OAAOC,cAAc,CAACrD,SAAS,CAACoD,GAAG,CAAC,CAAC;AACzC;AAEA,OAAO,SAASC,cAAcA,CAACD,GAAG,EAAE;EAChCA,GAAG,GAAGA,GAAG,IAAI,EAAE;EACf,OAAOA,GAAG,CAAC,CAAC,CAAC,CAACE,WAAW,CAAC,CAAC,GAAGF,GAAG,CAACtG,KAAK,CAAC,CAAC,CAAC;AAC9C;AAEA,OAAO,SAASyG,cAAcA,CAACH,GAAG,EAAE;EAChCA,GAAG,GAAGA,GAAG,IAAI,EAAE;EACf,OAAOA,GAAG,CAAC,CAAC,CAAC,CAACI,WAAW,CAAC,CAAC,GAAGJ,GAAG,CAACtG,KAAK,CAAC,CAAC,CAAC;AAC9C;AAEA,OAAO,SAAS2G,WAAWA,CAACL,GAAG,EAAE;EAC7BA,GAAG,GAAGA,GAAG,IAAI,EAAE;EACf,OAAOA,GAAG,CACLX,KAAK,CAAC,GAAG,CAAC,CACVI,GAAG,CAAC,UAAAa,IAAI;IAAA,OAAIzD,UAAU,CAACyD,IAAI,CAAC;EAAA,EAAC,CAC7BC,IAAI,CAAC,GAAG,CAAC;AAClB;AAEA,OAAO,SAASC,WAAWA,CAACR,GAAG,EAAc;EAAA,IAAZS,KAAK,GAAAjE,SAAA,CAAA9D,MAAA,QAAA8D,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EACvCwD,GAAG,GAAGA,GAAG,IAAI,EAAE;EACf,IAAIA,GAAG,CAACtH,MAAM,IAAI+H,KAAK,EAAE;IACrB,OAAOT,GAAG;EACd,CAAC,MAAM;IACH,OAAOA,GAAG,CAACU,SAAS,CAAC,CAAC,EAAED,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK;EAC9C;AACJ;AAEA,OAAO,SAASE,UAAUA,CAACX,GAAG,EAAE;EAC5BA,GAAG,GAAGA,GAAG,IAAI,EAAE;EACf,OAAOrD,GAAG,CAACqD,GAAG,EAAE;IACZY,SAAS,EAAE,CAAC,CAAC;IACbC,cAAc,EAAE,IAAI;IACpBC,kBAAkB,EAAE,CAAC,QAAQ;EACjC,CAAC,CAAC;AACN;AAEA,OAAO,SAASC,YAAYA,CAACrI,MAAM,EAA2C;EAAA,IAAzCsI,UAAU,GAAAxE,SAAA,CAAA9D,MAAA,QAAA8D,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EAAA,IAAEyE,YAAY,GAAAzE,SAAA,CAAA9D,MAAA,QAAA8D,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAExE,IAAI0E,UAAU,GAAGlE,SAAS,CAACC,UAAU;EACrC,IAAIgE,YAAY,EAAEC,UAAU,IAAIlE,SAAS,CAACE,UAAU;EACpD,IAAI8D,UAAU,EAAEE,UAAU,IAAIlE,SAAS,CAACI,OAAO;EAE/C,IAAI2D,YAAY,GAAG,EAAE;EACrB,KAAK,IAAI1M,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqE,MAAM,EAAErE,CAAC,EAAE,EAAE;IAC7B,IAAM8M,WAAW,GAAGxD,IAAI,CAACC,KAAK,CAACD,IAAI,CAACyD,MAAM,CAAC,CAAC,GAAGF,UAAU,CAACxI,MAAM,CAAC;IACjEqI,YAAY,IAAIG,UAAU,CAACC,WAAW,CAAC;EAC3C;EAEA,OAAOJ,YAAY;AACvB;AAEA,OAAO,SAASM,SAASA,CAAC3I,MAAM,EAAE;EAC9B,IAAIqH,MAAM,GAAG,EAAE;EACf,KAAK,IAAI1L,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqE,MAAM,EAAErE,CAAC,EAAE,EAAE;IAC7B,IAAM8M,WAAW,GAAGxD,IAAI,CAACC,KAAK,CAACD,IAAI,CAACyD,MAAM,CAAC,CAAC,GAAGpE,SAAS,CAACG,WAAW,CAACzE,MAAM,CAAC;IAC5EqH,MAAM,IAAI/C,SAAS,CAACG,WAAW,CAACgE,WAAW,CAAC;EAChD;EAEA,OAAOpB,MAAM;AACjB;AAEA,OAAO,SAASuB,UAAUA,CAAA,EAAmB;EAAA,IAAlBC,SAAS,GAAA/E,SAAA,CAAA9D,MAAA,QAAA8D,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EACvC,IAAItG,CAAC,GAAG2H,IAAI,CAACC,GAAG,CAAC,CAAC;EAClB,IAAM0D,IAAI,GAAG,sCAAsC,CAACC,OAAO,CAAC,OAAO,EAAE,UAAUhN,CAAC,EAAE;IAC9E,IAAMZ,CAAC,GAAG,CAACqC,CAAC,GAAGyH,IAAI,CAACyD,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;IAC3ClL,CAAC,GAAGyH,IAAI,CAACC,KAAK,CAAC1H,CAAC,GAAG,EAAE,CAAC;IACtB,OAAO,CAACzB,CAAC,KAAK,GAAG,GAAGZ,CAAC,GAAIA,CAAC,GAAG,GAAG,GAAG,GAAI,EAAE0H,QAAQ,CAAC,EAAE,CAAC;EACzD,CAAC,CAAC;EACF,OAAOgG,SAAS,GAAGC,IAAI,GAAGA,IAAI,CAACE,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;AACtD;AAEA,OAAO,SAASC,cAAcA,CAACC,IAAI,EAA6D;EAAA,IAA3DC,UAAU,GAAArF,SAAA,CAAA9D,MAAA,QAAA8D,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,UAACsF,WAAW;IAAA,OAAKnE,IAAI,CAACyD,MAAM,CAAC,CAAC,GAAGU,WAAW;EAAA;EAC1F,IAAIC,QAAQ,GAAGjO,MAAM,CAACuF,IAAI,CAACuI,IAAI,CAAC;EAChC,IAAII,OAAO,GAAGlO,MAAM,CAACuC,MAAM,CAACuL,IAAI,CAAC;EAEjC,IAAIE,WAAW,GAAGE,OAAO,CAACC,MAAM,CAAC,UAACC,GAAG,EAAEC,MAAM;IAAA,OAAKD,GAAG,GAAGC,MAAM;EAAA,GAAE,CAAC,CAAC;EAElE,IAAIC,SAAS,GAAGP,UAAU,CAACC,WAAW,CAAC;EACvC,IAAIO,SAAS,GAAG,CAAC;EAEjB,KAAK,IAAIhO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0N,QAAQ,CAACrJ,MAAM,EAAErE,CAAC,EAAE,EAAE;IACtCgO,SAAS,IAAIL,OAAO,CAAC3N,CAAC,CAAC;IACvB,IAAI+N,SAAS,IAAIC,SAAS,EAAE;MACxB,OAAON,QAAQ,CAAC1N,CAAC,CAAC;IACtB;EACJ;AACJ;AAEA,OAAO,SAASiO,UAAUA,CAACC,GAAG,EAAwB;EAAA,IAAtBC,YAAY,GAAAhG,SAAA,CAAA9D,MAAA,QAAA8D,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAChD,IAAIoF,IAAI,GAAG,CAAC,CAAC;EACb,IAAMa,OAAO,GAAG1F,eAAe,CAAC2F,KAAK,CAACH,GAAG,EAAE;IAACC,YAAY,EAAEA;EAAY,CAAC,CAAC;EAAC,IAAAG,SAAA,GAAAhI,0BAAA,CACtD8H,OAAO;IAAAG,KAAA;EAAA;IAA1B,KAAAD,SAAA,CAAA9M,CAAA,MAAA+M,KAAA,GAAAD,SAAA,CAAA3O,CAAA,IAAAkD,IAAA,GAA4B;MAAA,IAAnB2L,MAAM,GAAAD,KAAA,CAAAxO,KAAA;MACXwN,IAAI,CAACiB,MAAM,CAAC/J,IAAI,CAAC,GAAG+J,MAAM,CAACzO,KAAK;IACpC;EAAC,SAAA8G,GAAA;IAAAyH,SAAA,CAAAhP,CAAA,CAAAuH,GAAA;EAAA;IAAAyH,SAAA,CAAA/M,CAAA;EAAA;EACD,OAAOgM,IAAI;AACf;AAEA,OAAO,SAASkB,YAAYA,CAACR,UAAU,EAAE;EACrC,OAAOxO,MAAM,CAACiP,OAAO,CAACT,UAAU,CAAC,CAC5B7C,GAAG,CAAC,UAAAuD,IAAA;IAAA,IAAAC,KAAA,GAAA9I,cAAA,CAAA6I,IAAA;MAAE/G,GAAG,GAAAgH,KAAA;MAAE7O,KAAK,GAAA6O,KAAA;IAAA,UAAAC,MAAA,CAASjH,GAAG,OAAAiH,MAAA,CAAI9O,KAAK;EAAA,CAAE,CAAC,CACxCmM,IAAI,CAAC,GAAG,CAAC;AAClB;AAEA,OAAO,SAAS4C,cAAcA,CAACC,QAAQ,EAAE;EACrC,OACIA,QAAQ,KAAK1G,SAAS,IACtB0G,QAAQ,KAAK,IAAI,IACjBA,QAAQ,KAAK,CAAC,IACdA,QAAQ,KAAK,GAAG,IAChBA,QAAQ,KAAK,GAAG,IAChBA,QAAQ,KAAK,GAAG,IAChB,GAAG,IAAIA,QAAQ;AAEvB;AAEA,OAAO,SAASC,WAAWA,CAAC1P,CAAC,EAAE;EAAA,IAAA2P,UAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,WAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,WAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,WAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,WAAA;EAC3B,OACI,CAAAvQ,CAAC,aAADA,CAAC,gBAAA2P,UAAA,GAAD3P,CAAC,CAAE2J,OAAO,cAAAgG,UAAA,gBAAAC,qBAAA,GAAVD,UAAA,CAAYlD,WAAW,cAAAmD,qBAAA,gBAAAA,qBAAA,GAAvBA,qBAAA,CAAA9N,IAAA,CAAA6N,UAA0B,CAAC,cAAAC,qBAAA,gBAAAC,sBAAA,GAA3BD,qBAAA,CAA6BY,QAAQ,cAAAX,sBAAA,uBAArCA,sBAAA,CAAA/N,IAAA,CAAA8N,qBAAA,EAAwC,SAAS,CAAC,MAClD5P,CAAC,aAADA,CAAC,gBAAA8P,WAAA,GAAD9P,CAAC,CAAE2J,OAAO,cAAAmG,WAAA,gBAAAC,qBAAA,GAAVD,WAAA,CAAYrD,WAAW,cAAAsD,qBAAA,gBAAAA,qBAAA,GAAvBA,qBAAA,CAAAjO,IAAA,CAAAgO,WAA0B,CAAC,cAAAC,qBAAA,gBAAAC,sBAAA,GAA3BD,qBAAA,CAA6BS,QAAQ,cAAAR,sBAAA,uBAArCA,sBAAA,CAAAlO,IAAA,CAAAiO,qBAAA,EAAwC,SAAS,CAAC,MAClD/P,CAAC,aAADA,CAAC,gBAAAiQ,WAAA,GAADjQ,CAAC,CAAE2J,OAAO,cAAAsG,WAAA,gBAAAC,qBAAA,GAAVD,WAAA,CAAYxD,WAAW,cAAAyD,qBAAA,gBAAAA,qBAAA,GAAvBA,qBAAA,CAAApO,IAAA,CAAAmO,WAA0B,CAAC,cAAAC,qBAAA,gBAAAC,sBAAA,GAA3BD,qBAAA,CAA6BM,QAAQ,cAAAL,sBAAA,uBAArCA,sBAAA,CAAArO,IAAA,CAAAoO,qBAAA,EAAwC,gBAAgB,CAAC,MACzDlQ,CAAC,aAADA,CAAC,gBAAAoQ,WAAA,GAADpQ,CAAC,CAAE2J,OAAO,cAAAyG,WAAA,gBAAAC,qBAAA,GAAVD,WAAA,CAAY3D,WAAW,cAAA4D,qBAAA,gBAAAA,qBAAA,GAAvBA,qBAAA,CAAAvO,IAAA,CAAAsO,WAA0B,CAAC,cAAAC,qBAAA,gBAAAC,sBAAA,GAA3BD,qBAAA,CAA6BG,QAAQ,cAAAF,sBAAA,uBAArCA,sBAAA,CAAAxO,IAAA,CAAAuO,qBAAA,EAAwC,aAAa,CAAC,KACtDb,cAAc,CAACxP,CAAC,aAADA,CAAC,gBAAAuQ,WAAA,GAADvQ,CAAC,CAAE4J,QAAQ,cAAA2G,WAAA,uBAAXA,WAAA,CAAa1G,MAAM,CAAC;AAE3C"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["xss","camelCase","capitalize","isEmpty","setCookieParser","CONSTANTS","LOWER_CASE","UPPER_CASE","HEXADECIMAL","NUMBERS","Exception","message","response","name","status","pascalCase","time","Math","floor","Date","now","sleepMs","milliseconds","Promise","resolve","setTimeout","sleep","seconds","promiseTimeout","promise","reject","timer","Error","then","value","clearTimeout","catch","reason","splitLines","text","split","filter","item","checkEmpty","map","trim","findKeyNode","key","node","pair","hasOwnProperty","index","result","str","upperCaseFirst","toUpperCase","slice","lowerCaseFirst","toLowerCase","titleString","word","join","limitString","limit","length","substring","safeString","whiteList","stripIgnoreTag","stripIgnoreTagBody","randomString","useNumbers","useUppercase","characters","i","randomIndex","random","randomHex","randomUuid","useDashes","d","uuid","replace","c","r","toString","replaceAll","randomWeighted","dict","randomFunc","totalWeight","elements","Object","keys","weights","values","reduce","sum","weight","randomNum","weightSum","cookieDict","res","decodeValues","cookies","parse","cookie","cookieHeader","entries","isIntlHttpCode","httpCode","undefined","isIntlError","e","includes"],"sources":["../src/index.js"],"sourcesContent":["import xss from \"xss\";\r\nimport camelCase from \"lodash/camelCase.js\";\r\nimport capitalize from \"lodash/capitalize.js\";\r\nimport isEmpty from \"lodash/isEmpty.js\";\r\nimport setCookieParser from \"set-cookie-parser\";\r\n\r\n\r\nexport const CONSTANTS = {\r\n LOWER_CASE: \"abcdefghijklmnopqrstuvwxyz\",\r\n UPPER_CASE: \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\",\r\n HEXADECIMAL: \"0123456789abcdef\",\r\n NUMBERS: \"0123456789\",\r\n};\r\n\r\nexport function Exception(message, response = {}, name = null) {\r\n response.status = response.status || 400;\r\n return {\r\n name: pascalCase(name),\r\n message,\r\n response,\r\n }\r\n}\r\n\r\nexport function time() {\r\n return Math.floor(Date.now() / 1000);\r\n}\r\n\r\nexport async function sleepMs(milliseconds) {\r\n return new Promise(resolve => setTimeout(resolve, milliseconds));\r\n}\r\n\r\nexport async function sleep(seconds) {\r\n return await sleepMs(seconds * 1000);\r\n}\r\n\r\nexport function promiseTimeout(milliseconds, promise) {\r\n return new Promise((resolve, reject) => {\r\n const timer = setTimeout(() => {\r\n reject(new Error('Promise timed out after ' + milliseconds + 'ms'));\r\n }, milliseconds);\r\n\r\n promise\r\n .then(value => {\r\n clearTimeout(timer);\r\n resolve(value);\r\n })\r\n .catch(reason => {\r\n clearTimeout(timer);\r\n reject(reason);\r\n });\r\n });\r\n}\r\n\r\nexport function splitLines(text) {\r\n return text.split(/\\r?\\n/).filter(item => !checkEmpty(item)).map(item => item.trim());\r\n}\r\n\r\nexport function findKeyNode(key, node, pair = null) {\r\n if (node && node.hasOwnProperty(key) && (pair ? node[key] === pair : true)) {\r\n return node;\r\n } else if (typeof node === 'object') {\r\n for (let index in node) {\r\n const result = findKeyNode(key, node[index], pair);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function checkEmpty(value) {\r\n if (typeof value === \"number\") {\r\n return value === 0;\r\n } else {\r\n return isEmpty(value);\r\n }\r\n}\r\n\r\nexport function pascalCase(str) {\r\n return upperCaseFirst(camelCase(str));\r\n}\r\n\r\nexport function upperCaseFirst(str) {\r\n str = str || \"\";\r\n return str[0].toUpperCase() + str.slice(1);\r\n}\r\n\r\nexport function lowerCaseFirst(str) {\r\n str = str || \"\";\r\n return str[0].toLowerCase() + str.slice(1);\r\n}\r\n\r\nexport function titleString(str) {\r\n str = str || \"\";\r\n return str\r\n .split(' ')\r\n .map(word => capitalize(word))\r\n .join(' ');\r\n}\r\n\r\nexport function limitString(str, limit = 35) {\r\n str = str || \"\";\r\n if (str.length <= limit) {\r\n return str;\r\n } else {\r\n return str.substring(0, limit - 3) + \"...\";\r\n }\r\n}\r\n\r\nexport function safeString(str) {\r\n str = str || \"\";\r\n return xss(str, {\r\n whiteList: {},\r\n stripIgnoreTag: true,\r\n stripIgnoreTagBody: [\"script\"]\r\n });\r\n}\r\n\r\nexport function randomString(length, useNumbers = true, useUppercase = false) {\r\n\r\n let characters = CONSTANTS.LOWER_CASE;\r\n if (useUppercase) characters += CONSTANTS.UPPER_CASE;\r\n if (useNumbers) characters += CONSTANTS.NUMBERS;\r\n\r\n let randomString = '';\r\n for (let i = 0; i < length; i++) {\r\n const randomIndex = Math.floor(Math.random() * characters.length);\r\n randomString += characters[randomIndex];\r\n }\r\n\r\n return randomString;\r\n}\r\n\r\nexport function randomHex(length) {\r\n let result = '';\r\n for (let i = 0; i < length; i++) {\r\n const randomIndex = Math.floor(Math.random() * CONSTANTS.HEXADECIMAL.length);\r\n result += CONSTANTS.HEXADECIMAL[randomIndex];\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function randomUuid(useDashes = true) {\r\n let d = Date.now();\r\n const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n const r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n return useDashes ? uuid : uuid.replaceAll(\"-\", \"\");\r\n}\r\n\r\nexport function randomWeighted(dict, randomFunc = (totalWeight) => Math.random() * totalWeight) {\r\n let elements = Object.keys(dict);\r\n let weights = Object.values(dict);\r\n\r\n let totalWeight = weights.reduce((sum, weight) => sum + weight, 0);\r\n\r\n let randomNum = randomFunc(totalWeight);\r\n let weightSum = 0;\r\n\r\n for (let i = 0; i < elements.length; i++) {\r\n weightSum += weights[i];\r\n if (randomNum <= weightSum) {\r\n return elements[i];\r\n }\r\n }\r\n}\r\n\r\nexport function cookieDict(res, decodeValues = false) {\r\n let dict = {};\r\n const cookies = setCookieParser.parse(res, {decodeValues: decodeValues});\r\n for (let cookie of cookies) {\r\n dict[cookie.name] = cookie.value;\r\n }\r\n return dict;\r\n}\r\n\r\nexport function cookieHeader(cookieDict) {\r\n return Object.entries(cookieDict)\r\n .map(([key, value]) => `${key}=${value}`)\r\n .join(';')\r\n}\r\n\r\nexport function isIntlHttpCode(httpCode) {\r\n return (\r\n httpCode === undefined ||\r\n httpCode === null ||\r\n httpCode === 0 ||\r\n httpCode === 402 ||\r\n httpCode === 407 ||\r\n httpCode === 466 ||\r\n 500 <= httpCode\r\n );\r\n}\r\n\r\nexport function isIntlError(e) {\r\n return (\r\n e?.message?.toLowerCase?.()?.includes?.(\"timeout\") ||\r\n e?.message?.toLowerCase?.()?.includes?.(\"aborted\") ||\r\n e?.message?.toLowerCase?.()?.includes?.(\"tls connection\") ||\r\n e?.message?.toLowerCase?.()?.includes?.(\"socket hang\") ||\r\n isIntlHttpCode(e?.response?.status)\r\n )\r\n}"],"mappings":"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"}
|
package/mjs/node.js
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import crypto from "crypto";
|
|
4
|
+
import { networkInterfaces } from "os";
|
|
5
|
+
import { execSync } from "child_process";
|
|
6
|
+
import bcrypt from "bcrypt";
|
|
7
|
+
import axios from "axios";
|
|
8
|
+
import { HttpsProxyAgent } from "hpagent";
|
|
9
|
+
import { CONSTANTS, randomWeighted, sleep } from "./index.js";
|
|
10
|
+
export function tokenString(length, useNumbers = true, useUppercase = false) {
|
|
11
|
+
const lowercaseChars = CONSTANTS.LOWER_CASE;
|
|
12
|
+
const uppercaseChars = CONSTANTS.UPPER_CASE;
|
|
13
|
+
const numbers = CONSTANTS.NUMBERS;
|
|
14
|
+
let characters = lowercaseChars;
|
|
15
|
+
if (useUppercase) characters += uppercaseChars;
|
|
16
|
+
if (useNumbers) characters += numbers;
|
|
17
|
+
let randomString = '';
|
|
18
|
+
while (randomString.length < length) {
|
|
19
|
+
const byte = crypto.randomBytes(1)[0];
|
|
20
|
+
const index = byte % characters.length;
|
|
21
|
+
if (byte < 256 - 256 % characters.length) {
|
|
22
|
+
randomString += characters[index];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return randomString;
|
|
26
|
+
}
|
|
27
|
+
export function tokenHex(length) {
|
|
28
|
+
return crypto.randomBytes(Math.ceil(length / 2)).toString('hex').slice(0, length);
|
|
29
|
+
}
|
|
30
|
+
export function tokenUuid(useDashes = true) {
|
|
31
|
+
const uuid = crypto.randomUUID().toString();
|
|
32
|
+
return useDashes ? uuid : uuid.replaceAll("-", "");
|
|
33
|
+
}
|
|
34
|
+
export function tokenWeighted(dict) {
|
|
35
|
+
return randomWeighted(dict, crypto.randomInt);
|
|
36
|
+
}
|
|
37
|
+
export function serverIp() {
|
|
38
|
+
const interfaces = networkInterfaces();
|
|
39
|
+
for (const devName in interfaces) {
|
|
40
|
+
const interfaceValue = interfaces[devName];
|
|
41
|
+
for (let i = 0; i < interfaceValue.length; i++) {
|
|
42
|
+
const alias = interfaceValue[i];
|
|
43
|
+
if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.address.startsWith("192.168.") && !alias.internal) return alias.address;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return '127.0.0.1';
|
|
47
|
+
}
|
|
48
|
+
export function getVersion() {
|
|
49
|
+
try {
|
|
50
|
+
const date = new Date(execSync('git show -s --format=%ci HEAD').toString().trim());
|
|
51
|
+
const formatDatePart = value => value.toString().padStart(2, '0');
|
|
52
|
+
const year = date.getFullYear().toString().slice(-2);
|
|
53
|
+
const month = formatDatePart(date.getMonth() + 1);
|
|
54
|
+
const day = formatDatePart(date.getDate());
|
|
55
|
+
const hour = formatDatePart(date.getHours());
|
|
56
|
+
const minute = formatDatePart(date.getMinutes());
|
|
57
|
+
return parseFloat(`${year}${month}.${day}${hour}${minute}`);
|
|
58
|
+
} catch {
|
|
59
|
+
return 1.0;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export function createNumDir(mainDirectory) {
|
|
63
|
+
fs.mkdirSync(mainDirectory, {
|
|
64
|
+
recursive: true
|
|
65
|
+
});
|
|
66
|
+
for (let i = 0; i <= 9; i++) {
|
|
67
|
+
try {
|
|
68
|
+
fs.mkdirSync(path.join(mainDirectory, i.toString()));
|
|
69
|
+
} catch (e) {
|
|
70
|
+
console.error(`createNumDir:${i}`, e.message);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export function md5(data) {
|
|
75
|
+
return crypto.createHash('md5').update(data).digest("hex");
|
|
76
|
+
}
|
|
77
|
+
export function hashBcrypt(plainText) {
|
|
78
|
+
return bcrypt.hashSync(plainText, bcrypt.genSaltSync(10));
|
|
79
|
+
}
|
|
80
|
+
export function verifyBcrypt(plainText, hash) {
|
|
81
|
+
return bcrypt.compareSync(plainText, hash);
|
|
82
|
+
}
|
|
83
|
+
export function formatProxy(proxy, protocol = "http") {
|
|
84
|
+
proxy = proxy.trim();
|
|
85
|
+
const splitByProtocol = proxy.split("://");
|
|
86
|
+
if (1 < splitByProtocol.length) protocol = splitByProtocol[0];
|
|
87
|
+
proxy = splitByProtocol[splitByProtocol.length - 1];
|
|
88
|
+
if (!proxy.includes("@")) {
|
|
89
|
+
const proxyParts = proxy.split(":");
|
|
90
|
+
if (4 <= proxyParts.length) {
|
|
91
|
+
proxy = `${proxyParts[proxyParts.length - 2]}:${proxyParts[proxyParts.length - 1]}@`;
|
|
92
|
+
proxyParts.pop();
|
|
93
|
+
proxyParts.pop();
|
|
94
|
+
proxy += proxyParts.join(":");
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const proxyParts = proxy.split(':');
|
|
98
|
+
const proxyEnd = parseInt(proxyParts[proxyParts.length - 1]);
|
|
99
|
+
const proxyStart = proxyParts[proxyParts.length - 2];
|
|
100
|
+
if (!proxyStart.includes(".")) {
|
|
101
|
+
proxyParts.pop();
|
|
102
|
+
proxyParts[proxyParts.length - 1] = crypto.randomInt(parseInt(proxyStart), proxyEnd + 1).toString();
|
|
103
|
+
}
|
|
104
|
+
return protocol + "://" + proxyParts.join(':');
|
|
105
|
+
}
|
|
106
|
+
export function proxyObject(...args) {
|
|
107
|
+
let proxy = formatProxy(...args);
|
|
108
|
+
const splitByProtocol = proxy.split('://');
|
|
109
|
+
const splitById = splitByProtocol[splitByProtocol.length - 1].split('@');
|
|
110
|
+
const splitByConn = splitById[splitById.length - 1].split(':');
|
|
111
|
+
proxy = {
|
|
112
|
+
protocol: splitByProtocol[0],
|
|
113
|
+
host: splitByConn[0],
|
|
114
|
+
port: parseInt(splitByConn[1])
|
|
115
|
+
};
|
|
116
|
+
if (1 < splitById.length) {
|
|
117
|
+
const splitByAuth = splitById[0].split(':');
|
|
118
|
+
proxy.auth = {
|
|
119
|
+
username: splitByAuth[0],
|
|
120
|
+
password: splitByAuth[1]
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
return proxy;
|
|
124
|
+
}
|
|
125
|
+
export async function proxify(proxyConfig, callback = formatProxy) {
|
|
126
|
+
proxyConfig = proxyConfig || {};
|
|
127
|
+
const timeout = 7000;
|
|
128
|
+
if (proxyConfig.mode === 1) {
|
|
129
|
+
return callback(proxyConfig.proxy);
|
|
130
|
+
} else if (proxyConfig.mode === 2) {
|
|
131
|
+
const proxy = callback(proxyConfig.proxy);
|
|
132
|
+
try {
|
|
133
|
+
await axios.get(proxyConfig.resetApi, {
|
|
134
|
+
timeout
|
|
135
|
+
});
|
|
136
|
+
} catch {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
await sleep(5);
|
|
140
|
+
for (let i = 0; i < 5; i++) {
|
|
141
|
+
try {
|
|
142
|
+
const res = await axios.get("https://api64.ipify.org", {
|
|
143
|
+
timeout,
|
|
144
|
+
httpsAgent: new HttpsProxyAgent({
|
|
145
|
+
proxy,
|
|
146
|
+
timeout: 7000
|
|
147
|
+
})
|
|
148
|
+
});
|
|
149
|
+
if (res.status === 200) return proxy;
|
|
150
|
+
} catch {
|
|
151
|
+
await sleep(3);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
} else if (proxyConfig.mode === 3) {
|
|
155
|
+
try {
|
|
156
|
+
const res = await axios.get(proxyConfig.resetApi, {
|
|
157
|
+
timeout
|
|
158
|
+
});
|
|
159
|
+
if (res.status === 200) return callback(proxyConfig.proxy);
|
|
160
|
+
} catch {
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
} else if (proxyConfig.mode === 4) {
|
|
164
|
+
return callback(proxyConfig.proxy).replace("{SESSION}", tokenHex(8));
|
|
165
|
+
} else if (proxyConfig.mode === 5) {
|
|
166
|
+
try {
|
|
167
|
+
const lines = proxyConfig.proxy.split("\n");
|
|
168
|
+
const line = lines[crypto.randomInt(0, lines.length)];
|
|
169
|
+
return callback(line);
|
|
170
|
+
} catch {
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=node.js.map
|
package/mjs/node.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","names":["fs","path","crypto","networkInterfaces","execSync","bcrypt","axios","HttpsProxyAgent","CONSTANTS","randomWeighted","sleep","tokenString","length","useNumbers","useUppercase","lowercaseChars","LOWER_CASE","uppercaseChars","UPPER_CASE","numbers","NUMBERS","characters","randomString","byte","randomBytes","index","tokenHex","Math","ceil","toString","slice","tokenUuid","useDashes","uuid","randomUUID","replaceAll","tokenWeighted","dict","randomInt","serverIp","interfaces","devName","interfaceValue","i","alias","family","address","startsWith","internal","getVersion","date","Date","trim","formatDatePart","value","padStart","year","getFullYear","month","getMonth","day","getDate","hour","getHours","minute","getMinutes","parseFloat","createNumDir","mainDirectory","mkdirSync","recursive","join","e","console","error","message","md5","data","createHash","update","digest","hashBcrypt","plainText","hashSync","genSaltSync","verifyBcrypt","hash","compareSync","formatProxy","proxy","protocol","splitByProtocol","split","includes","proxyParts","pop","proxyEnd","parseInt","proxyStart","proxyObject","args","splitById","splitByConn","host","port","splitByAuth","auth","username","password","proxify","proxyConfig","callback","timeout","mode","get","resetApi","res","httpsAgent","status","replace","lines","line"],"sources":["../src/node.js"],"sourcesContent":["import fs from \"fs\";\r\nimport path from \"path\";\r\nimport crypto from \"crypto\";\r\nimport {networkInterfaces} from \"os\";\r\nimport {execSync} from \"child_process\";\r\n\r\nimport bcrypt from \"bcrypt\";\r\nimport axios from \"axios\";\r\nimport {HttpsProxyAgent} from \"hpagent\";\r\n\r\nimport {CONSTANTS, randomWeighted, sleep} from \"./index.js\";\r\n\r\n\r\nexport function tokenString(length, useNumbers = true, useUppercase = false) {\r\n const lowercaseChars = CONSTANTS.LOWER_CASE;\r\n const uppercaseChars = CONSTANTS.UPPER_CASE;\r\n const numbers = CONSTANTS.NUMBERS;\r\n\r\n let characters = lowercaseChars;\r\n if (useUppercase) characters += uppercaseChars;\r\n if (useNumbers) characters += numbers;\r\n\r\n let randomString = '';\r\n while (randomString.length < length) {\r\n const byte = crypto.randomBytes(1)[0];\r\n const index = byte % characters.length;\r\n if (byte < (256 - (256 % characters.length))) {\r\n randomString += characters[index];\r\n }\r\n }\r\n\r\n return randomString;\r\n}\r\n\r\nexport function tokenHex(length) {\r\n return crypto\r\n .randomBytes(Math.ceil(length / 2))\r\n .toString('hex')\r\n .slice(0, length);\r\n}\r\n\r\nexport function tokenUuid(useDashes = true) {\r\n const uuid = crypto.randomUUID().toString();\r\n return useDashes ? uuid : uuid.replaceAll(\"-\", \"\")\r\n}\r\n\r\nexport function tokenWeighted(dict) {\r\n return randomWeighted(dict, crypto.randomInt);\r\n}\r\n\r\nexport function serverIp() {\r\n const interfaces = networkInterfaces();\r\n for (const devName in interfaces) {\r\n const interfaceValue = interfaces[devName];\r\n for (let i = 0; i < interfaceValue.length; i++) {\r\n const alias = interfaceValue[i];\r\n if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.address.startsWith(\"192.168.\") && !alias.internal)\r\n return alias.address;\r\n }\r\n }\r\n return '127.0.0.1';\r\n}\r\n\r\nexport function getVersion() {\r\n try {\r\n const date = new Date(execSync('git show -s --format=%ci HEAD').toString().trim());\r\n const formatDatePart = (value) => value.toString().padStart(2, '0');\r\n const year = date.getFullYear().toString().slice(-2);\r\n const month = formatDatePart(date.getMonth() + 1);\r\n const day = formatDatePart(date.getDate());\r\n const hour = formatDatePart(date.getHours());\r\n const minute = formatDatePart(date.getMinutes());\r\n return parseFloat(`${year}${month}.${day}${hour}${minute}`);\r\n } catch {\r\n return 1.0;\r\n }\r\n}\r\n\r\nexport function createNumDir(mainDirectory) {\r\n fs.mkdirSync(mainDirectory, {recursive: true});\r\n for (let i = 0; i <= 9; i++) {\r\n try {\r\n fs.mkdirSync(path.join(mainDirectory, i.toString()));\r\n } catch (e) {\r\n console.error(`createNumDir:${i}`, e.message);\r\n }\r\n }\r\n}\r\n\r\nexport function md5(data) {\r\n return crypto.createHash('md5').update(data).digest(\"hex\");\r\n}\r\n\r\nexport function hashBcrypt(plainText) {\r\n return bcrypt.hashSync(plainText, bcrypt.genSaltSync(10));\r\n}\r\n\r\nexport function verifyBcrypt(plainText, hash) {\r\n return bcrypt.compareSync(plainText, hash);\r\n}\r\n\r\nexport function formatProxy(proxy, protocol = \"http\") {\r\n proxy = proxy.trim();\r\n const splitByProtocol = proxy.split(\"://\");\r\n if (1 < splitByProtocol.length)\r\n protocol = splitByProtocol[0];\r\n proxy = splitByProtocol[splitByProtocol.length - 1];\r\n if (!proxy.includes(\"@\")) {\r\n const proxyParts = proxy.split(\":\");\r\n if (4 <= proxyParts.length) {\r\n proxy = `${proxyParts[proxyParts.length - 2]}:${proxyParts[proxyParts.length - 1]}@`;\r\n proxyParts.pop();\r\n proxyParts.pop();\r\n proxy += proxyParts.join(\":\");\r\n }\r\n }\r\n const proxyParts = proxy.split(':');\r\n const proxyEnd = parseInt(proxyParts[proxyParts.length - 1]);\r\n const proxyStart = proxyParts[proxyParts.length - 2];\r\n if (!proxyStart.includes(\".\")) {\r\n proxyParts.pop();\r\n proxyParts[proxyParts.length - 1] = crypto.randomInt(parseInt(proxyStart), proxyEnd + 1).toString();\r\n }\r\n return protocol + \"://\" + proxyParts.join(':');\r\n}\r\n\r\nexport function proxyObject(...args) {\r\n let proxy = formatProxy(...args);\r\n const splitByProtocol = proxy.split('://');\r\n const splitById = splitByProtocol[splitByProtocol.length - 1].split('@');\r\n const splitByConn = splitById[splitById.length - 1].split(':');\r\n proxy = {\r\n protocol: splitByProtocol[0],\r\n host: splitByConn[0],\r\n port: parseInt(splitByConn[1]),\r\n };\r\n if (1 < splitById.length) {\r\n const splitByAuth = splitById[0].split(':');\r\n proxy.auth = {\r\n username: splitByAuth[0],\r\n password: splitByAuth[1]\r\n };\r\n }\r\n return proxy;\r\n}\r\n\r\nexport async function proxify(proxyConfig, callback = formatProxy) {\r\n proxyConfig = proxyConfig || {};\r\n const timeout = 7000;\r\n if (proxyConfig.mode === 1) {\r\n return callback(proxyConfig.proxy);\r\n } else if (proxyConfig.mode === 2) {\r\n const proxy = callback(proxyConfig.proxy);\r\n try {\r\n await axios.get(proxyConfig.resetApi, {timeout});\r\n } catch {\r\n return false;\r\n }\r\n await sleep(5);\r\n for (let i = 0; i < 5; i++) {\r\n try {\r\n const res = await axios.get(\"https://api64.ipify.org\", {\r\n timeout,\r\n httpsAgent: new HttpsProxyAgent({proxy, timeout: 7000})\r\n });\r\n if (res.status === 200)\r\n return proxy;\r\n } catch {\r\n await sleep(3);\r\n }\r\n }\r\n } else if (proxyConfig.mode === 3) {\r\n try {\r\n const res = await axios.get(proxyConfig.resetApi, {timeout});\r\n if (res.status === 200)\r\n return callback(proxyConfig.proxy);\r\n } catch {\r\n return false;\r\n }\r\n } else if (proxyConfig.mode === 4) {\r\n return callback(proxyConfig.proxy).replace(\"{SESSION}\", tokenHex(8));\r\n } else if (proxyConfig.mode === 5) {\r\n try {\r\n const lines = proxyConfig.proxy.split(\"\\n\");\r\n const line = lines[crypto.randomInt(0, lines.length)];\r\n return callback(line);\r\n } catch {\r\n return false;\r\n }\r\n }\r\n\r\n return null;\r\n}"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "melperjs",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0",
|
|
4
4
|
"description": "Javascript module to use predefined common functions and utilities",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"helper",
|
|
7
7
|
"mixins",
|
|
8
8
|
"common functions",
|
|
9
|
-
"javascript helper"
|
|
9
|
+
"javascript helper",
|
|
10
|
+
"nodejs helper"
|
|
10
11
|
],
|
|
11
12
|
"repository": {
|
|
12
13
|
"type": "git",
|
|
@@ -19,15 +20,23 @@
|
|
|
19
20
|
".": {
|
|
20
21
|
"import": "./mjs/index.js",
|
|
21
22
|
"require": "./cjs/index.js"
|
|
23
|
+
},
|
|
24
|
+
"./node": {
|
|
25
|
+
"import": "./mjs/node.js",
|
|
26
|
+
"require": "./cjs/node.js"
|
|
22
27
|
}
|
|
23
28
|
},
|
|
24
29
|
"scripts": {
|
|
25
|
-
"build-module": "cross-env BABEL_ENV=module babel ./src --out-dir ./mjs",
|
|
26
30
|
"build-node": "babel ./src --out-dir ./cjs",
|
|
27
|
-
"build": "
|
|
31
|
+
"build-module": "cross-env BABEL_ENV=module babel ./src --out-dir ./mjs",
|
|
32
|
+
"build-browser": "cross-env BABEL_ENV=browser babel ./src --out-dir ./lib",
|
|
33
|
+
"build": "npm run build-node && npm run build-module && npm run build-browser",
|
|
28
34
|
"test": "node test/script.js"
|
|
29
35
|
},
|
|
30
36
|
"dependencies": {
|
|
37
|
+
"axios": "^1.6.2",
|
|
38
|
+
"bcrypt": "^5.1.1",
|
|
39
|
+
"hpagent": "^1.2.0",
|
|
31
40
|
"lodash": "^4.17.21",
|
|
32
41
|
"set-cookie-parser": "^2.6.0",
|
|
33
42
|
"xss": "^1.0.14"
|
|
@@ -37,7 +46,6 @@
|
|
|
37
46
|
"@babel/core": "^7.23.3",
|
|
38
47
|
"@babel/preset-env": "^7.23.3",
|
|
39
48
|
"babel-preset-env": "^1.7.0",
|
|
40
|
-
"cross-env": "^7.0.3"
|
|
41
|
-
"axios": "^1.6.2"
|
|
49
|
+
"cross-env": "^7.0.3"
|
|
42
50
|
}
|
|
43
51
|
}
|
package/src/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import xss from "xss";
|
|
2
|
+
import setCookieParser from "set-cookie-parser";
|
|
2
3
|
import camelCase from "lodash/camelCase.js";
|
|
3
4
|
import capitalize from "lodash/capitalize.js";
|
|
4
5
|
import isEmpty from "lodash/isEmpty.js";
|
|
5
|
-
import setCookieParser from "set-cookie-parser";
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
export const CONSTANTS = {
|
|
@@ -17,8 +17,8 @@ export function Exception(message, response = {}, name = null) {
|
|
|
17
17
|
return {
|
|
18
18
|
name: pascalCase(name),
|
|
19
19
|
message,
|
|
20
|
-
response
|
|
21
|
-
}
|
|
20
|
+
response
|
|
21
|
+
};
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
export function time() {
|
|
@@ -52,7 +52,7 @@ export function promiseTimeout(milliseconds, promise) {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
export function splitLines(text) {
|
|
55
|
-
return text.split(/\r?\n/).
|
|
55
|
+
return text.split(/\r?\n/).map(item => item.trim()).filter(item => !isEmpty(item));
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
export function findKeyNode(key, node, pair = null) {
|
|
@@ -91,7 +91,7 @@ export function lowerCaseFirst(str) {
|
|
|
91
91
|
return str[0].toLowerCase() + str.slice(1);
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
export function
|
|
94
|
+
export function titleCase(str) {
|
|
95
95
|
str = str || "";
|
|
96
96
|
return str
|
|
97
97
|
.split(' ')
|
|
@@ -118,7 +118,7 @@ export function safeString(str) {
|
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
export function randomString(length, useNumbers = true, useUppercase = false) {
|
|
121
|
-
|
|
121
|
+
|
|
122
122
|
let characters = CONSTANTS.LOWER_CASE;
|
|
123
123
|
if (useUppercase) characters += CONSTANTS.UPPER_CASE;
|
|
124
124
|
if (useNumbers) characters += CONSTANTS.NUMBERS;
|
|
@@ -142,6 +142,36 @@ export function randomHex(length) {
|
|
|
142
142
|
return result;
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
+
export function randomInteger(min, max, callback) {
|
|
146
|
+
const minNotSpecified = typeof max === 'undefined' || typeof max === 'function';
|
|
147
|
+
|
|
148
|
+
if (minNotSpecified) {
|
|
149
|
+
callback = max;
|
|
150
|
+
max = min;
|
|
151
|
+
min = 0;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
const isSync = typeof callback === 'undefined';
|
|
155
|
+
|
|
156
|
+
if (typeof min !== 'number' || typeof max !== 'number') {
|
|
157
|
+
throw new Error('min and max must be numerical values');
|
|
158
|
+
}
|
|
159
|
+
if (max <= min) {
|
|
160
|
+
throw new Error('max must be greater than min');
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
const randomNumber = Math.floor(Math.random() * (max - min)) + min;
|
|
164
|
+
|
|
165
|
+
if (isSync) {
|
|
166
|
+
return randomNumber;
|
|
167
|
+
} else {
|
|
168
|
+
if (typeof callback !== 'function') {
|
|
169
|
+
throw new Error('callback must be a function');
|
|
170
|
+
}
|
|
171
|
+
callback(randomNumber);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
145
175
|
export function randomUuid(useDashes = true) {
|
|
146
176
|
let d = Date.now();
|
|
147
177
|
const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
@@ -189,9 +219,10 @@ export function isIntlHttpCode(httpCode) {
|
|
|
189
219
|
httpCode === undefined ||
|
|
190
220
|
httpCode === null ||
|
|
191
221
|
httpCode === 0 ||
|
|
222
|
+
httpCode === 100 ||
|
|
192
223
|
httpCode === 402 ||
|
|
193
224
|
httpCode === 407 ||
|
|
194
|
-
httpCode
|
|
225
|
+
(460 <= httpCode && httpCode < 470) ||
|
|
195
226
|
500 <= httpCode
|
|
196
227
|
);
|
|
197
228
|
}
|
package/src/node.js
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import crypto from "crypto";
|
|
4
|
+
import {networkInterfaces} from "os";
|
|
5
|
+
import {execSync} from "child_process";
|
|
6
|
+
|
|
7
|
+
import bcrypt from "bcrypt";
|
|
8
|
+
|
|
9
|
+
import {CONSTANTS, randomWeighted, splitLines} from "./index.js";
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
export function tokenString(length, useNumbers = true, useUppercase = false) {
|
|
13
|
+
const lowercaseChars = CONSTANTS.LOWER_CASE;
|
|
14
|
+
const uppercaseChars = CONSTANTS.UPPER_CASE;
|
|
15
|
+
const numbers = CONSTANTS.NUMBERS;
|
|
16
|
+
|
|
17
|
+
let characters = lowercaseChars;
|
|
18
|
+
if (useUppercase) characters += uppercaseChars;
|
|
19
|
+
if (useNumbers) characters += numbers;
|
|
20
|
+
|
|
21
|
+
let randomString = '';
|
|
22
|
+
while (randomString.length < length) {
|
|
23
|
+
const byte = crypto.randomBytes(1)[0];
|
|
24
|
+
const index = byte % characters.length;
|
|
25
|
+
if (byte < (256 - (256 % characters.length))) {
|
|
26
|
+
randomString += characters[index];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return randomString;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function tokenHex(length) {
|
|
34
|
+
return crypto
|
|
35
|
+
.randomBytes(Math.ceil(length / 2))
|
|
36
|
+
.toString('hex')
|
|
37
|
+
.slice(0, length);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function tokenUuid(useDashes = true) {
|
|
41
|
+
const uuid = crypto.randomUUID().toString();
|
|
42
|
+
return useDashes ? uuid : uuid.replaceAll("-", "")
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function tokenWeighted(dict) {
|
|
46
|
+
return randomWeighted(dict, crypto.randomInt);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function serverIp() {
|
|
50
|
+
const interfaces = networkInterfaces();
|
|
51
|
+
for (const devName in interfaces) {
|
|
52
|
+
const interfaceValue = interfaces[devName];
|
|
53
|
+
for (let i = 0; i < interfaceValue.length; i++) {
|
|
54
|
+
const alias = interfaceValue[i];
|
|
55
|
+
if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.address.startsWith("192.168.") && !alias.internal)
|
|
56
|
+
return alias.address;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return '127.0.0.1';
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export function getVersion() {
|
|
63
|
+
try {
|
|
64
|
+
const date = new Date(execSync('git show -s --format=%ci HEAD').toString().trim());
|
|
65
|
+
const formatDatePart = (value) => value.toString().padStart(2, '0');
|
|
66
|
+
const year = date.getFullYear().toString().slice(-2);
|
|
67
|
+
const month = formatDatePart(date.getMonth() + 1);
|
|
68
|
+
const day = formatDatePart(date.getDate());
|
|
69
|
+
const hour = formatDatePart(date.getHours());
|
|
70
|
+
const minute = formatDatePart(date.getMinutes());
|
|
71
|
+
return parseFloat(`${year}${month}.${day}${hour}${minute}`);
|
|
72
|
+
} catch {
|
|
73
|
+
return 1.0;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export function createNumDir(mainDirectory) {
|
|
78
|
+
fs.mkdirSync(mainDirectory, {recursive: true});
|
|
79
|
+
for (let i = 0; i <= 9; i++) {
|
|
80
|
+
try {
|
|
81
|
+
fs.mkdirSync(path.join(mainDirectory, i.toString()));
|
|
82
|
+
} catch (e) {
|
|
83
|
+
console.error(`createNumDir:${i}`, e.message);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function md5(data) {
|
|
89
|
+
return crypto.createHash('md5').update(data).digest("hex");
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export function hashBcrypt(plainText) {
|
|
93
|
+
return bcrypt.hashSync(plainText, bcrypt.genSaltSync(10));
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function verifyBcrypt(plainText, hash) {
|
|
97
|
+
return bcrypt.compareSync(plainText, hash);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function formatProxy(proxy, protocol = "http") {
|
|
101
|
+
proxy = proxy.trim();
|
|
102
|
+
const splitByProtocol = proxy.split("://");
|
|
103
|
+
if (1 < splitByProtocol.length)
|
|
104
|
+
protocol = splitByProtocol[0];
|
|
105
|
+
proxy = splitByProtocol[splitByProtocol.length - 1];
|
|
106
|
+
if (!proxy.includes("@")) {
|
|
107
|
+
const proxyParts = proxy.split(":");
|
|
108
|
+
if (4 <= proxyParts.length) {
|
|
109
|
+
proxy = `${proxyParts[proxyParts.length - 2]}:${proxyParts[proxyParts.length - 1]}@`;
|
|
110
|
+
proxyParts.pop();
|
|
111
|
+
proxyParts.pop();
|
|
112
|
+
proxy += proxyParts.join(":");
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const proxyParts = proxy.split(':');
|
|
116
|
+
const proxyEnd = parseInt(proxyParts[proxyParts.length - 1]);
|
|
117
|
+
const proxyStart = proxyParts[proxyParts.length - 2];
|
|
118
|
+
if (!proxyStart.includes(".")) {
|
|
119
|
+
proxyParts.pop();
|
|
120
|
+
proxyParts[proxyParts.length - 1] = crypto.randomInt(parseInt(proxyStart), proxyEnd + 1).toString();
|
|
121
|
+
}
|
|
122
|
+
return protocol + "://" + proxyParts.join(':');
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export function proxyObject(...args) {
|
|
126
|
+
let proxy = formatProxy(...args);
|
|
127
|
+
const splitByProtocol = proxy.split('://');
|
|
128
|
+
const splitById = splitByProtocol[splitByProtocol.length - 1].split('@');
|
|
129
|
+
const splitByConn = splitById[splitById.length - 1].split(':');
|
|
130
|
+
proxy = {
|
|
131
|
+
protocol: splitByProtocol[0],
|
|
132
|
+
host: splitByConn[0],
|
|
133
|
+
port: parseInt(splitByConn[1]),
|
|
134
|
+
};
|
|
135
|
+
if (1 < splitById.length) {
|
|
136
|
+
const splitByAuth = splitById[0].split(':');
|
|
137
|
+
proxy.auth = {
|
|
138
|
+
username: splitByAuth[0],
|
|
139
|
+
password: splitByAuth[1]
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
return proxy;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export function proxyValue(proxies) {
|
|
146
|
+
let proxy;
|
|
147
|
+
proxies = proxies || "";
|
|
148
|
+
proxies = splitLines(proxies);
|
|
149
|
+
if (proxies.length < 1)
|
|
150
|
+
return null;
|
|
151
|
+
proxy = proxies[crypto.randomInt(0, proxies.length)];
|
|
152
|
+
proxy = formatProxy(proxy);
|
|
153
|
+
proxy = proxy.replace("{SESSION}", tokenHex(8));
|
|
154
|
+
return proxy || null;
|
|
155
|
+
}
|