commit d5aff06ada63f14126f254a5b7f2cfc7d4192122 Author: Arash Balali Date: Wed May 21 04:18:42 2025 +0330 page cw diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..52962c2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,58 @@ +# Logs +logs +*.log +npm-debug.log* + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules +jspm_packages + +# Optional npm cache directory +.npm + +# Optional REPL history +.node_repl_history + +# 0x +profile-* + +# mac files +.DS_Store + +# vim swap files +*.swp + +# webstorm +.idea + +# vscode +.vscode +*code-workspace + +# clinic +profile* +*clinic* +*flamegraph* diff --git a/README.md b/README.md new file mode 100644 index 0000000..2d5e417 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# Getting Started with [Fastify-CLI](https://www.npmjs.com/package/fastify-cli) +This project was bootstrapped with Fastify-CLI. + +## Available Scripts + +In the project directory, you can run: + +### `npm run dev` + +To start the app in dev mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +### `npm start` + +For production mode + +### `npm run test` + +Run the test cases. + +## Learn More + +To learn Fastify, check out the [Fastify documentation](https://fastify.dev/docs/latest/). diff --git a/app.js b/app.js new file mode 100644 index 0000000..d666bdc --- /dev/null +++ b/app.js @@ -0,0 +1,30 @@ +'use strict' + +const path = require('node:path') +const AutoLoad = require('@fastify/autoload') + +// Pass --options via CLI arguments in command to enable these options. +const options = {} + +module.exports = async function (fastify, opts) { + // Place here your custom code! + + // Do not touch the following lines + + // This loads all plugins defined in plugins + // those should be support plugins that are reused + // through your application + fastify.register(AutoLoad, { + dir: path.join(__dirname, 'plugins'), + options: Object.assign({}, opts) + }) + + // This loads all plugins defined in routes + // define your routes in one of these + fastify.register(AutoLoad, { + dir: path.join(__dirname, 'routes'), + options: Object.assign({}, opts) + }) +} + +module.exports.options = options diff --git a/json/akharin/2025-4-3-akharin-cars.json b/json/akharin/2025-4-3-akharin-cars.json new file mode 100644 index 0000000..513aa9c --- /dev/null +++ b/json/akharin/2025-4-3-akharin-cars.json @@ -0,0 +1,967 @@ +[ + { + "carName": "آریسان ۲", + "marketPrice": "581,۰۰۰,۰۰۰", + "newCarPrice": "553,۰۰۰,۰۰۰" + }, + { + "carName": "پژو ۲۰۷ اتوماتیک", + "marketPrice": "996,۰۰۰,۰۰۰", + "newCarPrice": "779,۰۰۰,۰۰۰" + }, + { + "carName": "پژو ۲۰۷ اتوماتیک - پانوراما", + "marketPrice": "1,۰۶۶,۰۰۰,۰۰۰", + "newCarPrice": "805,۷۰۲,۰۰۰" + }, + { + "carName": "پژو ۲۰۷ دنده ای - پانوراما", + "marketPrice": "897,۰۰۰,۰۰۰", + "newCarPrice": "684,۰۹۲,۰۰۰" + }, + { + "carName": "پژو ۲۰۷ دنده ای - فرمان هیدرولیک", + "marketPrice": "804,۰۰۰,۰۰۰", + "newCarPrice": "625,۸۲۲,۰۰۰" + }, + { + "carName": "پژو ۲۰۷ موتور TU3", + "marketPrice": "733,۰۰۰,۰۰۰", + "newCarPrice": "598,۵۶۰,۰۰۰" + }, + { + "carName": "پژو پارس", + "marketPrice": null, + "newCarPrice": "445,۷۴۲,۳۰۰" + }, + { + "carName": "پژو پارس TU5", + "marketPrice": null, + "newCarPrice": "480,۵۰۰,۰۰۰" + }, + { + "carName": "پژو پارس سفارسی ELX", + "marketPrice": null, + "newCarPrice": "524,۱۵۸,۰۰۰" + }, + { + "carName": "تارا اتوماتیک - V4", + "marketPrice": "1,۱۲۷,۰۰۰,۰۰۰", + "newCarPrice": "912,۱۶۵,۰۰۰" + }, + { + "carName": "تارا دنده ای - V1 پلاس", + "marketPrice": "909,۰۰۰,۰۰۰", + "newCarPrice": "784,۷۴۲,۰۰۰" + }, + { + "carName": "دنا پلاس اتوماتیک توربو - آپشنال", + "marketPrice": "1,۱۷۰,۰۰۰,۰۰۰", + "newCarPrice": "955,۹۷۲,۰۰۰" + }, + { + "carName": "دنا پلاس جوانان", + "marketPrice": null, + "newCarPrice": "591,۸۰۰,۰۰۰" + }, + { + "carName": "دنا پلاس دنده ای - ۶ سرعته", + "marketPrice": "954,۰۰۰,۰۰۰", + "newCarPrice": "758,۶۴۲,۰۰۰" + }, + { + "carName": "رانا پلاس", + "marketPrice": null, + "newCarPrice": "607,۷۲۲,۷۰۰" + }, + { + "carName": "ری را ", + "marketPrice": "1,۶۰۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۱۴۲,۴۷۷,۰۰۰" + }, + { + "carName": "سورن پلاس ", + "marketPrice": "933,۰۰۰,۰۰۰", + "newCarPrice": "644,۳۷۰,۰۰۰" + }, + { + "carName": "سورن پلاس - XU7P", + "marketPrice": "705,۰۰۰,۰۰۰", + "newCarPrice": "626,۵۲۰,۰۰۰" + }, + { + "carName": "سورن پلاس دوگانه سوز", + "marketPrice": "826,۰۰۰,۰۰۰", + "newCarPrice": "661,۵۰۹,۰۰۰" + }, + { + "carName": "فوتون تونلند G7", + "marketPrice": "2,۸۷۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۵۲۵,۰۰۰,۰۰۰" + }, + { + "carName": "لونا برقی", + "marketPrice": "1,۱۴۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۱۷۸,۷۷۵,۰۰۰" + }, + { + "carName": "هایما 7X", + "marketPrice": "2,۰۲۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۵۶۳,۰۰۰,۰۰۰" + }, + { + "carName": "هایما ۸S", + "marketPrice": "2,۰۸۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۳۹۸,۱۹۹,۰۰۰" + }, + { + "carName": "هایما S5", + "marketPrice": "1,۶۷۵,۰۰۰,۰۰۰", + "newCarPrice": "1,۱۸۳,۰۰۰,۰۰۰" + }, + { + "carName": "هایما S7", + "marketPrice": null, + "newCarPrice": "1,۱۹۰,۶۶۴,۰۰۰" + }, + { + "carName": "هایما S7 پرو", + "marketPrice": "1,۸۴۵,۰۰۰,۰۰۰", + "newCarPrice": "1,۴۱۱,۰۰۰,۰۰۰" + }, + { + "carName": "اطلس G", + "marketPrice": "625,۰۰۰,۰۰۰", + "newCarPrice": "502,۲۱۱,۰۰۰" + }, + { + "carName": "اطلس پلاس اتوماتیک", + "marketPrice": null, + "newCarPrice": "595,۰۰۰,۰۰۰" + }, + { + "carName": "سایپا ۱۵۱", + "marketPrice": "410,۰۰۰,۰۰۰", + "newCarPrice": "408,۹۳۵,۰۰۰" + }, + { + "carName": "سایپا ۱۵۱ - لاینر", + "marketPrice": "414,۰۰۰,۰۰۰", + "newCarPrice": "414,۴۳۲,۰۰۰" + }, + { + "carName": "ساینا GX", + "marketPrice": null, + "newCarPrice": "413,۴۷۳,۰۰۰" + }, + { + "carName": "ساینا S", + "marketPrice": "500,۰۰۰,۰۰۰", + "newCarPrice": "414,۴۳۹,۰۰۰" + }, + { + "carName": "ساینا S اتوماتیک", + "marketPrice": "640,۰۰۰,۰۰۰", + "newCarPrice": "494,۳۳۷,۰۰۰" + }, + { + "carName": "ساینا S دوگانه سوز", + "marketPrice": "590,۰۰۰,۰۰۰", + "newCarPrice": "450,۳۸۸,۰۰۰" + }, + { + "carName": "سهند G", + "marketPrice": "682,۰۰۰,۰۰۰", + "newCarPrice": "524,۳۵۵,۰۰۰" + }, + { + "carName": "سهند S", + "marketPrice": "585,۰۰۰,۰۰۰", + "newCarPrice": "467,۲۰۲,۰۰۰" + }, + { + "carName": "شاهین اتوماتیک", + "marketPrice": "934,۰۰۰,۰۰۰", + "newCarPrice": "739,۶۵۵,۰۰۰" + }, + { + "carName": "شاهین اتوماتیک پلاس", + "marketPrice": "1,۲۲۰,۰۰۰,۰۰۰", + "newCarPrice": "862,۲۹۰,۰۰۰" + }, + { + "carName": "شاهین ESP - G", + "marketPrice": "887,۰۰۰,۰۰۰", + "newCarPrice": "593,۸۴۲,۰۰۰" + }, + { + "carName": "شاهین GL", + "marketPrice": "811,۰۰۰,۰۰۰", + "newCarPrice": "565,۰۰۰,۰۰۰" + }, + { + "carName": "کوییک اتوماتیک", + "marketPrice": "683,۰۰۰,۰۰۰", + "newCarPrice": "478,۱۱۵,۰۰۰" + }, + { + "carName": "کوییک GXL", + "marketPrice": "489,۰۰۰,۰۰۰", + "newCarPrice": "439,۱۸۸,۰۰۰" + }, + { + "carName": "کوییک GXR-L", + "marketPrice": "512,۰۰۰,۰۰۰", + "newCarPrice": "450,۶۵۵,۰۰۰" + }, + { + "carName": "کوییک R تیپ S", + "marketPrice": null, + "newCarPrice": "412,۸۰۰,۰۰۰" + }, + { + "carName": "کوییک S", + "marketPrice": "480,۰۰۰,۰۰۰", + "newCarPrice": "405,۷۶۵,۰۰۰" + }, + { + "carName": "وانت زامیاد", + "marketPrice": "750,۰۰۰,۰۰۰", + "newCarPrice": "591,۰۰۰,۰۰۰" + }, + { + "carName": "وانت زامیاد گازسوز", + "marketPrice": "785,۰۰۰,۰۰۰", + "newCarPrice": "647,۰۰۰,۰۰۰" + }, + { + "carName": "اکستریم LX", + "marketPrice": "2,۹۳۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۶۹۵,۰۰۰,۰۰۰" + }, + { + "carName": "اکستریم TXL", + "marketPrice": "4,۰۰۰,۰۰۰,۰۰۰", + "newCarPrice": "3,۶۴۰,۰۰۰,۰۰۰" + }, + { + "carName": "اکستریم VX", + "marketPrice": "5,۰۰۰,۰۰۰,۰۰۰", + "newCarPrice": "4,۵۰۰,۰۰۰,۰۰۰" + }, + { + "carName": "ام وی ام آریزو ۵ اسپرت (FL)", + "marketPrice": "1,۶۲۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۴۳۷,۲۰۰,۰۰۰" + }, + { + "carName": "ام وی ام X22 پرو دنده ای", + "marketPrice": "1,۰۵۷,۰۰۰,۰۰۰", + "newCarPrice": "1,۰۷۰,۸۰۰,۰۰۰" + }, + { + "carName": "ام وی ام X33 کراس اتوماتیک", + "marketPrice": "1,۲۹۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۲۱۷,۱۰۰,۰۰۰" + }, + { + "carName": "ام وی ام X33 کراس دنده ای", + "marketPrice": "1,۱۳۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۰۶۲,۳۰۰,۰۰۰" + }, + { + "carName": "ام وی ام X55 پرو", + "marketPrice": "1,۷۰۵,۰۰۰,۰۰۰", + "newCarPrice": "1,۶۸۷,۰۰۰,۰۰۰" + }, + { + "carName": "فونیکس آریزو ۶ GT", + "marketPrice": "2,۲۲۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۸۷۱,۶۰۰,۰۰۰" + }, + { + "carName": "فونیکس آریزو ۶ پرو", + "marketPrice": "1,۹۵۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۶۲۸,۹۰۰,۰۰۰" + }, + { + "carName": "فونیکس آریزو ۸", + "marketPrice": "2,۹۸۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۵۳۰,۰۰۰,۰۰۰" + }, + { + "carName": "فونیکس FX برقی", + "marketPrice": null, + "newCarPrice": "2,۳۱۴,۰۰۰,۰۰۰" + }, + { + "carName": "فونیکس FX پرمیوم", + "marketPrice": "2,۴۹۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۴۸۳,۱۰۰,۰۰۰" + }, + { + "carName": "فونیکس FX پرمیوم - دو دیفرانسیل", + "marketPrice": "2,۵۹۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۴۸۹,۰۰۰,۰۰۰" + }, + { + "carName": "فونیکس تیگو ۷ پرو e پلاس", + "marketPrice": "2,۶۸۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۳۶۴,۰۰۰,۰۰۰" + }, + { + "carName": "فونیکس تیگو ۷ پرو پرمیوم", + "marketPrice": null, + "newCarPrice": "1,۷۳۰,۳۰۰,۰۰۰" + }, + { + "carName": "فونیکس تیگو ۷ پرومکس", + "marketPrice": "2,۵۵۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۳۰۴,۰۰۰,۰۰۰" + }, + { + "carName": "فونیکس تیگو ۷ پرومکس - دو دیفرانسیل ", + "marketPrice": "2,۶۹۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۵۷۲,۲۰۰,۰۰۰" + }, + { + "carName": "فونیکس تیگو ۸ پرو e پلاس", + "marketPrice": "3,۳۴۵,۰۰۰,۰۰۰", + "newCarPrice": "3,۳۰۲,۷۰۰,۰۰۰" + }, + { + "carName": "فونیکس تیگو ۸ پرو مکس IE", + "marketPrice": "3,۶۲۰,۰۰۰,۰۰۰", + "newCarPrice": "3,۳۷۷,۵۰۰,۰۰۰" + }, + { + "carName": "جک J4", + "marketPrice": "970,۰۰۰,۰۰۰", + "newCarPrice": "932,۰۰۰,۰۰۰" + }, + { + "carName": "جک S3", + "marketPrice": null, + "newCarPrice": "1,۰۸۰,۰۰۰,۰۰۰" + }, + { + "carName": "کی ام سی A5", + "marketPrice": "1,۹۰۵,۰۰۰,۰۰۰", + "newCarPrice": "1,۶۵۸,۰۰۰,۰۰۰" + }, + { + "carName": "کی ام سی ایگل", + "marketPrice": null, + "newCarPrice": "992,۰۰۰,۰۰۰" + }, + { + "carName": "کی ام سی EJ7", + "marketPrice": "1,۳۲۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۴۵۰,۰۰۰,۰۰۰" + }, + { + "carName": "کی ام سی EJ7 پلاس", + "marketPrice": null, + "newCarPrice": "1,۹۵۰,۰۰۰,۰۰۰" + }, + { + "carName": "کی ام سی J7", + "marketPrice": "1,۹۷۵,۰۰۰,۰۰۰", + "newCarPrice": "1,۶۶۲,۰۰۰,۰۰۰" + }, + { + "carName": "کی ام سی T8", + "marketPrice": "1,۹۸۵,۰۰۰,۰۰۰", + "newCarPrice": "2,۱۱۰,۰۰۰,۰۰۰" + }, + { + "carName": "کی ام سی T9", + "marketPrice": "2,۹۱۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۵۲۵,۰۰۰,۰۰۰" + }, + { + "carName": "کی ام سی X5", + "marketPrice": "1,۹۵۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۷۴۰,۰۰۰,۰۰۰" + }, + { + "carName": "پیکاپ G9", + "marketPrice": "2,۹۳۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۵۹۸,۳۰۰,۰۰۰" + }, + { + "carName": "دیگنیتی پرایم - سفید داخل مارون", + "marketPrice": "1,۹۱۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۶۱۵,۰۹۳,۰۰۰" + }, + { + "carName": "دیگنیتی پرایم - سفید داخل مشکی", + "marketPrice": "1,۸۸۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۶۱۵,۰۹۳,۰۰۰" + }, + { + "carName": "دیگنیتی پرایم - مشکی داخل مارون", + "marketPrice": "1,۹۵۵,۰۰۰,۰۰۰", + "newCarPrice": "1,۶۱۵,۰۹۳,۰۰۰" + }, + { + "carName": "دیگنیتی پرایم - مشکی داخل مشکی", + "marketPrice": "1,۹۳۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۶۱۵,۰۹۳,۰۰۰" + }, + { + "carName": "دیگنیتی پرستیژ - سفید داخل مارون", + "marketPrice": null, + "newCarPrice": "2,۰۴۰,۰۰۰,۰۰۰" + }, + { + "carName": "دیگنیتی پرستیژ - سفید داخل مشکی", + "marketPrice": null, + "newCarPrice": "2,۰۴۰,۰۰۰,۰۰۰" + }, + { + "carName": "دیگنیتی پرستیژ - مشکی داخل مارون", + "marketPrice": null, + "newCarPrice": "2,۰۴۰,۰۰۰,۰۰۰" + }, + { + "carName": "دیگنیتی پرستیژ - مشکی داخل مشکی", + "marketPrice": null, + "newCarPrice": "2,۰۴۰,۰۰۰,۰۰۰" + }, + { + "carName": "ریسپکت - تیپ ۲", + "marketPrice": "1,۵۸۵,۰۰۰,۰۰۰", + "newCarPrice": "1,۳۷۹,۳۰۰,۰۰۰" + }, + { + "carName": "فیدلیتی الیت ۵ نفره", + "marketPrice": "2,۱۳۵,۰۰۰,۰۰۰", + "newCarPrice": "1,۷۲۴,۷۳۱,۰۰۰" + }, + { + "carName": "فیدلیتی الیت ۷ نفره", + "marketPrice": "2,۱۷۵,۰۰۰,۰۰۰", + "newCarPrice": "1,۷۵۷,۴۱۰,۰۰۰" + }, + { + "carName": "فیدلیتی پرایم ۵ نفره - سفید", + "marketPrice": "2,۰۹۳,۰۰۰,۰۰۰", + "newCarPrice": "1,۵۱۵,۲۰۰,۰۰۰" + }, + { + "carName": "فیدلیتی پرایم ۵ نفره - مشکی", + "marketPrice": "2,۰۹۷,۰۰۰,۰۰۰", + "newCarPrice": "1,۵۱۵,۲۰۰,۰۰۰" + }, + { + "carName": "فیدلیتی پرایم ۷ نفره - سفید", + "marketPrice": "2,۱۱۷,۰۰۰,۰۰۰", + "newCarPrice": "1,۵۳۳,۱۰۰,۰۰۰" + }, + { + "carName": "فیدلیتی پرایم ۷ نفره - مشکی", + "marketPrice": "2,۱۲۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۵۳۳,۱۰۰,۰۰۰" + }, + { + "carName": "فیدلیتی پرستیژ ۵ نفره ", + "marketPrice": "3,۰۲۵,۰۰۰,۰۰۰", + "newCarPrice": "1,۸۹۰,۴۱۸,۰۰۰" + }, + { + "carName": "فیدلیتی پرستیژ ۷ نفره ", + "marketPrice": "3,۰۸۵,۰۰۰,۰۰۰", + "newCarPrice": "1,۹۲۹,۱۲۳,۰۰۰" + }, + { + "carName": "ون اینرودز", + "marketPrice": "870,۰۰۰,۰۰۰", + "newCarPrice": "957,۴۶۰,۰۰۰" + }, + { + "carName": "بک X3 پرو", + "marketPrice": "1,۳۳۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۰۵۰,۰۰۰,۰۰۰" + }, + { + "carName": "تیارا پرایم - بیجینگ X7", + "marketPrice": null, + "newCarPrice": "2,۱۰۴,۰۰۰,۰۰۰" + }, + { + "carName": "لوکانو L7", + "marketPrice": "2,۹۵۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۹۵۰,۰۰۰,۰۰۰" + }, + { + "carName": "مکث تیارا", + "marketPrice": null, + "newCarPrice": "1,۳۴۱,۵۰۰,۰۰۰" + }, + { + "carName": "مکث کلوت اتوماتیک", + "marketPrice": "1,۸۶۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۲۸۹,۰۰۰,۰۰۰" + }, + { + "carName": "سوبا M4", + "marketPrice": null, + "newCarPrice": "3,۳۰۰,۰۰۰,۰۰۰" + }, + { + "carName": "فردا ۵۱۱", + "marketPrice": "1,۰۹۵,۰۰۰,۰۰۰", + "newCarPrice": "1,۱۰۰,۰۰۰,۰۰۰" + }, + { + "carName": "فردا SX5", + "marketPrice": "1,۴۹۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۲۹۰,۰۰۰,۰۰۰" + }, + { + "carName": "فردا T5", + "marketPrice": "1,۷۸۵,۰۰۰,۰۰۰", + "newCarPrice": "1,۷۹۰,۰۰۰,۰۰۰" + }, + { + "carName": "لاماری ایما - سفید", + "marketPrice": "2,۱۶۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۷۰۱,۴۰۰,۰۰۰" + }, + { + "carName": "لاماری ایما - مشکی", + "marketPrice": "2,۱۷۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۷۰۱,۴۰۰,۰۰۰" + }, + { + "carName": "پیکاپ موسو گرند خان - تیپ SAHARA", + "marketPrice": null, + "newCarPrice": "2,۶۹۰,۰۰۰,۰۰۰" + }, + { + "carName": "پیکاپ موسو گرند خان - تیپ SIGNATURE", + "marketPrice": null, + "newCarPrice": "3,۱۹۰,۰۰۰,۰۰۰" + }, + { + "carName": "دایون Y7", + "marketPrice": null, + "newCarPrice": "1,۹۹۸,۰۰۰,۰۰۰" + }, + { + "carName": "تیگارد X35", + "marketPrice": "1,۶۱۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۳۵۰,۰۰۰,۰۰۰" + }, + { + "carName": "ترا", + "marketPrice": "4,۶۷۰,۰۰۰,۰۰۰", + "newCarPrice": "3,۲۵۰,۰۰۰,۰۰۰" + }, + { + "carName": "مکسوس استار H", + "marketPrice": null, + "newCarPrice": "2,۹۸۵,۰۰۰,۰۰۰" + }, + { + "carName": "کرولا کراس هیبرید", + "marketPrice": "4,۳۶۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۳۴۵,۰۰۰,۰۰۰" + }, + { + "carName": "BZ3 - الیت پرو ", + "marketPrice": null, + "newCarPrice": "2,۵۴۳,۰۰۰,۰۰۰" + }, + { + "carName": "BZ4X - پرو", + "marketPrice": "5,۴۹۰,۰۰۰,۰۰۰", + "newCarPrice": "3,۴۲۰,۶۰۰,۰۰۰" + }, + { + "carName": "BZ4X - مکس", + "marketPrice": null, + "newCarPrice": "4,۲۷۷,۹۸۸,۰۰۰" + }, + { + "carName": "کرولا ۱.۲ بنزینی", + "marketPrice": "2,۷۱۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۴۹۳,۰۰۰,۰۰۰" + }, + { + "carName": "کرولا ۱.۸ هیبرید", + "marketPrice": null, + "newCarPrice": "2,۳۰۵,۰۰۰,۰۰۰" + }, + { + "carName": "کرولا ۱.۸ هیبرید - تیپ الیت", + "marketPrice": null, + "newCarPrice": "2,۰۱۳,۴۹۹,۰۰۰" + }, + { + "carName": "لوین ۱.۲ بنزینی", + "marketPrice": "2,۶۷۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۵۷۵,۰۰۰,۰۰۰" + }, + { + "carName": "لوین ۱.۸ هیبرید", + "marketPrice": "3,۰۴۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۳۷۵,۰۰۰,۰۰۰" + }, + { + "carName": "اسپورتیج", + "marketPrice": "5,۷۵۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۸۳۴,۰۰۰,۰۰۰" + }, + { + "carName": "K5", + "marketPrice": null, + "newCarPrice": "2,۵۹۸,۰۰۰,۰۰۰" + }, + { + "carName": "K5 توربو", + "marketPrice": "5,۵۵۰,۰۰۰,۰۰۰", + "newCarPrice": "3,۰۵۸,۰۰۰,۰۰۰" + }, + { + "carName": "سراتو", + "marketPrice": "3,۷۶۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۷۵۰,۰۰۰,۰۰۰" + }, + { + "carName": "سلتوس", + "marketPrice": null, + "newCarPrice": "2,۶۲۰,۰۰۰,۰۰۰" + }, + { + "carName": "سلتوس توربو", + "marketPrice": "3,۸۳۵,۰۰۰,۰۰۰", + "newCarPrice": "2,۶۲۵,۰۰۰,۰۰۰" + }, + { + "carName": "سونت", + "marketPrice": "2,۸۵۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۳۰۰,۰۰۰,۰۰۰" + }, + { + "carName": "سانی", + "marketPrice": null, + "newCarPrice": "1,۳۵۰,۰۰۰,۰۰۰" + }, + { + "carName": "سیلفی", + "marketPrice": null, + "newCarPrice": "2,۴۴۰,۰۰۰,۰۰۰" + }, + { + "carName": "سیلفی مکس ادیشن", + "marketPrice": "3,۷۴۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۵۵۰,۰۰۰,۰۰۰" + }, + { + "carName": "قشقایی", + "marketPrice": "3,۴۹۰,۰۰۰,۰۰۰", + "newCarPrice": "3,۱۰۸,۰۰۰,۰۰۰" + }, + { + "carName": "کیکس", + "marketPrice": "2,۹۶۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۴۷۵,۰۰۰,۰۰۰" + }, + { + "carName": "اکسنت", + "marketPrice": "2,۱۹۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۸۶۵,۰۰۰,۰۰۰" + }, + { + "carName": "النترا", + "marketPrice": "2,۶۵۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۲۰۰,۰۰۰,۰۰۰" + }, + { + "carName": "توسان", + "marketPrice": "4,۳۰۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۴۵۰,۰۰۰,۰۰۰" + }, + { + "carName": "کرتا", + "marketPrice": "2,۸۹۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۲۲۰,۰۰۰,۰۰۰" + }, + { + "carName": "کونا", + "marketPrice": "4,۱۰۰,۰۰۰,۰۰۰", + "newCarPrice": "4,۵۹۲,۰۰۰,۰۰۰" + }, + { + "carName": "ID4", + "marketPrice": "3,۷۰۰,۰۰۰,۰۰۰", + "newCarPrice": "3,۲۴۰,۰۰۰,۰۰۰" + }, + { + "carName": "تیراک ", + "marketPrice": "4,۴۱۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۹۴۵,۰۰۰,۰۰۰" + }, + { + "carName": "Q5 ای ترون", + "marketPrice": "5,۵۳۰,۰۰۰,۰۰۰", + "newCarPrice": "5,۶۵۷,۰۰۰,۰۰۰" + }, + { + "carName": "بالنو", + "marketPrice": "1,۹۹۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۷۴۰,۰۰۰,۰۰۰" + }, + { + "carName": "جیمنی ۵ در", + "marketPrice": "2,۹۶۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۸۷۰,۰۰۰,۰۰۰" + }, + { + "carName": "سیاز", + "marketPrice": "1,۹۸۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۷۲۰,۰۰۰,۰۰۰" + }, + { + "carName": "فرانکس", + "marketPrice": "2,۷۷۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۰۰۰,۰۰۰,۰۰۰" + }, + { + "carName": "ویتارا تک دیفرانسیل", + "marketPrice": "3,۶۱۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۳۴۰,۰۰۰,۰۰۰" + }, + { + "carName": "امپو", + "marketPrice": "2,۹۰۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۱۸۳,۵۰۰,۰۰۰" + }, + { + "carName": "امکو", + "marketPrice": "3,۲۰۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۳۸۵,۶۰۰,۰۰۰" + }, + { + "carName": "GS3", + "marketPrice": "2,۷۲۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۹۹۲,۷۰۰,۰۰۰" + }, + { + "carName": "CR-V", + "marketPrice": null, + "newCarPrice": "3,۵۸۰,۰۰۰,۰۰۰" + }, + { + "carName": "ENS1", + "marketPrice": "2,۹۵۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۴۸۹,۰۰۰,۰۰۰" + }, + { + "carName": "HR-V", + "marketPrice": "5,۹۰۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۶۹۷,۰۰۰,۰۰۰" + }, + { + "carName": "ZR-V", + "marketPrice": null, + "newCarPrice": "2,۹۸۸,۰۰۰,۰۰۰" + }, + { + "carName": "سیتی", + "marketPrice": "2,۶۸۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۳۲۷,۰۰۰,۰۰۰" + }, + { + "carName": "وزل", + "marketPrice": "3,۲۷۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۴۷۵,۰۰۰,۰۰۰" + }, + { + "carName": "NAT", + "marketPrice": null, + "newCarPrice": "1,۲۱۲,۰۷۶,۰۰۰" + }, + { + "carName": "T77", + "marketPrice": "1,۸۵۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۱۵۲,۹۳۹,۰۰۰" + }, + { + "carName": "EQM5", + "marketPrice": "1,۶۳۵,۰۰۰,۰۰۰", + "newCarPrice": "2,۱۳۷,۲۲۳,۰۰۰" + }, + { + "carName": "H5", + "marketPrice": "3,۴۷۰,۰۰۰,۰۰۰", + "newCarPrice": "3,۱۴۸,۵۰۰,۰۰۰" + }, + { + "carName": "VS5", + "marketPrice": "2,۳۰۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۲۴۴,۰۰۰,۰۰۰" + }, + { + "carName": "VS7", + "marketPrice": "2,۴۴۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۷۲۰,۰۰۰,۰۰۰" + }, + { + "carName": "آزکارا", + "marketPrice": "2,۲۰۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۳۵۰,۰۰۰,۰۰۰" + }, + { + "carName": "CS35 پلاس", + "marketPrice": "1,۸۸۵,۰۰۰,۰۰۰", + "newCarPrice": "1,۴۱۱,۸۰۰,۰۰۰" + }, + { + "carName": "CS55 پلاس", + "marketPrice": "2,۶۰۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۷۵۸,۱۲۲,۰۰۰" + }, + { + "carName": "DL5", + "marketPrice": null, + "newCarPrice": "1,۱۴۴,۵۴۲,۰۰۰" + }, + { + "carName": "ایما هیبرید ", + "marketPrice": "2,۵۸۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۹۹۸,۰۰۰,۰۰۰" + }, + { + "carName": "D60 Plus", + "marketPrice": "1,۹۰۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۹۸۵,۷۰۰,۰۰۰" + }, + { + "carName": "STAR", + "marketPrice": "2,۷۰۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۵۸۷,۹۰۰,۰۰۰" + }, + { + "carName": "V-Online", + "marketPrice": "2,۱۰۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۲۴۵,۳۰۰,۰۰۰" + }, + { + "carName": "V-Online-DDI", + "marketPrice": null, + "newCarPrice": "2,۳۰۰,۰۰۰,۰۰۰" + }, + { + "carName": "۴", + "marketPrice": null, + "newCarPrice": "2,۴۹۰,۰۰۰,۰۰۰" + }, + { + "carName": "۵", + "marketPrice": null, + "newCarPrice": "2,۲۹۰,۰۰۰,۰۰۰" + }, + { + "carName": "GT", + "marketPrice": null, + "newCarPrice": "2,۵۹۰,۰۰۰,۰۰۰" + }, + { + "carName": "سوپرب", + "marketPrice": "3,۵۸۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۹۹۹,۰۰۰,۰۰۰" + }, + { + "carName": "H6 HEV", + "marketPrice": "2,۶۴۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۵۰۲,۴۷۵,۰۰۰" + }, + { + "carName": "شاین مکس بنزینی", + "marketPrice": "1,۹۲۰,۰۰۰,۰۰۰", + "newCarPrice": "1,۷۹۱,۹۷۱,۰۰۰" + }, + { + "carName": "شاین مکس هیبریدی", + "marketPrice": "1,۹۹۵,۰۰۰,۰۰۰", + "newCarPrice": "1,۸۲۴,۵۲۶,۰۰۰" + }, + { + "carName": "کوراندو تک دیفرانسیل ", + "marketPrice": null, + "newCarPrice": "2,۶۵۰,۰۰۰,۰۰۰" + }, + { + "carName": "کوراندو دو دیفرانسیل ", + "marketPrice": null, + "newCarPrice": "2,۷۸۰,۰۰۰,۰۰۰" + }, + { + "carName": "سانگ پلاس", + "marketPrice": "3,۸۲۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۶۰۰,۰۰۰,۰۰۰" + }, + { + "carName": "تانک ۳۰۰", + "marketPrice": "5,۳۴۰,۰۰۰,۰۰۰", + "newCarPrice": "3,۵۲۵,۰۰۰,۰۰۰" + }, + { + "carName": "بیجینگ X55 - تک رنگ", + "marketPrice": null, + "newCarPrice": "2,۰۵۰,۰۰۰,۰۰۰" + }, + { + "carName": "بیجینگ X55 - دو رنگ", + "marketPrice": null, + "newCarPrice": "2,۰۶۵,۰۰۰,۰۰۰" + }, + { + "carName": "اوتلندر - H - LINE", + "marketPrice": "6,۲۰۰,۰۰۰,۰۰۰", + "newCarPrice": "3,۲۲۸,۰۰۰,۰۰۰" + }, + { + "carName": "اوتلندر - L - LINE", + "marketPrice": "5,۰۴۰,۰۰۰,۰۰۰", + "newCarPrice": "بدون" + }, + { + "carName": "اوتلندر - M - LINE", + "marketPrice": "5,۵۶۰,۰۰۰,۰۰۰", + "newCarPrice": "3,۲۱۲,۰۰۰,۰۰۰" + }, + { + "carName": "۳", + "marketPrice": "4,۶۰۰,۰۰۰,۰۰۰", + "newCarPrice": "2,۹۹۵,۸۰۰,۰۰۰" + }, + { + "carName": "CX30", + "marketPrice": "5,۱۹۰,۰۰۰,۰۰۰", + "newCarPrice": "3,۲۶۷,۵۰۰,۰۰۰" + }, + { + "carName": "ERX5", + "marketPrice": null, + "newCarPrice": "1,۷۸۷,۰۰۰,۰۰۰" + }, + { + "carName": "آرکانا", + "marketPrice": null, + "newCarPrice": "3,۴۹۰,۰۰۰,۰۰۰" + }, + { + "carName": "۱۱", + "marketPrice": null, + "newCarPrice": "4,۱۹۸,۰۰۰,۰۰۰" + }, + { + "carName": "T03", + "marketPrice": null, + "newCarPrice": "1,۵۳۰,۰۰۰,۰۰۰" + } +] \ No newline at end of file diff --git a/json/hamrah/2025-4-3-hamrah-cars.json b/json/hamrah/2025-4-3-hamrah-cars.json new file mode 100644 index 0000000..5344de0 --- /dev/null +++ b/json/hamrah/2025-4-3-hamrah-cars.json @@ -0,0 +1,1447 @@ +[ + { + "carName": "Q5 E-tron", + "typeAndYear": "تیپ 40- فول-2024", + "marketPrice": "5,950,000,000" + }, + { + "carName": "Q5 E-tron", + "typeAndYear": "تیپ 40- نیمه‌ فول-2024", + "marketPrice": "5,550,000,000" + }, + { + "carName": "Q5 E-tron", + "typeAndYear": "تیپ 40- نیمه‌ فول-2023", + "marketPrice": "5,400,000,000" + }, + { + "carName": "Q5 E-tron", + "typeAndYear": "تیپ 40- فول-2023", + "marketPrice": "5,700,000,000" + }, + { + "carName": "دو کابین آسنا", + "typeAndYear": "دنده ای-1403", + "marketPrice": "1,750,000,000" + }, + { + "carName": "ET5", + "typeAndYear": "برقی-2024", + "marketPrice": "2,300,000,000" + }, + { + "carName": "سوپرب", + "typeAndYear": "توربو 1400-2024", + "marketPrice": "3,600,000,000" + }, + { + "carName": "LX", + "typeAndYear": "توربو 1600-1403", + "marketPrice": "2,850,000,000" + }, + { + "carName": "TXL", + "typeAndYear": "توربو 2000-1403", + "marketPrice": "3,880,000,000" + }, + { + "carName": "VX", + "typeAndYear": "توربو 2000-1403", + "marketPrice": "4,980,000,000" + }, + { + "carName": "ام جی 5", + "typeAndYear": "موتور 1500-2025", + "marketPrice": "2,200,000,000" + }, + { + "carName": "ام جی 5", + "typeAndYear": "موتور 1500-2024", + "marketPrice": "2,100,000,000" + }, + { + "carName": "ام جی GT", + "typeAndYear": "توربو 1500-2024", + "marketPrice": "2,900,000,000" + }, + { + "carName": "پژو 2008", + "typeAndYear": "اتوماتیک-1399", + "marketPrice": "2,600,000,000" + }, + { + "carName": "پژو 206", + "typeAndYear": "تیپ 3-1402", + "marketPrice": "720,000,000" + }, + { + "carName": "پژو 207", + "typeAndYear": "دنده ای نیمه فول - ESP-1404", + "marketPrice": "800,000,000" + }, + { + "carName": "پژو 207", + "typeAndYear": "اتوماتیک سقف شیشه ای - ESP ارتقا یافته-1404", + "marketPrice": "1,050,000,000" + }, + { + "carName": "پژو 207", + "typeAndYear": "اتوماتیک - ESP-1404", + "marketPrice": "1,000,000,000" + }, + { + "carName": "پژو 207", + "typeAndYear": "دنده ای با موتور ESP - TU3-1404", + "marketPrice": "730,000,000" + }, + { + "carName": "پژو 207", + "typeAndYear": "دنده ای سقف شیشه ای - ESP ارتقا یافته-1404", + "marketPrice": "8,900,000,000" + }, + { + "carName": "پژو 207", + "typeAndYear": "دنده ای سقف شیشه ای - ESP ارتقا یافته- رینگ فولادی-1404", + "marketPrice": "870,000,000" + }, + { + "carName": "پژو 207", + "typeAndYear": "دنده ای سقف شیشه ای - ESP-1403", + "marketPrice": "845,000,000" + }, + { + "carName": "پژو 207", + "typeAndYear": "اتوماتیک سقف شیشه ای - ESP-1403", + "marketPrice": "1,000,000,000" + }, + { + "carName": "پژو 207", + "typeAndYear": "دنده ای نیمه فول - ESP-1403", + "marketPrice": "775,000,000" + }, + { + "carName": "پژو 207", + "typeAndYear": "اتوماتیک - ESP-1403", + "marketPrice": "970,000,000" + }, + { + "carName": "پژو 207", + "typeAndYear": "دنده ای با موتور ESP - TU3-1403", + "marketPrice": "710,000,000" + }, + { + "carName": "پژو 207", + "typeAndYear": "اتوماتیک سقف شیشه ای-1403", + "marketPrice": "960,000,000" + }, + { + "carName": "پژو 207", + "typeAndYear": "دنده ای سقف شیشه ای - ESP ارتقا یافته-1403", + "marketPrice": "860,000,000" + }, + { + "carName": "پژو 207", + "typeAndYear": "اتوماتیک سقف شیشه ای - ESP ارتقا یافته-1403", + "marketPrice": "1,020,000,000" + }, + { + "carName": "پژو پارس", + "typeAndYear": "معمولی (سفارشی) - موتور جدید-ELX-1403", + "marketPrice": "890,000,000" + }, + { + "carName": "پژو پارس", + "typeAndYear": "LX با دریچه گاز سیمی-1403", + "marketPrice": "1,100,000,000" + }, + { + "carName": "پژو پارس", + "typeAndYear": "LX با دریچه گاز برقی -1403", + "marketPrice": "1,080,000,000" + }, + { + "carName": "پژو پارس", + "typeAndYear": "معمولی - موتور جدید-1403", + "marketPrice": "845,000,000" + }, + { + "carName": "تارا", + "typeAndYear": "اتومات V4-1404", + "marketPrice": "1,130,000,000" + }, + { + "carName": "تارا", + "typeAndYear": "دنده ای V1 پلاس-1404", + "marketPrice": "910,000,000" + }, + { + "carName": "تارا", + "typeAndYear": "دنده - ESP-1403", + "marketPrice": "840,000,000" + }, + { + "carName": "تارا", + "typeAndYear": "اتوماتیک-1403", + "marketPrice": "1,020,000,000" + }, + { + "carName": "تارا", + "typeAndYear": "اتومات V4-1403", + "marketPrice": "1,080,000,000" + }, + { + "carName": "تارا", + "typeAndYear": "دنده ای V1 پلاس-1403", + "marketPrice": "880,000,000" + }, + { + "carName": "دنا پلاس", + "typeAndYear": "توربو اتوماتیک - آپشنال-1404", + "marketPrice": "1,165,000,000" + }, + { + "carName": "دنا پلاس", + "typeAndYear": "6 دنده-1404", + "marketPrice": "950,000,000" + }, + { + "carName": "دنا پلاس", + "typeAndYear": "لو آپشن-1404", + "marketPrice": "880,000,000" + }, + { + "carName": "دنا پلاس", + "typeAndYear": "لو آپشن-1403", + "marketPrice": "850,000,000" + }, + { + "carName": "دنا پلاس", + "typeAndYear": "توربو اتوماتیک - ESP-1403", + "marketPrice": "1,060,000,000" + }, + { + "carName": "دنا پلاس", + "typeAndYear": "توربو 6 دنده -1403", + "marketPrice": "1,060,000,000" + }, + { + "carName": "دنا پلاس", + "typeAndYear": "توربو اتوماتیک - آپشنال-1403", + "marketPrice": "1,120,000,000" + }, + { + "carName": "دنا پلاس", + "typeAndYear": "6 دنده-1403", + "marketPrice": "920,000,000" + }, + { + "carName": "رانا", + "typeAndYear": "پلاس - ESP-1403", + "marketPrice": "730,000,000" + }, + { + "carName": "رانا", + "typeAndYear": "پلاس - ESP ارتقا یافته-1403", + "marketPrice": "740,000,000" + }, + { + "carName": "رانا", + "typeAndYear": "پلاس سقف شیشه ای - ESP-1402", + "marketPrice": "790,000,000" + }, + { + "carName": "ری‌را", + "typeAndYear": "بنزینی-1404", + "marketPrice": "1,600,000,000" + }, + { + "carName": "ری‌را", + "typeAndYear": "بنزینی-1403", + "marketPrice": "1,510,000,000" + }, + { + "carName": "سورن", + "typeAndYear": "پلاس XU7P-1404", + "marketPrice": "725,000,000" + }, + { + "carName": "سورن", + "typeAndYear": "پلاس -1404", + "marketPrice": "920,000,000" + }, + { + "carName": "سورن", + "typeAndYear": "پلاس دوگانه سوز-1404", + "marketPrice": "860,000,000" + }, + { + "carName": "سورن", + "typeAndYear": "پلاس XU7P-1403", + "marketPrice": "680,000,000" + }, + { + "carName": "سورن", + "typeAndYear": "پلاس -1403", + "marketPrice": "870,000,000" + }, + { + "carName": "سورن", + "typeAndYear": "پلاس دوگانه سوز-1403", + "marketPrice": "830,000,000" + }, + { + "carName": "لونا GRE", + "typeAndYear": "برقی-1403", + "marketPrice": "1,500,000,000" + }, + { + "carName": "بیجینگ X55", + "typeAndYear": "توربو 1500-2024", + "marketPrice": "2,500,000,000" + }, + { + "carName": "بیجینگ X7", + "typeAndYear": "توربو 1500-1403", + "marketPrice": "2,400,000,000" + }, + { + "carName": "بسترن B30", + "typeAndYear": "اتوماتیک-1401", + "marketPrice": "1,220,000,000" + }, + { + "carName": "T77", + "typeAndYear": "توربو 1500-2023", + "marketPrice": "1,900,000,000" + }, + { + "carName": "نات", + "typeAndYear": "برقی-2024", + "marketPrice": "1,250,000,000" + }, + { + "carName": "X3", + "typeAndYear": "پرو-1404", + "marketPrice": "1,350,000,000" + }, + { + "carName": "X3", + "typeAndYear": "پرو-1403", + "marketPrice": "1,250,000,000" + }, + { + "carName": "سانگ پلاس", + "typeAndYear": "هیبرید-2024", + "marketPrice": "3,750,000,000" + }, + { + "carName": "ماکان", + "typeAndYear": "9 کلید-2018", + "marketPrice": "18,200,000,000" + }, + { + "carName": "راو 4", + "typeAndYear": "دو دیفرانسیل-2024", + "marketPrice": "8,600,000,000" + }, + { + "carName": "راو 4", + "typeAndYear": "فول عمان-2018", + "marketPrice": "7,700,000,000" + }, + { + "carName": "راو 4", + "typeAndYear": "فول امارات-2018", + "marketPrice": "7,400,000,000" + }, + { + "carName": "لوین", + "typeAndYear": "هیبرید-2024", + "marketPrice": "3,050,000,000" + }, + { + "carName": "لوین", + "typeAndYear": "بنزینی-2024", + "marketPrice": "2,700,000,000" + }, + { + "carName": "لوین", + "typeAndYear": "هیبرید SE-2023", + "marketPrice": "3,500,000,000" + }, + { + "carName": "لوین", + "typeAndYear": "هیبرید-2023", + "marketPrice": "2,950,000,000" + }, + { + "carName": "لوین", + "typeAndYear": "بنزینی-2023", + "marketPrice": "2,600,000,000" + }, + { + "carName": "کرولا", + "typeAndYear": "توربو 1200-2024", + "marketPrice": "2,800,000,000" + }, + { + "carName": "کرولا", + "typeAndYear": "هیبرید موتور 1800-2024", + "marketPrice": "3,100,000,000" + }, + { + "carName": "کرولا", + "typeAndYear": "هیبرید موتور 1800-2023", + "marketPrice": "3,000,000,000" + }, + { + "carName": "کرولا", + "typeAndYear": "تنفس طبیعی 1500نیمه فول-2023", + "marketPrice": "2,750,000,000" + }, + { + "carName": "کرولا", + "typeAndYear": "توربو 1200-2023", + "marketPrice": "2,700,000,000" + }, + { + "carName": "کرولا", + "typeAndYear": "تنفس طبیعی 1500 فول-2023", + "marketPrice": "2,900,000,000" + }, + { + "carName": "کرولا", + "typeAndYear": "تنفس طبیعی 1500نیمه فول-2022", + "marketPrice": "2,600,000,000" + }, + { + "carName": "کرولا", + "typeAndYear": "توربو 1200-2022", + "marketPrice": "2,700,000,000" + }, + { + "carName": "کرولا کراس", + "typeAndYear": "هیبرید موتور 2000-2024", + "marketPrice": "4,350,000,000" + }, + { + "carName": "X35", + "typeAndYear": "اتوماتیک-1403", + "marketPrice": "1,500,000,000" + }, + { + "carName": "VS5", + "typeAndYear": "توربو 1400-2024", + "marketPrice": "2,500,000,000" + }, + { + "carName": "VS5", + "typeAndYear": "توربو 1400-2023", + "marketPrice": "2,300,000,000" + }, + { + "carName": "VS7", + "typeAndYear": "توربو 1400-2024", + "marketPrice": "2,800,000,000" + }, + { + "carName": "VS7", + "typeAndYear": "توربو 1400-2023", + "marketPrice": "2,500,000,000" + }, + { + "carName": "E50A", + "typeAndYear": "برقی-1403", + "marketPrice": "1,400,000,000" + }, + { + "carName": "J4", + "typeAndYear": "اتوماتیک-1404", + "marketPrice": "990,000,000" + }, + { + "carName": "J4", + "typeAndYear": "اتوماتیک-1403", + "marketPrice": "975,000,000" + }, + { + "carName": "S3", + "typeAndYear": "اتوماتیک-1403", + "marketPrice": "1,370,000,000" + }, + { + "carName": "S5", + "typeAndYear": "اتوماتیک - فیس جدید-1403", + "marketPrice": "1,720,000,000" + }, + { + "carName": "T8", + "typeAndYear": "دنده ای-1404", + "marketPrice": "2,005,000,000" + }, + { + "carName": "T8", + "typeAndYear": "دنده ای-1403", + "marketPrice": "1,900,000,000" + }, + { + "carName": "آزکارا", + "typeAndYear": "هیبرید-2023", + "marketPrice": "2,250,000,000" + }, + { + "carName": "CS35 پلاس", + "typeAndYear": "تیپ 3-2024", + "marketPrice": "1,880,000,000" + }, + { + "carName": "CS35 پلاس", + "typeAndYear": "تیپ 2-2023", + "marketPrice": "1,780,000,000" + }, + { + "carName": "CS35 پلاس", + "typeAndYear": "تیپ 3-2023", + "marketPrice": "1,880,000,000" + }, + { + "carName": "CS55 پلاس", + "typeAndYear": "1500 توربو-2024", + "marketPrice": "2,620,000,000" + }, + { + "carName": "دیگنیتی", + "typeAndYear": "پرایم-1404", + "marketPrice": "1,900,000,000" + }, + { + "carName": "دیگنیتی", + "typeAndYear": "پرستیژ-1404", + "marketPrice": "2,500,000,000" + }, + { + "carName": "دیگنیتی", + "typeAndYear": "پرایم-1403", + "marketPrice": "1,820,000,000" + }, + { + "carName": "دیگنیتی", + "typeAndYear": "پرستیژ-1403", + "marketPrice": "2,400,000,000" + }, + { + "carName": "شاین مکس", + "typeAndYear": "بنزینی-1403", + "marketPrice": "2,000,000,000" + }, + { + "carName": "شاین مکس", + "typeAndYear": "هیبرید-1403", + "marketPrice": "2,200,000,000" + }, + { + "carName": "Y5", + "typeAndYear": "پلاس-1402", + "marketPrice": "1,550,000,000" + }, + { + "carName": "y7", + "typeAndYear": "پلاس-1403", + "marketPrice": "1,980,000,000" + }, + { + "carName": "آرکانا", + "typeAndYear": "موتور 1600-2024", + "marketPrice": "3,400,000,000" + }, + { + "carName": "تلیسمان", + "typeAndYear": "E3-2018", + "marketPrice": "4,250,000,000" + }, + { + "carName": "کولیوس", + "typeAndYear": "فول-2024", + "marketPrice": "9,000,000,000" + }, + { + "carName": "کولیوس", + "typeAndYear": "فول-2018", + "marketPrice": "5,100,000,000" + }, + { + "carName": "آتکا", + "typeAndYear": "توربو 2000-2023", + "marketPrice": "2,500,000,000" + }, + { + "carName": "رکستون", + "typeAndYear": "G4-2018", + "marketPrice": "5,000,000,000" + }, + { + "carName": "نیو کوراندو", + "typeAndYear": "توربو 1500-2023", + "marketPrice": "3,000,000,000" + }, + { + "carName": "DL5", + "typeAndYear": "توربو 1500-1403", + "marketPrice": "1,280,000,000" + }, + { + "carName": "اطلس", + "typeAndYear": "GL-1404", + "marketPrice": "570,000,000" + }, + { + "carName": "اطلس", + "typeAndYear": "G-1403", + "marketPrice": "575,000,000" + }, + { + "carName": "پراید 151", + "typeAndYear": "SE-1403", + "marketPrice": "405,000,000" + }, + { + "carName": "ساینا", + "typeAndYear": "S - ESP-1404", + "marketPrice": "500,000,000" + }, + { + "carName": "ساینا", + "typeAndYear": "GX دوگانه سوز-1404", + "marketPrice": "580,000,000" + }, + { + "carName": "ساینا", + "typeAndYear": "GX دوگانه سوز-1403", + "marketPrice": "560,000,000" + }, + { + "carName": "ساینا", + "typeAndYear": "S اتوماتیک-1403", + "marketPrice": "635,000,000" + }, + { + "carName": "ساینا", + "typeAndYear": "S - ESP-1403", + "marketPrice": "485,000,000" + }, + { + "carName": "ساینا", + "typeAndYear": "S دوگانه سوز-1403", + "marketPrice": "545,000,000" + }, + { + "carName": "سهند", + "typeAndYear": "S-1404", + "marketPrice": "570,000,000" + }, + { + "carName": "سهند", + "typeAndYear": "G-1403", + "marketPrice": "670,000,000" + }, + { + "carName": "سهند", + "typeAndYear": "S-1403", + "marketPrice": "540,000,000" + }, + { + "carName": "شاهین", + "typeAndYear": "GL دنده ای-1404", + "marketPrice": "810,000,000" + }, + { + "carName": "شاهین", + "typeAndYear": "اتومات-1404", + "marketPrice": "935,000,000" + }, + { + "carName": "شاهین", + "typeAndYear": "پلاس اتوماتیک -1404", + "marketPrice": "1,215,000,000" + }, + { + "carName": "شاهین", + "typeAndYear": "G دنده ای-1404", + "marketPrice": "890,000,000" + }, + { + "carName": "شاهین", + "typeAndYear": "پلاس اتوماتیک -1403", + "marketPrice": "1,175,000,000" + }, + { + "carName": "شاهین", + "typeAndYear": "GL دنده ای-1403", + "marketPrice": "780,000,000" + }, + { + "carName": "شاهین", + "typeAndYear": "اتومات-1403", + "marketPrice": "910,000,000" + }, + { + "carName": "شاهین", + "typeAndYear": "G دنده ای-1403", + "marketPrice": "860,000,000" + }, + { + "carName": "وانت پادرا پلاس", + "typeAndYear": "دنده ای -1403", + "marketPrice": "800,000,000" + }, + { + "carName": "وانت زامیاد", + "typeAndYear": "دوگانه سوز آپشنال-1404", + "marketPrice": "750,000,000" + }, + { + "carName": "وانت زامیاد", + "typeAndYear": "بنزینی آپشنال-1404", + "marketPrice": "720,000,000" + }, + { + "carName": "وانت زامیاد", + "typeAndYear": "بنزینی آپشنال-1403", + "marketPrice": "660,000,000" + }, + { + "carName": "وانت زامیاد", + "typeAndYear": "دوگانه سوز آپشنال-1403", + "marketPrice": "715,000,000" + }, + { + "carName": "وانت زامیاد", + "typeAndYear": "بنزینی آپشنال - دریچه سیمی-1403", + "marketPrice": "760,000,000" + }, + { + "carName": "وانت کارون", + "typeAndYear": "دنده ای-1403", + "marketPrice": "810,000,000" + }, + { + "carName": "کوییک", + "typeAndYear": "دنده ای GXR-L-1404", + "marketPrice": "505,000,000" + }, + { + "carName": "کوییک", + "typeAndYear": "S-1404", + "marketPrice": "480,000,000" + }, + { + "carName": "کوییک", + "typeAndYear": "RS دنده‌ای-1404", + "marketPrice": "495,000,000" + }, + { + "carName": "کوییک", + "typeAndYear": "دنده ای GX-L-1404", + "marketPrice": "490,000,000" + }, + { + "carName": "کوییک", + "typeAndYear": "دنده ای GXH-1403", + "marketPrice": "495,000,000" + }, + { + "carName": "کوییک", + "typeAndYear": "دنده ای GXH-R-1403", + "marketPrice": "505,000,000" + }, + { + "carName": "کوییک", + "typeAndYear": "R اتوماتیک فول پلاس -1403", + "marketPrice": "670,000,000" + }, + { + "carName": "کوییک", + "typeAndYear": "اتوماتیک فول پلاس-1403", + "marketPrice": "660,000,000" + }, + { + "carName": "کوییک", + "typeAndYear": "S-1403", + "marketPrice": "460,000,000" + }, + { + "carName": "کوییک", + "typeAndYear": "RS دنده‌ای-1403", + "marketPrice": "480,000,000" + }, + { + "carName": "کوییک", + "typeAndYear": "دنده ای GXR-L-1403", + "marketPrice": "490,000,000" + }, + { + "carName": "کوییک", + "typeAndYear": "دنده ای GX-L-1403", + "marketPrice": "475,000,000" + }, + { + "carName": "بالنو", + "typeAndYear": "موتور 1500-2025", + "marketPrice": "2,150,000,000" + }, + { + "carName": "بالنو", + "typeAndYear": "موتور 1500-2024", + "marketPrice": "2,050,000,000" + }, + { + "carName": "جیمنی", + "typeAndYear": "پنج درب-2025", + "marketPrice": "3,100,000,000" + }, + { + "carName": "جیمنی", + "typeAndYear": "پنج درب-2024", + "marketPrice": "2,900,000,000" + }, + { + "carName": "سیاز", + "typeAndYear": "موتور 1500-2024", + "marketPrice": "1,950,000,000" + }, + { + "carName": "سیاز", + "typeAndYear": "موتور 1500-2023", + "marketPrice": "1,800,000,000" + }, + { + "carName": "فرانکس", + "typeAndYear": "GLX هیبرید-2025", + "marketPrice": "2,900,000,000" + }, + { + "carName": "فرانکس", + "typeAndYear": "GLX هیبرید-2024", + "marketPrice": "2,900,000,000" + }, + { + "carName": "C3", + "typeAndYear": "فول فاقد گرمکن صندلی-1398", + "marketPrice": "2,600,000,000" + }, + { + "carName": "511", + "typeAndYear": "اتوماتیک-1404", + "marketPrice": "1,100,000,000" + }, + { + "carName": "511", + "typeAndYear": "اتوماتیک-1403", + "marketPrice": "1,080,000,000" + }, + { + "carName": "SX5", + "typeAndYear": "اتوماتیک-1403", + "marketPrice": "1,470,000,000" + }, + { + "carName": "T5", + "typeAndYear": "اتوماتیک-1404", + "marketPrice": "1,780,000,000" + }, + { + "carName": "T5", + "typeAndYear": "اتوماتیک-1403", + "marketPrice": "1,750,000,000" + }, + { + "carName": "سوبا M4", + "typeAndYear": "هفت نفره-1403", + "marketPrice": "2,400,000,000" + }, + { + "carName": "تونلند G7", + "typeAndYear": "بنزینی-1404", + "marketPrice": "2,650,000,000" + }, + { + "carName": "تونلند G7", + "typeAndYear": "بنزینی-1403", + "marketPrice": "2,580,000,000" + }, + { + "carName": "ID4", + "typeAndYear": "برقی-2024", + "marketPrice": "3,690,000,000" + }, + { + "carName": "پاسات", + "typeAndYear": "فول-2018", + "marketPrice": "6,200,000,000" + }, + { + "carName": "تی راک", + "typeAndYear": "توربو 1500-2024", + "marketPrice": "4,350,000,000" + }, + { + "carName": "تیگوان", + "typeAndYear": "فول-2018", + "marketPrice": "7,000,000,000" + }, + { + "carName": "FX", + "typeAndYear": "AWD-1404", + "marketPrice": "2,650,000,000" + }, + { + "carName": "FX", + "typeAndYear": "پریمیوم-1403", + "marketPrice": "2,400,000,000" + }, + { + "carName": "آریزو 6 پرو", + "typeAndYear": "اتوماتیک-1403", + "marketPrice": "1,890,000,000" + }, + { + "carName": "آریزو 6 جی تی", + "typeAndYear": "توربو 1600-1404", + "marketPrice": "2,180,000,000" + }, + { + "carName": "آریزو 6 جی تی", + "typeAndYear": "توربو 1600-1403", + "marketPrice": "2,080,000,000" + }, + { + "carName": "آریزو 8", + "typeAndYear": "توربو 2000-1403", + "marketPrice": "2,920,000,000" + }, + { + "carName": "تیگو 7 پرو", + "typeAndYear": "هیبرید e+-1404", + "marketPrice": "2,650,000,000" + }, + { + "carName": "تیگو 7 پرو", + "typeAndYear": "مکس-1404", + "marketPrice": "2,670,000,000" + }, + { + "carName": "تیگو 7 پرو", + "typeAndYear": "مکس-1403", + "marketPrice": "2,570,000,000" + }, + { + "carName": "تیگو 7 پرو", + "typeAndYear": "هیبرید e+-1403", + "marketPrice": "2,570,000,000" + }, + { + "carName": "تیگو 7 پرو", + "typeAndYear": "پریمیوم-1403", + "marketPrice": "2,300,000,000" + }, + { + "carName": "تیگو 8 پرو", + "typeAndYear": "مکس IE-1404", + "marketPrice": "3,600,000,000" + }, + { + "carName": "تیگو 8 پرو", + "typeAndYear": "هیبرید-1404", + "marketPrice": "3,300,000,000" + }, + { + "carName": "تیگو 8 پرو", + "typeAndYear": "مکس IE-1403", + "marketPrice": "3,350,000,000" + }, + { + "carName": "تیگو 8 پرو", + "typeAndYear": "هیبرید-1403", + "marketPrice": "3,150,000,000" + }, + { + "carName": "J7", + "typeAndYear": "اتوماتیک-1404", + "marketPrice": "1,970,000,000" + }, + { + "carName": "J7", + "typeAndYear": "اتوماتیک-1403", + "marketPrice": "1,840,000,000" + }, + { + "carName": "J7 EV", + "typeAndYear": "برقی-1403", + "marketPrice": "1,350,000,000" + }, + { + "carName": "K7", + "typeAndYear": "اتوماتیک-1402", + "marketPrice": "2,050,000,000" + }, + { + "carName": "A5", + "typeAndYear": "توربو 1500-1403", + "marketPrice": "1,840,000,000" + }, + { + "carName": "T9", + "typeAndYear": "توربو 2000-1403", + "marketPrice": "2,830,000,000" + }, + { + "carName": "X5", + "typeAndYear": "توربو 1500-1404", + "marketPrice": "1,920,000,000" + }, + { + "carName": "X5", + "typeAndYear": "توربو 1500-1403", + "marketPrice": "1,850,000,000" + }, + { + "carName": "K5", + "typeAndYear": "توربو 1500-2024", + "marketPrice": "5,480,000,000" + }, + { + "carName": "K5", + "typeAndYear": "موتور 2000-2023", + "marketPrice": "4,100,000,000" + }, + { + "carName": "اسپورتیج", + "typeAndYear": "1500 توربو-2024", + "marketPrice": "5,200,000,000" + }, + { + "carName": "سراتو", + "typeAndYear": "GT لاین-2024", + "marketPrice": "3,800,000,000" + }, + { + "carName": "سلتوس", + "typeAndYear": "اتوماتیک-2023", + "marketPrice": "3,300,000,000" + }, + { + "carName": "سونت", + "typeAndYear": "موتور 1500-2024", + "marketPrice": "2,700,000,000" + }, + { + "carName": "سونت", + "typeAndYear": "موتور 1500-2023", + "marketPrice": "2,600,000,000" + }, + { + "carName": "پیکاپ G9", + "typeAndYear": "توربو 2000-1403", + "marketPrice": "2,700,000,000" + }, + { + "carName": "رسپکت", + "typeAndYear": "2 جدید-1404", + "marketPrice": "1,540,000,000" + }, + { + "carName": "رسپکت", + "typeAndYear": "2 جدید-1403", + "marketPrice": "1,470,000,000" + }, + { + "carName": "فیدلیتی", + "typeAndYear": "پرستیژ (5نفره)-1404", + "marketPrice": "3,100,000,000" + }, + { + "carName": "فیدلیتی", + "typeAndYear": "پرستیژ (7نفره)-1404", + "marketPrice": "3,300,000,000" + }, + { + "carName": "فیدلیتی", + "typeAndYear": "پرایم(5 نفره)-1404", + "marketPrice": "2,060,000,000" + }, + { + "carName": "فیدلیتی", + "typeAndYear": "پرایم(7 نفره)-1404", + "marketPrice": "2,090,000,000" + }, + { + "carName": "فیدلیتی", + "typeAndYear": "پرستیژ (5نفره)-1403", + "marketPrice": "3,000,000,000" + }, + { + "carName": "فیدلیتی", + "typeAndYear": "پرستیژ (7نفره)-1403", + "marketPrice": "3,150,000,000" + }, + { + "carName": "فیدلیتی", + "typeAndYear": "پرایم(5 نفره)-1403", + "marketPrice": "1,970,000,000" + }, + { + "carName": "فیدلیتی", + "typeAndYear": "پرایم(7 نفره)-1403", + "marketPrice": "2,010,000,000" + }, + { + "carName": "ون اینرودز", + "typeAndYear": "دنده ای -1404", + "marketPrice": "790,000,000" + }, + { + "carName": "ون اینرودز", + "typeAndYear": "دنده ای -1403", + "marketPrice": "710,000,000" + }, + { + "carName": "کاپرا دو کابین", + "typeAndYear": "دو دیفرانسیل دنده ای-1402", + "marketPrice": "1,400,000,000" + }, + { + "carName": "تانک 300", + "typeAndYear": "توربو 2000-2025", + "marketPrice": "6,150,000,000" + }, + { + "carName": "هاوال H8", + "typeAndYear": "فول اتوماتیک-2016", + "marketPrice": "2,700,000,000" + }, + { + "carName": "امپو", + "typeAndYear": "توربو 1500-2024", + "marketPrice": "2,920,000,000" + }, + { + "carName": "امزوم GS3", + "typeAndYear": "توربو 1500-1403", + "marketPrice": "2,600,000,000" + }, + { + "carName": "امکو", + "typeAndYear": "توربو 1500-2024", + "marketPrice": "3,500,000,000" + }, + { + "carName": "ایما", + "typeAndYear": "اتوماتیک-1404", + "marketPrice": "2,160,000,000" + }, + { + "carName": "ایما", + "typeAndYear": "هیبرید-1404", + "marketPrice": "2,480,000,000" + }, + { + "carName": "ایما", + "typeAndYear": "اتوماتیک-1403", + "marketPrice": "2,090,000,000" + }, + { + "carName": "ایما", + "typeAndYear": "هیبرید-1403", + "marketPrice": "2,380,000,000" + }, + { + "carName": "L7", + "typeAndYear": "توربو 1600-2025", + "marketPrice": "2,790,000,000" + }, + { + "carName": "L7", + "typeAndYear": "توربو 1600-2024", + "marketPrice": "2,790,000,000" + }, + { + "carName": "X33 کراس", + "typeAndYear": "اتوماتیک-1404", + "marketPrice": "1,240,000,000" + }, + { + "carName": "X33 کراس", + "typeAndYear": "اتوماتیک-1403", + "marketPrice": "1,180,000,000" + }, + { + "carName": "X33 کراس", + "typeAndYear": "دنده ای -1403", + "marketPrice": "1,100,000,000" + }, + { + "carName": "ام وی ام x22", + "typeAndYear": "pro دنده-1404", + "marketPrice": "1,060,000,000" + }, + { + "carName": "ام وی ام x22", + "typeAndYear": "pro دنده-1403", + "marketPrice": "1,010,000,000" + }, + { + "carName": "ام وی ام x55 پرو", + "typeAndYear": "IE-1404", + "marketPrice": "1,700,000,000" + }, + { + "carName": "ام وی ام x55 پرو", + "typeAndYear": "اکسلنت-1403", + "marketPrice": "1,690,000,000" + }, + { + "carName": "ام وی ام x55 پرو", + "typeAndYear": "IE-1403", + "marketPrice": "1,650,000,000" + }, + { + "carName": "ام وی ام x55 پرو", + "typeAndYear": "IE اسپرت-1403", + "marketPrice": "1,720,000,000" + }, + { + "carName": "ام وی ام x55 پرو", + "typeAndYear": "اکسلنت اسپرت-1403", + "marketPrice": "1,600,000,000" + }, + { + "carName": "چری آریزو 5 FL", + "typeAndYear": "اسپرت اکسلنت-1404", + "marketPrice": "1,600,000,000" + }, + { + "carName": "چری آریزو 5 FL", + "typeAndYear": "اسپرت اکسلنت-1403", + "marketPrice": "1,530,000,000" + }, + { + "carName": "CX30", + "typeAndYear": "موتور 2000-2024", + "marketPrice": "5,070,000,000" + }, + { + "carName": "تیارا", + "typeAndYear": "پرایم-1403", + "marketPrice": "2,300,000,000" + }, + { + "carName": "کلوت", + "typeAndYear": "اتوماتیک-1403", + "marketPrice": "1,850,000,000" + }, + { + "carName": "اوتلندر", + "typeAndYear": "H-LINE-2023", + "marketPrice": "6,650,000,000" + }, + { + "carName": "اوتلندر", + "typeAndYear": "M-LINE-2023", + "marketPrice": "5,320,000,000" + }, + { + "carName": "ترا", + "typeAndYear": "توربو 2000 - ساده-2024", + "marketPrice": "4,300,000,000" + }, + { + "carName": "ترا", + "typeAndYear": "توربو 2000 - اکسکلوسیو-2024", + "marketPrice": "4,500,000,000" + }, + { + "carName": "سانی", + "typeAndYear": "موتور 1500-2024", + "marketPrice": "1,550,000,000" + }, + { + "carName": "سانی", + "typeAndYear": "موتور 1500-2023", + "marketPrice": "1,480,000,000" + }, + { + "carName": "سیلفی", + "typeAndYear": "هیبرید پلاس-2024", + "marketPrice": "3,600,000,000" + }, + { + "carName": "سیلفی", + "typeAndYear": "مکس ادیشن-2024", + "marketPrice": "3,730,000,000" + }, + { + "carName": "سیلفی", + "typeAndYear": "هیبرید پلاس-2023", + "marketPrice": "3,350,000,000" + }, + { + "carName": "سیلفی", + "typeAndYear": "مکس ادیشن-2023", + "marketPrice": "3,600,000,000" + }, + { + "carName": "قشقایی", + "typeAndYear": "موتور 2000-2024", + "marketPrice": "3,520,000,000" + }, + { + "carName": "قشقایی", + "typeAndYear": "موتور 2000-2023", + "marketPrice": "3,400,000,000" + }, + { + "carName": "H6", + "typeAndYear": "هیبرید-2025", + "marketPrice": "2,700,000,000" + }, + { + "carName": "H6", + "typeAndYear": "هیبرید-2024", + "marketPrice": "2,630,000,000" + }, + { + "carName": "7x", + "typeAndYear": "توربو 1600-1404", + "marketPrice": "1,980,000,000" + }, + { + "carName": "7x", + "typeAndYear": "توربو 1600-1403", + "marketPrice": "1,910,000,000" + }, + { + "carName": "S5", + "typeAndYear": "6 دنده اتوماتیک-1404", + "marketPrice": "1,640,000,000" + }, + { + "carName": "S5", + "typeAndYear": "6 دنده اتوماتیک-1403", + "marketPrice": "1,580,000,000" + }, + { + "carName": "S7 توربو", + "typeAndYear": "پلاس-1403", + "marketPrice": "1,740,000,000" + }, + { + "carName": "S7 توربو", + "typeAndYear": "پرو-1403", + "marketPrice": "1,780,000,000" + }, + { + "carName": "S8", + "typeAndYear": "اتوماتیک-1404", + "marketPrice": "2,120,000,000" + }, + { + "carName": "S8", + "typeAndYear": "اتوماتیک-1403", + "marketPrice": "2,070,000,000" + }, + { + "carName": "ENS1", + "typeAndYear": "برقی-1403", + "marketPrice": "2,900,000,000" + }, + { + "carName": "ZR-V", + "typeAndYear": "هیبرید-2024", + "marketPrice": "8,800,000,000" + }, + { + "carName": "سیتی", + "typeAndYear": "موتور 1500-2023", + "marketPrice": "2,650,000,000" + }, + { + "carName": "وزل", + "typeAndYear": "موتور 1500 بنزینی-2025", + "marketPrice": "3,570,000,000" + }, + { + "carName": "وزل", + "typeAndYear": "موتور 1500 بنزینی-2024", + "marketPrice": "3,200,000,000" + }, + { + "carName": "وزل", + "typeAndYear": "موتور 1500 بنزینی-2023", + "marketPrice": "3,100,000,000" + }, + { + "carName": "E-MQ5", + "typeAndYear": "برقی-2024", + "marketPrice": "1,750,000,000" + }, + { + "carName": "H5", + "typeAndYear": "توربو 2000-2024", + "marketPrice": "3,600,000,000" + }, + { + "carName": "آزرا", + "typeAndYear": "فول شرکتی (کرمان موتور)-2019", + "marketPrice": "7,000,000,000" + }, + { + "carName": "النترا", + "typeAndYear": "اتوماتیک-1600-2023", + "marketPrice": "2,600,000,000" + }, + { + "carName": "النترا", + "typeAndYear": "فول وارداتی AD-2018", + "marketPrice": "4,200,000,000" + }, + { + "carName": "اکسنت", + "typeAndYear": "اتوماتیک 1600-2023", + "marketPrice": "2,200,000,000" + }, + { + "carName": "توسان", + "typeAndYear": "تک دیفرانسیل 2000-2023", + "marketPrice": "4,800,000,000" + }, + { + "carName": "سانتافه", + "typeAndYear": "دو دیفرانسیل فول - (GDI) DM 2400-2018", + "marketPrice": "5,500,000,000" + }, + { + "carName": "کرتا", + "typeAndYear": "اتوماتیک 1500-2023", + "marketPrice": "3,000,000,000" + }, + { + "carName": "کونا", + "typeAndYear": "موتور 2000-2024", + "marketPrice": "4,350,000,000" + }, + { + "carName": "D60 پلاس", + "typeAndYear": "بنزینی-1403", + "marketPrice": "2,100,000,000" + }, + { + "carName": "وی-آنلاین", + "typeAndYear": "DD-i-2024", + "marketPrice": "2,200,000,000" + }, + { + "carName": "وی-آنلاین", + "typeAndYear": "DD-i-2023", + "marketPrice": "2,100,000,000" + } +] \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..9ac751a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1861 @@ +{ + "name": "myproject", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "myproject", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@fastify/autoload": "^5.0.0", + "@fastify/sensible": "^5.0.0", + "axios": "^1.9.0", + "fastify": "^4.26.1", + "fastify-cli": "^6.1.1", + "fastify-cron": "^1.4.0", + "fastify-plugin": "^4.0.0" + } + }, + "node_modules/@fastify/ajv-compiler": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.6.0.tgz", + "integrity": "sha512-LwdXQJjmMD+GwLOkP7TVC68qa+pSSogeWWmznRJ/coyTcfe9qA05AHFSe1eZFwK6q+xVRpChnvFUkf1iYaSZsQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.11.0", + "ajv-formats": "^2.1.1", + "fast-uri": "^2.0.0" + } + }, + "node_modules/@fastify/autoload": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@fastify/autoload/-/autoload-5.10.0.tgz", + "integrity": "sha512-4A6s86qMbjcpWHmJL7cErtjIxOPuW8c67DLiuO8HoJQxuK97vaptoUnK5BTOwRg1ntYqfc3tjwerTTo5NQ3fEQ==", + "license": "MIT" + }, + "node_modules/@fastify/deepmerge": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-2.0.2.tgz", + "integrity": "sha512-3wuLdX5iiiYeZWP6bQrjqhrcvBIf0NHbQH1Ur1WbHvoiuTYUEItgygea3zs8aHpiitn0lOB8gX20u1qO+FDm7Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@fastify/error": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.4.1.tgz", + "integrity": "sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==", + "license": "MIT" + }, + "node_modules/@fastify/fast-json-stringify-compiler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz", + "integrity": "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==", + "license": "MIT", + "dependencies": { + "fast-json-stringify": "^5.7.0" + } + }, + "node_modules/@fastify/merge-json-schemas": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz", + "integrity": "sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + } + }, + "node_modules/@fastify/sensible": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@fastify/sensible/-/sensible-5.6.0.tgz", + "integrity": "sha512-Vq6Z2ZQy10GDqON+hvLF52K99s9et5gVVxTul5n3SIAf0Kq5QjPRUKkAMT3zPAiiGvoHtS3APa/3uaxfDgCODQ==", + "license": "MIT", + "dependencies": { + "@lukeed/ms": "^2.0.1", + "fast-deep-equal": "^3.1.1", + "fastify-plugin": "^4.0.0", + "forwarded": "^0.2.0", + "http-errors": "^2.0.0", + "type-is": "^1.6.18", + "vary": "^1.1.2" + } + }, + "node_modules/@lukeed/ms": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@lukeed/ms/-/ms-2.0.2.tgz", + "integrity": "sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/cron": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/cron/-/cron-2.0.1.tgz", + "integrity": "sha512-WHa/1rtNtD2Q/H0+YTTZoty+/5rcE66iAFX2IY+JuUoOACsevYyFkSYu/2vdw+G5LrmO7Lxowrqm0av4k3qWNQ==", + "license": "MIT", + "dependencies": { + "@types/luxon": "*", + "@types/node": "*" + } + }, + "node_modules/@types/luxon": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.6.2.tgz", + "integrity": "sha512-R/BdP7OxEMc44l2Ex5lSXHoIXTB2JLNa3y2QISIbr58U/YcsffyQrYW//hZSdrfxrjRZj3GcUoxMPGdO8gSYuw==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.15.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.20.tgz", + "integrity": "sha512-A6BohGFRGHAscJsTslDCA9JG7qSJr/DWUvrvY8yi9IgnGtMxCyat7vvQ//MFa0DnLsyuS3wYTpLdw4Hf+Q5JXw==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/abstract-logging": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", + "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==", + "license": "MIT" + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv/node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 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==", + "license": "MIT" + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/avvio": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.4.0.tgz", + "integrity": "sha512-CDSwaxINFy59iNwhYnkvALBwZiTydGkOecZyPkqBpABYR1KqGEsET0VOOYDwtleZSUIdeY36DC2bSZ24CO1igA==", + "license": "MIT", + "dependencies": { + "@fastify/error": "^3.3.0", + "fastq": "^1.17.1" + } + }, + "node_modules/axios": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", + "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/close-with-grace": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/close-with-grace/-/close-with-grace-1.3.0.tgz", + "integrity": "sha512-lvm0rmLIR5bNz4CRKW6YvCfn9Wg5Wb9A8PJ3Bb+hjyikgC1RO1W3J4z9rBXQYw97mAte7dNSQI8BmUsxdlXQyw==", + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commist": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/commist/-/commist-3.2.0.tgz", + "integrity": "sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cron": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/cron/-/cron-2.4.4.tgz", + "integrity": "sha512-MHlPImXJj3K7x7lyUHjtKEOl69CSlTOWxS89jiFgNkzXfvhVjhMz/nc7/EIfN9vgooZp8XTtXJ1FREdmbyXOiQ==", + "license": "MIT", + "dependencies": { + "@types/luxon": "~3.3.0", + "luxon": "~3.3.0" + } + }, + "node_modules/cron/node_modules/@types/luxon": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.3.8.tgz", + "integrity": "sha512-jYvz8UMLDgy3a5SkGJne8H7VA7zPV2Lwohjx0V8V31+SqAjNmurWMkk9cQhfvlcnXWudBpK9xPM1n4rljOcHYQ==", + "license": "MIT" + }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dotenv": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-content-type-parse": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz", + "integrity": "sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==", + "license": "MIT" + }, + "node_modules/fast-copy": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", + "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==", + "license": "MIT" + }, + "node_modules/fast-decode-uri-component": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", + "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/fast-json-stringify": { + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.16.1.tgz", + "integrity": "sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==", + "license": "MIT", + "dependencies": { + "@fastify/merge-json-schemas": "^0.1.0", + "ajv": "^8.10.0", + "ajv-formats": "^3.0.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^2.1.0", + "json-schema-ref-resolver": "^1.0.1", + "rfdc": "^1.2.0" + } + }, + "node_modules/fast-json-stringify/node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/fast-querystring": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", + "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", + "license": "MIT", + "dependencies": { + "fast-decode-uri-component": "^1.0.1" + } + }, + "node_modules/fast-redact": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.4.0.tgz", + "integrity": "sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==", + "license": "MIT" + }, + "node_modules/fastify": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.29.1.tgz", + "integrity": "sha512-m2kMNHIG92tSNWv+Z3UeTR9AWLLuo7KctC7mlFPtMEVrfjIhmQhkQnT9v15qA/BfVq3vvj134Y0jl9SBje3jXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/ajv-compiler": "^3.5.0", + "@fastify/error": "^3.4.0", + "@fastify/fast-json-stringify-compiler": "^4.3.0", + "abstract-logging": "^2.0.1", + "avvio": "^8.3.0", + "fast-content-type-parse": "^1.1.0", + "fast-json-stringify": "^5.8.0", + "find-my-way": "^8.0.0", + "light-my-request": "^5.11.0", + "pino": "^9.0.0", + "process-warning": "^3.0.0", + "proxy-addr": "^2.0.7", + "rfdc": "^1.3.0", + "secure-json-parse": "^2.7.0", + "semver": "^7.5.4", + "toad-cache": "^3.3.0" + } + }, + "node_modules/fastify-cli": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/fastify-cli/-/fastify-cli-6.3.0.tgz", + "integrity": "sha512-FORXCwuBiNAArMMxp5hTthQCU9Xa7oO1wnCsGSgvuWC2k5ZarEEIXNm5RekcO9koZDQ0NACU6gGRF96Tf7ZI7Q==", + "license": "MIT", + "dependencies": { + "@fastify/deepmerge": "^2.0.0", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", + "close-with-grace": "^1.1.0", + "commist": "^3.0.0", + "dotenv": "^16.0.0", + "fastify": "^4.26.1", + "fastify-plugin": "^4.0.0", + "generify": "^4.0.0", + "help-me": "^4.0.1", + "is-docker": "^2.0.0", + "pino-pretty": "^11.2.0", + "pkg-up": "^3.1.0", + "resolve-from": "^5.0.0", + "semver": "^7.3.5", + "yargs-parser": "^21.1.1" + }, + "bin": { + "fastify": "cli.js" + } + }, + "node_modules/fastify-cron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/fastify-cron/-/fastify-cron-1.4.0.tgz", + "integrity": "sha512-CqJxVuo4yfUITeo5/zRcFasPrm1+iouedVH1Y23zxQehNYCKyy3mZoAQ/xbSTlq26rPAl5gj0guF8XoPDMAvdA==", + "license": "MIT", + "dependencies": { + "@types/cron": "^2.0.0", + "cron": "^2.0.0", + "fastify-plugin": "^3.0.0" + }, + "peerDependencies": { + "fastify": "^4.1.0 || ^5.0.0" + } + }, + "node_modules/fastify-cron/node_modules/fastify-plugin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-3.0.1.tgz", + "integrity": "sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==", + "license": "MIT" + }, + "node_modules/fastify-plugin": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-4.5.1.tgz", + "integrity": "sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==", + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-my-way": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-8.2.2.tgz", + "integrity": "sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-querystring": "^1.0.0", + "safe-regex2": "^3.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "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==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generify": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/generify/-/generify-4.2.0.tgz", + "integrity": "sha512-b4cVhbPfbgbCZtK0dcUc1lASitXGEAIqukV5DDAyWm25fomWnV+C+a1yXvqikcRZXHN2j0pSDyj3cTfzq8pC7Q==", + "license": "MIT", + "dependencies": { + "isbinaryfile": "^4.0.2", + "pump": "^3.0.0", + "split2": "^3.0.0", + "walker": "^1.0.6" + }, + "bin": { + "generify": "generify.js" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/help-me": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-4.2.0.tgz", + "integrity": "sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA==", + "license": "MIT", + "dependencies": { + "glob": "^8.0.0", + "readable-stream": "^3.6.0" + } + }, + "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==", + "license": "MIT", + "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/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "license": "MIT", + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/json-schema-ref-resolver": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz", + "integrity": "sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/light-my-request": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.14.0.tgz", + "integrity": "sha512-aORPWntbpH5esaYpGOOmri0OHDOe3wC5M2MQxZ9dvMLZm6DnaAn0kJlcbU9hwsQgLzmZyReKwFwwPkR+nHu5kA==", + "license": "BSD-3-Clause", + "dependencies": { + "cookie": "^0.7.0", + "process-warning": "^3.0.0", + "set-cookie-parser": "^2.4.1" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/luxon": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pino": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.7.0.tgz", + "integrity": "sha512-vnMCM6xZTb1WDmLvtG2lE/2p+t9hDEIvTWJsu6FejkE62vB7gDhvzrpFR4Cw2to+9JNQxVnkAKVPA1KPB98vWg==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^2.0.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^5.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^3.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", + "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", + "license": "MIT", + "dependencies": { + "split2": "^4.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/pino-pretty": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-11.3.0.tgz", + "integrity": "sha512-oXwn7ICywaZPHmu3epHGU2oJX4nPmKvHvB/bwrJHlGcbEWaVcotkpyVHMKLKmiVryWYByNp0jpgAcXpFJDXJzA==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.7", + "dateformat": "^4.6.3", + "fast-copy": "^3.0.2", + "fast-safe-stringify": "^2.1.1", + "help-me": "^5.0.0", + "joycon": "^3.1.1", + "minimist": "^1.2.6", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^2.0.0", + "pump": "^3.0.0", + "readable-stream": "^4.0.0", + "secure-json-parse": "^2.4.0", + "sonic-boom": "^4.0.1", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/pino-pretty/node_modules/help-me": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==", + "license": "MIT" + }, + "node_modules/pino-pretty/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/pino-std-serializers": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", + "license": "MIT" + }, + "node_modules/pino/node_modules/process-warning": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", + "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", + "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ret": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.4.3.tgz", + "integrity": "sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "license": "MIT" + }, + "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" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-3.1.0.tgz", + "integrity": "sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==", + "license": "MIT", + "dependencies": { + "ret": "~0.4.0" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", + "license": "BSD-3-Clause" + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sonic-boom": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", + "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "license": "ISC", + "dependencies": { + "readable-stream": "^3.0.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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/thread-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", + "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", + "license": "MIT", + "dependencies": { + "real-require": "^0.2.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "license": "BSD-3-Clause" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toad-cache": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz", + "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..5e41a45 --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "myproject", + "version": "1.0.0", + "description": "This project was bootstrapped with Fastify-CLI.", + "main": "app.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "node --test test/**/*.test.js", + "start": "fastify start -l info app.js", + "dev": "fastify start -w -l info -P app.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@fastify/autoload": "^5.0.0", + "@fastify/sensible": "^5.0.0", + "axios": "^1.9.0", + "fastify": "^4.26.1", + "fastify-cli": "^6.1.1", + "fastify-cron": "^1.4.0", + "fastify-plugin": "^4.0.0" + } +} diff --git a/plugins/README.md b/plugins/README.md new file mode 100644 index 0000000..1e61ee5 --- /dev/null +++ b/plugins/README.md @@ -0,0 +1,16 @@ +# Plugins Folder + +Plugins define behavior that is common to all the routes in your +application. Authentication, caching, templates, and all the other cross +cutting concerns should be handled by plugins placed in this folder. + +Files in this folder are typically defined through the +[`fastify-plugin`](https://github.com/fastify/fastify-plugin) module, +making them non-encapsulated. They can define decorators and set hooks +that will then be used in the rest of your application. + +Check out: + +* [The hitchhiker's guide to plugins](https://fastify.dev/docs/latest/Guides/Plugins-Guide/) +* [Fastify decorators](https://fastify.dev/docs/latest/Reference/Decorators/). +* [Fastify lifecycle](https://fastify.dev/docs/latest/Reference/Lifecycle/). diff --git a/plugins/corn.js b/plugins/corn.js new file mode 100644 index 0000000..e3c08ee --- /dev/null +++ b/plugins/corn.js @@ -0,0 +1,96 @@ +'use strict' + +const fp = require('fastify-plugin') +const fastifyCron = require('fastify-cron') + +const cheerio = require('cheerio'); +const { log } = require('console'); +const fs = require('fs'); +const axios = require('axios'); +const akharin = 'https://akharinkhodro.ir/price/%D9%82%DB%8C%D9%85%D8%AA-%D8%AE%D9%88%D8%AF%D8%B1%D9%88/'; +const hamrah = 'https://www.hamrah-mechanic.com/carprice/'; + + +module.exports = fp(async function (fastify, opts) { + fastify.register(fastifyCron, { + jobs: [ + { + cronTime: '0 0 0 * * *', ///'*/5 * * * * *' + onTick: async () => { + fastify.log.info('⏰ Cron Job ran at ' + new Date().toISOString()) + try { + const { data } = await axios.get(akharin, { + headers: { 'User-Agent': 'Mozilla/5.0' }, + }); + + const $ = cheerio.load(data); + const cars = []; + + let td = $('tr') + let result = [] + td.each((i, tr) => { + let listOfLine = $(tr).text().trim().split('\n') + if (listOfLine.length > 1) { + if (listOfLine[0] !== "نام خودرو") { + result.push({ + carName: listOfLine[0], + marketPrice: listOfLine[1].trim().split(" ")[0] === "بدون" ? null : listOfLine[1].trim().split(" ")[0], + newCarPrice: listOfLine[2].trim().split(" ")[0] + }) + } + + + } + + }) + + + fs.writeFileSync(`./json/akharin/${new Date().getFullYear()}-${new Date().getMonth()}-${new Date().getDay()}-akharin-cars.json`, JSON.stringify(result, null, 2), 'utf-8'); + console.log(`${new Date().getFullYear()}-$${new Date().getMonth()}-${new Date().getDay()}-akharin-cars.json => new:`, cars.length); + + } catch (err) { + console.error('crawler stop:', err.message); + } }, + start: true + },{ + cronTime: '0 0 0 * * *', ///'*/5 * * * * *' + onTick: async () => { + fastify.log.info('⏰ Cron Job ran at hamrah ' + new Date().toISOString()) + try { + const { data } = await axios.get(hamrah, { + headers: { 'User-Agent': 'Mozilla/5.0' }, + }); + + const $ = cheerio.load(data); + const cars = []; + const result = [] + let sectionName = $('div.carsBrandPriceList_brand__name__Ohntn') + + + let tables = $('tbody tr'); + + tables.each((i, tr) => { + const tds = $(tr).find('td'); + const modelDivs = $(tds[0]).find('div'); + const priceDivs = $(tds[1]).find('div'); + + const carName = $(modelDivs[0]).text().trim(); // مدل اصلی مثل Q5 E-tron + const typeAndYear = $(modelDivs[1]).text().replace(/\s+/g, ' ').trim(); // تیپ 40- فول-2024 + + const marketPrice = $(priceDivs[0]).text().trim(); // قیمت + result.push({carName , typeAndYear , marketPrice}) + }); + + // ذخیره‌سازی در فایل JSON + fs.writeFileSync(`./json/hamrah/${new Date().getFullYear()}-${new Date().getMonth()}-${new Date().getDay()}-hamrah-cars.json`, JSON.stringify(result, null, 2), 'utf-8'); + console.log(`${new Date().getFullYear()}-$${new Date().getMonth()}-${new Date().getDay()}-akharin-cars.json => new:`, cars.length); + + + } catch (err) { + console.error('❌ خطا در کراول:', err.message); + } }, + start: true + } + ] + }) +}) diff --git a/plugins/sensible.js b/plugins/sensible.js new file mode 100644 index 0000000..a8d912e --- /dev/null +++ b/plugins/sensible.js @@ -0,0 +1,14 @@ +'use strict' + +const fp = require('fastify-plugin') + +/** + * This plugins adds some utilities to handle http errors + * + * @see https://github.com/fastify/fastify-sensible + */ +module.exports = fp(async function (fastify, opts) { + fastify.register(require('@fastify/sensible'), { + errorHandler: false + }) +}) diff --git a/plugins/support.js b/plugins/support.js new file mode 100644 index 0000000..b379ecc --- /dev/null +++ b/plugins/support.js @@ -0,0 +1,12 @@ +'use strict' + +const fp = require('fastify-plugin') + +// the use of fastify-plugin is required to be able +// to export the decorators to the outer scope + +module.exports = fp(async function (fastify, opts) { + fastify.decorate('someSupport', function () { + return 'hugs' + }) +}) diff --git a/routes/README.md b/routes/README.md new file mode 100644 index 0000000..fd8d0b2 --- /dev/null +++ b/routes/README.md @@ -0,0 +1,27 @@ +# Routes Folder + +Routes define routes within your application. Fastify provides an +easy path to a microservice architecture, in the future you might want +to independently deploy some of those. + +In this folder you should define all the routes that define the endpoints +of your web application. +Each service is a [Fastify +plugin](https://fastify.dev/docs/latest/Reference/Plugins/), it is +encapsulated (it can have its own independent plugins) and it is +typically stored in a file; be careful to group your routes logically, +e.g. all `/users` routes in a `users.js` file. We have added +a `root.js` file for you with a '/' root added. + +If a single file become too large, create a folder and add a `index.js` file there: +this file must be a Fastify plugin, and it will be loaded automatically +by the application. You can now add as many files as you want inside that folder. +In this way you can create complex routes within a single monolith, +and eventually extract them. + +If you need to share functionality between routes, place that +functionality into the `plugins` folder, and share it via +[decorators](https://fastify.dev/docs/latest/Reference/Decorators/). + +If you're a bit confused about using `async/await` to write routes, you would +better take a look at [Promise resolution](https://fastify.dev/docs/latest/Reference/Routes/#promise-resolution) for more details. diff --git a/routes/example/index.js b/routes/example/index.js new file mode 100644 index 0000000..cd2c477 --- /dev/null +++ b/routes/example/index.js @@ -0,0 +1,7 @@ +'use strict' + +module.exports = async function (fastify, opts) { + fastify.get('/', async function (request, reply) { + return 'this is an example' + }) +} diff --git a/routes/root.js b/routes/root.js new file mode 100644 index 0000000..7350b7e --- /dev/null +++ b/routes/root.js @@ -0,0 +1,15 @@ +'use strict' + +const { log } = require("console") +const {readFile , readdir} = require('fs/promises') +module.exports = async function (fastify, opts) { + fastify.get('/price', async function (request, reply) { + if(Object.keys(request.query).length == 0) return reply.status(500).send({ ok: false, message:'use query params' , enums:['akharin' , 'hamrah'] }) + + + let dir = await readdir(`${process.cwd()}/json/${Object.keys(request.query)[0]}`) + let file = await readFile(`${process.cwd()}/json/${Object.keys(request.query)[0]}/${dir[0]}` , 'utf-8') + return JSON.parse(file) + }) + +} diff --git a/test/helper.js b/test/helper.js new file mode 100644 index 0000000..a523750 --- /dev/null +++ b/test/helper.js @@ -0,0 +1,35 @@ +'use strict' + +// This file contains code that we reuse +// between our tests. + +const { build: buildApplication } = require('fastify-cli/helper') +const path = require('node:path') +const AppPath = path.join(__dirname, '..', 'app.js') + +// Fill in this config with all the configurations +// needed for testing the application +function config () { + return {} +} + +// automatically build and tear down our instance +async function build (t) { + // you can set all the options supported by the fastify CLI command + const argv = [AppPath] + + // fastify-plugin ensures that all decorators + // are exposed for testing purposes, this is + // different from the production setup + const app = await buildApplication(argv, config()) + + // close the app after we are done + t.after(() => app.close()) + + return app +} + +module.exports = { + config, + build +} diff --git a/test/plugins/support.test.js b/test/plugins/support.test.js new file mode 100644 index 0000000..e71ad24 --- /dev/null +++ b/test/plugins/support.test.js @@ -0,0 +1,28 @@ +'use strict' + +const { test } = require('node:test') +const assert = require('node:assert') + +const Fastify = require('fastify') +const Support = require('../../plugins/support') + +test('support works standalone', async (t) => { + const fastify = Fastify() + fastify.register(Support) + + await fastify.ready() + assert.equal(fastify.someSupport(), 'hugs') +}) + +// You can also use plugin with opts in fastify v2 +// +// test('support works standalone', (t) => { +// t.plan(2) +// const fastify = Fastify() +// fastify.register(Support) +// +// fastify.ready((err) => { +// t.error(err) +// assert.equal(fastify.someSupport(), 'hugs') +// }) +// }) diff --git a/test/routes/example.test.js b/test/routes/example.test.js new file mode 100644 index 0000000..4909a3a --- /dev/null +++ b/test/routes/example.test.js @@ -0,0 +1,28 @@ +'use strict' + +const { test } = require('node:test') +const assert = require('node:assert') +const { build } = require('../helper') + +test('example is loaded', async (t) => { + const app = await build(t) + + const res = await app.inject({ + url: '/example' + }) + assert.equal(res.payload, 'this is an example') +}) + +// inject callback style: +// +// test('example is loaded', (t) => { +// t.plan(2) +// const app = await build(t) +// +// app.inject({ +// url: '/example' +// }, (err, res) => { +// t.error(err) +// assert.equal(res.payload, 'this is an example') +// }) +// }) diff --git a/test/routes/root.test.js b/test/routes/root.test.js new file mode 100644 index 0000000..6fac9fc --- /dev/null +++ b/test/routes/root.test.js @@ -0,0 +1,28 @@ +'use strict' + +const { test } = require('node:test') +const assert = require('node:assert') +const { build } = require('../helper') + +test('default root route', async (t) => { + const app = await build(t) + + const res = await app.inject({ + url: '/' + }) + assert.deepStrictEqual(JSON.parse(res.payload), { root: true }) +}) + +// inject callback style: +// +// test('default root route', (t) => { +// t.plan(2) +// const app = await build(t) +// +// app.inject({ +// url: '/' +// }, (err, res) => { +// t.error(err) +// assert.deepStrictEqual(JSON.parse(res.payload), { root: true }) +// }) +// })