commit 2cdf04d589a8775c81099014839825bc72c5a852 Author: wixarm Date: Tue Jan 27 12:07:39 2026 +0330 first commit diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..2e15700 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +node_modules +npm-debug.log +.git +.gitignore +README.md +.env +.DS_Store + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c6bba59 --- /dev/null +++ b/.gitignore @@ -0,0 +1,130 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp +.cache + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..783deeb --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM node:18-alpine + +WORKDIR /app + +COPY package*.json ./ + +RUN npm install + +COPY . . + +EXPOSE 3000 + +CMD ["node", "index.js"] + diff --git a/README.md b/README.md new file mode 100644 index 0000000..a7ea3e9 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# dargah-RasadYaar diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..adbbdcd --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,9 @@ +version: "3.8" + +services: + payment: + build: . + image: wixarm/rasadyar-payment + ports: + - "3000:3000" + restart: unless-stopped diff --git a/index.js b/index.js new file mode 100644 index 0000000..31ec070 --- /dev/null +++ b/index.js @@ -0,0 +1,2088 @@ +// app.js +const express = require("express"); +const moment = require("moment"); +const cors = require("cors"); +const app = express(); +const port = 3000; +const bodyParser = require("body-parser"); +const axios = require("axios"); +const { toJalaali, toGregorian } = require("jalaali-js"); +moment.locale("en"); +const CryptoJS = require("crypto-js"); +// app.options("*", cors); +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({ extended: true })); +const { + config, + encrypt, + decrypt, + encryptWS, + decryptWS, +} = require("./lib/asan-pardakht-config"); + +// Middleware to parse JSON requests +app.use(express.json()); +app.use(cors()); +const querystring = require("querystring"); +const https = require("https"); + +// const mellat = new mellatCheckout({ +// terminalId: "7269507", +// username: "7269507", +// password: "66506956", +// timeout: 10000, +// apiUrl: "https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl", +// }); + +// const apiUrl = "https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl"; + +// function _interopRequireDefault(obj) { +// return obj && obj.__esModule ? obj : { default: obj }; +// } + +// var _soap = require("soap"); +// const soap = require("soap"); +const { bpReversalRequest } = require("./lib/bp-reversal-request"); +const { bpInquiryRequest } = require("./lib/bp-inquiry-request"); +const { bpVerifyRequest } = require("./lib/bp-verify-request"); +const { bpPayRequest } = require("./lib/bp-pay-request"); +const { bpSettleRequest } = require("./lib/bp-settle-request"); +const { + bpCumulativeDynamicPayRequest, +} = require("./lib/bp-cumulative-dynamic-pay-request"); +const { + taavonSendData, + taavonSendDataZarinPal, + taavonSendDataZarinPalLink, +} = require("./lib/taavon-send-data"); +const { getAllCities } = require("./lib/getAllCities"); +const { getAllProvinces } = require("./lib/getAllProvinces"); + +// var _soap2 = _interopRequireDefault(_soap); + +// var behpardakhtClient; +// _soap2.default.createClient( +// apiUrl, +// { +// overrideRootElement: { +// namespace: "ns1", +// }, +// }, +// function (error, client) { +// if (error) { +// // return callback(error); +// console.log("error", error); +// } +// console.log("Behpardakht Client Is Ready!"); +// behpardakhtClient = client; +// // return callback(null); +// return null; +// } +// ); + +app.post("/cumulative-dynamic-pay-request", async (req, res) => { + // const orderId = moment().valueOf(); + + const orderId = req.body.orderId; + const amount = req.body.amount; + const additionalData = req.body.additionalData; + + // let payRequestResult = await bpPayRequest( + // parseInt(orderId), + // 10000, + // "ok", + // "https://rasadyar.net/verify-payment" + // ); + // additionalData: "9700383709,10000,0;1031990414,10000,0;", + let payRequestResult = await bpCumulativeDynamicPayRequest( + parseInt(orderId), + amount, + additionalData, + "https://rasadyar.net/verify-payment" + ); + const payRequestRes = payRequestResult.return.split(","); + const responseCode = payRequestRes[0]; + const refId = payRequestRes[1]; + + if (parseInt(responseCode) === 0) { + return res.json({ refId }); + } + + console.log("error: ", payRequestResult); + + return res + .status(400) + .json({ error: desribtionStatusCode(parseInt(payRequestResult)) }); + + // var now = new Date(); + + // const bpPayRequestCallback = function (error, result) { + // console.log(result, "gggggg"); + // if (error) { + // console.log("error", error); + // } + // var parsed = result.return.split(","); + // if (parsed.length < 2) { + // return { + // resCode: Number(parsed[0]), + // rawResCode: parsed[0], + // refId: null, + // }; + // } + // var refId = parsed[1]; + + // // const redirectUrl = `https://bpm.shaparak.ir/pgwchannel/startpay.mellat?RefId=${refId}`; + // // // Redirect the user to the constructed URL + // // res.set('Referrer', 'https://rasadyar.net'); // Set the Referrer header + // // res.redirect(redirectUrl); + + // return res.json({ + // resCode: 0, + // rawResCode: "0", + // refId: refId, + // }); + // }; + + // const localDate = moment().format("YYYYMMDD"); + // const localTime = moment().format("HHmmss"); + // const orderId = moment().valueOf(); + + // behpardakhtClient.bpPayRequest( + // { + // terminalId: 7269507, + // userName: "7269507", + // userPassword: "66506956", + // orderId: parseInt(orderId), + // amount: 10000, + // localDate: localDate, + // localTime: localTime, + // additionalData: "", + // payerId: 0, + // callBackUrl: "https://rasadyar.net/verify-payment", // Payment Callback URL + // }, + // bpPayRequestCallback + // ); +}); + +async function reversePay(orderId, saleOrderId, saleReferenceId) { + let resultReversePay = await bpReversalRequest( + orderId, + saleOrderId, + saleReferenceId + ); + resultReversePay = resultReversePay.return; + console.log(resultReversePay); +} + +function desribtionStatusCode(statusCode) { + switch (statusCode) { + case 0: + return "ﺗﺮاﻛﻨﺶ_ﺑﺎ_ﻣﻮﻓﻘﻴﺖ_اﻧﺠﺎم_ﺷﺪ"; + case 11: + return "ﺷﻤﺎره_ﻛﺎرت_ﻧﺎﻣﻌﺘﺒﺮ_اﺳﺖ"; + case 12: + return "ﻣﻮﺟﻮدي_ﻛﺎﻓﻲ_ﻧﻴﺴﺖ"; + case 13: + return "رﻣﺰ_ﻧﺎدرﺳﺖ_اﺳﺖ"; + case 14: + return "ﺗﻌﺪاد_دﻓﻌﺎت_وارد_ﻛﺮدن_رﻣﺰ_ﺑﻴﺶ_از_ﺣﺪ_ﻣﺠﺎز_اﺳﺖ"; + case 15: + return "ﻛﺎرت_ﻧﺎﻣﻌﺘﺒﺮ_اﺳﺖ"; + case 16: + return "دﻓﻌﺎت_ﺑﺮداﺷﺖ_وﺟﻪ_ﺑﻴﺶ_از_ﺣﺪ_ﻣﺠﺎز_اﺳﺖ"; + case 17: + return "ﻛﺎرﺑﺮ_از_اﻧﺠﺎم_ﺗﺮاﻛﻨﺶ_ﻣﻨﺼﺮف_ﺷﺪه_اﺳﺖ"; + case 18: + return "ﺗﺎرﻳﺦ_اﻧﻘﻀﺎي_ﻛﺎرت_ﮔﺬﺷﺘﻪ_اﺳﺖ"; + case 19: + return "ﻣﺒﻠﻎ_ﺑﺮداﺷﺖ_وﺟﻪ_ﺑﻴﺶ_از_ﺣﺪ_ﻣﺠﺎز_اﺳﺖ"; + case 111: + return "ﺻﺎدر_ﻛﻨﻨﺪه_ﻛﺎرت_ﻧﺎﻣﻌﺘﺒﺮ_اﺳﺖ"; + case 112: + return "ﺧﻄﺎي_ﺳﻮﻳﻴﭻ_ﺻﺎدر_ﻛﻨﻨﺪه_ﻛﺎرت"; + case 113: + return "ﭘﺎﺳﺨﻲ_از_ﺻﺎدر_ﻛﻨﻨﺪه_ﻛﺎرت_درﻳﺎﻓﺖ_ﻧﺸﺪ"; + case 114: + return "دارﻧﺪه_ﻛﺎرت_ﻣﺠﺎز_ﺑﻪ_اﻧﺠﺎم_اﻳﻦ_ﺗﺮاﻛﻨﺶ_ﻧﻴﺴﺖ"; + case 21: + return "ﭘﺬﻳﺮﻧﺪه_ﻧﺎﻣﻌﺘﺒﺮ_اﺳﺖ"; + case 23: + return "ﺧﻄﺎي_اﻣﻨﻴﺘﻲ_رخ_داده_اﺳﺖ"; + case 24: + return "اﻃﻼﻋﺎت_ﻛﺎرﺑﺮي_ﭘﺬﻳﺮﻧﺪه_ﻧﺎﻣﻌﺘﺒﺮ_اﺳﺖ"; + case 25: + return "ﻣﺒﻠﻎ_ﻧﺎﻣﻌﺘﺒﺮ_اﺳﺖ"; + case 31: + return "ﭘﺎﺳﺦ_ﻧﺎﻣﻌﺘﺒﺮ_اﺳﺖ"; + case 32: + return "ﻓﺮﻣﺖ_اﻃﻼﻋﺎت_وارد_ﺷﺪه_ﺻﺤﻴﺢ_ﻧﻤﻲ_ﺑﺎﺷﺪ"; + case 33: + return "ﺣﺴﺎب_ﻧﺎﻣﻌﺘﺒﺮ_اﺳﺖ"; + case 34: + return "ﺧﻄﺎي_ﺳﻴﺴﺘﻤﻲ"; + case 35: + return "ﺗﺎرﻳﺦ_ﻧﺎﻣﻌﺘﺒﺮ_اﺳﺖ"; + case 41: + return "ﺷﻤﺎره_درﺧﻮاﺳﺖ_ﺗﻜﺮاري_اﺳﺖ"; + case 42: + return "ﺗﺮاﻛﻨﺶ_Sale_یافت_نشد_"; + case 43: + return "ﻗﺒﻼ_Verify_درﺧﻮاﺳﺖ_داده_ﺷﺪه_اﺳﺖ"; + + case 44: + return "درخواست_verify_یافت_نشد"; + case 45: + return "ﺗﺮاﻛﻨﺶ_Settle_ﺷﺪه_اﺳﺖ"; + case 46: + return "ﺗﺮاﻛﻨﺶ_Settle_نشده_اﺳﺖ"; + + case 47: + return "ﺗﺮاﻛﻨﺶ_Settle_یافت_نشد"; + case 48: + return "تراکنش_Reverse_شده_است"; + case 49: + return "تراکنش_Refund_یافت_نشد"; + case 412: + return "شناسه_قبض_نادرست_است"; + case 413: + return "ﺷﻨﺎﺳﻪ_ﭘﺮداﺧﺖ_ﻧﺎدرﺳﺖ_اﺳﺖ"; + case 414: + return "سازﻣﺎن_ﺻﺎدر_ﻛﻨﻨﺪه_ﻗﺒﺾ_ﻧﺎﻣﻌﺘﺒﺮ_اﺳﺖ"; + case 415: + return "زﻣﺎن_ﺟﻠﺴﻪ_ﻛﺎري_ﺑﻪ_ﭘﺎﻳﺎن_رسیده_است"; + case 416: + return "ﺧﻄﺎ_در_ﺛﺒﺖ_اﻃﻼﻋﺎت"; + case 417: + return "ﺷﻨﺎﺳﻪ_ﭘﺮداﺧﺖ_ﻛﻨﻨﺪه_ﻧﺎﻣﻌﺘﺒﺮ_اﺳﺖ"; + case 418: + return "اﺷﻜﺎل_در_ﺗﻌﺮﻳﻒ_اﻃﻼﻋﺎت_ﻣﺸﺘﺮي"; + case 419: + return "ﺗﻌﺪاد_دﻓﻌﺎت_ورود_اﻃﻼﻋﺎت_از_ﺣﺪ_ﻣﺠﺎز_ﮔﺬﺷﺘﻪ_اﺳﺖ"; + case 421: + return "IP_نامعتبر_است"; + + case 51: + return "ﺗﺮاﻛﻨﺶ_ﺗﻜﺮاري_اﺳﺖ"; + case 54: + return "ﺗﺮاﻛﻨﺶ_ﻣﺮﺟﻊ_ﻣﻮﺟﻮد_ﻧﻴﺴﺖ"; + case 55: + return "ﺗﺮاﻛﻨﺶ_ﻧﺎﻣﻌﺘﺒﺮ_اﺳﺖ"; + case 61: + return "ﺧﻄﺎ_در_واریز"; + } + return ""; +} + +app.post("/verify-payment", async (req, res) => { + let Run_bpReversalRequest = false; + let saleReferenceId = -999; + let saleOrderId = -999; + let resultCode_bpPayRequest; + if ( + req.body === null || + req.body?.ResCode === null || + req.body?.SaleOrderId === null || + req.body?.SaleReferenceId === null || + req.body?.CardHolderPan === null + ) { + return res + .status(422) + .json({ error: "پارامترهای لازم از طرف بانک ارسال نشد." }); + } + + saleReferenceId = parseInt(req.body.SaleReferenceId, 10); + saleOrderId = parseInt(req.body.SaleOrderId, 10); + resultCode_bpPayRequest = parseInt(req.body.ResCode); + const finalAmount = req.body.FinalAmount; + const refId = req.body.RefId; + const cardHolderPan = req.body.CardHolderPan; + + //Result Code + let resultCode_bpinquiryRequest = "-9999"; + let resultCode_bpSettleRequest = "-9999"; + let resultCode_bpVerifyRequest = "-9999"; + + let redirectUrlError = ""; + const provinceCode = saleOrderId.toString().substring(0, 2); + + if (provinceCode === "10") { + redirectUrlError = `https://check.rasadyar.net/payment?error=`; + } else if (provinceCode === "15") { + redirectUrlError = `https://sha.rasadyar.net/payment?error=`; + } else if (provinceCode === "18") { + redirectUrlError = `https://ha.rasadyar.net/payment?error=`; + } else if (provinceCode === "91") { + redirectUrlError = `https://ar.rasadyar.net/payment?error=`; + } else if (provinceCode === "47") { + redirectUrlError = `https://ma.rasadyar.net/payment?error=`; + } + + if (parseInt(resultCode_bpPayRequest) === 17) { + const error = desribtionStatusCode(parseInt(resultCode_bpPayRequest)); + console.log("uwuwuwuwuwuwu", error); + await taavonSendData(saleOrderId, { error, refId }); + return res.redirect(redirectUrlError + "کاربر از انجام تراکنش منصرف شد!"); + } + + if (resultCode_bpPayRequest === 0) { + //verify request + resultCode_bpVerifyRequest = await bpVerifyRequest( + saleOrderId, + saleOrderId, + saleReferenceId + ); + resultCode_bpVerifyRequest = resultCode_bpVerifyRequest.return; + console.log("bpVerifyRequest:" + resultCode_bpVerifyRequest); + + if ( + resultCode_bpVerifyRequest === null || + resultCode_bpVerifyRequest.length === 0 + ) { + //Inquiry Request + resultCode_bpinquiryRequest = await bpInquiryRequest( + saleOrderId, + saleOrderId, + saleReferenceId + ); + resultCode_bpinquiryRequest = parseInt( + resultCode_bpinquiryRequest.return + ); + console.log("bpinquiryRequest" + resultCode_bpinquiryRequest); + + if (resultCode_bpinquiryRequest !== 0) { + reversePay(saleOrderId, saleOrderId, saleReferenceId); + const error = desribtionStatusCode(resultCode_bpinquiryRequest); + + await taavonSendData(saleOrderId, { error, refId }); + return res.json({ error }); + } + } + + if ( + parseInt(resultCode_bpVerifyRequest) === 0 || + resultCode_bpinquiryRequest === 0 + ) { + //SettleRequest + resultCode_bpSettleRequest = await bpSettleRequest( + saleOrderId, + saleOrderId, + saleReferenceId + ); + resultCode_bpSettleRequest = parseInt(resultCode_bpSettleRequest.return); + + //ﺗﺮاﻛﻨﺶ_Settle_ﺷﺪه_اﺳﺖ + //ﺗﺮاﻛﻨﺶ_ﺑﺎ_ﻣﻮﻓﻘﻴﺖ_اﻧﺠﺎم_ﺷﺪ + if ( + resultCode_bpSettleRequest === 0 || + resultCode_bpSettleRequest === 45 + ) { + //success payment + const data = { + saleReferenceId, + saleOrderId, + cardHolderPan, + date: new Date(), + finalAmount, + refId, + }; + + let redirectUrl = ""; + let subDomain = "test"; + const provinceCode = saleOrderId.toString().substring(0, 2); + console.log({ data, provinceCode }); + + if (provinceCode === "10") { + subDomain = "test"; + redirectUrl = `https://check.rasadyar.net/payment?finalAmount=${finalAmount}&saleOrderId=${saleOrderId}&cardHolderPan=${cardHolderPan}&date=${data.date}&saleReferenceId=${saleReferenceId}`; + } else if (provinceCode === "15") { + subDomain = "sha"; + redirectUrl = `https://sha.rasadyar.net/payment?finalAmount=${finalAmount}&saleOrderId=${saleOrderId}&cardHolderPan=${cardHolderPan}&date=${data.date}&saleReferenceId=${saleReferenceId}`; + } else if (provinceCode === "18") { + subDomain = "ha"; + redirectUrl = `https://ha.rasadyar.net/payment?finalAmount=${finalAmount}&saleOrderId=${saleOrderId}&cardHolderPan=${cardHolderPan}&date=${data.date}&saleReferenceId=${saleReferenceId}`; + } else if (provinceCode === "91") { + subDomain = "ar"; + redirectUrl = `https://ar.rasadyar.net/payment?finalAmount=${finalAmount}&saleOrderId=${saleOrderId}&cardHolderPan=${cardHolderPan}&date=${data.date}&saleReferenceId=${saleReferenceId}`; + } else if (provinceCode === "47") { + subDomain = "ma"; + redirectUrl = `https://ma.rasadyar.net/payment?finalAmount=${finalAmount}&saleOrderId=${saleOrderId}&cardHolderPan=${cardHolderPan}&date=${data.date}&saleReferenceId=${saleReferenceId}`; + } + + //save success payment into db + const url = `https://${subDomain}backend.rasadyar.com/wage_payment_final_step/`; + + const options = { + method: "POST", + body: JSON.stringify(data), + headers: { + "Content-Type": "application/json", + }, + }; + + try { + const r = await fetch(url, options); + } catch (error) { + return res.json({ error: "اطلاعات پرداخت ذخیره نشد!" }); + } + return res.redirect(redirectUrl); + } + } else { + if (saleOrderId != -999 && saleReferenceId != -999) { + if (resultCode_bpPayRequest !== 17) + reversePay(saleOrderId, saleOrderId, saleReferenceId); + } + + const error = desribtionStatusCode(resultCode_bpVerifyRequest); + + try { + await taavonSendData(saleOrderId, { error, refId }); + } catch (error) { + return res.json({ error: "اطلاعات پرداخت ذخیره نشد!" }); + } + return res.json({ error }); + } + } else { + if (saleOrderId != -999 && saleReferenceId != -999) { + if (resultCode_bpPayRequest !== 17) + reversePay(saleOrderId, saleOrderId, saleReferenceId); + const error = desribtionStatusCode(resultCode_bpPayRequest); + + try { + taavonSendData(saleOrderId, { error, refId }); + } catch (error) { + return res.json({ error: "اطلاعات پرداخت ذخیره نشد!" }); + } + + return res.json({ error }); + } + } +}); + +//zarinpal --------------------------------------------------------------------------------------------------- + +const MERCHANT_ID = "7ad4aa9d-a153-4b94-b850-552ecf690a4a"; +const ZARINPAL_API = "https://api.zarinpal.com/pg/v4/payment/request.json"; +const ZARINPAL_API_VERIFY = + "https://api.zarinpal.com/pg/v4/payment/verify.json"; + +app.post("/zarinpay", async (req, res) => { + const { amount, description, provincecode, wages, isLink } = req.body; + + if (!amount || !description) { + return res.status(400).send("Invalid request parameters"); + } + + const parsedAmount = parseInt(amount); + if (isNaN(parsedAmount)) { + return res.status(400).send("Invalid amount"); + } + + try { + const response = await axios.post( + ZARINPAL_API, + { + merchant_id: MERCHANT_ID, + amount: parsedAmount, + description: description, + callback_url: `https://pay.rasadyar.com/zarinverify/?amount=${amount}&province=${provincecode}&isLink=${isLink}`, + wages: wages, + }, + { + headers: { + "Content-Type": "application/json", + accept: "application/json", + }, + } + ); + if (response.data.data.authority) { + return res.status(201).json(response.data.data); + } else { + return res + .status(500) + .json({ error: "Error Init Payment", data: response.data.errors }); + } + console.log("Verification response: ", response.data); + } catch (error) { + return res + .status(500) + .json({ error: "Error in accessing ZarinPal", data: error }); + } +}); + +app.get("/zarinverify", async (req, res) => { + const { Authority, Status, amount, province, isLink } = req.query; + + if (!Authority || !Status || !amount || !province) { + return res.status(400).send("Invalid request parameters"); + } + + if (Status === "OK") { + try { + const response = await axios.post( + ZARINPAL_API_VERIFY, + { + merchant_id: MERCHANT_ID, + authority: Authority, + amount: amount, + }, + { + headers: { + "Content-Type": "application/json", + accept: "application/json", + }, + } + ); + + console.log("Verification response in verify: ", response.data); + + if (response.data.data.code === 100 || response.data.data.code === 101) { + let redirectUrl = `https://rasadyar.net/payment?finalAmount=${amount}&cardHolderPan=${ + response.data.data.card_pan + }&date=${new Date()}&saleReferenceId=${response.data.data.ref_id}`; + let subDomain = ""; + + // if (province.substring(0, 2) === "10") { + // subDomain = "test"; + // redirectUrl = `https://check.rasadyar.net/payment?finalAmount=${amount}&cardHolderPan=${ + // response.data.data.card_pan + // }&date=${new Date()}&saleReferenceId=${response.data.data.ref_id}`; + // } else if (province.substring(0, 2) === "15") { + // subDomain = "sha"; + // redirectUrl = `https://sha.rasadyar.net/payment?finalAmount=${amount}&cardHolderPan=${ + // response.data.data.card_pan + // }&date=${new Date()}&saleReferenceId=${response.data.data.ref_id}`; + // } else if (province.substring(0, 2) === "18") { + // subDomain = "ha"; + // redirectUrl = `https://ha.rasadyar.net/payment?finalAmount=${amount}&cardHolderPan=${ + // response.data.data.card_pan + // }&date=${new Date()}&saleReferenceId=${response.data.data.ref_id}`; + // } else if (province.substring(0, 2) === "91") { + // subDomain = "ar"; + // redirectUrl = `https://ar.rasadyar.net/payment?finalAmount=${amount}&cardHolderPan=${ + // response.data.data.card_pan + // }&date=${new Date()}&saleReferenceId=${response.data.data.ref_id}`; + // } else if (province.substring(0, 2) === "47") { + // subDomain = "ma"; + // redirectUrl = `https://ma.rasadyar.net/payment?finalAmount=${amount}&cardHolderPan=${ + // response.data.data.card_pan + // }&date=${new Date()}&saleReferenceId=${response.data.data.ref_id}`; + // } + + if (isLink) { + await taavonSendDataZarinPalLink(province, { + authority: Authority, + refId: response.data.data.ref_id, + cardHolderPan: response.data.data.card_pan, + }); + } else { + await taavonSendDataZarinPal(province, { + authority: Authority, + refId: response.data.data.ref_id, + cardHolderPan: response.data.data.card_pan, + }); + } + + return res.redirect(redirectUrl); + } + } catch (error) { + res.status(400).send("Payment was not successful."); + } + } else { + let redirectUrlError = `https://rasadyar.net/payment?error=`; + + // if (province.substring(0, 2) === "10") { + // redirectUrlError = `https://check.rasadyar.net/payment?error=`; + // } else if (province.substring(0, 2) === "15") { + // redirectUrlError = `https://sha.rasadyar.net/payment?error=`; + // } else if (province.substring(0, 2) === "18") { + // redirectUrlError = `https://ha.rasadyar.net/payment?error=`; + // } else if (province.substring(0, 2) === "91") { + // redirectUrlError = `https://ar.rasadyar.net/payment?error=`; + // } else if (province.substring(0, 2) === "47") { + // redirectUrlError = `https://ma.rasadyar.net/payment?error=`; + // } + + await taavonSendDataZarinPal(province, { + error: "کاربر از انجام تراکنش منصرف شد!", + authority: Authority, + }); + return res.redirect(redirectUrlError + "کاربر از انجام تراکنش منصرف شد!"); + } +}); + +//sadad --------------------------------------------------------------------------------------------------- + +const encrypt_pkcs7 = (data, key) => { + const keyHex = CryptoJS.enc.Base64.parse(key); + + const encrypted = CryptoJS.TripleDES.encrypt(data, keyHex, { + mode: CryptoJS.mode.ECB, + padding: CryptoJS.pad.Pkcs7, + }); + + return encrypted.toString(); +}; + +app.post("/sadad-get-token", async (req, res) => { + const { data } = req.body; + try { + const response = await axios.post( + "https://sadad.shaparak.ir/api/v0/Request/PaymentRequest", + data, + { + headers: { + "Content-Type": "application/json", + Referer: "https://rasadyar.net/", + }, + } + ); + + res.status(201).send(response.data); + } catch (error) { + res.status(500).send(error.message); + } +}); + +app.post("/sadad-request-payment", async (req, res) => { + const now = new Date(); + const { OrderId, Amount, province } = req.body; + + const month = String(now.getMonth() + 1).padStart(2, "0"); + const day = String(now.getDate()).padStart(2, "0"); + const year = now.getFullYear(); + + const hours = now.getHours(); + const minutes = String(now.getMinutes()).padStart(2, "0"); + const seconds = String(now.getSeconds()).padStart(2, "0"); + + const ampm = hours >= 12 ? "pm" : "am"; + const formattedHours = hours % 12 || 12; + + const key = "H8eOhSGAeKol46gNfb39dqbMFn0VJKbe"; + const MerchantId = "000000140345422"; + const TerminalId = "24107875"; + + const LocalDateTime = `${month}/${day}/${year} ${formattedHours}:${minutes}:${seconds} ${ampm}`; + const ReturnUrl = `https://rasadyar.net/sadad-verify?province=${province}&Amount=${Amount}`; + + const dataToEncrypt = `${TerminalId};${OrderId};${Amount}`; + + // Encrypt the data + const SignData = encrypt_pkcs7(dataToEncrypt, key); + + const data = { + Amount: Amount, + OrderId: OrderId, + LocalDateTime: LocalDateTime, + ReturnUrl: ReturnUrl, + SignData: SignData, + TerminalId: TerminalId, + MerchantId: MerchantId, + }; + + console.log("Request Data:", data); + + try { + const response = await axios.post( + "https://rasadyar.net/sadad-get-token", + { data: data }, + { + headers: { + "Content-Type": "application/json", + Referer: "https://rasadyar.net/", + }, + } + ); + + const responseData = response.data; + if (responseData.ResCode === 0) { + res.status(201).send(responseData); + } else { + res.status(400).send(responseData); + } + } catch (error) { + res.status(500).send(error.message); + } +}); + +//asanpardakht --------------------------------------------------------------------------------------------- + +app.post("/asanpay", async (req, res) => { + const { price } = req.body; + const orderId = Math.floor(Math.random() * 1000000); + const localDate = new Date() + .toISOString() + .replace(/T/, " ") + .replace(/\..+/, ""); + const additionalData = ""; + const callBackUrl = "https://rasadyar.net/asanverify"; + const reqString = `1,${config.username},${config.password},${orderId},${price},${localDate},${additionalData},${callBackUrl},0`; + const encryptedRequest = await encryptWS(reqString); + + const soapClient = await soap.createClientAsync(config.WebServiceUrl); + const args = { + merchantConfigurationID: config.merchantConfigurationID, + encryptedRequest: encryptedRequest, + }; + + soapClient.RequestOperation(args, (err, result) => { + if (err) { + res.status(500).send("خطا در فراخوانی وب‌سرویس."); + } else { + const response = result.RequestOperationResult; + if (response.startsWith("0,")) { + const refId = response.slice(2); + res.redirect(`https://asan.shaparak.ir/?RefId=${refId}`); + } else { + res.status(400).send(`خطای شماره: ${response}`); + } + } + }); +}); + +app.post("/asanverify", async (req, res) => { + const { ReturningParams } = req.body; + const decryptedParams = await decryptWS(ReturningParams); + const params = decryptedParams.split(","); + + if (params[3] !== "0" && params[3] !== "00") { + return res.status(400).send(`تراکنش ناموفق
خطای شماره: ${params[3]}`); + } + + const encryptedCredintials = await encryptWS( + `${config.username},${config.password}` + ); + const soapClient = await soap.createClientAsync(config.WebServiceUrl); + const verifyArgs = { + merchantConfigurationID: config.merchantConfigurationID, + encryptedCredentials: encryptedCredintials, + payGateTranID: params[5], + }; + + soapClient.RequestVerification(verifyArgs, (err, verifyResult) => { + if (err || verifyResult.RequestVerificationResult !== "500") { + return res + .status(500) + .send( + `خطای شماره: ${verifyResult.RequestVerificationResult} در هنگام Verify` + ); + } + + soapClient.RequestReconciliation(verifyArgs, (err, settlementResult) => { + if (err || settlementResult.RequestReconciliationResult !== "600") { + return res + .status(500) + .send( + `خطای شماره: ${settlementResult.RequestReconciliationResult} در هنگام Settlement` + ); + } + res.send( + '
تراکنش با موفقیت انجام پذیرفت.
' + ); + }); + }); +}); + +//sep ------------------------------------------------------------------------------------------------- + +function generateRandomString() { + const numbers = "0123456789"; + const lowerCase = "abcdefghijklmnopqrstuvwxyz"; + const upperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + const specialChars = "!@#$%^&*()_+-=[]{}|;:,.<>?"; + + const getRandomChar = (chars) => + chars[Math.floor(Math.random() * chars.length)]; + + const num = getRandomChar(numbers); + const lower = getRandomChar(lowerCase); + const upper = getRandomChar(upperCase); + const special = getRandomChar(specialChars); + + const combined = [num, lower, special, upper].join(""); + return combined + .split("") + .sort(() => Math.random() - 0.5) + .join(""); +} + +const SEP_TERMINAL_ID = 21608844; +const SEP_TERMINAL_PASS = 9238787; +const SEP_API = "https://sep.shaparak.ir/onlinepg/onlinepg"; +const SEP_API_VERIFY = + "https://sep.shaparak.ir/verifyTxnRandomSessionkey/ipg/VerifyTransaction"; + +app.post("/sep-pay-request", async (req, res) => { + const { amount, phone, provincecode, isLink, wages } = req.body; + + if (!amount) { + return res.status(400).send("Invalid request parameters"); + } + + const parsedAmount = parseInt(amount); + if (isNaN(parsedAmount)) { + return res.status(400).send("Invalid amount"); + } + + try { + const response = await axios.post( + SEP_API, + { + action: "token", + TerminalId: SEP_TERMINAL_ID, + Amount: parsedAmount, + ResNum: generateRandomString(), + RedirectUrl: `https://pay.rasadyar.net/sepverify/?Amount=${amount}&province=${provincecode}&isLink=${isLink}`, + CellNumber: phone, + SettlementIBANInfo: wages, + // TranType: "Government", + }, + { + headers: { + "Content-Type": "application/json", + accept: "application/json", + }, + } + ); + return res.status(201).json(response.data); + } catch (error) { + return res + .status(500) + .json({ error: "Error in accessing SEP", data: error }); + } +}); + +app.post("/sepverify", async (req, res) => { + const { State, Amount, RefNum, Token, TraceNo, SecurePan } = req.body; + const { province, isLink } = req.query; + + if (!State || !Amount || !Token || !province || !isLink) { + return res.status(400).send("Missing required parameters"); + } + + if (State === "OK") { + try { + const response = await axios.post( + SEP_API_VERIFY, + { RefNum: RefNum, TerminalNumber: SEP_TERMINAL_ID }, + { + headers: { + "Content-Type": "application/json", + accept: "application/json", + }, + } + ); + + if (response.data.ResultCode === 0) { + let redirectUrl = `https://rasadyar.net/payment?finalAmount=${Amount}&cardHolderPan=${SecurePan}&date=${new Date()}&saleReferenceId=${TraceNo}`; + let subDomain = ""; + + if (isLink) { + await taavonSendDataZarinPalLink(province, { + authority: Token, + refId: TraceNo, + cardHolderPan: SecurePan, + }); + } else { + await taavonSendDataZarinPal(province, { + authority: Token, + refId: TraceNo, + cardHolderPan: SecurePan, + }); + } + + return res.redirect(redirectUrl); + } + } catch (error) { + await taavonSendDataZarinPal(province, { + error: "تراکنش نامشخص!", + authority: Token, + }); + return res.redirect(redirectUrlError + "تراکنش نامشخص!"); + } + } else { + let redirectUrlError = `https://rasadyar.net/payment?error=`; + + await taavonSendDataZarinPal(province, { + error: "کاربر از انجام تراکنش منصرف شد!", + authority: Token, + }); + return res.redirect(redirectUrlError + "کاربر از انجام تراکنش منصرف شد!"); + } +}); + +//end sep --------------------------------------------------------------------------------------------- + +// samasat crack + +const getPersianDate = (daysOffset = 0) => { + const currentDate = new Date(); + currentDate.setDate(currentDate.getDate() + daysOffset); + + const jalaaliDate = toJalaali( + currentDate.getFullYear(), + currentDate.getMonth() + 1, + currentDate.getDate() + ); + + const { jy, jm, jd } = jalaaliDate; + const formattedDate = `${jy}/${String(jm).padStart(2, "0")}/${String( + jd + ).padStart(2, "0")}`; + + return formattedDate; +}; + +const getPersianDateForHatching = (daysOffset = 0) => { + const currentDate = new Date(); + currentDate.setDate(currentDate.getDate() + daysOffset); + + const jalaaliDate = toJalaali( + currentDate.getFullYear(), + currentDate.getMonth() + 1, + currentDate.getDate() + ); + + const { jy, jm, jd } = jalaaliDate; + const formattedDate = `${String(jd).padStart(2, "0")}/${String(jm).padStart( + 2, + "0" + )}/${jy}`; + + return formattedDate; +}; + +const removeDateMaxFrom = getPersianDate(-10); +const removeDateMaxFromForHatching = getPersianDateForHatching(-60); +const removeDateMaxTo = getPersianDate(0); +const removeDateMaxToForHatching = getPersianDateForHatching(0); + +app.post("/transporting-chickens", async (req, res) => { + const { cookie, province } = req.body; + + try { + const postData = querystring.stringify({ + sort: "RemoveDateMax-desc~UnitName-asc", + page: 1, + pageSize: 1000, + group: "", + aggregate: "HatchingCount-sum~RemoveCount-sum", + filter: "", + "searchVm.ProvinceLocationId": parseInt(province), + "searchVm.UnitName": "", + "searchVm.PersonFullName": "", + "searchVm.PartIdCode": "", + "searchVm.PostalCode": "", + "searchVm.EpidemiologicCode": "", + "searchVm.CapacityFemale": "", + "searchVm.BfrCode": "", + "searchVm.SourceCertId": "", + "searchVm.HatchingCount": "", + "searchVm.RemoveCount": "", + "searchVm.HatchingDateFrom": "", + "searchVm.HatchingDateTo": "", + "searchVm.PercentRemoveTakhlieFromHatchingFrom": "", + "searchVm.PercentRemoveTakhlieFromHatchingTo": "", + "searchVm.RemoveDateMinFrom": "", + "searchVm.RemoveDateMinTo": "", + "searchVm.RemoveDateMaxFrom": removeDateMaxFrom, + "searchVm.RemoveDateMaxTo": removeDateMaxTo, + "searchVm.RemoveAgeAvgFrom": "", + "searchVm.RemoveAgeAvgTo": "", + "searchVm.RemoveAgeAvgSamasatFrom": "", + "searchVm.RemoveAgeAvgSamasatTo": "", + "searchVm.RemovePartyCountFrom": "", + "searchVm.RemovePartyCountTo": "", + }); + + const options = { + hostname: "www.samasat.ir", + path: "/Report/BroilerCarryChickenAccordingToCarriage/_AjaxBinding", + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + "Content-Length": Buffer.byteLength(postData), + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36", + Accept: "*/*", + Referer: + "https://www.samasat.ir/Report/BroilerCarryChickenAccordingToCarriage", + "X-Requested-With": "XMLHttpRequest", + Cookie: cookie, + Origin: "https://www.samasat.ir", + }, + }; + + const request = https.request(options, (response) => { + let data = ""; + + response.on("data", (chunk) => { + data += chunk; + }); + + response.on("end", () => { + try { + const jsonData = JSON.parse(data); + res.json(jsonData.Data); + } catch (error) { + console.error("Error parsing JSON:", error.message); + res + .status(500) + .json({ error: "Invalid JSON response from external API" }); + } + }); + }); + + request.on("error", (error) => { + console.error("Request Error:", error); + res.status(500).json({ error: "Failed to fetch data" }); + }); + + request.write(postData); + request.end(); + } catch (error) { + console.error("Server Error:", error); + res.status(500).json({ error: "Internal server error" }); + } +}); + +app.post("/transporting-chickens-details", async (req, res) => { + const { cookie, certId } = req.body; + try { + const postData = querystring.stringify({ + sort: "IssueDate-desc", + page: 1, + pageSize: 1000, + group: "", + filter: "", + certId: parseInt(certId), + }); + + const options = { + hostname: "www.samasat.ir", + path: "/WinBroilerFlockRequest/WinBroilerFlockRequestRemoveTrackingRep/_AjaxBindingWinBroilerFlockRequestRemoveTrackingRepVw", + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + "Content-Length": Buffer.byteLength(postData), + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36", + Accept: "*/*", + Referer: + "https://www.samasat.ir/Report/BroilerOnFlowFlocksHealthPermitReport", + "X-Requested-With": "XMLHttpRequest", + Cookie: cookie, + + Origin: "https://www.samasat.ir", + }, + }; + + const request = https.request(options, (response) => { + let data = ""; + + response.on("data", (chunk) => { + data += chunk; + }); + + response.on("end", () => { + try { + const jsonData = JSON.parse(data); + res.json(jsonData.Data); + } catch (error) { + console.error("Error parsing JSON:", error.message); + res + .status(500) + .json({ error: "Invalid JSON response from external API" }); + } + }); + }); + + request.on("error", (error) => { + console.error("Request Error:", error); + res.status(500).json({ error: "Failed to fetch data" }); + }); + + request.write(postData); + request.end(); + } catch (error) { + console.error("Server Error:", error); + res.status(500).json({ error: "Internal server error" }); + } +}); + +app.post("/hatchings", async (req, res) => { + const { cookie, province, tableName } = req.body; + + try { + const postData = querystring.stringify({ + sort: "HatchingDate-desc", + page: 1, + pageSize: 1000, + group: "", + aggregate: + "HatchingCount-sum~HatchingCountInBargiri-sum~HatchingCountInTakhlie-sum~TrackingBargiriCount-sum~DiffHamlThanTakhlieCount-sum~DiffTakhlieThanHamlCount-sum~HamlMorghTotalCount-sum~HamlMorghTakhlieCount-sum~EvacuationCount-sum", + filter: "", + "searchVm.ProvinceLocationId": parseInt(province), + "searchVm.FromDate": removeDateMaxFromForHatching + " 12:00:00 ق.ظ", + "searchVm.ToDate": removeDateMaxToForHatching + " 12:00:00 ق.ظ", + "searchVm.TableName": + tableName || "Z_002_ReportTempTable_9b95c4b1b4c6441c8c333258a51827da", + "searchVm.PartIdCode": "", + "searchVm.UnitName": "", + "searchVm.PostalCode": "", + "searchVm.EpidemiologicCode": "", + "searchVm.PersonFullName": "", + "searchVm.CapacityFemaleFrom": "", + "searchVm.CapacityFemaleTo": "", + "searchVm.RequestCode": "", + "searchVm.DesCertId": "", + "searchVm.FlockAgeDayFrom": 1, + "searchVm.FlockAgeDayTo": 60, + "searchVm.HatchingDateFromPersian": "", + "searchVm.HatchingDateToPersian": "", + "searchVm.MaxHatchingDateFromPersian": "", + "searchVm.MaxHatchingDateToPersian": "", + "searchVm.TrackingStatusId": "", + "searchVm.PercentMorghToJoojeTotalFrom": "", + "searchVm.PercentMorghToJoojeTotalTo": "", + "searchVm.PercentMorghToJoojeTakhlieFrom": "", + "searchVm.PercentMorghToJoojeTakhlieTo": "", + }); + + const options = { + hostname: "www.samasat.ir", + path: "/Report/BroilerOnFlowFlocksHealthPermitReport/_AjaxBinding", + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + "Content-Length": Buffer.byteLength(postData), + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36", + Accept: "*/*", + Referer: + "https://www.samasat.ir/Report/BroilerOnFlowFlocksHealthPermitReport", + "X-Requested-With": "XMLHttpRequest", + Cookie: cookie, + Origin: "https://www.samasat.ir", + }, + }; + + const request = https.request(options, (response) => { + let data = ""; + + response.on("data", (chunk) => { + data += chunk; + }); + + response.on("end", () => { + try { + const jsonData = JSON.parse(data); + res.json(jsonData.Data); + } catch (error) { + console.error("Error parsing JSON:", error.message); + res + .status(500) + .json({ error: "Invalid JSON response from external API" }); + } + }); + }); + + request.on("error", (error) => { + console.error("Request Error:", error); + res.status(500).json({ error: "Failed to fetch data" }); + }); + + request.write(postData); + request.end(); + } catch (error) { + console.error("Server Error:", error); + res.status(500).json({ error: "Internal server error" }); + } +}); + +app.post("/samasat-users", async (req, res) => { + const { cookie, province } = req.body; + + try { + const postData = querystring.stringify({ + sort: "", + page: 1, + pageSize: 3000, + group: "", + filter: "", + "searchVm.HasUnit": "True", + "searchVm.IsOtherPoultry": "False", + "searchVm.ProvinceLocationId": parseInt(province), + "searchVm.UnitTypes[0]": "Broiler", + "searchVm.UserName": "", + "searchVm.FirstName": "", + "searchVm.LastName": "", + "searchVm.Mobile": "", + "searchVm.Email": "", + "searchVm.UserIsActive": "", + "searchVm.UnitName": "", + "searchVm.EpidemiologicCode": "", + "searchVm.PartIdCode": "", + "searchVm.SystemCode": "", + "searchVm.UnitPostalCode": "", + "searchVm.UnitIsActive": "", + }); + + const options = { + hostname: "www.samasat.ir", + path: "/BaseInformation/BroilerUserManagement/_AjaxBinding", + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + "Content-Length": Buffer.byteLength(postData), + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36", + Accept: "*/*", + Referer: "https://www.samasat.ir/BaseInformation/BroilerUserManagement", + "X-Requested-With": "XMLHttpRequest", + Cookie: cookie, + Origin: "https://www.samasat.ir", + }, + }; + + const request = https.request(options, (response) => { + let data = ""; + + response.on("data", (chunk) => { + data += chunk; + }); + + response.on("end", () => { + try { + const jsonData = JSON.parse(data); + + const transformedUsers = jsonData?.Data?.map( + ({ Unit, Id, ...rest }) => { + let updatedUnit = Unit; + delete Unit.Id; + return { + ...rest, + ...updatedUnit, + PId: Id, + Province: getAllProvinces().find( + (p) => parseInt(p.id) === parseInt(province) + )?.name, + City: getAllCities().find( + (city) => + parseInt(city.id) === parseInt(updatedUnit?.LocationIdCity) + )?.name, + }; + } + ); + + res.json(transformedUsers); + } catch (error) { + console.error("Error parsing JSON:", error.message); + res + .status(500) + .json({ error: "Invalid JSON response from external API" }); + } + }); + }); + + request.on("error", (error) => { + console.error("Request Error:", error); + res.status(500).json({ error: "Failed to fetch data" }); + }); + + request.write(postData); + request.end(); + } catch (error) { + console.error("Server Error:", error); + res.status(500).json({ error: "Internal server error" }); + } +}); + +app.post("/samasat-breeds", async (req, res) => { + const { cookie, province } = req.body; + + try { + const postData = querystring.stringify({ + sort: "SendDate-desc", + page: 1, + pageSize: 2000, + group: "", + aggregate: "RequestCountLong-sum~ChickCountLong-sum", + filter: "", + "searchVm.FlockRequestId": "", + "searchVm.Islegal": "True", + "searchVm.HatcheryId": "", + "searchVm.ProvinceLocationId": province, + "searchVm.PartIdCode": "", + "searchVm.UnitName": "", + "searchVm.BfrRequestCode": "", + "searchVm.CertId": "", + "searchVm.BroilerPedigreeTypeId": "", + "searchVm.SendDateFrom": removeDateMaxFrom, + "searchVm.SendDateTo": removeDateMaxTo, + "searchVm.ChickCountFrom": "", + "searchVm.ChickCountTo": "", + "searchVm.PedigreeType": "", + "searchVm.SenderUnitName": "", + "searchVm.StartDateFrom": "", + "searchVm.StartDateTo": "", + "searchVm.EndDateFrom": "", + "searchVm.EndDateTo": "", + "searchVm.RequestCountFrom": "", + "searchVm.RequestCountTo": "", + "searchVm.SystemCode": "", + "searchVm.EpidemiologicCode": "", + "searchVm.PostalCode": "", + "searchVm.CapacityFemaleFrom": "", + "searchVm.CapacityFemaleTo": "", + "searchVm.PersonNationalCodeOrId": "", + "searchVm.PersonName": "", + "searchVm.RegDateFrom": "", + "searchVm.RegDateTo": "", + }); + + const options = { + hostname: "www.samasat.ir", + path: "/Report/BroilerFlockRequestDetailReport/_AjaxBinding", + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + "Content-Length": Buffer.byteLength(postData), + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36", + Accept: "*/*", + Referer: + "https://www.samasat.ir/Report/BroilerFlockRequestDetailReport", + "X-Requested-With": "XMLHttpRequest", + Cookie: cookie, + Origin: "https://www.samasat.ir", + }, + }; + + const request = https.request(options, (response) => { + let data = ""; + + response.on("data", (chunk) => { + data += chunk; + }); + + response.on("end", () => { + try { + const jsonData = JSON.parse(data); + res.json(jsonData.Data); + } catch (error) { + console.error("Error parsing JSON:", error.message); + res + .status(500) + .json({ error: "Invalid JSON response from external API" }); + } + }); + }); + + request.on("error", (error) => { + console.error("Request Error:", error); + res.status(500).json({ error: "Failed to fetch data" }); + }); + + request.write(postData); + request.end(); + } catch (error) { + console.error("Server Error:", error); + res.status(500).json({ error: "Internal server error", error }); + } +}); + +app.post("/samasat-license", async (req, res) => { + const { cookie, province, fromDate, toDate } = req.body; + + try { + const postData = querystring.stringify({ + sort: "InsertDate-desc", + page: 1, + pageSize: 100000, + group: "", + filter: "", + "searchVm.ProvinceLocationId": province, + "searchVm.Islegal": "True", + "searchVm.PartIdCode": "", + "searchVm.UnitName": "", + "searchVm.StatusIds[0]": 2, + "searchVm.StatusIds[1]": 3, + "searchVm.StatusIds[2]": 4, + "searchVm.StatusIds[3]": 5, + "searchVm.StatusIds[4]": 17, + "searchVm.UnionTypeFilter": "", + "searchVm.SystemCode": "", + "searchVm.EpidemiologicCode": "", + "searchVm.PostalCode": "", + "searchVm.CapacityFemaleFrom": "", + "searchVm.CapacityFemaleTo": "", + "searchVm.SendDateFrom": "", + "searchVm.SendDateTo": "", + "searchVm.RequestCode": "", + "searchVm.CertId": "", + "searchVm.GoodCountFrom": "", + "searchVm.GoodCountTo": "", + "searchVm.StartDateFromPersian": fromDate, + "searchVm.StartDateToPersian": toDate || "", + "searchVm.EndDateFromPersian": "", + "searchVm.EndDateToPersian": "", + "searchVm.RemindDaysFrom": "", + "searchVm.RemindDaysTo": "", + }); + + const options = { + hostname: "www.samasat.ir", + path: "/Report/BroilerIssuedLicensesReport/_AjaxBinding", + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + "Content-Length": Buffer.byteLength(postData), + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36", + Accept: "*/*", + Referer: "https://www.samasat.ir/Report/BroilerIssuedLicensesReport", + "X-Requested-With": "XMLHttpRequest", + Cookie: cookie, + Origin: "https://www.samasat.ir", + }, + }; + + const request = https.request(options, (response) => { + let data = ""; + + response.on("data", (chunk) => { + data += chunk; + }); + + response.on("end", () => { + try { + const jsonData = JSON.parse(data); + res.json(jsonData.Data); + } catch (error) { + console.error("Error parsing JSON:", error.message); + res + .status(500) + .json({ error: "Invalid JSON response from external API" }); + } + }); + }); + + request.on("error", (error) => { + console.error("Request Error:", error); + res.status(500).json({ error: "Failed to fetch data" }); + }); + + request.write(postData); + request.end(); + } catch (error) { + console.error("Server Error:", error); + res.status(500).json({ error: "Internal server error", error }); + } +}); + +app.post("/samasat-license-transports", async (req, res) => { + const { cookie, certId } = req.body; + + try { + const postData = querystring.stringify({ + sort: "IssueDate-desc", + page: 1, + pageSize: 100000, + group: "", + filter: "", + certId: certId, + }); + + const options = { + hostname: "www.samasat.ir", + path: "/WinBroilerFlockRequest/WinBroilerFlockRequestRemoveTrackingRep/_AjaxBindingWinBroilerFlockRequestRemoveTrackingRepVw", + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + "Content-Length": Buffer.byteLength(postData), + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36", + Accept: "*/*", + Referer: "https://www.samasat.ir/Report/BroilerIssuedLicensesReport", + "X-Requested-With": "XMLHttpRequest", + Cookie: cookie, + Origin: "https://www.samasat.ir", + }, + }; + + const request = https.request(options, (response) => { + let data = ""; + + response.on("data", (chunk) => { + data += chunk; + }); + + response.on("end", () => { + try { + const jsonData = JSON.parse(data); + res.json(jsonData.Data); + } catch (error) { + console.error("Error parsing JSON:", error.message); + res + .status(500) + .json({ error: "Invalid JSON response from external API" }); + } + }); + }); + + request.on("error", (error) => { + console.error("Request Error:", error); + res.status(500).json({ error: "Failed to fetch data" }); + }); + + request.write(postData); + request.end(); + } catch (error) { + console.error("Server Error:", error); + res.status(500).json({ error: "Internal server error", error }); + } +}); + +app.post("/samasat-good-sum", async (req, res) => { + const { cookie, certId } = req.body; + + try { + const postData = querystring.stringify({ + sort: "IssueDate-desc", + page: 1, + pageSize: 100000, + group: "", + filter: "", + certId: certId, + }); + + const options = { + hostname: "www.samasat.ir", + path: "/WinBroilerFlockRequest/WinBroilerFlockRequestHatchingTrackingRep/_AjaxBindingWinBroilerFlockRequestHatchingTrackingRepVw", + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + "Content-Length": Buffer.byteLength(postData), + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36", + Accept: "*/*", + Referer: "https://www.samasat.ir/Report/BroilerIssuedLicensesReport", + "X-Requested-With": "XMLHttpRequest", + Cookie: cookie, + Origin: "https://www.samasat.ir", + }, + }; + + const request = https.request(options, (response) => { + let data = ""; + + response.on("data", (chunk) => { + data += chunk; + }); + + response.on("end", () => { + try { + const jsonData = JSON.parse(data); + res.json( + jsonData.Data?.filter( + (option) => option?.TrackingStatus === 2 + )?.reduce((acc, item) => acc + Number(item?.GoodAmount || 0), 0) + ); + } catch (error) { + console.error("Error parsing JSON:", error.message); + res + .status(500) + .json({ error: "Invalid JSON response from external API" }); + } + }); + }); + + request.on("error", (error) => { + console.error("Request Error:", error); + res.status(500).json({ error: "Failed to fetch data" }); + }); + + request.write(postData); + request.end(); + } catch (error) { + console.error("Server Error:", error); + res.status(500).json({ error: "Internal server error", error }); + } +}); + +app.post("/samasat-evacuation", async (req, res) => { + const { cookie, reqId } = req.body; + + try { + const postData = querystring.stringify({ + broilerFlockRequestId: reqId, + }); + + const options = { + hostname: "www.samasat.ir", + path: `/Report/BroilerCarryChickenAccordingToCarriage/_EvacuationDetailSum?broilerFlockRequestId=${reqId}`, + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + "Content-Length": Buffer.byteLength(postData), + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36", + Accept: "*/*", + Referer: "https://www.samasat.ir/Report/BroilerIssuedLicensesReport", + "X-Requested-With": "XMLHttpRequest", + Cookie: cookie, + Origin: "https://www.samasat.ir", + }, + }; + + const request = https.request(options, (response) => { + let data = ""; + + response.on("data", (chunk) => { + data += chunk; + }); + + response.on("end", () => { + try { + const jsonData = JSON.parse(data); + if ( + jsonData.SumEvacuation || + jsonData.SumLosses || + jsonData.SumIllness || + jsonData.SumNaturalOccurrence || + jsonData.SumFire + ) { + if (jsonData.SumEvacuation > 0) { + res.json(jsonData.SumEvacuation); + } else { + res.json( + // jsonData.SumLosses + + jsonData.SumIllness + + jsonData.SumNaturalOccurrence + + jsonData.SumFire + ); + } + } else { + res.json(0); + } + } catch (error) { + console.error("Error parsing JSON:", error.message); + res + .status(500) + .json({ error: "Invalid JSON response from external API" }); + } + }); + }); + + request.on("error", (error) => { + console.error("Request Error:", error); + res.status(500).json({ error: "Failed to fetch data" }); + }); + + request.write(postData); + request.end(); + } catch (error) { + console.error("Server Error:", error); + res.status(500).json({ error: "Internal server error", error }); + } +}); + +app.post("/samasat-evacuation-detail", async (req, res) => { + const { cookie, certId } = req.body; + if (!cookie || !certId) { + return res + .status(400) + .json({ error: "Missing required fields: cookie or certId" }); + } + try { + const postData = querystring.stringify({ + sort: "ReportDate-desc", + page: 1, + pageSize: 25, + group: "", + filter: "", + certId, + }); + const options = { + hostname: "www.samasat.ir", + path: "/WinBroilerFlockRequest/WinBroilerFlockRequestHatchingTrackingRep/_AjaxBindingWinBroilerFlockRequestHatchingTrackingRepVwEvacuation", + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + "Content-Length": Buffer.byteLength(postData), + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36", + Accept: "*/*", + Referer: "https://www.samasat.ir/Report/BroilerIssuedLicensesReport", + "X-Requested-With": "XMLHttpRequest", + Cookie: cookie, + Origin: "https://www.samasat.ir", + }, + }; + const request = https.request(options, (response) => { + let data = ""; + response.on("data", (chunk) => { + data += chunk; + }); + response.on("end", () => { + try { + const contentType = response.headers["content-type"] || ""; + if (!contentType.toLowerCase().includes("application/json")) { + return res + .status(502) + .json({ error: "Upstream response is not JSON", body: data }); + } + const jsonData = JSON.parse(data); + res.json(jsonData.Data ?? jsonData); + } catch (error) { + console.error("Error parsing JSON:", error.message); + res + .status(500) + .json({ error: "Invalid JSON response from external API" }); + } + }); + }); + request.on("error", (error) => { + console.error("Request Error:", error); + res.status(500).json({ error: "Failed to fetch data" }); + }); + request.write(postData); + request.end(); + } catch (error) { + console.error("Server Error:", error); + res.status(500).json({ error: "Internal server error", error }); + } +}); + +app.post("/samasat-cities", async (req, res) => { + const { cookie, province } = req.body; + + if (!cookie || !province) { + return res + .status(400) + .json({ error: "Missing required fields: cookie or province" }); + } + + const options = { + hostname: "www.samasat.ir", + path: + "/Location/_GetCities?locationIdProvince[]=" + + encodeURIComponent(province), + method: "GET", + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36", + Accept: "*/*", + Referer: "https://www.samasat.ir/BaseInformation/BroilerUserManagement", + "X-Requested-With": "XMLHttpRequest", + Cookie: cookie, + Origin: "https://www.samasat.ir", + }, + }; + + const request = https.request(options, (response) => { + let data = ""; + + response.on("data", (chunk) => { + data += chunk; + }); + + response.on("end", () => { + try { + const jsonData = JSON.parse(data); + + const transformedData = jsonData.map((city) => ({ + name: city.Text, + id: city.Value, + province: province, + })); + + res.json(transformedData); + } catch (error) { + console.error("Error parsing JSON:", error.message); + res + .status(500) + .json({ error: "Invalid JSON response from external API" }); + } + }); + }); + + request.on("error", (error) => { + console.error("Error with the request:", error.message); + res.status(500).json({ error: "Failed to make request to external API" }); + }); + + request.end(); +}); + +app.post("/loginsamasat", async (req, res) => { + const url = "https://www.samasat.ir/Account/Login"; + const payload = { + Key: "9c74474d883848248eae926cdabd25d4", + UsernameOrMobile: "03029", + Password: "at50205020", + CaptchaCode: "3334", + remember: 1, + }; + + const headers = { + "X-Requested-With": "XMLHttpRequest", + "Content-Type": "application/json", + }; + + try { + const response = await axios.post(url, payload, { headers: headers }); + res.json(response.data); + } catch (error) { + res.status(500).json({ + message: "Error making request to external API", + error: error.message, + }); + } +}); + +function getRandomElement(array) { + const randomIndex = Math.floor(Math.random() * array.length); + return array[randomIndex]; +} + +async function performLogin() { + const getOptions = { + hostname: "ba124.ir", + path: "/Account/Login", + method: "GET", + headers: { + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36", + Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", + "Accept-Language": "en-US,en;q=0.9,fa-IR;q=0.8,fa;q=0.7", + Connection: "keep-alive", + "Sec-Fetch-Dest": "document", + "Sec-Fetch-Mode": "navigate", + "Sec-Fetch-Site": "none", + "Sec-Fetch-User": "?1", + "Upgrade-Insecure-Requests": "1", + }, + }; + + const loginPageCookies = await new Promise((resolve, reject) => { + const request = https.request(getOptions, (response) => { + let data = ""; + + response.on("data", (chunk) => { + data += chunk; + }); + + response.on("end", () => { + const csrfMatch = data.match( + / cookie.split(";")[0]) + .join("; "); + + resolve({ csrfToken, cookieString }); + }); + }); + + request.on("error", (error) => { + reject(error); + }); + + request.end(); + }); + + const randomUser = getRandomElement([ + 4072893341, 4072452238, 4070413170, 4189617652, 4071417919, 4172069355, + ]); + + const postData = querystring.stringify({ + NationalId: randomUser, + Password: randomUser, + __RequestVerificationToken: loginPageCookies.csrfToken, + }); + + const postOptions = { + hostname: "ba124.ir", + path: "/Account/Login", + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + "Content-Length": Buffer.byteLength(postData), + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36", + Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", + "Accept-Language": "en-US,en;q=0.9,fa-IR;q=0.8,fa;q=0.7", + Connection: "keep-alive", + Cookie: loginPageCookies.cookieString, + Host: "ba124.ir", + Origin: "https://ba124.ir", + Referer: "https://ba124.ir/Account/Login", + "Sec-Fetch-Dest": "document", + "Sec-Fetch-Mode": "navigate", + "Sec-Fetch-Site": "same-origin", + "Sec-Fetch-User": "?1", + "Upgrade-Insecure-Requests": "1", + }, + }; + + const finalCookie = await new Promise((resolve, reject) => { + const request = https.request(postOptions, (response) => { + response.on("data", () => {}); + + response.on("end", () => { + const cookies = response.headers["set-cookie"] || []; + const cookieString = cookies + .map((cookie) => cookie.split(";")[0]) + .join("; "); + + const combinedCookie = loginPageCookies.cookieString + ? `${loginPageCookies.cookieString}; ${cookieString}` + : cookieString; + + resolve(combinedCookie); + }); + }); + + request.on("error", (error) => { + reject(error); + }); + + request.write(postData); + request.end(); + }); + + return finalCookie; +} + +async function makeInquiryRequest(info, type, cookie) { + const payloadData = + type === "person" + ? querystring.stringify({ + nationalCode: info, + birthDateString: "1404/08/12", + }) + : type === "unit" + ? querystring.stringify({ + NationalCode: info, + }) + : JSON.stringify({ + NationaId: info, + }); + + const requestOptions = { + hostname: "ba124.ir", + path: + type === "person" + ? "/Inquiries/PersonInfo" + : type === "unit" + ? "/Inquiries/CallGetLegalPersonInfoByNationalCode" + : "/Inquiries/AsnafGWLicenseInquiry", + method: "POST", + headers: { + "Content-Type": + type === "person" || type === "unit" + ? "application/x-www-form-urlencoded; charset=UTF-8" + : "application/json; charset=UTF-8", + "Content-Length": Buffer.byteLength(payloadData), + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36", + Accept: "application/json, text/javascript, */*; q=0.01", + Accept_Encoding: "gzip, deflate, br, zstd", + Accept_Language: "en-US,en;q=0.9,fa-IR;q=0.8,fa;q=0.7", + Connection: "keep-alive", + Cookie: cookie, + Host: "ba124.ir", + Origin: "https://ba124.ir", + Referer: + type === "person" + ? "https://ba124.ir/Inquiries/PersonInfo" + : type === "unit" + ? "https://ba124.ir/Inquiries/GetLegalPersonInfoByNationalCode" + : "https://ba124.ir/Inquiries/AsnafGWLicenseInquiry", + "Sec-Ch-Ua": + '"Chromium";v="142", "Google Chrome";v="142", "Not_A Brand";v="99"', + "Sec-Ch-Ua-Mobile": "?0", + "Sec-Ch-Ua-Platform": '"Windows"', + "Sec-Fetch-Dest": "empty", + "Sec-Fetch-Mode": "cors", + "Sec-Fetch-Site": "same-origin", + "X-Requested-With": "XMLHttpRequest", + }, + }; + + const finalInfo = await new Promise((resolve, reject) => { + const request = https.request(requestOptions, (response) => { + let data = ""; + + response.on("data", (chunk) => { + data += chunk; + }); + + response.on("end", () => { + try { + const jsonData = JSON.parse(data); + resolve(jsonData); + } catch (error) { + reject(new Error(`Invalid JSON response: ${error.message}`)); + } + }); + }); + + request.on("error", (error) => { + reject(error); + }); + + request.write(payloadData); + request.end(); + }); + + return finalInfo; +} + +app.get("/national-documents", async (req, res) => { + const { info, type } = req.query; + + if (!info) { + return res.status(400).json({ + error: "Missing required field: info", + }); + } + + try { + let finalCookie = await performLogin(); + let finalInfo = await makeInquiryRequest(info, type, finalCookie); + + while (finalInfo && finalInfo.error) { + console.log("Session expired, retrying login and request..."); + finalCookie = await performLogin(); + finalInfo = await makeInquiryRequest(info, type, finalCookie); + } + + res.json(finalInfo); + } catch (error) { + res.status(500).json({ + error: "Failed to fetch person info", + message: error.message, + }); + } +}); + +app.get("/", async (req, res) => { + return res.redirect("https://rasadyar.com"); +}); + +// Start the server +app.listen(port, () => { + console.log(`Server is running on http://localhost:${port}`); +}); diff --git a/lib/asan-pardakht-config.js b/lib/asan-pardakht-config.js new file mode 100644 index 0000000..b838c93 --- /dev/null +++ b/lib/asan-pardakht-config.js @@ -0,0 +1,78 @@ +const crypto = require("crypto"); +const soap = require("soap"); + +const config = { + KEY: "Your KEY", + IV: "Your IV", + username: "Your username", + password: "Your password", + WebServiceUrl: + "https://services.asanpardakht.net/paygate/merchantservices.asmx?WSDL", + merchantConfigurationID: "YourConfigurationID", +}; + +function addPadding(string, blocksize = 32) { + const pad = blocksize - (string.length % blocksize); + return string + String.fromCharCode(pad).repeat(pad); +} + +function stripPadding(string) { + const pad = string.charCodeAt(string.length - 1); + return string.slice(0, -pad); +} + +function encrypt(string = "") { + const key = Buffer.from(config.KEY, "base64"); + const iv = Buffer.from(config.IV, "base64"); + const cipher = crypto.createCipheriv("aes-256-cbc", key, iv); + let encrypted = cipher.update(addPadding(string), "utf8", "base64"); + encrypted += cipher.final("base64"); + return encrypted; +} + +function decrypt(string = "") { + const key = Buffer.from(config.KEY, "base64"); + const iv = Buffer.from(config.IV, "base64"); + const decipher = crypto.createDecipheriv("aes-256-cbc", key, iv); + let decrypted = decipher.update(string, "base64", "utf8"); + decrypted += decipher.final("utf8"); + return stripPadding(decrypted); +} + +async function encryptWS(string = "") { + try { + const client = await soap.createClientAsync( + "https://services.asanpardakht.net/paygate/internalutils.asmx?WSDL" + ); + const args = { + aesKey: config.KEY, + aesVector: config.IV, + toBeEncrypted: string, + }; + const result = await client.EncryptInAESAsync(args); + return result[0].EncryptInAESResult; + } catch (err) { + console.error("Error in EncryptWS:", err); + throw err; + } +} + +async function decryptWS(string = "") { + try { + const client = await soap.createClientAsync( + "https://services.asanpardakht.net/paygate/internalutils.asmx?WSDL" + ); + const args = { + aesKey: config.KEY, + aesVector: config.IV, + toBeDecrypted: string, + }; + const result = await client.DecryptInAESAsync(args); + return result[0].DecryptInAESResult; + } catch (err) { + console.error("Error in DecryptWS:", err); + throw err; + } +} + +module.exports = { config, encrypt, decrypt, encryptWS, decryptWS }; diff --git a/lib/bp-cumulative-dynamic-pay-request.js b/lib/bp-cumulative-dynamic-pay-request.js new file mode 100644 index 0000000..99e6d9a --- /dev/null +++ b/lib/bp-cumulative-dynamic-pay-request.js @@ -0,0 +1,44 @@ +const moment = require("moment"); +const soap = require("soap"); +const { TERMINALID, USERNAME, USERPASSWORD, MELLATWSDL } = require("./data"); + +function bpCumulativeDynamicPayRequest( + orderId, + priceAmount, + additionalText, + callbackUrl +) { + const localDate = moment().format("YYYYMMDD"); + const localTime = moment().format("HHmmss"); + const args = { + terminalId: TERMINALID, + userName: USERNAME, + userPassword: USERPASSWORD, + orderId: orderId, + amount: priceAmount, + localDate: localDate, + localTime: localTime, + additionalData: additionalText, + callBackUrl: callbackUrl, + }; + + var options = { + overrideRootElement: { + namespace: "ns1", + }, + }; + + return new Promise((resolve, reject) => { + soap.createClient(MELLATWSDL, options, (err, client) => { + client.bpCumulativeDynamicPayRequest(args, (err, result, body) => { + if (err) { + //console.log(err); + reject(err); + } + return resolve(result); + }); + }); + }); +} + +module.exports = { bpCumulativeDynamicPayRequest }; diff --git a/lib/bp-inquiry-request.js b/lib/bp-inquiry-request.js new file mode 100644 index 0000000..b8f27af --- /dev/null +++ b/lib/bp-inquiry-request.js @@ -0,0 +1,33 @@ +const soap = require("soap"); +const { TERMINALID, USERNAME, USERPASSWORD, MELLATWSDL } = require("./data"); + +function bpInquiryRequest(orderId, saleOrderId, saleReferenceId) { + const args = { + terminalId: TERMINALID, + userName: USERNAME, + userPassword: USERPASSWORD, + orderId: orderId, + saleOrderId: saleOrderId, + saleReferenceId: saleReferenceId, + }; + + var options = { + overrideRootElement: { + namespace: "ns1", + }, + }; + + return new Promise((resolve, reject) => { + soap.createClient(MELLATWSDL, options, (err, client) => { + client.bpInquiryRequest(args, (err, result, body) => { + if (err) { + //console.log(err); + reject(err); + } + return resolve(result); + }); + }); + }); +} + +module.exports = { bpInquiryRequest }; diff --git a/lib/bp-pay-request.js b/lib/bp-pay-request.js new file mode 100644 index 0000000..e0cf647 --- /dev/null +++ b/lib/bp-pay-request.js @@ -0,0 +1,40 @@ +const moment = require("moment"); +const soap = require("soap"); +const { TERMINALID, USERNAME, USERPASSWORD, MELLATWSDL } = require("./data"); + +function bpPayRequest(orderId, priceAmount, additionalText, callbackUrl) { + const localDate = moment().format("YYYYMMDD"); + const localTime = moment().format("HHmmss"); + const args = { + terminalId: TERMINALID, + userName: USERNAME, + userPassword: USERPASSWORD, + orderId: orderId, + amount: priceAmount, + localDate: localDate, + localTime: localTime, + additionalData: additionalText, + callBackUrl: callbackUrl, + payerId: 0, + }; + + var options = { + overrideRootElement: { + namespace: "ns1", + }, + }; + + return new Promise((resolve, reject) => { + soap.createClient(MELLATWSDL, options, (err, client) => { + client.bpPayRequest(args, (err, result, body) => { + if (err) { + //console.log(err); + reject(err); + } + return resolve(result); + }); + }); + }); +} + +module.exports = { bpPayRequest }; diff --git a/lib/bp-reversal-request.js b/lib/bp-reversal-request.js new file mode 100644 index 0000000..745e870 --- /dev/null +++ b/lib/bp-reversal-request.js @@ -0,0 +1,33 @@ +const soap = require("soap"); +const { TERMINALID, USERNAME, USERPASSWORD, MELLATWSDL } = require("./data"); + +function bpReversalRequest(orderId, saleOrderId, saleReferenceId) { + const args = { + terminalId: TERMINALID, + userName: USERNAME, + userPassword: USERPASSWORD, + orderId: orderId, + saleOrderId: saleOrderId, + saleReferenceId: saleReferenceId, + }; + + var options = { + overrideRootElement: { + namespace: "ns1", + }, + }; + + return new Promise((resolve, reject) => { + soap.createClient(MELLATWSDL, options, (err, client) => { + client.bpReversalRequest(args, (err, result, body) => { + if (err) { + //console.log(err); + reject(err); + } + return resolve(result); + }); + }); + }); +} + +module.exports = { bpReversalRequest }; diff --git a/lib/bp-settle-request.js b/lib/bp-settle-request.js new file mode 100644 index 0000000..7c46072 --- /dev/null +++ b/lib/bp-settle-request.js @@ -0,0 +1,33 @@ +const soap = require("soap"); +const { TERMINALID, USERNAME, USERPASSWORD, MELLATWSDL } = require("./data"); + +function bpSettleRequest(orderId, saleOrderId, saleReferenceId) { + const args = { + terminalId: TERMINALID, + userName: USERNAME, + userPassword: USERPASSWORD, + orderId: orderId, + saleOrderId: saleOrderId, + saleReferenceId: saleReferenceId, + }; + + var options = { + overrideRootElement: { + namespace: "ns1", + }, + }; + + return new Promise((resolve, reject) => { + soap.createClient(MELLATWSDL, options, (err, client) => { + client.bpSettleRequest(args, (err, result, body) => { + if (err) { + //console.log(err); + reject(err); + } + return resolve(result); + }); + }); + }); +} + +module.exports = { bpSettleRequest }; diff --git a/lib/bp-verify-request.js b/lib/bp-verify-request.js new file mode 100644 index 0000000..c25b928 --- /dev/null +++ b/lib/bp-verify-request.js @@ -0,0 +1,33 @@ +const soap = require("soap"); +const { TERMINALID, USERNAME, USERPASSWORD, MELLATWSDL } = require("./data"); + +function bpVerifyRequest(orderId, saleOrderId, saleReferenceId) { + const args = { + terminalId: TERMINALID, + userName: USERNAME, + userPassword: USERPASSWORD, + orderId: orderId, + saleOrderId: saleOrderId, + saleReferenceId: saleReferenceId, + }; + + var options = { + overrideRootElement: { + namespace: "ns1", + }, + }; + + return new Promise((resolve, reject) => { + soap.createClient(MELLATWSDL, options, (err, client) => { + client.bpVerifyRequest(args, (err, result, body) => { + if (err) { + //console.log(err); + reject(err); + } + return resolve(result); + }); + }); + }); +} + +module.exports = { bpVerifyRequest }; diff --git a/lib/data.js b/lib/data.js new file mode 100644 index 0000000..dca488c --- /dev/null +++ b/lib/data.js @@ -0,0 +1,5 @@ +const TERMINALID = 7269507; +const USERNAME = "7269507"; +const USERPASSWORD = "66506956"; +const MELLATWSDL = "https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl"; +module.exports = { TERMINALID, USERNAME, USERPASSWORD, MELLATWSDL }; diff --git a/lib/getAllCities.js b/lib/getAllCities.js new file mode 100644 index 0000000..d47029f --- /dev/null +++ b/lib/getAllCities.js @@ -0,0 +1,2416 @@ +const getAllCities = () => { + return [ + { + name: "آذرشهر", + id: "65552", + province: "65521", + }, + { + name: "اسکو", + id: "65553", + province: "65521", + }, + { + name: "اهر", + id: "65554", + province: "65521", + }, + { + name: "بستان آباد", + id: "65555", + province: "65521", + }, + { + name: "بناب", + id: "65556", + province: "65521", + }, + { + name: "تبریز", + id: "65557", + province: "65521", + }, + { + name: "جلفا", + id: "65558", + province: "65521", + }, + { + name: "چاراویماق", + id: "65559", + province: "65521", + }, + { + name: "خدا آفرین", + id: "65560", + province: "65521", + }, + { + name: "سراب", + id: "65561", + province: "65521", + }, + { + name: "شبستر", + id: "65562", + province: "65521", + }, + { + name: "عجب شیر", + id: "65563", + province: "65521", + }, + { + name: "مراغه", + id: "65565", + province: "65521", + }, + { + name: "مرند", + id: "65566", + province: "65521", + }, + { + name: "ملکان", + id: "65567", + province: "65521", + }, + { + name: "میانه", + id: "65568", + province: "65521", + }, + { + name: "هریس", + id: "65569", + province: "65521", + }, + { + name: "هشترود", + id: "65570", + province: "65521", + }, + { + name: "هوراند", + id: "65957", + province: "65521", + }, + { + name: "ورزقان", + id: "65571", + province: "65521", + }, + { + name: "کلیبر", + id: "65564", + province: "65521", + }, + + { + name: "ارومیه", + id: "65572", + province: "65522", + }, + { + name: "اشنویه", + id: "65573", + province: "65522", + }, + { + name: "بوکان", + id: "65574", + province: "65522", + }, + { + name: "پلدشت", + id: "65575", + province: "65522", + }, + { + name: "پیرانشهر", + id: "65576", + province: "65522", + }, + { + name: "تکاب", + id: "65577", + province: "65522", + }, + { + name: "چاربرج", + id: "66905", + province: "65522", + }, + { + name: "چالدران", + id: "65578", + province: "65522", + }, + { + name: "چایپاره", + id: "65579", + province: "65522", + }, + { + name: "خوی", + id: "65580", + province: "65522", + }, + { + name: "سر دشت", + id: "65581", + province: "65522", + }, + { + name: "سلماس", + id: "65582", + province: "65522", + }, + { + name: "شاهین دژ", + id: "65583", + province: "65522", + }, + { + name: "شوط", + id: "65584", + province: "65522", + }, + { + name: "ماکو", + id: "65585", + province: "65522", + }, + { + name: "مهاباد", + id: "65586", + province: "65522", + }, + { + name: "میاندوآب", + id: "65587", + province: "65522", + }, + { + name: "نقده", + id: "65588", + province: "65522", + }, + + { + name: "اردبیل", + id: "65589", + province: "65523", + }, + { + name: "اصلاندوز", + id: "66032", + province: "65523", + }, + { + name: "انگوت", + id: "66040", + province: "65523", + }, + { + name: "بیله سوار", + id: "65590", + province: "65523", + }, + { + name: "پارس آباد", + id: "65591", + province: "65523", + }, + { + name: "خلخال", + id: "65592", + province: "65523", + }, + { + name: "سرعین", + id: "65593", + province: "65523", + }, + { + name: "گرمی", + id: "65595", + province: "65523", + }, + { + name: "مشگین شهر", + id: "65596", + province: "65523", + }, + { + name: "نمین", + id: "65597", + province: "65523", + }, + { + name: "نیر", + id: "65598", + province: "65523", + }, + { + name: "کوثر", + id: "65594", + province: "65523", + }, + + { + name: "آران و بیدگل", + id: "65599", + province: "65524", + }, + { + name: "اردستان", + id: "65600", + province: "65524", + }, + { + name: "اصفهان", + id: "65601", + province: "65524", + }, + { + name: "برخوار", + id: "65602", + province: "65524", + }, + { + name: "بوئین و میاندشت", + id: "66075", + province: "65524", + }, + { + name: "تیران و کرون", + id: "65603", + province: "65524", + }, + { + name: "جرقویه", + id: "66887", + province: "65524", + }, + { + name: "چادگان", + id: "65604", + province: "65524", + }, + { + name: "خمینی شهر", + id: "65605", + province: "65524", + }, + { + name: "خوانسار", + id: "65606", + province: "65524", + }, + { + name: "خور و بیابانک", + id: "65607", + province: "65524", + }, + { + name: "دهاقان", + id: "65608", + province: "65524", + }, + { + name: "زرین شهر", + id: "66828", + province: "65524", + }, + { + name: "سمیرم", + id: "65609", + province: "65524", + }, + { + name: "شاهین شهر", + id: "65610", + province: "65524", + }, + { + name: "شهرضا", + id: "65611", + province: "65524", + }, + { + name: "فریدن", + id: "65612", + province: "65524", + }, + { + name: "فریدونشهر", + id: "65613", + province: "65524", + }, + { + name: "فلاورجان", + id: "65614", + province: "65524", + }, + { + name: "گلپایگان", + id: "65616", + province: "65524", + }, + { + name: "مبارکه", + id: "65618", + province: "65524", + }, + { + name: "میمه", + id: "66906", + province: "65524", + }, + { + name: "نائین", + id: "65619", + province: "65524", + }, + { + name: "نجف آباد", + id: "65620", + province: "65524", + }, + { + name: "نطنز", + id: "65621", + province: "65524", + }, + { + name: "هرند", + id: "66888", + province: "65524", + }, + { + name: "ورزنه", + id: "66889", + province: "65524", + }, + { + name: "کاشان", + id: "65615", + province: "65524", + }, + { + name: "کوهپایه", + id: "66059", + province: "65524", + }, + + { + name: "اشتهارد", + id: "66855", + province: "65525", + }, + { + name: "چهار باغ", + id: "66096", + province: "65525", + }, + { + name: "ساوجبلاغ", + id: "65622", + province: "65525", + }, + { + name: "طالقان", + id: "65623", + province: "65525", + }, + { + name: "فردیس", + id: "66877", + province: "65525", + }, + { + name: "نظر آباد", + id: "65625", + province: "65525", + }, + { + name: "کرج", + id: "65624", + province: "65525", + }, + + { + name: "آبدانان", + id: "65626", + province: "65526", + }, + { + name: "ایلام", + id: "65627", + province: "65526", + }, + { + name: "ایوان", + id: "65628", + province: "65526", + }, + { + name: "بدره", + id: "66830", + province: "65526", + }, + { + name: "چرداول", + id: "66829", + province: "65526", + }, + { + name: "چوار", + id: "66107", + province: "65526", + }, + { + name: "دره‌شهر", + id: "66831", + province: "65526", + }, + { + name: "دهلران", + id: "65630", + province: "65526", + }, + { + name: "سیروان", + id: "66832", + province: "65526", + }, + { + name: "ملکشاهی", + id: "65632", + province: "65526", + }, + { + name: "مهران", + id: "65633", + province: "65526", + }, + { + name: "هلیلان", + id: "66118", + province: "65526", + }, + + { + name: "بوشهر", + id: "65634", + province: "65527", + }, + { + name: "تنگستان", + id: "65635", + province: "65527", + }, + { + name: "جم", + id: "65636", + province: "65527", + }, + { + name: "دشتستان", + id: "65637", + province: "65527", + }, + { + name: "دشتی", + id: "65638", + province: "65527", + }, + { + name: "دیر", + id: "65639", + province: "65527", + }, + { + name: "دیلم", + id: "65640", + province: "65527", + }, + { + name: "عسلویه", + id: "66142", + province: "65527", + }, + { + name: "گناوه", + id: "65642", + province: "65527", + }, + { + name: "کنگان", + id: "65641", + province: "65527", + }, + + { + name: "اسلامشهر", + id: "65643", + province: "65528", + }, + { + name: "بهارستان", + id: "65644", + province: "65528", + }, + { + name: "پاکدشت", + id: "65645", + province: "65528", + }, + { + name: "پردیس", + id: "66867", + province: "65528", + }, + { + name: "پیشوا", + id: "65646", + province: "65528", + }, + { + name: "تهران", + id: "65647", + province: "65528", + }, + { + name: "دماوند", + id: "65648", + province: "65528", + }, + { + name: "رباط کریم", + id: "65649", + province: "65528", + }, + { + name: "ری", + id: "65650", + province: "65528", + }, + { + name: "شمیرانات", + id: "65651", + province: "65528", + }, + { + name: "شهریار", + id: "65652", + province: "65528", + }, + { + name: "فیروز کوه", + id: "65653", + province: "65528", + }, + { + name: "قدس", + id: "65654", + province: "65528", + }, + { + name: "قرچک", + id: "66866", + province: "65528", + }, + { + name: "ملارد", + id: "65655", + province: "65528", + }, + { + name: "ورامین", + id: "65656", + province: "65528", + }, + + { + name: "اردل", + id: "65657", + province: "65529", + }, + { + name: "بروجن", + id: "65658", + province: "65529", + }, + { + name: "بن", + id: "66875", + province: "65529", + }, + { + name: "خانمیرزا", + id: "66183", + province: "65529", + }, + { + name: "سامان", + id: "66876", + province: "65529", + }, + { + name: "شهر کرد", + id: "65659", + province: "65529", + }, + { + name: "فارسان", + id: "65660", + province: "65529", + }, + { + name: "فرخ شهر", + id: "66907", + province: "65529", + }, + { + name: "فلارد", + id: "66184", + province: "65529", + }, + { + name: "لردگان", + id: "65663", + province: "65529", + }, + { + name: "کوهرنگ", + id: "65661", + province: "65529", + }, + { + name: "کیار", + id: "65662", + province: "65529", + }, + + { + name: "بشرویه", + id: "65664", + province: "65530", + }, + { + name: "بیرجند", + id: "65665", + province: "65530", + }, + { + name: "خوسف", + id: "66834", + province: "65530", + }, + { + name: "درمیان", + id: "65666", + province: "65530", + }, + { + name: "زیرکوه", + id: "66863", + province: "65530", + }, + { + name: "سرایان", + id: "65667", + province: "65530", + }, + { + name: "سربیشه", + id: "65668", + province: "65530", + }, + { + name: "طبس", + id: "66864", + province: "65530", + }, + { + name: "فردوس", + id: "65669", + province: "65530", + }, + { + name: "قائنات", + id: "65670", + province: "65530", + }, + { + name: "نهبندان", + id: "65671", + province: "65530", + }, + + { + name: "باخرز", + id: "65672", + province: "65531", + }, + { + name: "بجستان", + id: "65673", + province: "65531", + }, + { + name: "بردسکن", + id: "65674", + province: "65531", + }, + { + name: "تایباد", + id: "65676", + province: "65531", + }, + { + name: "تربت جام", + id: "65678", + province: "65531", + }, + { + name: "تربت حیدریه", + id: "65679", + province: "65531", + }, + { + name: "جغتای", + id: "65680", + province: "65531", + }, + { + name: "جوین", + id: "65681", + province: "65531", + }, + { + name: "چناران", + id: "65682", + province: "65531", + }, + { + name: "خلیل آباد", + id: "65683", + province: "65531", + }, + { + name: "خواف", + id: "65684", + province: "65531", + }, + { + name: "خوشاب", + id: "65685", + province: "65531", + }, + { + name: "داورزن", + id: "66835", + province: "65531", + }, + { + name: "درگز", + id: "65686", + province: "65531", + }, + { + name: "رشتخوار", + id: "65687", + province: "65531", + }, + { + name: "زاوه", + id: "65688", + province: "65531", + }, + { + name: "زبرخان", + id: "66265", + province: "65531", + }, + { + name: "سبزوار", + id: "65689", + province: "65531", + }, + { + name: "سرخس", + id: "65690", + province: "65531", + }, + { + name: "ششتمد", + id: "66246", + province: "65531", + }, + { + name: "صالح آباد", + id: "66838", + province: "65531", + }, + { + name: "طرقبه", + id: "66837", + province: "65531", + }, + { + name: "فریمان", + id: "65691", + province: "65531", + }, + { + name: "فیروزه", + id: "66836", + province: "65531", + }, + { + name: "قوچان", + id: "65692", + province: "65531", + }, + { + name: "گلبهار", + id: "66228", + province: "65531", + }, + { + name: "گناباد", + id: "65695", + province: "65531", + }, + { + name: "مشهد", + id: "65696", + province: "65531", + }, + { + name: "مه ولات", + id: "65697", + province: "65531", + }, + { + name: "نیشابور", + id: "65698", + province: "65531", + }, + { + name: "کاشمر", + id: "65693", + province: "65531", + }, + { + name: "کلات", + id: "65694", + province: "65531", + }, + { + name: "کوهسرخ", + id: "66254", + province: "65531", + }, + + { + name: "اسفراین", + id: "65699", + province: "65532", + }, + { + name: "بام و صفی آباد", + id: "66897", + province: "65532", + }, + { + name: "بجنورد", + id: "65700", + province: "65532", + }, + { + name: "جاجرم", + id: "65701", + province: "65532", + }, + { + name: "راز و جرگلان", + id: "66271", + province: "65532", + }, + { + name: "سملقان", + id: "65705", + province: "65532", + }, + { + name: "شیروان", + id: "65702", + province: "65532", + }, + { + name: "فاروج", + id: "65703", + province: "65532", + }, + { + name: "گرمه", + id: "65704", + province: "65532", + }, + { + name: "مانه", + id: "66898", + province: "65532", + }, + + { + name: "آبادان", + id: "65706", + province: "65533", + }, + { + name: "آغاجری", + id: "66878", + province: "65533", + }, + { + name: "امیدیه", + id: "65707", + province: "65533", + }, + { + name: "اندیمشک", + id: "65708", + province: "65533", + }, + { + name: "اندیکا", + id: "65709", + province: "65533", + }, + { + name: "اهواز", + id: "65710", + province: "65533", + }, + { + name: "ایذه", + id: "65711", + province: "65533", + }, + { + name: "باغ ملک", + id: "65712", + province: "65533", + }, + { + name: "باوی", + id: "65713", + province: "65533", + }, + { + name: "بندر ماهشهر", + id: "65714", + province: "65533", + }, + { + name: "بهبهان", + id: "65715", + province: "65533", + }, + { + name: "حمیدیه", + id: "66873", + province: "65533", + }, + { + name: "خرمشهر", + id: "65716", + province: "65533", + }, + { + name: "دزپارت", + id: "66893", + province: "65533", + }, + { + name: "دزفول", + id: "65717", + province: "65533", + }, + { + name: "دشت آزادگان", + id: "65718", + province: "65533", + }, + { + name: "رامشیر", + id: "65719", + province: "65533", + }, + { + name: "رامهرمز", + id: "65720", + province: "65533", + }, + { + name: "شادگان", + id: "65721", + province: "65533", + }, + { + name: "شوش", + id: "65722", + province: "65533", + }, + { + name: "شوشتر", + id: "65723", + province: "65533", + }, + { + name: "صیدون", + id: "66902", + province: "65533", + }, + { + name: "گتوند", + id: "65724", + province: "65533", + }, + { + name: "لالی", + id: "65725", + province: "65533", + }, + { + name: "مسجد سلیمان", + id: "65726", + province: "65533", + }, + { + name: "هفتگل", + id: "65727", + province: "65533", + }, + { + name: "هندیجان", + id: "65728", + province: "65533", + }, + { + name: "هویزه", + id: "65729", + province: "65533", + }, + { + name: "کارون", + id: "66874", + province: "65533", + }, + { + name: "کرخه", + id: "66886", + province: "65533", + }, + + { + name: "ابهر", + id: "65730", + province: "65534", + }, + { + name: "ایجرود", + id: "65731", + province: "65534", + }, + { + name: "خدابنده", + id: "65732", + province: "65534", + }, + { + name: "خرمدره", + id: "65733", + province: "65534", + }, + { + name: "زنجان", + id: "65734", + province: "65534", + }, + { + name: "سلطانیه ", + id: "66868", + province: "65534", + }, + { + name: "طارم", + id: "65735", + province: "65534", + }, + { + name: "ماهنشان", + id: "65736", + province: "65534", + }, + + { + name: "آرادان", + id: "65737", + province: "65535", + }, + { + name: "دامغان", + id: "65738", + province: "65535", + }, + { + name: "سرخه", + id: "66840", + province: "65535", + }, + { + name: "سمنان", + id: "65739", + province: "65535", + }, + { + name: "شاهرود", + id: "65740", + province: "65535", + }, + { + name: "گرمسار", + id: "65741", + province: "65535", + }, + { + name: "مهدی شهر", + id: "65742", + province: "65535", + }, + { + name: "میامی", + id: "65743", + province: "65535", + }, + + { + name: "ایرانشهر", + id: "65744", + province: "65536", + }, + { + name: "بمپور", + id: "66362", + province: "65536", + }, + { + name: "تفتان", + id: "66882", + province: "65536", + }, + { + name: "چاه بهار", + id: "65745", + province: "65536", + }, + { + name: "خاش", + id: "65746", + province: "65536", + }, + { + name: "دشتیاری", + id: "66364", + province: "65536", + }, + { + name: "دلگان", + id: "65747", + province: "65536", + }, + { + name: "راسک", + id: "66883", + province: "65536", + }, + { + name: "زابل", + id: "65748", + province: "65536", + }, + { + name: "زاهدان", + id: "65749", + province: "65536", + }, + { + name: "زرآباد", + id: "66384", + province: "65536", + }, + { + name: "زهک", + id: "65750", + province: "65536", + }, + { + name: "سراوان", + id: "65751", + province: "65536", + }, + { + name: "سرباز", + id: "65752", + province: "65536", + }, + { + name: "سیب سوران", + id: "65753", + province: "65536", + }, + { + name: "فنوج", + id: "66860", + province: "65536", + }, + { + name: "قصرقند", + id: "66861", + province: "65536", + }, + { + name: "گلشن", + id: "66896", + province: "65536", + }, + { + name: "لاشار", + id: "66390", + province: "65536", + }, + { + name: "مهرستان", + id: "65755", + province: "65536", + }, + { + name: "میرجاوه", + id: "66862", + province: "65536", + }, + { + name: "نیمروز", + id: "66859", + province: "65536", + }, + { + name: "نیک شهر", + id: "65756", + province: "65536", + }, + { + name: "هامون", + id: "66858", + province: "65536", + }, + { + name: "هیرمند", + id: "65757", + province: "65536", + }, + { + name: "کنارک", + id: "65754", + province: "65536", + }, + + { + name: "آباده", + id: "65758", + province: "65537", + }, + { + name: "ارسنجان", + id: "65759", + province: "65537", + }, + { + name: "استهبان", + id: "65760", + province: "65537", + }, + { + name: "اقلید", + id: "65761", + province: "65537", + }, + { + name: "اوز", + id: "66442", + province: "65537", + }, + { + name: "بختگان", + id: "66880", + province: "65537", + }, + { + name: "بوانات", + id: "65762", + province: "65537", + }, + { + name: "بیضا", + id: "66416", + province: "65537", + }, + { + name: "پاسارگاد", + id: "65763", + province: "65537", + }, + { + name: "جهرم", + id: "65764", + province: "65537", + }, + { + name: "جویم", + id: "66445", + province: "65537", + }, + { + name: "خرامه", + id: "65765", + province: "65537", + }, + { + name: "خرم بید", + id: "65766", + province: "65537", + }, + { + name: "خفر", + id: "66848", + province: "65537", + }, + { + name: "خنج", + id: "65767", + province: "65537", + }, + { + name: "داراب", + id: "65768", + province: "65537", + }, + { + name: "رستم", + id: "65769", + province: "65537", + }, + { + name: "زرقان", + id: "66422", + province: "65537", + }, + { + name: "زرین دشت", + id: "65770", + province: "65537", + }, + { + name: "سپیدان", + id: "65771", + province: "65537", + }, + { + name: "سرچهان", + id: "66843", + province: "65537", + }, + { + name: "سروستان", + id: "65772", + province: "65537", + }, + { + name: "شیراز", + id: "65773", + province: "65537", + }, + { + name: "فراشبند", + id: "65774", + province: "65537", + }, + { + name: "فسا", + id: "65775", + province: "65537", + }, + { + name: "فیروز آباد", + id: "65776", + province: "65537", + }, + { + name: "قیر و کارزین", + id: "66842", + province: "65537", + }, + { + name: "گراش", + id: "65780", + province: "65537", + }, + { + name: "لارستان", + id: "65781", + province: "65537", + }, + { + name: "لامرد", + id: "65782", + province: "65537", + }, + { + name: "مرودشت", + id: "65783", + province: "65537", + }, + { + name: "ممسنی", + id: "65784", + province: "65537", + }, + { + name: "مهر", + id: "65785", + province: "65537", + }, + { + name: "نی ریز", + id: "65786", + province: "65537", + }, + { + name: "کازرون", + id: "65778", + province: "65537", + }, + { + name: "کوار", + id: "65779", + province: "65537", + }, + { + name: "کوه چنار", + id: "66881", + province: "65537", + }, + + { + name: "آبیک", + id: "65787", + province: "65538", + }, + { + name: "آوج", + id: "66849", + province: "65538", + }, + { + name: "البرز", + id: "65788", + province: "65538", + }, + { + name: "بوئین زهرا", + id: "65789", + province: "65538", + }, + { + name: "تاکستان", + id: "65790", + province: "65538", + }, + { + name: "قزوین", + id: "65791", + province: "65538", + }, + + { + name: "جعفریه", + id: "66483", + province: "65539", + }, + { + name: "خلجستان", + id: "66484", + province: "65539", + }, + { + name: "سلفچگان", + id: "66485", + province: "65539", + }, + { + name: "قم", + id: "65792", + province: "65539", + }, + { + name: "کهک", + id: "66487", + province: "65539", + }, + + { + name: "بانه", + id: "65793", + province: "65540", + }, + { + name: "بیجار", + id: "65794", + province: "65540", + }, + { + name: "دهگلان", + id: "65795", + province: "65540", + }, + { + name: "دیواندره", + id: "65796", + province: "65540", + }, + { + name: "سرو آباد", + id: "65797", + province: "65540", + }, + { + name: "سقز", + id: "65798", + province: "65540", + }, + { + name: "سنندج", + id: "65799", + province: "65540", + }, + { + name: "قروه", + id: "65800", + province: "65540", + }, + { + name: "مریوان", + id: "65802", + province: "65540", + }, + { + name: "کامیاران", + id: "65801", + province: "65540", + }, + + { + name: "ارزوئیه", + id: "65803", + province: "65541", + }, + { + name: "انار", + id: "65804", + province: "65541", + }, + { + name: "بافت", + id: "65805", + province: "65541", + }, + { + name: "بردسیر", + id: "65806", + province: "65541", + }, + { + name: "بم", + id: "65807", + province: "65541", + }, + { + name: "رابر", + id: "65809", + province: "65541", + }, + { + name: "راور", + id: "65810", + province: "65541", + }, + { + name: "رفسنجان", + id: "65811", + province: "65541", + }, + { + name: "ریگان", + id: "65813", + province: "65541", + }, + { + name: "زرند", + id: "65814", + province: "65541", + }, + { + name: "سیرجان", + id: "65815", + province: "65541", + }, + { + name: "شهربابک", + id: "66825", + province: "65541", + }, + { + name: "فهرج", + id: "65819", + province: "65541", + }, + { + name: "گنبکی", + id: "66900", + province: "65541", + }, + { + name: "نرماشیر", + id: "65825", + province: "65541", + }, + { + name: "کرمان", + id: "65821", + province: "65541", + }, + { + name: "کوهبنان", + id: "65823", + province: "65541", + }, + + { + name: "اسلام آباد غرب", + id: "65826", + province: "65542", + }, + { + name: "پاوه", + id: "65827", + province: "65542", + }, + { + name: "ثلاث باباجانی", + id: "65828", + province: "65542", + }, + { + name: "جوانرود", + id: "65829", + province: "65542", + }, + { + name: "دالاهو", + id: "65830", + province: "65542", + }, + { + name: "روانسر", + id: "65831", + province: "65542", + }, + { + name: "سر پل ذهاب", + id: "65832", + province: "65542", + }, + { + name: "سنقر", + id: "65833", + province: "65542", + }, + { + name: "صحنه", + id: "65834", + province: "65542", + }, + { + name: "قصر شیرین", + id: "65835", + province: "65542", + }, + { + name: "گیلانغرب", + id: "65838", + province: "65542", + }, + { + name: "ماهیدشت", + id: "66823", + province: "65542", + }, + { + name: "هرسین", + id: "65839", + province: "65542", + }, + { + name: "کرمانشاه", + id: "65836", + province: "65542", + }, + { + name: "کنگاور", + id: "65837", + province: "65542", + }, + + { + name: "باشت", + id: "65840", + province: "65543", + }, + { + name: "بهمئی", + id: "65841", + province: "65543", + }, + { + name: "بویراحمد", + id: "65842", + province: "65543", + }, + { + name: "چرام", + id: "65843", + province: "65543", + }, + { + name: "دنا", + id: "65844", + province: "65543", + }, + { + name: "گچساران", + id: "65846", + province: "65543", + }, + { + name: "لنده", + id: "66594", + province: "65543", + }, + { + name: "مارگون", + id: "66587", + province: "65543", + }, + { + name: "کهگیلویه", + id: "65845", + province: "65543", + }, + + { + name: "آزاد شهر", + id: "65847", + province: "65544", + }, + { + name: "آق قلا", + id: "65848", + province: "65544", + }, + { + name: "بندر گز", + id: "65849", + province: "65544", + }, + { + name: "ترکمن", + id: "65850", + province: "65544", + }, + { + name: "رامیان", + id: "65851", + province: "65544", + }, + { + name: "علی آباد", + id: "65852", + province: "65544", + }, + { + name: "گالیکش", + id: "65855", + province: "65544", + }, + { + name: "گرگان", + id: "65856", + province: "65544", + }, + { + name: "گمیشان", + id: "65857", + province: "65544", + }, + { + name: "گنبد کاووس", + id: "65858", + province: "65544", + }, + { + name: "مراوه تپه", + id: "65859", + province: "65544", + }, + { + name: "مینودشت", + id: "65860", + province: "65544", + }, + { + name: "کردکوی", + id: "65853", + province: "65544", + }, + { + name: "کلاله", + id: "65854", + province: "65544", + }, + + { + name: "آستارا", + id: "65861", + province: "65545", + }, + { + name: "آستانه اشرفیه", + id: "65862", + province: "65545", + }, + { + name: "املش", + id: "65863", + province: "65545", + }, + { + name: "بندر انزلی", + id: "65864", + province: "65545", + }, + { + name: "تالش", + id: "66851", + province: "65545", + }, + { + name: "خمام", + id: "66627", + province: "65545", + }, + { + name: "خمام", + id: "66904", + province: "65545", + }, + { + name: "رشت", + id: "65865", + province: "65545", + }, + { + name: "رضوانشهر", + id: "65866", + province: "65545", + }, + { + name: "رودبار", + id: "65867", + province: "65545", + }, + { + name: "رودسر", + id: "65868", + province: "65545", + }, + { + name: "سیاهکل", + id: "65869", + province: "65545", + }, + { + name: "شفت", + id: "65870", + province: "65545", + }, + { + name: "صومعه سرا", + id: "65871", + province: "65545", + }, + { + name: "طوالش", + id: "65872", + province: "65545", + }, + { + name: "فومن", + id: "65873", + province: "65545", + }, + { + name: "لاهیجان", + id: "65874", + province: "65545", + }, + { + name: "لنگرود", + id: "65875", + province: "65545", + }, + { + name: "ماسال", + id: "65876", + province: "65545", + }, + + { + name: "ازنا", + id: "65877", + province: "65546", + }, + { + name: "الیگودرز", + id: "65878", + province: "65546", + }, + { + name: "بروجرد", + id: "65879", + province: "65546", + }, + { + name: "پلدختر", + id: "65880", + province: "65546", + }, + { + name: "چگنی", + id: "65883", + province: "65546", + }, + { + name: "خرم آباد", + id: "65881", + province: "65546", + }, + { + name: "دلفان", + id: "65882", + province: "65546", + }, + { + name: "دورود", + id: "65884", + province: "65546", + }, + { + name: "رومشکان", + id: "66865", + province: "65546", + }, + { + name: "سلسله", + id: "65885", + province: "65546", + }, + { + name: "معمولان", + id: "66903", + province: "65546", + }, + { + name: "کوهدشت", + id: "65886", + province: "65546", + }, + + { + name: "آمل", + id: "65887", + province: "65547", + }, + { + name: "بابل", + id: "65888", + province: "65547", + }, + { + name: "بابلسر", + id: "65889", + province: "65547", + }, + { + name: "بهشهر", + id: "65890", + province: "65547", + }, + { + name: "تنکابن", + id: "65891", + province: "65547", + }, + { + name: "جویبار", + id: "65892", + province: "65547", + }, + { + name: "چالوس", + id: "65893", + province: "65547", + }, + { + name: "رامسر", + id: "65894", + province: "65547", + }, + { + name: "ساری", + id: "65895", + province: "65547", + }, + { + name: "سواد کوه", + id: "65896", + province: "65547", + }, + { + name: "سوادکوه شمالی", + id: "66870", + province: "65547", + }, + { + name: "سیمرغ", + id: "66871", + province: "65547", + }, + { + name: "عباس آباد", + id: "65897", + province: "65547", + }, + { + name: "فریدونکنار", + id: "65898", + province: "65547", + }, + { + name: "قائم شهر", + id: "65899", + province: "65547", + }, + { + name: "گلوگاه", + id: "65900", + province: "65547", + }, + { + name: "محمود آباد", + id: "65901", + province: "65547", + }, + { + name: "میاندورود", + id: "65902", + province: "65547", + }, + { + name: "نور", + id: "65904", + province: "65547", + }, + { + name: "نوشهر", + id: "65905", + province: "65547", + }, + { + name: "نکا", + id: "65903", + province: "65547", + }, + { + name: "کلاردشت", + id: "66869", + province: "65547", + }, + + { + name: "آشتیان", + id: "65906", + province: "65548", + }, + { + name: "اراک", + id: "65907", + province: "65548", + }, + { + name: "تفرش", + id: "65908", + province: "65548", + }, + { + name: "خمین", + id: "65909", + province: "65548", + }, + { + name: "خنداب", + id: "65910", + province: "65548", + }, + { + name: "دلیجان", + id: "65911", + province: "65548", + }, + { + name: "زرندیه", + id: "65912", + province: "65548", + }, + { + name: "ساوه", + id: "65913", + province: "65548", + }, + { + name: "شازند", + id: "65914", + province: "65548", + }, + { + name: "فراهان", + id: "65915", + province: "65548", + }, + { + name: "محلات", + id: "65917", + province: "65548", + }, + { + name: "کمیجان", + id: "65916", + province: "65548", + }, + + { + name: "ابوموسی", + id: "65918", + province: "65549", + }, + { + name: "بستک", + id: "65919", + province: "65549", + }, + { + name: "بشاگرد", + id: "65920", + province: "65549", + }, + { + name: "بندرعباس", + id: "65921", + province: "65549", + }, + { + name: "بندرلنگه", + id: "65922", + province: "65549", + }, + { + name: "پارسیان", + id: "65923", + province: "65549", + }, + { + name: "جاسک", + id: "65924", + province: "65549", + }, + { + name: "حاجی آباد", + id: "65925", + province: "65549", + }, + { + name: "خمیر", + id: "65926", + province: "65549", + }, + { + name: "رودان", + id: "65927", + province: "65549", + }, + { + name: "سیریک", + id: "65928", + province: "65549", + }, + { + name: "قشم", + id: "65929", + province: "65549", + }, + { + name: "میناب", + id: "65930", + province: "65549", + }, + + { + name: "اسدآباد", + id: "65931", + province: "65550", + }, + { + name: "بهار", + id: "65932", + province: "65550", + }, + { + name: "تویسرکان", + id: "65933", + province: "65550", + }, + { + name: "درگزین", + id: "66884", + province: "65550", + }, + { + name: "رزن", + id: "65934", + province: "65550", + }, + { + name: "فامنین", + id: "66853", + province: "65550", + }, + { + name: "ملایر", + id: "65937", + province: "65550", + }, + { + name: "نهاوند", + id: "65938", + province: "65550", + }, + { + name: "همدان", + id: "65939", + province: "65550", + }, + { + name: "کبودرآهنگ", + id: "65936", + province: "65550", + }, + + { + name: "ابرکوه", + id: "65940", + province: "65551", + }, + { + name: "اردکان", + id: "65941", + province: "65551", + }, + { + name: "بافق", + id: "65942", + province: "65551", + }, + { + name: "بهاباد", + id: "65943", + province: "65551", + }, + { + name: "تفت", + id: "65944", + province: "65551", + }, + { + name: "خاتم", + id: "65945", + province: "65551", + }, + { + name: "زارچ", + id: "66899", + province: "65551", + }, + { + name: "صدوق", + id: "65946", + province: "65551", + }, + { + name: "مروست", + id: "66812", + province: "65551", + }, + { + name: "مهریز", + id: "65948", + province: "65551", + }, + { + name: "میبد", + id: "65949", + province: "65551", + }, + { + name: "یزد", + id: "65950", + province: "65551", + }, + ]; +}; + +module.exports = { getAllCities }; diff --git a/lib/getAllProvinces.js b/lib/getAllProvinces.js new file mode 100644 index 0000000..e1663dc --- /dev/null +++ b/lib/getAllProvinces.js @@ -0,0 +1,134 @@ +const getAllProvinces = () => { + return [ + { + name: "همدان", + id: "65550", + address: "https://habackend.rasadyaar.ir/", + }, + { + name: "مرکزی", + id: "65548", + address: "https://mabackend.rasadyaar.ir/", + }, + { + name: "بوشهر", + id: "65527", + address: "https://bubackend.rasadyaar.ir/", + }, + { + name: "آذربایجان شرقی", + id: "65521", + }, + { + name: "آذربایجان غربی", + id: "65522", + }, + { + name: "اردبیل", + id: "65523", + }, + { + name: "اصفهان", + id: "65524", + }, + { + name: "البرز", + id: "65525", + }, + { + name: "ایلام", + id: "65526", + }, + { + name: "تهران", + id: "65528", + }, + { + name: "چهارمحال و بختیاری", + id: "65529", + }, + { + name: "خراسان جنوبی", + id: "65530", + }, + { + name: "خراسان رضوی", + id: "65531", + }, + { + name: "خراسان شمالی", + id: "65532", + }, + { + name: "خوزستان", + id: "65533", + }, + { + name: "زنجان", + id: "65534", + }, + { + name: "سمنان", + id: "65535", + }, + { + name: "سیستان و بلوچستان", + id: "65536", + }, + { + name: "فارس", + id: "65537", + }, + { + name: "قزوین", + id: "65538", + }, + { + name: "قم", + id: "65539", + }, + { + name: "کردستان", + id: "65540", + }, + { + name: "کرمان", + id: "65541", + }, + { + name: "کرمانشاه", + id: "65542", + }, + { + name: "کهکیلویه و بویراحمد", + id: "65543", + }, + { + name: "گلستان", + id: "65544", + }, + { + name: "گیلان", + id: "65545", + }, + { + name: "لرستان", + id: "65546", + }, + { + name: "مازندران", + id: "65547", + }, + + { + name: "هرمزگان", + id: "65549", + }, + { + name: "یزد", + id: "65551", + }, + ]; +}; + +module.exports = { getAllProvinces }; diff --git a/lib/taavon-send-data.js b/lib/taavon-send-data.js new file mode 100644 index 0000000..8bea8b4 --- /dev/null +++ b/lib/taavon-send-data.js @@ -0,0 +1,101 @@ +const taavonSendData = async (saleOrderId, data) => { + // let redirectUrl = ""; + let subDomain = "test"; + const provinceCode = saleOrderId.toString().substring(0, 2); + console.log({ data, provinceCode }); + + if (provinceCode === "10") { + subDomain = "test"; + // redirectUrl = `https://mid.rasadyar.net/payment?finalAmount=${finalAmount}&saleOrderId=${saleOrderId}&cardHolderPan=${cardHolderPan}&date=${data.date}&saleReferenceId=${saleReferenceId}`; + } else if (provinceCode === "15") { + subDomain = "sha"; + // redirectUrl = `https://sha.rasadyar.net/payment?finalAmount=${finalAmount}&saleOrderId=${saleOrderId}&cardHolderPan=${cardHolderPan}&date=${data.date}&saleReferenceId=${saleReferenceId}`; + } else if (provinceCode === "18") { + subDomain = "ha"; + // redirectUrl = `https://ha.rasadyar.net/payment?finalAmount=${finalAmount}&saleOrderId=${saleOrderId}&cardHolderPan=${cardHolderPan}&date=${data.date}&saleReferenceId=${saleReferenceId}`; + } else if (provinceCode === "91") { + subDomain = "ar"; + // redirectUrl = `https://ar.rasadyar.net/payment?finalAmount=${finalAmount}&saleOrderId=${saleOrderId}&cardHolderPan=${cardHolderPan}&date=${data.date}&saleReferenceId=${saleReferenceId}`; + } + + //save success payment into db + const url = `https://${subDomain}backend.rasadyar.com/wage_payment_final_step/`; + + const options = { + method: "POST", + body: JSON.stringify(data), + headers: { + "Content-Type": "application/json", + }, + }; + + await fetch(url, options); +}; + +const taavonSendDataZarinPal = async (provinceCode, data) => { + // let redirectUrl = ""; + let subDomain = "test"; + const province = provinceCode.toString().substring(0, 2); + + if (province === "10") { + subDomain = "test"; + } else if (province === "15") { + subDomain = "sha"; + } else if (province === "18") { + subDomain = "ha"; + } else if (province === "91") { + subDomain = "ar"; + } else if (province === "47") { + subDomain = "ma"; + } + + //save success payment into db + const url = `https://${subDomain}backend.rasadyar.com/wage_payment_final_step_zarin_pal/`; + + const options = { + method: "POST", + body: JSON.stringify(data), + headers: { + "Content-Type": "application/json", + }, + }; + + await fetch(url, options); +}; + +const taavonSendDataZarinPalLink = async (provinceCode, data) => { + // let redirectUrl = ""; + let subDomain = "test"; + const province = provinceCode.toString().substring(0, 2); + + if (province === "10") { + subDomain = "test"; + } else if (province === "15") { + subDomain = "sha"; + } else if (province === "18") { + subDomain = "ha"; + } else if (province === "91") { + subDomain = "ar"; + } else if (province === "47") { + subDomain = "ma"; + } + + //save success payment into db + const url = `https://${subDomain}backend.rasadyar.com/wage_payment_with_link_final_step/`; + + const options = { + method: "POST", + body: JSON.stringify(data), + headers: { + "Content-Type": "application/json", + }, + }; + + await fetch(url, options); +}; + +module.exports = { + taavonSendData, + taavonSendDataZarinPal, + taavonSendDataZarinPalLink, +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..7c6e306 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2401 @@ +{ + "name": "behpardakht", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "behpardakht", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "axios": "^1.7.2", + "body-parser": "^1.20.2", + "cors": "^2.8.5", + "crypto-js": "^4.2.0", + "express": "^4.18.2", + "jalaali-js": "^1.2.7", + "moment": "^2.29.4", + "soap": "^0.16.0" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" + }, + "node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compress": { + "version": "0.99.0", + "resolved": "https://registry.npmjs.org/compress/-/compress-0.99.0.tgz", + "integrity": "sha512-+qy9iMBFGTLUqKwYkAqRtZ5Xdl1PGKrSMYCuiirsxSQ5OgDoyP9QO6YoZ4feHzhpufGOwJ+y4qRXz2ytzZ1l0g==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/ejs": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.3.4.tgz", + "integrity": "sha512-Sz9SBmJzRer4QZAAgRDVOl0t6YVJcZUd3ACwaCs7aiIzX/eOd212DqWWRT26Zzu6pMkIKGlBo2iyVHzKnjqrgg==", + "deprecated": "Critical security bugs fixed in 2.5.5", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/express/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/first-chunk-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-0.1.0.tgz", + "integrity": "sha512-o7kVqimu9cl+XNeEGqDPI8Ms4IViicBnjIDZ5uU+7aegfDhJJiU1Da9y52Qt0TfBO3rpKA5hW2cqwp4EkCfl9w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/jalaali-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/jalaali-js/-/jalaali-js-1.2.7.tgz", + "integrity": "sha512-gE+YHWSbygYAoJa+Xg8LWxGILqFOxZSBQQw39ghel01fVFUxV7bjL0x1JFsHcLQ3uPjvn81HQMa+kxwyPWnxGQ==", + "license": "MIT" + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha512-9mDDwqVIma6OZX79ZlDACZl8sBm0TEnkf99zV3iMA4GzkIT/9hiqP5mY0HoT1iNLCrKc/R1HByV+yJfRWVJryQ==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", + "optional": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha512-TkCET/3rr9mUuRp+CpO7qfgT++aAxfDRaalQhwPFzI9BY/2rCDn6OfpZOVggi1AXfTPpfkTrg5f5WQx5G1uLxA==", + "deprecated": "Use uuid module instead", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/optional": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/optional/-/optional-0.1.4.tgz", + "integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + }, + "node_modules/selectn": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/selectn/-/selectn-0.9.6.tgz", + "integrity": "sha512-XOdvku6f41EAVbZGYTTyPp0CHWmUVYNuq81Hgy+4zEBZqFVk55rD1E3t1mqJZF0qZG40+PCJd+DQ8zUFy4v5Jg==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/soap": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/soap/-/soap-0.16.0.tgz", + "integrity": "sha512-tn9CZ1ffElgIKEdlYdRzX8OLw4Wxu/lEYXb3CG2u6hhSnWPg3nS2w+VOOhuKiFZrONgsYbIrmZXOkSCkelRxYw==", + "dependencies": { + "compress": "^0.99.0", + "debug": "~0.7.4", + "ejs": "~2.3.4", + "lodash": "3.x.x", + "node-uuid": "~1.4.3", + "optional": "^0.1.3", + "request": ">=2.9.0", + "sax": ">=0.6", + "selectn": "^0.9.6", + "strip-bom": "~0.3.1", + "xml-crypto": "~0.8.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "optionalDependencies": { + "ursa": "0.8.5 || >=0.9.4" + } + }, + "node_modules/soap/node_modules/debug": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "integrity": "sha512-EohAb3+DSHSGx8carOSKJe8G0ayV5/i609OD0J2orCkuyae7SyZSz2aoLmQF2s0Pj5gITDebwPH7GFBlqOUQ1Q==", + "engines": { + "node": "*" + } + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/strip-bom": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-0.3.1.tgz", + "integrity": "sha512-8m24eJUyKXllSCydAwFVbr4QRZrRb82T2QfwtbO9gTLWhWIOxoDEZESzCGMgperFNyLhly6SDOs+LPH6/seBfw==", + "dependencies": { + "first-chunk-stream": "^0.1.0", + "is-utf8": "^0.2.0" + }, + "bin": { + "strip-bom": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/ursa": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/ursa/-/ursa-0.9.4.tgz", + "integrity": "sha512-bkSIu0TDNFrpKki28yXMCKB9sbxJBd2aSalXcY4qyzGLR3zw/Ln1vcU1RyGN1fjuGLFDbZ9AWN4rcAiKVMGkpQ==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "bindings": "^1.2.1", + "nan": "^2.3.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "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.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/xml-crypto": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/xml-crypto/-/xml-crypto-0.8.5.tgz", + "integrity": "sha512-bmO0+G7iSf8dldIehyokvLps0ZZpGMe3gQNa+MPOrdBZbpzUG/Ass4njwWmPKCtR4pN+N921uH4M+Uskc7g/IA==", + "dependencies": { + "xmldom": "=0.1.19", + "xpath.js": ">=0.0.3" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xmldom": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz", + "integrity": "sha512-pDyxjQSFQgNHkU+yjvoF+GXVGJU7e9EnOg/KcGMDihBIKjTsOeDYaECwC/O9bsUWKY+Sd9izfE43JXC46EOHKA==", + "deprecated": "Deprecated due to CVE-2021-21366 resolved in 0.5.0", + "engines": { + "node": ">=0.1" + } + }, + "node_modules/xpath.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xpath.js/-/xpath.js-1.1.0.tgz", + "integrity": "sha512-jg+qkfS4K8E7965sqaUl8mRngXiKb3WZGfONgE18pr03FUQiuSV6G+Ej4tS55B+rIQSFEIw3phdVAQ4pPqNWfQ==", + "engines": { + "node": ">=0.4.0" + } + } + }, + "dependencies": { + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + }, + "aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" + }, + "axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "requires": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "compress": { + "version": "0.99.0", + "resolved": "https://registry.npmjs.org/compress/-/compress-0.99.0.tgz", + "integrity": "sha512-+qy9iMBFGTLUqKwYkAqRtZ5Xdl1PGKrSMYCuiirsxSQ5OgDoyP9QO6YoZ4feHzhpufGOwJ+y4qRXz2ytzZ1l0g==" + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "ejs": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.3.4.tgz", + "integrity": "sha512-Sz9SBmJzRer4QZAAgRDVOl0t6YVJcZUd3ACwaCs7aiIzX/eOd212DqWWRT26Zzu6pMkIKGlBo2iyVHzKnjqrgg==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "first-chunk-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-0.1.0.tgz", + "integrity": "sha512-o7kVqimu9cl+XNeEGqDPI8Ms4IViicBnjIDZ5uU+7aegfDhJJiU1Da9y52Qt0TfBO3rpKA5hW2cqwp4EkCfl9w==" + }, + "follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "requires": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "jalaali-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/jalaali-js/-/jalaali-js-1.2.7.tgz", + "integrity": "sha512-gE+YHWSbygYAoJa+Xg8LWxGILqFOxZSBQQw39ghel01fVFUxV7bjL0x1JFsHcLQ3uPjvn81HQMa+kxwyPWnxGQ==" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha512-9mDDwqVIma6OZX79ZlDACZl8sBm0TEnkf99zV3iMA4GzkIT/9hiqP5mY0HoT1iNLCrKc/R1HByV+yJfRWVJryQ==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", + "optional": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha512-TkCET/3rr9mUuRp+CpO7qfgT++aAxfDRaalQhwPFzI9BY/2rCDn6OfpZOVggi1AXfTPpfkTrg5f5WQx5G1uLxA==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "optional": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/optional/-/optional-0.1.4.tgz", + "integrity": "sha512-gtvrrCfkE08wKcgXaVwQVgwEQ8vel2dc5DDBn9RLQZ3YtmtkBss6A2HY6BnJH4N/4Ku97Ri/SF8sNWE2225WJw==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + }, + "selectn": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/selectn/-/selectn-0.9.6.tgz", + "integrity": "sha512-XOdvku6f41EAVbZGYTTyPp0CHWmUVYNuq81Hgy+4zEBZqFVk55rD1E3t1mqJZF0qZG40+PCJd+DQ8zUFy4v5Jg==" + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "requires": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "soap": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/soap/-/soap-0.16.0.tgz", + "integrity": "sha512-tn9CZ1ffElgIKEdlYdRzX8OLw4Wxu/lEYXb3CG2u6hhSnWPg3nS2w+VOOhuKiFZrONgsYbIrmZXOkSCkelRxYw==", + "requires": { + "compress": "^0.99.0", + "debug": "~0.7.4", + "ejs": "~2.3.4", + "lodash": "3.x.x", + "node-uuid": "~1.4.3", + "optional": "^0.1.3", + "request": ">=2.9.0", + "sax": ">=0.6", + "selectn": "^0.9.6", + "strip-bom": "~0.3.1", + "ursa": "0.8.5 || >=0.9.4", + "xml-crypto": "~0.8.0" + }, + "dependencies": { + "debug": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "integrity": "sha512-EohAb3+DSHSGx8carOSKJe8G0ayV5/i609OD0J2orCkuyae7SyZSz2aoLmQF2s0Pj5gITDebwPH7GFBlqOUQ1Q==" + } + } + }, + "sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "strip-bom": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-0.3.1.tgz", + "integrity": "sha512-8m24eJUyKXllSCydAwFVbr4QRZrRb82T2QfwtbO9gTLWhWIOxoDEZESzCGMgperFNyLhly6SDOs+LPH6/seBfw==", + "requires": { + "first-chunk-stream": "^0.1.0", + "is-utf8": "^0.2.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "ursa": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/ursa/-/ursa-0.9.4.tgz", + "integrity": "sha512-bkSIu0TDNFrpKki28yXMCKB9sbxJBd2aSalXcY4qyzGLR3zw/Ln1vcU1RyGN1fjuGLFDbZ9AWN4rcAiKVMGkpQ==", + "optional": true, + "requires": { + "bindings": "^1.2.1", + "nan": "^2.3.3" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + } + } + }, + "xml-crypto": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/xml-crypto/-/xml-crypto-0.8.5.tgz", + "integrity": "sha512-bmO0+G7iSf8dldIehyokvLps0ZZpGMe3gQNa+MPOrdBZbpzUG/Ass4njwWmPKCtR4pN+N921uH4M+Uskc7g/IA==", + "requires": { + "xmldom": "=0.1.19", + "xpath.js": ">=0.0.3" + } + }, + "xmldom": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz", + "integrity": "sha512-pDyxjQSFQgNHkU+yjvoF+GXVGJU7e9EnOg/KcGMDihBIKjTsOeDYaECwC/O9bsUWKY+Sd9izfE43JXC46EOHKA==" + }, + "xpath.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xpath.js/-/xpath.js-1.1.0.tgz", + "integrity": "sha512-jg+qkfS4K8E7965sqaUl8mRngXiKb3WZGfONgE18pr03FUQiuSV6G+Ej4tS55B+rIQSFEIw3phdVAQ4pPqNWfQ==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..8da66bd --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "behpardakht", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "node index.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "axios": "^1.7.2", + "body-parser": "^1.20.2", + "cors": "^2.8.5", + "crypto-js": "^4.2.0", + "express": "^4.18.2", + "jalaali-js": "^1.2.7", + "moment": "^2.29.4", + "soap": "^0.16.0" + } +}